2019.06.05 update
下載了兩個手冊,分別有兩種協定(Protocol),
MR-J4-_A_(-RJ),當中有介紹 MITSUBISHI ELECTRIC GENERAL-PURPOSE AC SERVO PROTOCOL (中文手冊沒有14章之後的通訊內容)
MR-J4-_A_-RJ,當中有介紹 Modbus-RTU Protocol
手冊在介紹通訊協定其實都滿詳細的,
原本還很期待MR-J4-60A會有Modbus,測試結果是沒有,
所以我只能接著介紹 MITSUBISHI ELECTRIC GENERAL-PURPOSE AC SERVO PROTOCOL。
上面兩個通訊協定都是用CN3 這個Port,是使用RJ-45的頭(一般網路線的水晶頭),腳位定義為RS422,
它支援RS485的短路接法,Modbus篇有畫。
無論哪種protocol,接線是不會改變。
而我使用RS422轉USB的介面接到電腦上。
我接3,4,5,6腳位。奇怪的是...N是+、P是-
參數的部分,它只有鮑率跟站號可以設定,其他都是固定的,比-RJ系列少一些些
站號設定:PC20,我設定1當做我的站號
鮑率設定:
置於是否要延遲回碼就看個人
我是使用115200 + 延遲回碼
所以我參數 PC21 設定值為:0140
設定完成後記得關大電重開。
首先我先介紹幾個ASCII 當中四個控制符,等等會用到:
SOH : 指令的開頭要加的
STX : 開始傳送資料的部分
ETX : 代表資料的部分傳送完畢
EOT : 程式關閉前要丟出來的碼,我是覺得可有可無。
寫資料的結構:
有些指令可能會有資料(Data)
讀資料的結構:
我參考手冊,下指令:
Command pulse frequency(指令脈波頻率 單位) :
Command : "01"
Data No : "04"
CheckSum = Station No + Command + STX + Data No + ETX = 31 + 30 + 31 + 02 + 30 + 34 + 03 = "FB" = 46 42
檢查碼不算開頭,送碼開頭為 SOH ( ASCII 的 01h)
Station No (設定PC20) = 1 (ASCII 的 31h)
Command = 字串 "01" (ASCII 的 30h 31h)
STX (ASCII 的 02h)
Data No = 字串 "04" (ASCII 的 30h 34h)
ETX (ASCII 的 03h)
十六進制加法 31 + 30 + 31 + 02 + 30 + 34 + 03 = FB
計算如果超過就取後兩位轉十六進制字串
CheckSum 計算結果為 字串 "FB" (ASCII 的 46h 42h)
SOH + Station No + Command + STX + Data No + ETX + CheckSum = 01 31 30 31 02 30 34 03 46 42
實際使用:
PC20(站號) : 1
PC21(鮑率) : 0000 (9600 無延遲)
資料位元 : 8 (內定)
檢查位元 : Event (內定)
停止位元 : 1 (內定)
參數有PA、PB、PC、PD、PE、PF,讀取參數前要先設定群組
這個案子我只用到PC,因此,程式開始寫一次就可以了,
設定參數群組到Pr. PC :
電腦→驅動器 : 0131383502303030303032034335
電腦←驅動器:023141033735
送碼:
SOH + Station No + Command + STX + Data No + Data + ETX + CheckSum
01 + 31 + 3835 + 02 + 3030 + 30303032 + 03 + 4335
Data 的長度 (Frame length) 為 4 個Byte ,PC群組是 "0002" (ASCII 的 30h 30h 30h 32h)
回碼:
STX + Station No + Error Code + ETX + CheckSum
02 + 31 + 41 + 03 + 3735
讀取參數06 :
電腦→驅動器 : 01313135023036033032
電腦←驅動器:023141303030303030303030303030034235
送碼:
SOH + Station No + Command + STX + Data No + ETX + CheckSum
01 + 31 + 3135 + 02 + 3036 + 03 + 3032
回碼:
回碼的 Data 的長度 (Frame length) 為 12 個Byte
STX + Station No + Error Code + Data + ETX + CheckSum
02 + 31 + 41 + 303030303030303030303030 + 03 + 4235
讀到的數值是 0
寫入參數05 :
寫入數值 100
電腦→驅動器 : 01313934023035303030303030303030303634033532
留言列表