通訊軟件007——如何處理Citect Modbus取數(shù)不正確

本文介紹如何處理Citect在Modbus通訊時(shí)數(shù)據(jù)不正確的方法,相關(guān)通訊資源請(qǐng)登錄網(wǎng)信智匯(wangxinzhihui.com)。
Citect和第三方設(shè)備做modbus tcp通訊經(jīng)常會(huì)碰到這種情況:通訊正常,數(shù)據(jù)也能去掉,但是數(shù)據(jù)顯示不對(duì),有以下幾種原因:
1、寄存器地址基數(shù)不同造成:不同系統(tǒng)、設(shè)備的寄存器地址基數(shù)可能不同,有的是0,有的是1,通過(guò)調(diào)整數(shù)據(jù)地址來(lái)消除。
2、地址鏈接錯(cuò)誤:地址錯(cuò)誤造成數(shù)據(jù)錯(cuò)誤,檢查廠家提供的地址映射表來(lái)消除。
3、以上兩者原因消除后,還是數(shù)據(jù)不對(duì),這時(shí),要考慮長(zhǎng)整型、浮點(diǎn)型的字節(jié)順序問題。通過(guò)修改配置參數(shù),可以解決。
a)首先,點(diǎn)擊“設(shè)置向?qū)?設(shè)置編輯器”

?b)彈出參數(shù)編輯對(duì)話框

?c)整型數(shù)據(jù):在參數(shù)中增加參數(shù)組MODNET.IOPORT.IODEV,增加參數(shù)LONGDATATYPE。

? ??如上圖:
? ? MODNET.PORT40_BOARD1.AB_L1:PORT40_BOARD1為端口名,AB_L1為IO設(shè)備名
? ??LONGDATATYPE:調(diào)整整型類型。取值范圍如下:
0: 整數(shù) = 10000 * low + high,整數(shù)范圍0 to 99,999,999
1:整數(shù) = 65536 * low + high,整數(shù)范圍-2,147,483,648 to +2,147,483,647
2: 整數(shù) = 10000 * high + low,整數(shù)范圍0 to 99,999,999
3:整數(shù) = 65536 * high + low,整數(shù)范圍-2,147,483,648 to +2,147,483,647
d)浮點(diǎn)數(shù)據(jù):在參數(shù)中增加參數(shù)組MODNET.IOPORT.IODEV,增加參數(shù)FloatMode。
FloatMode取值范圍如下:
0: Order of bytes = 1 0 3 2
1: Order of bytes = 3 2 1 0
2: Order of bytes = 0 1 2 3
3: Order of bytes = 2 3 0 1
e)對(duì)于modnet20和modnet30,以上參數(shù)設(shè)置無(wú)效,需要改成modnet協(xié)議。
f)參數(shù)設(shè)置后,項(xiàng)目需要重啟后有效。
g)參數(shù)是針對(duì)電腦,并不會(huì)跟隨項(xiàng)目,所以項(xiàng)目導(dǎo)入到新的電腦后,需要重新配置。
更多通訊資源請(qǐng)登錄網(wǎng)信智匯(wangxinzhihui.com)。