台達PLC開發筆記(二):台達PLC設置主機通訊參數為RTU並成功通訊

前言

  前面使用485和網口與台達成功建立通訊,但是485是使用用的ASICC模式,多數情況下是使用RTU模式提升通訊效率。

 

下載安裝台達ISPSoft軟體

  官網下載地址://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有些東西確實雞肋,沒必要死磕。