Modbus 通信協(xié)議在分布式控制系統(tǒng)中的應(yīng)用
2.2 網(wǎng)絡(luò)構(gòu)成及硬件介紹
網(wǎng)絡(luò)采用RS485串行接口,通信媒體由4芯屏蔽電纜連接主從設(shè)備,傳輸距離最大達(dá)1.5Km,全雙工,串口設(shè)定波特率19200,8位數(shù)據(jù)位、偶校驗(yàn)、1位停止位。DCS通信部分采用橫河型號(hào)為ALR121的通信模塊,并配套橫河提供的Modbus通信軟件包,該通信模塊最大通信數(shù)據(jù)容量4000字。PLC通信部分則采用Omron的C200H-ASCII 21可編程特殊單元模塊(以下簡(jiǎn)稱(chēng)ASCII模塊),該模塊支持BASIC語(yǔ)言編程,內(nèi)有200K字節(jié)的程序存儲(chǔ)區(qū),配備RS232、RS485通信串口各一個(gè)。通過(guò)對(duì)該模塊的編程,可實(shí)現(xiàn)與外圍設(shè)備的各種通信。本系統(tǒng)通過(guò)ASCII模塊與DCS基于Modbus協(xié)議的通信,將DCS的讀、寫(xiě)指令及數(shù)據(jù)做相應(yīng)轉(zhuǎn)換,并與PLC的CPU單元進(jìn)行數(shù)據(jù)存取交換,以實(shí)現(xiàn)上下位機(jī)控制信息的實(shí)時(shí)傳輸。如圖四所示。
三、軟件實(shí)現(xiàn)
1、 建立地址分配、對(duì)應(yīng)表
DCS人機(jī)監(jiān)控界面(HMI)上面向現(xiàn)場(chǎng)儀表的圖形符號(hào)對(duì)象的監(jiān)控,需通過(guò)DCS I/O物理地址對(duì)現(xiàn)場(chǎng)儀表信號(hào)的采集來(lái)實(shí)現(xiàn)。DCS對(duì)現(xiàn)場(chǎng)電氣執(zhí)行、檢測(cè)機(jī)構(gòu)的監(jiān)控,則是由DCS通信I/O地址與PLC I/O物理地址一一對(duì)應(yīng)完成的。為此,在編程前,需建立一張DCS通信I/O地址與PLC I/O地址的分配、對(duì)應(yīng)表。由于PLC邏輯控制編程需要,不便直接將PLC I/O物理地址與DCS通信I/O地址對(duì)應(yīng),故采取了間接地址的方式。具體設(shè)計(jì)采用PLC的數(shù)據(jù)存儲(chǔ)區(qū)DM區(qū)作為間接地址區(qū),與DCS通信I/O區(qū)建立聯(lián)系,再將DM區(qū)與PLC I/O區(qū)相對(duì)應(yīng)。如將DCS的%WB000101位通信I/O地址與D0000.00位地址對(duì)應(yīng),D0000.00再對(duì)照PLC的I0000.00位物理輸入點(diǎn),就能將現(xiàn)場(chǎng)電氣執(zhí)行機(jī)構(gòu)的運(yùn)行狀態(tài)反饋到HMI上。按照這種方法就建立了一張上下位機(jī)地址分配、對(duì)應(yīng)表,因篇幅所限,該表略。
2、程序設(shè)計(jì)
ASCII模塊支持BASIC語(yǔ)言編程,此外,又附加了多條系統(tǒng)及函數(shù)指令,如接收、發(fā)送緩沖區(qū)操作指令、信息傳輸差錯(cuò)控制CRC、LRC校驗(yàn)函數(shù)指令和與CPU單元數(shù)據(jù)交換的讀寫(xiě)指令等。編程使用WINDOWS操作系統(tǒng)上附帶的Hyperterminal(超級(jí)終端)軟件,通過(guò)此軟件,PC機(jī)可與連接在網(wǎng)絡(luò)上的其它PC機(jī)或串口終端設(shè)備進(jìn)行文本文件的傳輸及顯示。編程時(shí),將PC機(jī)串口與ASCII模塊的RS232串口連接,運(yùn)行該軟件,就能在其界面上對(duì)ASCII模塊進(jìn)行程序編寫(xiě)、上傳、下載和調(diào)試等工作。也可先通過(guò)WINDOWS系統(tǒng)的寫(xiě)字板編寫(xiě)程序,并保存為文本格式,然后再通過(guò)Hyperterminal將程序下載到ASCII模塊。通信程序的主工作流程見(jiàn)圖五。
部分程序代碼如下:
OPTION BASE 0 //定義數(shù)組
DIM R(128),FC(128)
R(48)=0:R(49)=1:R(50)=2:R(51)=3:R(52)=4:R(53)=5:R(54)=6:R(55)=7:R(56)=8
R(57)=9:R(65)=h0a:R(66)=h0b:R(67)=h0c:R(68)=h0d:R(69)=h0e:R(70)=h0f
R(97)=h0a:R(98)=h0b:R(99)=h0c:R(100)=h0d:R(101)=h0e:R(102)=h0f
OPEN #2,"COMU:19200,8,E,1" //設(shè)定串口參數(shù)
A%=LOC(2) //判斷接收緩沖區(qū)字符
IF A%=8 THEN
REX$=INPUT$(A%,#2)
……….
ENDIF
數(shù)字通信相關(guān)文章:數(shù)字通信原理
評(píng)論