1. 程式人生 > 其它 >臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊

臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊

前言

  前面使用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有些東西確實雞肋,沒必要死磕。