Modbus與第三方系統通訊
背景:
本文引用地址:http://dyxdggzs.com/article/201609/303889.htm我們現在做鍋爐節能控制,都是在原有的控制系統上加上西門(mén)子的控制器,把我們的算法寫(xiě)在西門(mén)子控制器中,通過(guò)通訊的方式讀取第三方系統的數據運算后把控制指令再發(fā)回去。因為第三方系統使用的系統不同,目前比較多的如ABB,施耐德,GE,上海新華,和利時(shí),浙大中控等,為了實(shí)現和這些系統做的控制系統,就要有一個(gè)比較合理的通訊方式,目前采用的是opc方式通訊。
目前采用的通訊方式:
目前采用opc方式,鍋爐也是采用母管制的,所以要同時(shí)把整個(gè)母管中鏈接的鍋爐的數據都采集過(guò)來(lái)才好,這樣數據兩比較大,在大量數據交換的情況下,速度比較好。我們現在在向大型鍋爐控制上轉型,大型鍋爐都是一爐一機的,針對我們的現在的要求不太合適,我們的特點(diǎn)是需要交換的數據量小最多兩三百點(diǎn),但是要求速度快。我們目前的通訊方式是用pc和第三方系統通訊然后pc和PLC通訊,pc中用wincc把讀取到的數據轉寫(xiě)到plc的變量中,wincc中如果腳本執行的速度過(guò)快,則影響到wincc的其他的功能,所以目前最快也就是1s的周期。
目前的技術(shù)需求:
而針對一爐一機這種數據量小,要求速度快的通訊特點(diǎn),modbus通訊方式更合適,modbus是比較早的通訊協(xié)議,大多數的智能儀表都支持,控制系統也都支持,所以不存在無(wú)法通訊的難點(diǎn)。為了實(shí)現這個(gè)通訊,我于2014年的年底在江蘇阜寧澳洋熱電廠(chǎng)做了測試。
項目硬件需求:
江蘇阜寧澳洋熱電廠(chǎng)采用的是和利時(shí)的DCS控制系統,因為我們的控制思路是在原有控制系統基礎上做的程序,所以硬件中不包含io模塊采用西門(mén)子ps407,400控制器以及cp441通訊模塊。網(wǎng)上采購232通訊接頭,自制232通訊線(xiàn)。
硬件組態(tài):
硬件組態(tài)很簡(jiǎn)單,只要按照說(shuō)明資料一步步操作就可以了,這里沒(méi)有什么好說(shuō)的。
遇到的問(wèn)題:
1、接線(xiàn)。網(wǎng)上搜索到的232接線(xiàn)圖:

按照這個(gè)接線(xiàn)圖連接后無(wú)法通訊,后來(lái)我考慮到modbus的通訊需要告訴對方是否準備還收發(fā)數據以及是否收發(fā)結束,所以應該狀態(tài)也發(fā)給對方才行,所以把上面的接線(xiàn)圖改成:

實(shí)現了硬件連接,可以通訊了。
2、通訊格式設置:
大家都知道西門(mén)子的數據存儲格式和其他的公司有點(diǎn)不一樣,西門(mén)子是低字高位,其他公司大多數都是采用的高字高位,如果只是傳輸字節的話(huà),兩者是沒(méi)有區別的,如果用modbus傳輸32位的數據就需要注意這個(gè)問(wèn)題了,因為modbus只是原封不動(dòng)的把藥傳輸的32位地址的數據傳過(guò)去,具體這些位中式什么它不管的,所以如果沒(méi)有注意到這個(gè)高低位的問(wèn)題,很有可能你都不知道傳過(guò)去的是什么。對方能夠實(shí)現換位功能,則只要采用4321的數據格式就行了,否則就要我們手動(dòng)把需要傳輸的數據在傳輸前或者接收后進(jìn)行換位操作。第一次使用沒(méi)有注意這個(gè)問(wèn)題,通訊后的數據全變了,后來(lái)?yè)Q位后正常了。
3、處理:
在實(shí)際測試使用過(guò)程中處理了前面說(shuō)的問(wèn)題后,又遇到了新的問(wèn)題。實(shí)數,整數都能正確通訊,只有bool量無(wú)法通訊,只要增加bool量,則第三方系統報錯,通訊中斷,咨詢(xún)技術(shù)服務(wù)人員也沒(méi)有解決問(wèn)題,后來(lái)我想既然整數能夠正確處理,那么我就把bool量打包成字節按整數傳輸,這樣還省了需要傳輸的變量數,只是雙方都需要編程,發(fā)送bool量方打包數據把8個(gè)bool量轉換成一個(gè)字節的整數,接收方再把這個(gè)整數分解成8個(gè)bool量。
通過(guò)以上的處理,終于實(shí)現的西門(mén)子400控制器通過(guò)modbus與和利時(shí)dcs系統的通訊。
評論