前言: 網路上真的找不到CTA通訊的資訊,頂多是DVPSS2跟其他廠牌的通訊教學,台達也找不到範例,或是CTA很少人用? 所以自己研究後寫了一篇,這也是我第一次操作MODBUS RTU通訊模式。
這篇文章使用的硬體型號如下:
配線部分很簡單,只要將PLC下方的RS485,連接到CTA的RS485腳位,注意正負極的位置即可
軟體使用台達ISPSoft V3.20
CTA說明書的通訊說明:
這篇文章使用RTU模式進行,首先在CTA中設定通訊,通訊參數開啟方式 (轉自CTA手冊):
通訊許可on→通訊格式rtu→站號1→鮑率9600→位元長度8→同位元even→停止位元1
計數模式→STAGE1→UP
在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可以找到對應的數字
根據手冊提供的位址,對應的到暫存器及內容,可以分別從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)通訊操作時的相關旗標,可以在程式設計時搭配使用。