念路兵 鄭磊 胡興朝 胡之冉
【摘要】? ? 本系統(tǒng)設(shè)計(jì)了一種基于Linux系統(tǒng)的PLC至數(shù)據(jù)庫(kù)直傳模塊,可實(shí)現(xiàn)同品牌多基站或不同品牌多基站之間的數(shù)據(jù)直傳。本系統(tǒng)通過(guò)工業(yè)應(yīng)用終端站向數(shù)據(jù)庫(kù)的數(shù)據(jù)直傳方式進(jìn)行工業(yè)現(xiàn)場(chǎng)數(shù)據(jù)采集和傳輸,可降低PLC數(shù)據(jù)傳輸冗余,提高工業(yè)現(xiàn)場(chǎng)信號(hào)采樣數(shù)據(jù)的實(shí)時(shí)性和可靠性,以低成本方案解決不同品牌、不同基站之間的數(shù)據(jù)實(shí)時(shí)采集問(wèn)題。
【關(guān)鍵詞】? ? Linux系統(tǒng)? ? PLC? ? 數(shù)據(jù)庫(kù)? ? 低成本數(shù)據(jù)直傳
引言
PLC作為一種通用可編程控制器在工業(yè)自動(dòng)化現(xiàn)場(chǎng)已廣泛應(yīng)用于數(shù)據(jù)采集和監(jiān)控系統(tǒng)。高效地獲取生產(chǎn)結(jié)果數(shù)據(jù)和過(guò)程數(shù)據(jù)對(duì)目前工業(yè)4.0的推行尤為關(guān)鍵。
現(xiàn)有的工業(yè)現(xiàn)場(chǎng)應(yīng)用數(shù)據(jù)采集方式中轉(zhuǎn)端程序開(kāi)發(fā)和維護(hù)費(fèi)用高,采用主站輪詢方式導(dǎo)致服務(wù)器的工作負(fù)荷較大,同時(shí)采集實(shí)時(shí)性較差。本設(shè)計(jì)產(chǎn)品采用熱插拔模式,大大簡(jiǎn)化工業(yè)應(yīng)用現(xiàn)場(chǎng)數(shù)據(jù)采集難度,提升數(shù)據(jù)采集的實(shí)時(shí)性和可靠性,大大降低數(shù)據(jù)采集成本和后續(xù)維護(hù)成本。
一、系統(tǒng)總體方案設(shè)計(jì)
1.1 系統(tǒng)總體方案設(shè)計(jì)
如圖1所示為低成本的PLC至數(shù)據(jù)庫(kù)直傳模塊系統(tǒng)框圖。該系統(tǒng)主要包括PLC,Linux系統(tǒng)和PC主機(jī)三大組件。PLC將本地?cái)?shù)據(jù)通過(guò)以太網(wǎng)口上傳至Linux系統(tǒng)中間應(yīng)用層,Linux系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行分析處理后基于TCP/IP協(xié)議以報(bào)文形式上傳至PC主機(jī)。同時(shí),PC主機(jī)可以向Linux系統(tǒng)發(fā)送數(shù)據(jù)采集命令,Linux系統(tǒng)接收到相應(yīng)的通訊指令后對(duì)PLC下達(dá)數(shù)據(jù)采集操作指令,PLC負(fù)責(zé)執(zhí)行數(shù)據(jù)上傳操作。
Linux系統(tǒng)處理器處理器通過(guò)網(wǎng)口A和PLC通信,網(wǎng)口A為10/100M自適應(yīng)全雙工網(wǎng)口。通信規(guī)則基于每一個(gè)品牌的PLC開(kāi)發(fā)協(xié)議進(jìn)行設(shè)計(jì)。網(wǎng)口B和目標(biāo)數(shù)據(jù)庫(kù)通信。Linux系統(tǒng)板存儲(chǔ)器中保存了用于不同廠家PLC通信協(xié)議的描述文件和配置。
1.2 系統(tǒng)硬件設(shè)計(jì)
1.2.1 電源設(shè)計(jì)
Linux系統(tǒng)控制板供電電源為5V,因此在本設(shè)計(jì)中我們考慮使用5V/3A規(guī)格電壓進(jìn)行供電。為防止電源電壓短路和系統(tǒng)安全,5V電源外接保險(xiǎn)絲F1,然后再使用100uF和0.1uF電容進(jìn)行濾波,濾波后作為系統(tǒng)供電電源使用。
1.2.2 以太網(wǎng)接口設(shè)計(jì)
本模塊選用的以太網(wǎng)芯片為DM9621。該芯片具備高效的TX/RX FIFO的自動(dòng)管理,支持4個(gè)端點(diǎn)包括控制、中斷、Bulk_IN、Bulk_OUT。背壓模式為半雙工模式的流量控制,低功耗單電源3.3V。同時(shí)兼容兼容2.5V,3.3V和5.0V的I/O電平。
1.2.3 燒錄調(diào)試接口設(shè)計(jì)
通過(guò)OTG燒寫(xiě)方式可以燒寫(xiě)Linux系統(tǒng)文件。OTG接口燒寫(xiě)方式也叫Fastboot燒寫(xiě)方式,燒寫(xiě)速度比TF卡燒寫(xiě)速度更快。使用通用的OTG線作為燒錄介質(zhì)使用,需要燒錄軟件的支持。首先使用串口線連接開(kāi)發(fā)板串口到PC機(jī)串口,然后使用OTG線,將開(kāi)發(fā)板OTG接口和PC的USB接口相連。
1.3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括三部分:Linux系統(tǒng)軟件、模塊運(yùn)行底層軟件設(shè)計(jì)和Windows上位機(jī)系統(tǒng)配置軟件設(shè)計(jì)。
1.3.1 Linux系統(tǒng)軟件設(shè)計(jì)
Linux 2.2 提供核心系統(tǒng)服務(wù),例如:安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)模型。Linux Kernel 也作為硬件和軟件之間的抽象層,它隱藏具體硬件細(xì)節(jié)而為上層提供統(tǒng)一的服務(wù)。Linux系統(tǒng)分層的好處就是使用下層提供的服務(wù)而為上層提供統(tǒng)一的服務(wù),屏蔽本層及以下層的差異,當(dāng)本層及以下層發(fā)生了變化不會(huì)影響到上層。各層提供固定的SAP(Service Access Point),符合高內(nèi)聚、低耦合的特點(diǎn)。
1.3.2 底層運(yùn)行軟件設(shè)計(jì)
底層軟件由C編寫(xiě),它是整個(gè)軟件的核心,軟件分為3個(gè)模塊。
A:PLC通信模塊
B: 數(shù)據(jù)庫(kù)通信模塊
C:主循環(huán)配置模塊
其中:模塊A調(diào)用配置文件中的PLC通信配置文件,實(shí)現(xiàn)不同品牌不同協(xié)議的PLC通信,實(shí)現(xiàn)數(shù)據(jù)采集。采集需要指定讀取的目標(biāo)PLC內(nèi)存地址,采集分為周期性采集和條件觸發(fā)式采集。這些都是在配置文件中讀取出來(lái)的。
模塊B調(diào)用配置文件中數(shù)據(jù)庫(kù)的配置參數(shù),實(shí)現(xiàn)模塊與數(shù)據(jù)庫(kù)的通信, 模塊A采集的數(shù)據(jù)與模塊B之間建立了一個(gè)數(shù)據(jù)緩沖區(qū),以解決當(dāng)觸發(fā)模式下高速采集PLC數(shù)據(jù)與模塊至數(shù)據(jù)庫(kù)上傳的速度不同步的問(wèn)題。
配置C為實(shí)現(xiàn)整個(gè)程序運(yùn)行的邏輯和時(shí)序的模塊。以及與配置工具的交互。
1.3.3 系統(tǒng)通訊協(xié)議設(shè)計(jì)
計(jì)算機(jī)技術(shù)的飛速發(fā)展為PLC提供了新的技術(shù)手段,通過(guò)通訊手段使得計(jì)算機(jī)可以實(shí)時(shí)監(jiān)測(cè)PLC的運(yùn)行。但是各PLC通訊介質(zhì)和通訊協(xié)議各不相同,主流的PLC通訊協(xié)議包括MPI、CAN總線、PROFIBUS、CP441、MODBUS等。本設(shè)計(jì)不需要針對(duì)專門的PLC編寫(xiě)特殊的通訊協(xié)議,而是通過(guò)在上位機(jī)配置端口調(diào)用各品牌的PLC通訊協(xié)議完成數(shù)據(jù)通訊。以歐姆龍為例,通過(guò)上位機(jī)調(diào)用PLC通訊協(xié)議配置文件。
使用以上格式的識(shí)別碼,可以進(jìn)行PLC與上位機(jī)命令鏈接,構(gòu)成數(shù)據(jù)存儲(chǔ)區(qū)讀寫(xiě)數(shù)據(jù)幀。
讀IR/SR時(shí),命令碼為RR,讀指定的若干IR和SR字的內(nèi)容,以指定字的地址為起始。
1.3.4 Windows上位機(jī)系統(tǒng)配置設(shè)計(jì)
Windows桌面配置軟件由C#編寫(xiě)。用于配置模塊的工作參數(shù),也可以通過(guò)監(jiān)控模塊的工作狀態(tài)。軟件組成框圖如圖2所示。
其中通信配置模塊包含PLC通信配置和數(shù)據(jù)庫(kù)通信配置PLC通信配置中可以配置與PLC的通信參數(shù)比如PLC的IP地址,PLC的通信站號(hào),使用的通信協(xié)議等。
數(shù)據(jù)庫(kù)通信配置中可以配置目標(biāo)數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)地址、用戶名、密碼。數(shù)據(jù)庫(kù)的目標(biāo)Sheet,綁定字段等操作。
采集配置模塊包含采集目標(biāo)內(nèi)存地址設(shè)置,采集模式設(shè)置。兩個(gè)部分。目標(biāo)地址可以設(shè)置PLC的輸入、輸出映象區(qū),數(shù)據(jù)寄存器區(qū)??梢栽O(shè)置Bit、Byte、Int、Dint、Flout、ASCII等多個(gè)類型的數(shù)據(jù)。對(duì)于不同的采集地址可設(shè)置2種采集模式,周期性采集和觸發(fā)式采集。其中觸發(fā)式采集模式可以通過(guò)讀取不同內(nèi)存地址的值,并通過(guò)一定的邏輯組合和條件判斷產(chǎn)生讀取目標(biāo)地址的條件,當(dāng)條件滿足后讀取數(shù)據(jù)至緩沖區(qū)。
二、結(jié)語(yǔ)
本設(shè)計(jì)針對(duì)現(xiàn)有的工業(yè)應(yīng)用現(xiàn)場(chǎng)PLC數(shù)據(jù)采集方案缺陷,設(shè)計(jì)了一種基于Linux的PLC至數(shù)據(jù)庫(kù)直傳模塊。采用主動(dòng)式的上傳方法,數(shù)據(jù)的處理和中轉(zhuǎn)任務(wù)都放在每一個(gè)模塊內(nèi)部的處理器上,提高系統(tǒng)整體運(yùn)行效率。設(shè)置較高的現(xiàn)場(chǎng)設(shè)備采樣頻率,同時(shí)模塊至數(shù)據(jù)庫(kù)之間增加緩存區(qū)域。有效避免關(guān)鍵過(guò)程數(shù)據(jù)采集失真,運(yùn)行Liunx系統(tǒng)并安裝多個(gè)數(shù)據(jù)的ODBC驅(qū)動(dòng),對(duì)幾乎所有的數(shù)據(jù)庫(kù)具有兼容性。低成本的數(shù)據(jù)采集傳輸方式在現(xiàn)有的工業(yè)數(shù)據(jù)采集方案?jìng)鬏斨姓紦?jù)非常大的優(yōu)勢(shì),具備可研究?jī)r(jià)值。
參? 考? 文? 獻(xiàn)
[1]任一.基于Linux系統(tǒng)分析計(jì)算機(jī)C語(yǔ)言編程技巧[J].電子技術(shù)與軟件工程,2018(16):126.
[2]王前進(jìn),馬小平,張守田。PLC軟冗余在通風(fēng)機(jī)監(jiān)控系統(tǒng)中的應(yīng)用[J].工礦自動(dòng)化,2014,40(01):93-96.
[3]周石強(qiáng),郭強(qiáng),朱濤,等。電氣控制與PLC應(yīng)用技術(shù)的分析研究[J].中華民居(下旬刊),2014(01):199+201.
[4]郭瑋,田錄林,張永良,等?;谇度胧絇LC軟核的通用保護(hù)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].電力系統(tǒng)保護(hù)與控制,2014,42(16):122-126.
[5]工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線EtherCAT驅(qū)動(dòng)程序設(shè)計(jì)及應(yīng)用[M]. 2010.