臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊
阿新 • • 發佈:2021-07-05
前言
前面使用485和網口與臺達成功建立通訊,但是485是使用用的ASICC模式,多數情況下是使用RTU模式提升通訊效率。
下載安裝臺達ISPSoft軟體
官網下載地址:https://downloadcenter.delta-china.com.cn/DownloadCenter?v=1&q=ISP&sort_expr=cdate&sort_dir=DESC
配置需要通過網線,使用HWCONFIG軟體進行配置:
(先安裝前面的commgr通訊管理軟體)
下載後,如下圖:
安裝後,如下圖:
配置之前測試
使用485測試ASCII通訊方式
使用485測試RTU通訊方式
(埠預設是ASCII方式,RTU方式會返回一個固定長度固定的資料,應該是錯誤檢測)
使用ISPSoft軟體配置臺達PLC的485由ASCII轉為RTU
步驟一:開啟軟體
步驟二:建立工程
步驟三:開啟網路配置HWCONFIG
步驟四:配置COM1口等引數(ASCII改為RTU)
(若沒有之前使用網線連線,會出現提示,之前是需要先網線連線到PLC的)
正在下載,提示處理中,如下圖:
下載超時,是需要使用網口連線的。
步驟五:使用網線方式連線PLC
步驟六:再次下載新的配置(原先為485現在為網線IP)
步驟七:下載成功,使用485RTU進行測試
(為hex了,不是acsii了,成功)
入坑
入坑一:使用Qt的modbus485讀取失敗
問題
Qt的modbus全方面測試讀取M、D、Y、X對應的暫存器附近幾個值都為0。
解決
直接使用modbus rtu測試
是沒有問題的,但是Qt返回值依然是:
其他部分在此嘗試過了,總共四種類型,相關的M、D、X、Y變數都設定過類似的,全部讀取成功,但是值都為0與實際不符,好像架空了一樣。
論證(2021年04月25日補充)
測試單個線圈,使用libmodbus可以讀出來
測試單個線圈,使用QModbus還是無法讀出
測試讀取暫存器,使用libmodbus可以讀出
測試讀取暫存器,使用QModbus可以讀出
結論
Qt有些東西確實雞肋,沒必要死磕。