<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 西門子控制器與Modbus演義

          西門子控制器與Modbus演義

          作者: 時間:2016-12-19 來源:網(wǎng)絡(luò) 收藏
          先說300,300的Modbus一直是大家糾結(jié)無奈的地方,CP341加Dongle(主站授權(quán))的高昂成本催生了第三方DP總線橋市場,像我們一直用315-2DP+北京鼎實科技的產(chǎn)品(PB-B-RS232/485),還可以,但穩(wěn)定性方面與CP341還是有差距。有一年一個涉及結(jié)算項目為保險走正道就是購買了CP341加Dongle,很好用很穩(wěn)定,花大錢的東西用得就是爽啊!
          簡單說下一些調(diào)試感觸,我一般先用Modscan和Modsim兩大串口軟件與控制器連接測試,當(dāng)然必備的232/485轉(zhuǎn)換器和USB轉(zhuǎn)232轉(zhuǎn)換器(如果用筆記本)是必須的了。用西門子自家的串行模塊就不多說了西門子有很詳細(xì)的文檔教你,用總線橋也簡單,廠家的應(yīng)用文檔寫得也詳細(xì),無非這幾步,硬件組態(tài)導(dǎo)入GSD、撥碼開關(guān)設(shè)地址、數(shù)據(jù)映射、發(fā)送接受命令與報文處理等。我感受最深的有以下幾點一是有時總線橋DP通訊不上,硬件配置都正常,后來更改總線橋地址重新組態(tài)就OK了,這一招用了好幾次,原因不明。二是有時讀過來的數(shù)據(jù)不正常,這時你只要把高低字節(jié)反一下就好了。三是有次通訊不上(無接受)跟我買的15針插頭沒插好插偏了也有關(guān)系。我后來想用ET200S的151-8CPU,因為聽說指令庫是開放的,模塊也相對便宜點,后來一直沒用上?,F(xiàn)在自己也用STL和SCL寫了CRC校驗,這些東東網(wǎng)上資源一大把,包括VB、C語言的都有。
          200PLC就爽多了,我們用的其實是網(wǎng)上一個高手寫的Modbus庫程序,寫得很好(用200PLC的同仁應(yīng)該很清楚),一直用得挺好。后來我們有的項目就走300+200的組合,也算一種妥協(xié)吧。1200PLC出來后我算用得比較早的,那時用系統(tǒng)自帶的庫指令真的很方便,就是傻瓜式編程了,1200的485模塊也很便宜,現(xiàn)在1200PLC已取代我原先的300+200組合。如果大家想不用系統(tǒng)自帶指令庫而想自己寫可以參考伊默老師在1200論壇發(fā)的一個Modbus通訊FB,用SCL寫的,很好,我們很多人其實就是很幸福享受了他們這些高手的成果。
          最后壓陣的是1500了,我還是用的ET200SP的模塊(MP的模塊貴多了),還沒開始調(diào)試,但相關(guān)應(yīng)用文檔都已從官網(wǎng)下載,還是要贊一下西門子這一點,應(yīng)用文檔做得真的很好很全。
          說些題外話,Modbus是Modicon(現(xiàn)在并入施耐德)發(fā)明的,所以是施耐德系統(tǒng)的標(biāo)配,但與DP還是沒法比,也就小儀表和一般應(yīng)用的變頻器用用,真正實時性和控制精度要求很高的場合還得DP/PN等高速總線才行!


          關(guān)鍵詞: 西門子控制器Modbu

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();