關(guān)于西門子200SMART的MODBUS RTU通信
西門子200SMART的MODBUS通信是半雙工的,因此在和多個從站通信時需要輪詢讀取,線上CASE經(jīng)常會出現(xiàn)輪詢程序執(zhí)行一段時間后會輪詢程序無法執(zhí)行無法讀取問題,那么輪詢程序客戶會常采用定時輪詢的方式也就是利用累加或定時器分時調(diào)用Mbus_MSG指令,這種方法在使用時如果出現(xiàn)一個站掉站的情況,輪詢程序就會因為掉站的指令沒DONE而定時時間到觸發(fā)了下一個Mbus_MSG指令而報6號錯誤。那么輪詢的*好方法就是利用上一個MSG指令的DONE位復(fù)位自身觸發(fā)條件置位下一個MSG指令觸發(fā),因為DONE是MODBUS完成的標(biāo)識位,當(dāng)一個站掉站后在報錯的同時DONE位也會置“1”,此方法是*標(biāo)準(zhǔn)也是時效性*高的輪詢方法。
西門子200SMART的MODBUS通信為標(biāo)準(zhǔn)的MODBUS RTU通信 ,數(shù)據(jù)幀起始位數(shù)據(jù)位停止位分別為1個、8個、1個,客戶如果想實現(xiàn)停止位為2位的MODBUS通信 此MODBUS庫是不支持的 ,用戶只能使用自由口編程實現(xiàn)。通信報3不能通信的問題首先需檢查通信線纜是否正常,485通信200SMART的485口定義為3 + 、8 - ,客戶經(jīng)常會由于接反線造成通信不上。記憶猶新的一個CASE通信報3檢查通信線纜 、站地址波特率效驗都沒問題,但是依然通信不上。*后客戶兩端增加終端電阻后正常,經(jīng)常在線上告知客戶*多按照要求兩端加終端電阻,此CASE就證明了聯(lián)網(wǎng)的格言:“通信問題你糊弄它,它就糊弄你!”。