2024-11-28|閱讀時間 ‧ 約 11 分鐘

台達PLC DVPSS2 與 台達CTA系列計時計數器的Modbus RTU通訊

前言: 網路上真的找不到CTA通訊的資訊,頂多是DVPSS2跟其他廠牌的通訊教學,台達也找不到範例,或是CTA很少人用? 所以自己研究後寫了一篇,這也是我第一次操作MODBUS RTU通訊模式。

準備

這篇文章使用的硬體型號如下:

硬體

  1. 台達PLC,DVP14SS211T
  2. 台達CTA系列計時/計數/轉數器, CTA4001A

配線

配線部分很簡單,只要將PLC下方的RS485,連接到CTA的RS485腳位,注意正負極的位置即可

產品圖片取自台達官網

軟體

軟體使用台達ISPSoft V3.20

設定通訊

CTA說明書的通訊說明:

  • 接線端子:端子9:RS-485+;端子14:RS-485-
  • 串列資料格式:支援傳輸速率2400、4800、9600、19200、38400bps;不支援7, N, 1、8, O, 2 或8, E,
  • 通訊協定:支援Modbus ASCII/RTU 模式;支援功能碼03H(讀取暫存器)和06H(寫入一個暫存器)。03H 最多可讀取8 筆。


這篇文章使用RTU模式進行,首先在CTA中設定通訊,通訊參數開啟方式 (轉自CTA手冊):

  1. 按下面板上的【Lock】按鈕,將計數器於鎖定的狀態。
  2. 同時按壓約2 秒後放開,進入隱藏功能設定選項。畫面顯示【PASS】及CtAxx0】。
  3. 調整上/下鍵,將數值調整為【4323】後按MODE鍵確認。
  4. 斷電重開,即可看到通訊的參數。
  5. 同時按壓MODE和鍵,即可解除面板Lock 狀態。

CTA通訊設定

通訊許可on→通訊格式rtu→站號1→鮑率9600→位元長度8→同位元even→停止位元1

CTA模式設定

計數模式→STAGE1→UP

ISPSoft的階梯圖

在ISPSoft中開啟一個SS2的新專案,直接使用台達函式庫中的DFB_COM2_Protocol的功能塊,再根據CTA中的通訊設定來設置 : 9600,8,even,1,rtu,1

其中通訊逾時的設定,參考台達的說明文件,設定305ms。ErrCode則直接設定一變數即可,這邊使用ErrorCode作為變數名稱。



讀取資料

要將M1122設為on,才能夠傳送。

使用MODRW功能,S1:連線站號,S2:通訊功能碼,S3:讀寫資料位置,S:讀寫資料,n,讀寫資料長度。

16#表示數字是 16 進位值,上述讀取功能中表示站號01H,功能碼03H(讀取),開始資料位置是1000H,讀取8個位置(前面手冊有提到最多一次讀取8個)。通訊位置表可以參考CTA說明書。

另外在ISPSOFT手冊中提到,使用MODRW時,資訊會存在D1296~1311

讀取資料執行結果

計數器模式下的值



當計數器顯示55跟309時,在D1296跟D1302可以找到對應的數字

地址對應表格,因前面MODRW指令的第一個是16#1000,也就是1000H的位址,才能夠這樣對應

根據手冊提供的位址,對應的到暫存器及內容,可以分別從PV1得到55、SV2得到309的值 (一開始以為這邊顯示的值會是SV1,但實際操作發現是SV2,說明書也沒提到)。

寫入資料

操作寫入資料時,要寫入低位及高位兩個位置,資料才能正常寫入,以寫入PV1為例,位置分別寫入1000H、1001H :

與讀取不同的是,S2功能碼要寫入06H (16#6),並寫只能寫入一個暫存器,n的部分則是1,S的地方可以輸入想要寫入的數字,這邊輸入231。


上面使用MODRW指令寫入231後,計數器PV1值就會跟著變化了。







接著我們嘗試寫入SV2的值,階梯圖如下,位址改成1006H跟1007H,並且將D414輸入796,並且執行。


執行後就可以在計數器上看到變化了!






結語

以上範例提供計數器模式下的讀取/寫入功能,台達範例我也沒找到怎麼寫,研究之後分享給需要的人,若你有更好的寫法還請跟我分享!

補充說明

DVP-ES2 / EX2 / EC5 / SS2 / SA2 / SX2 / SE /SE2 & TP 操作手冊(程式篇),裡面有提到COM2(RS-485)通訊操作時的相關旗標,可以在程式設計時搭配使用。


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.