資源描述:
《vb下基于modbus規(guī)約的串口通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、萬方數(shù)據(jù)8VB下基于Modbus規(guī)約的串口通信VB下基于M.Odbus規(guī)約的串口通信SeriaICOmmunicatiOnBaSedOnMOdbusPrOtOc01withMicrosOftVisuaIBasic董立君劉書偉侯逸青(航天空氣動力技術(shù)研究院,北京100074)摘要主要介紹Modbus—RTU規(guī)約,并在分析其通信原理的基礎(chǔ)上,結(jié)合一個應(yīng)用實例給出了VB6.O編程環(huán)境下利用MSComm通信控件實現(xiàn)基于該規(guī)約的工控機與數(shù)字顯示表之間的串口通信編程方法。關(guān)鍵詞:MsComm控件,RS一485,Modbus協(xié)議,CRC校驗AbslraclMOdbus—RTUprotocOIisintro
2、ducedbrIefly,andOnthebaSisOfanaIyseilscOmmunicatiOnprinciple,makeuse0fMSCOmmActiveXreaIizeseriaIcOmmunicatiOnwayofprogrammIngbetweenIPCanddIg.taIdispIaymeterbasedOnMod—bus—RTUprOtocOlunderMicrOsOftvisuaIbasIc6.OintegraleanappIicatiOn.Keywo州s:MsCOmmcOntrOl,RS一485,MOdbusprotOcOI,CRCcheck本文主要從應(yīng)用的角度利用V
3、B6.O的MicroSoftCom-municalion控件和Modbus—RTU協(xié)議,成功實現(xiàn)了某錐位控制系統(tǒng)中工控機與帶RS一485輸出接口的智能數(shù)字顯示表之間的串行通信功能。所用工控機為凌華Rack一610系列。DMP—ANFA數(shù)字顯示表應(yīng)用于某錐位控制系統(tǒng)中錐位的顯示,工控機通過讀取其顯示值作為反饋信號,實現(xiàn)錐位的閉環(huán)控制。1DMP—ANFA數(shù)宇顯示表的設(shè)置在DMP—ANFA數(shù)字顯示表的內(nèi)部已經(jīng)固化好Modbus—RTU通信協(xié)議及工作指令,允許用戶預(yù)先設(shè)定本機的地址碼。此外,要注意通信波特率必須與工控機的波特率相匹配。本例數(shù)字顯示表設(shè)置:通信地址碼:01通信波特率:9600小數(shù)點:2
4、位顯示最大量程:100.00顯示最小量程:0.002工控機通信軟件本文的工控機通信軟件主要是利用VisuaIBasIc6.0中的Mscomm通信控件來實現(xiàn)的,在VB6.O中對串口進行編程使用Mscomm控件可加快開發(fā)進度。該控件主要是為RS一232的通用串口而設(shè)計。所以為了利用工控機上現(xiàn)有的RS一232接口,通常是使用RS232/485的轉(zhuǎn)換器。通過轉(zhuǎn)換器,我們就可以像開發(fā)通用的RS一232串口一樣來快速開發(fā)基于RS一485接口的工控機通信軟件。工控機通過RS232接口,經(jīng)RS232/RS485轉(zhuǎn)換模塊與數(shù)字顯示表相連接,數(shù)字顯示表被賦予唯一的通訊地址碼用以識別身份,這樣上位工控機即能通過R
5、S一485總線實現(xiàn)對進錐系統(tǒng)錐位位置的采集與監(jiān)控。(1)工控機通信軟件界面(2)MSComm控件初始化程序設(shè)計根據(jù)數(shù)字顯示表的串行通信協(xié)議規(guī)定,在MSComm控件初始化程序中,主要是進行一些必須的串口初始化設(shè)定。具體的操作如下面代碼說明:MSComml.CommP0rt=1MSComml.setlings=叼600,h,8.1”∥設(shè)定需要使用的串口//設(shè)定傳輸?shù)牟ㄌ芈屎托r灧绞綀D1工控機通信軟件界面MSComml.
6、nputMode=comInputModeBinary//設(shè)定為二進制的數(shù)據(jù)流方式MSComml.1nputLen=0//一次全部讀入緩沖區(qū)全部內(nèi)容MSComml.PorcOpe
7、n=True//打開通訊端口MSComml.InBuffe忙ount=O//清空接收緩沖區(qū)MSComml.RThreshoId=9//設(shè)置輸入緩沖區(qū)字符輸入門限(3)Modbus—RTU協(xié)議的CRC校驗的實現(xiàn)方法冗余循環(huán)碼(CRC)包含2個字節(jié),即16位二進制。CRC碼由發(fā)送設(shè)備計算,放置于發(fā)送信息的尾部。接收信息的設(shè)備再重新計算接收到信息的CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果鼴者不相符,則表明出錯。計算CRC碼的步驟為:預(yù)置16位寄存器為十六進制FFFF(即全為1)。稱此寄存器為CRC寄存器;把第一個8位數(shù)據(jù)與16位CRC寄存器的低位相異或,把結(jié)果放于CRC寄存器;把寄
8、存器的內(nèi)容右移一位(朝低位),用O填補最高位,檢查最低位;如果最低位為O:重復(fù)第3步(再次移位);如果最低位為1:CRC寄存器與多項式A001(1010o00000000001)進行異或;重復(fù)步驟3和4,直到右移8次,這樣整個8位數(shù)據(jù)全部進行了處理;萬方數(shù)據(jù)《工業(yè)控制計算機》2006年19卷第8期9重復(fù)步驟2到步驟5,進行下一個8位數(shù)據(jù)的處理;最后得到的CRC寄存器即為CRC碼。根據(jù)上述規(guī)則,編寫VB下CRC