中國(guó)電子科技集團(tuán) 四十五研究所 曹穎杰
串口通信在電鍍?cè)O(shè)備上的應(yīng)用
中國(guó)電子科技集團(tuán) 四十五研究所 曹穎杰
在工業(yè)控制中,串口是控制器與外部串行設(shè)備之間的數(shù)據(jù)傳輸通道。串口通信具有穩(wěn)定可靠、成本低廉、軟件易實(shí)現(xiàn)等優(yōu)點(diǎn),是在當(dāng)前工業(yè)控制領(lǐng)域中應(yīng)用比較廣泛的通信方式。本文,筆者以半導(dǎo)體行業(yè)中的電鍍?cè)O(shè)備為例,介紹一種簡(jiǎn)單、實(shí)用的工業(yè)控制模型。該模型使用PLC(可編程控制器)為主控制器,以串口通信為工業(yè)控制的媒介,采用CX–PROTOCOL作為開(kāi)發(fā)工具,以實(shí)現(xiàn)串行通信協(xié)議宏控制軟件的開(kāi)發(fā)。
該模型由主控單元和受控單元組成。主控單元為可編程控制器,配置了4個(gè)串口;各受控單元配置了相應(yīng)的RS485接口。主控單元通過(guò)總線向受控單元發(fā)送控制指令,受控單元根據(jù)不同指令執(zhí)行不同的動(dòng)作。受控單元由不同功能的子模塊組成,這些子模塊多由不同的廠商提供,其串口通信協(xié)議往往不同。主控單元與受控單元的連接方式如圖1所示。
圖1 主控單元和受控單元連接方式
在軟件實(shí)現(xiàn)過(guò)程中,先利用CX–PROTOCOL軟件開(kāi)發(fā)串行通信協(xié)議宏的序列,協(xié)議包含設(shè)備的狀態(tài)查詢和實(shí)時(shí)控制等;再利用PLC程序調(diào)用協(xié)議,進(jìn)而實(shí)現(xiàn)PLC對(duì)不同廠商智能儀器的分時(shí)循環(huán)通信,實(shí)現(xiàn)對(duì)設(shè)備的實(shí)時(shí)控制。
1.通信協(xié)議宏組態(tài)及PLC編程。協(xié)議宏是一種通信協(xié)議,其功能主要是控制各種通信設(shè)備和裝有RS232、RS485通信端口的通信器件的數(shù)據(jù)傳送。先利用OMRON的CX–PROTO-COL軟件創(chuàng)建不同的通信協(xié)議序列,再編寫(xiě)PLC控制程序,使用PMCR指令循環(huán)執(zhí)行存儲(chǔ)在通信單元中的通信序列??刂葡到y(tǒng)的各個(gè)模塊由不同廠商提供的,用來(lái)完成不同的任務(wù),在開(kāi)發(fā)控制軟件時(shí),需根據(jù)各個(gè)模塊的具體通信協(xié)議編寫(xiě)出符合不同要求的通信序列。
(1)數(shù)據(jù)格式。由1位起始位、8位數(shù)據(jù)位、1位偶校驗(yàn)位和1位停止位組成,波特率為9 600 bps,字符為ASCII碼。數(shù)據(jù)格式見(jiàn)表1。
表1 數(shù)據(jù)格式
(2)通信命令。通信命令包括讀命令和寫(xiě)命令兩方面的內(nèi)容。通信命令的代碼及功能見(jiàn)表2。
表2 通信命令代碼及功能
(3)通信控制字符。采用面向字符的傳輸規(guī)程,并采用通信控制字符控制。通信控制字符見(jiàn)表3。
表3 通信控制字符
當(dāng)PLC對(duì)電源發(fā)來(lái)的ENQ不理解時(shí),用NAK回答。
(4)報(bào)文格式。向PLC發(fā)送的報(bào)文格式見(jiàn)表4.
表4 向PLC發(fā)送的報(bào)文格式
STX為開(kāi)始標(biāo)志(02H),EXT為結(jié)束標(biāo)志(03H),CMD為命令的ASCII碼,BCC為校驗(yàn)碼(用于檢測(cè)通訊錯(cuò)誤,采用循環(huán)冗余碼CRC16)。
(5)傳輸過(guò)程。PLC機(jī)與電源之間采用應(yīng)答方式通信,若傳輸出錯(cuò)則組織重發(fā)。其傳輸過(guò)程如圖2所示。
圖2 PLC機(jī)與電源之間的信號(hào)傳輸過(guò)程
2.關(guān)鍵代碼編寫(xiě)。根據(jù)上述通訊幀格式,在CX–PROTOCOL軟件中創(chuàng)建新項(xiàng)目,在其下開(kāi)始創(chuàng)建各個(gè)受控單元的通信序列,每個(gè)通信序列中可以創(chuàng)建99步,在每一步中包含了步號(hào)、指令類型、發(fā)送信息、接受信息和響應(yīng)等內(nèi)容。關(guān)鍵代碼如下:
00步中發(fā)送信息SD–1的數(shù)據(jù)格式如下:
STX+ “ 00,F(xiàn)E”+&(R(1),2)+“00”+&(R(2),4)+ &(R(3),4)+ETX+<C>。
00步中接受信息RV–1的數(shù)據(jù)格式如下:
STX+&(W(1),2) +&(W(2),66)+ETX+<C>。
其中,&(R(1),2)表示數(shù)據(jù)形式為變量,該發(fā)送數(shù)據(jù)需從PLC程序中PMCR指令中的第2個(gè)操作數(shù)的第1個(gè)字中讀取。&(W(1),2) 表示數(shù)據(jù)形式為變量,該接收數(shù)據(jù)將從PLC程序中PMCR指令中的第3個(gè)操作數(shù)的第2個(gè)字開(kāi)始依次寫(xiě)入。
將協(xié)議宏下載到PLC的通信單元后,編寫(xiě)PLC控制程序來(lái)執(zhí)行該協(xié)議。在編程前,需要設(shè)置PLC通信單元的通信參數(shù),如啟動(dòng)位、數(shù)據(jù)長(zhǎng)度、停止位、奇偶校驗(yàn)位、波特率等 ,通信參數(shù)必須與廠商提供的參數(shù)相一致。
當(dāng)A/D模塊由OFF變成ON時(shí),系統(tǒng)啟動(dòng)。A/D模塊轉(zhuǎn)換結(jié)束標(biāo)志為ON,且對(duì)1#電鍍電源的通信標(biāo)志A202.00和輸入條件標(biāo)志1909.15滿足條件時(shí),以1 s為周期執(zhí)行協(xié)議宏指令PMCR。該指令中的第1個(gè)控制字“#113”,其中第1個(gè)1代表物理端口號(hào),13為通信單元的地址,而控制字2“#A”表示執(zhí)行的通訊序列編號(hào)。
當(dāng)執(zhí)行PMCR指令時(shí),RS–485端口標(biāo)志位207為ON,協(xié)議宏執(zhí)行結(jié)束后207為OFF。此時(shí)1#電鍍電源的00序列執(zhí)行完1次。由于內(nèi)部繼電器W 5.01在執(zhí)行的同時(shí)復(fù)位,W 5.02置位,將啟動(dòng)執(zhí)行另一個(gè)電鍍電源的001序列,即進(jìn)行2#電鍍電源的狀態(tài)讀入。通過(guò)定時(shí)器及PCMR指令完成該過(guò)程,實(shí)現(xiàn)了PLC分時(shí)循環(huán)通信,能夠?qū)崟r(shí)監(jiān)控多臺(tái)智能儀器。由于不同廠商的通信協(xié)議往往是不同的,利用協(xié)議宏編寫(xiě)或修改通信協(xié)議,只需對(duì)PLC程序做少量修改,軟件維護(hù)十分方便。