2020年4月1日 星期三

MR-J4 通訊 (RJ-45) (RS422)


2020.04.01 update

手冊
MR-J4-_A_(-RJ),當中有介紹 MITSUBISHI ELECTRIC GENERAL-PURPOSE AC SERVO PROTOCOL



使用CN3 (RJ-45接孔),是RS422不是Ethernet

而我使用RS422轉USB的介面接到電腦上。




我接3,4,5,6腳位。要注意的是...SDN、RDN是+、SDP、RDP是-
參數的部分,它只有鮑率跟站號可以設定,其他都是固定的,比-RJ系列少一些些

站號設定:PC20,我設定1當做我的站號
鮑率設定:
置於是否要延遲回碼就看個人
我是使用115200 + 延遲回碼
所以我參數 PC21 設定值為:0140
設定完成後記得關大電重開。


首先我先介紹幾個ASCII 當中四個控制符,等等會用到:
SOH : 指令的開頭要加的
STX : 開始傳送資料的部分
ETX : 代表資料的部分傳送完畢
EOT : 程式關閉前要丟出來的碼,我是覺得可有可無。

寫資料的結構:
有些指令可能會有資料(Data)

讀資料的結構:

我參考手冊,下指令:
Command pulse frequency(指令脈波頻率 單位) :
Command : "01"
Data No : "04"


CheckSumStation 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



沒有留言:

張貼留言

文章測試

Test