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