顧曙光 張茂青 劉文杰 王 清
(蘇州大學(xué)自動(dòng)化系,江蘇 蘇州215021)
太陽能電池板常年置于室外,易積灰塵和異物,導(dǎo)致發(fā)電效率降低。全天候運(yùn)行于太陽能電池板上的清洗小車將提高太陽能發(fā)電效率。用一塊MCGS觸摸屏作為監(jiān)控設(shè)備,控制主板運(yùn)行Windows操作系統(tǒng),主控程序在Visual C++6.0環(huán)境下編制,觸摸屏與控制主板通過以太網(wǎng)口相連。MCGS正確組態(tài)后,會(huì)向以太網(wǎng)中發(fā)送符合 Modbus TCP協(xié)議的功能碼,此時(shí)工控主板需要識別功能碼,作出相應(yīng)處理并向以太網(wǎng)作相應(yīng)的應(yīng)答。
MCGS觸摸屏是一種用途廣泛的工控監(jiān)測產(chǎn)品,其內(nèi)部預(yù)裝有各種工控設(shè)備的驅(qū)動(dòng)程序。對于本系統(tǒng)中的工控計(jì)算機(jī)主板,可將其視為通用 Modbus TCP設(shè)備,通過以太網(wǎng)對其進(jìn)行驅(qū)動(dòng)監(jiān)控。設(shè)備窗口是MCGS系統(tǒng)的重要組成部分,負(fù)責(zé)建立系統(tǒng)與外部硬件設(shè)備的連接。通過組態(tài)要建立通信雙方的以太網(wǎng)連接,在設(shè)備管理窗口中先后選擇“通用TCP/IP父設(shè)備”和“通用設(shè)備—莫迪康 Modbus TCP”。通用TCP/IP父設(shè)備的屬性中包含以太網(wǎng)通信的基本屬性。鑒于本監(jiān)控系統(tǒng)的通信方只有兩方,且要實(shí)時(shí)監(jiān)控,需隨時(shí)收發(fā)消息,以太網(wǎng)的傳輸層協(xié)議選用無連接的UDP協(xié)議。觸摸屏的IP地址可在上電后點(diǎn)擊進(jìn)度條,進(jìn)入屬性界面查看。在TCP/IP基本屬性設(shè)置中,設(shè)本地IP地址為200.200.200.190,設(shè)遠(yuǎn)程IP地址為200.200.200.110。設(shè)備組 態(tài) 的 基 本 屬 性 設(shè) 置 界 面 如 圖 1所示。
圖1 設(shè)備組態(tài)基本屬性設(shè)置
要實(shí)現(xiàn)觸摸屏與主板的信息交換,要在主板上建立Modbus數(shù)據(jù)模型。Modbus數(shù)據(jù)包括輸入繼電器、輸出繼電器、輸入寄存器、輸出寄存器等4種類型。在主板的VC++程序中用一系列數(shù)組模擬Modbus設(shè)備:
BOOL INREL[16];BOOL OUTREL[16];//輸入、輸出繼電器
WORD INREG[10];WORD OUTREG[10];//輸入、輸出寄存器
實(shí)驗(yàn)中可借助網(wǎng)口調(diào)試工具解析MCGS觸摸屏發(fā)向以太網(wǎng)的字碼,結(jié)合本系統(tǒng)實(shí)驗(yàn)結(jié)果和 Modbus TCP協(xié)議,總結(jié)如下:
(1)讀輸出繼電器OUTREL[0]
請求:00 00 00 00 00 06 01 01 00 00 00 01
響應(yīng):00 00 00 00 00 04 01 01 01 00(01)
(2)讀輸入繼電器INREL[0]~I(xiàn)NREL[3]
請求:00 00 00 00 00 06 01 02 00 00 00 04
響應(yīng):00 00 00 00 00 04 01 02 01 0x
(3)寫輸出寄存器OUTREG[1]
請求:00 00 00 00 00 06 01 06 00 01 xx xx
響應(yīng):00 00 00 00 00 06 01 06 00 01 xx xx
設(shè)觸摸屏對小車的命令與監(jiān)視項(xiàng)目,如表1所示。
表1 命令與監(jiān)視項(xiàng)目
通過socket編程實(shí)現(xiàn)主板的以太網(wǎng)通信,與組態(tài)完成的觸摸屏用網(wǎng)線連接后,主板的進(jìn)程會(huì)收到一系列Modbus TCP協(xié)議碼。這時(shí)主板進(jìn)程的以太網(wǎng)接收函數(shù)LRESULT CMyDlg::On ReadClose(WPARAM w Param,LPARAM l Param)將對收到的協(xié)議碼進(jìn)行識別、響應(yīng)。進(jìn)程將收到的信息存儲(chǔ)于數(shù)組char msg[]中,其中 Modbus功能碼存放于字節(jié) msg[7]中。根據(jù)Modbus TCP協(xié)議的請求應(yīng)答機(jī)制,部分處理程序段如下:
switch(msg[7])
{case 0x01://讀輸出繼電器
BOOL a[8]={0x00};
for(int i=0;i<msg[11];i++)
a[i]=OUTREL[msg[9]+i];
send[9]=(char)a;send[7]=0x01;send[5]=0x04;
Send(send,10);break;case 0x04://讀輸入寄存器
for(int j=0;j<msg[11];j++)
{send[9+j*2]=INREG[msg[9]+j]>>8;
send[9+j*2+1]=INREG[msg[9]+j];}
send[8]=msg[11]*2;send[5]=3+msg[11]*2;
send[7]=0x04;
Send(send,6+send[5]);break;…}
本系統(tǒng)可實(shí)現(xiàn)對清洗小車的指令發(fā)送與狀態(tài)監(jiān)視功能。在主板的操作系統(tǒng)中將進(jìn)程設(shè)置為開機(jī)啟動(dòng),系統(tǒng)上電后便可進(jìn)入工作狀態(tài)。本系統(tǒng)使用的觸摸屏型號為TPC7062K;工控主板型號為VDX2-6554;運(yùn)動(dòng)控制卡型號為DMC4420;交流伺服電機(jī)驅(qū)動(dòng)器型號為YZ-ACSD608。
[1]曹輝,馬棟萍,王暄,等.組態(tài)軟件技術(shù)及應(yīng)用[M].第2版.北京:電子工業(yè)出版社,2012
[2]MODBUS協(xié)議中文版[Z]
[3]鄭阿奇.Visual C++6.0網(wǎng)絡(luò)編程教程[M].北京:電子工業(yè)出版社,2013