基于MCGS組態(tài)技術(shù)的主動上報(bào)數(shù)據(jù)采集
引 言
在工業(yè)物聯(lián)網(wǎng)(IIoT)高速發(fā)展的今天,設(shè)備的數(shù)據(jù)采集離不開數(shù)據(jù)采集協(xié)議。PLC(Programmable Logic ControllerPLC)控制系統(tǒng)中數(shù)據(jù)需被服務(wù)器采集,需 PLC 控制器的通信協(xié)議,比如西門子的 MPI(Multi Point Interface,MPI)和莫迪康的 Modbus 等,這些標(biāo)準(zhǔn)的通信協(xié)議通常采用 RS 485通訊總線實(shí)現(xiàn)主一從或一主多從的組網(wǎng)方式。在 RS 485 通訊總線方式中,大多采用主機(jī)先發(fā)送請求命令給從機(jī),從機(jī)再應(yīng)答返回?cái)?shù)據(jù)的方式。但現(xiàn)實(shí)中某些廠家生產(chǎn)的儀表采用的通信協(xié)議卻是從機(jī)定時(shí)主動上報(bào)數(shù)據(jù)的通訊方式,為了不影響其他設(shè)備采集數(shù)據(jù),在系統(tǒng)通訊組網(wǎng)時(shí),需為該類儀表單獨(dú)設(shè)計(jì)一條通訊鏈路。為了將該儀表接入一主多從的通訊鏈路,筆者采用觸摸屏及 MCGS(Monitor and Control Generated System,MCGS)組態(tài)技術(shù),對從機(jī)定時(shí)主動上報(bào)的數(shù)據(jù)解析、存儲,再轉(zhuǎn)成標(biāo)準(zhǔn)的 Modbus 通訊協(xié)議后,即可將其接入到一主多從的 RS 485 網(wǎng)絡(luò)中。
1 整體解決方案
某公司生產(chǎn)的靶式流量計(jì)就是一種主動上報(bào)數(shù)據(jù)的從機(jī),流量計(jì)每隔 0.5 s上報(bào)一次數(shù)據(jù),主動上報(bào)幀內(nèi)容見表 1 所列。
對于數(shù)據(jù)主動上報(bào)的從機(jī),筆者通過使用 MCGSE(Monitor and Control Generated System for Embedded,MCGSE)嵌入式組態(tài)軟件、MCGS 腳本驅(qū)動開發(fā)工具和TPC7062Hi 觸摸屏實(shí)現(xiàn)主動上報(bào)數(shù)據(jù)幀的解析及顯示,再把觸摸屏采集到的數(shù)據(jù)通過標(biāo)準(zhǔn) Modbus 協(xié)議轉(zhuǎn)出,然后接入 RS 485 總線中供其他主機(jī)讀取。
1.1 數(shù)據(jù)采集
首先用 MCGS 腳本驅(qū)動開發(fā)工具建立一個(gè)自定義驅(qū)動程序,命名為“主動上報(bào)數(shù)據(jù)設(shè)備”,在驅(qū)動程序中定義兩個(gè)字節(jié)數(shù)組,分別為 RecByteArr(接收數(shù)據(jù)數(shù)組)和DataByteArr(解析數(shù)據(jù)臨時(shí)數(shù)組)。其中,RecByteArr 用以存放接收串口命令數(shù)據(jù),DataByteArr 用以存放解析數(shù)據(jù)時(shí)臨時(shí)存放的數(shù)據(jù)。驅(qū)動程序數(shù)據(jù)采集流程如圖 1 所示。
1.2 數(shù)據(jù)解析
在表 1 的數(shù)據(jù)域中,有 2 位 BCD 碼、4 位 BCD 碼、6BCD 碼和 8 位 BCD 碼的數(shù)據(jù),為方便解析數(shù)據(jù),本文采用 4 位 BCD 碼進(jìn)行解析,共解析七個(gè) 4 位 BCD 碼,再通過運(yùn)算得到流量計(jì)實(shí)際上報(bào)數(shù)據(jù)。解析數(shù)據(jù)示意如圖 2 所示。
按上述方法把流量計(jì)主動上報(bào)數(shù)據(jù)的驅(qū)動編譯并保存,然后放入 MCGSE 嵌入式組態(tài)軟件安裝目錄的自定義驅(qū)動文件夾中,方便調(diào)用。
1.3 觸摸屏組態(tài)程序設(shè)計(jì)
1.3.1 新建工程
啟動 MCGSE 嵌 入 式組 態(tài) 軟件, 進(jìn) 入 MCGS 組態(tài)環(huán)境,新建一個(gè)工程,命名為“主動上報(bào)數(shù)據(jù)采集”,選擇TPC7062Hi 型觸摸屏,其他為默認(rèn)設(shè)置。
1.3.2 增加實(shí)時(shí)數(shù)據(jù)庫數(shù)據(jù)
在系統(tǒng)工作臺界面中的實(shí)時(shí)數(shù)據(jù)庫窗口,新增與流量計(jì)通訊需要采集的數(shù)據(jù)變量,流量計(jì)中的數(shù)據(jù)均為數(shù)值型變量,因此本工程需建立累積流量、瞬時(shí)流量、溫度等共計(jì) 6 個(gè)數(shù)值型變量,新建變量見表 2 所列。
1.3.3 設(shè)備組態(tài)
進(jìn)入系統(tǒng)工作臺界面中的設(shè)備組態(tài)窗口,增加通用串口父設(shè)備 0,并對通用串口父設(shè)備 0 進(jìn)行基本屬性設(shè)置,選擇COM2 作為串口端口號,波特率設(shè)置為 9 600 bps,數(shù)據(jù)位數(shù)為 8,停止位數(shù)為 1,數(shù)據(jù)校驗(yàn)方式設(shè)置為無校驗(yàn)。再增加通用串口父設(shè)備 1,選擇 COM4 作為串口端口號,其他設(shè)置同通用串口父設(shè)備 0。然后在通用串口父設(shè)備 0 下添加主動上報(bào)數(shù)據(jù)設(shè)備,在通用串口父設(shè)備 1 下添加 Modbus 串口數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備。設(shè)備組態(tài)窗口如圖 3 所示。最后在主動上報(bào)數(shù)據(jù)設(shè)備和Modbus 串口數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備的屬性設(shè)置中,參照表 2 增加設(shè)備通道與通道連接。
1.3.4 觸摸屏界面組態(tài)
在系統(tǒng)工作臺界面中的用戶窗口新建流量計(jì)數(shù)據(jù)顯示的用戶窗口,然后在窗口中動畫連接組態(tài)流量計(jì)所有實(shí)時(shí)數(shù)據(jù)。最后把組態(tài)好的人機(jī)交互數(shù)據(jù)下載到 TPC7062Hi 觸摸屏中,讓觸摸屏與流量計(jì)連機(jī)運(yùn)行。在人機(jī)界面中看到流量計(jì)的實(shí)時(shí)數(shù)據(jù)與現(xiàn)場流量計(jì)表顯示數(shù)據(jù)一致,實(shí)現(xiàn)了本次設(shè)計(jì)的目的。觸摸屏顯示流量計(jì)的實(shí)時(shí)數(shù)據(jù)界面如圖 4 所示。
2 結(jié) 語
MCGS 腳本驅(qū)動開發(fā)工具為主動上報(bào)數(shù)據(jù)的流量計(jì)開發(fā)對應(yīng)驅(qū)動,通過 MCGSE 嵌入式組態(tài)軟件進(jìn)行組態(tài),最后把組態(tài)好的工程下載到 TPC7062Hi 觸摸屏中,從而將流量計(jì)主動上報(bào)的數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的 Modbus 協(xié)議,接入一主多從的RS 485 網(wǎng)絡(luò),供主站設(shè)備讀取。通過測試運(yùn)行,本次實(shí)驗(yàn)采集的數(shù)據(jù)準(zhǔn)確,系統(tǒng)運(yùn)行可靠,類似主動上報(bào)數(shù)據(jù)的儀表接入一主多從網(wǎng)絡(luò)鏈路時(shí),可參考該設(shè)計(jì)方案