一、三菱PLC編程口通訊協議
三菱PLC編程口的通訊協議比較簡單,只有四個命令,即:
命令                    命令碼             目標設備
DEVICE READ CMD             "0"                       X,Y,M,S,T,C,D
DEVICE WRITE CMD            "1"                       X,Y,M,S,T,C,D
FORCE ON CMD                  " 7"                         X,Y,M,S,T,C
FORCE OFF CMD                  "8"                        X,Y,M,S,T,C
五個標示:
ENQ            05H             請求
ACK            06H             PLC正確響應
NAK           15H             PLC錯誤響應
STX             02H             報文開始
ETX             03H             報文結束
使用累加方式的和校驗,幀格式如下:
STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower)
和校驗:
SUM= CMD+……+ETX。 如SUM=73H,SUM=“73”。
1、DEVICE READ(讀出軟設備狀態值)
計算機向PLC發送:
始          命令             首地址                        位數             終                 和校驗
STX       CMD             GROUP ADDRESS       BYTES         ETX              SUM
PLC 返回
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
2、DEVICE WRITE(向PLC 軟設備寫入值)
計算機向PLC發送:
始          命令      首地址          位數             數據             終                  和校驗
PLC 返回
ACK (06H) 接受正確
NAK (15H) 接受錯誤
3、位設備強制置位/復位
FORCE ON 置位
始                 命令             地址                    終                 和校驗
STX              CMD             ADDRESS            ETX              SUM
02h               37h               address                 03h             sum
FORCE OFF 復位
始                 命令             地址                    終                 和校驗
STX              CMD             ADDRESS            ETX              SUM
02h               38h               address                 03h               sum
PLC 返回
ACK(06H) 接受正確
NAK(15H) 接受錯誤
以上可以看出,協議非常簡單,但是由于沒有寄存器類型信息,所以地址的計算十分關鍵,如D100和M100分別對應哪個地址呢?下面就是三菱Fx系列PLC地址對應表:
Public Const PLC_D_Base_AddRess = 4096
Public Const PLC_D_Special_Base_AddRess = 3584
Public Const PLC_Y_Group_Base_AddRess = 160
Public Const PLC_PY_Group_Base_AddRess = 672
Public Const PLC_T_Group_Base_AddRess = 192
Public Const PLC_OT_Group_Base_AddRess = 704
Public Const PLC_RT_Group_Base_AddRess = 1216
Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令為7或8時)
Public Const PLC_M_Group_Base_AddRess = 256
Public Const PLC_PM_Group_Base_AddRess = 768
Public Const PLC_S_Group_Base_AddRess = 0
Public Const PLC_X_Group_Base_AddRess = 128
Public Const PLC_C_Group_Base_AddRess = 448
Public Const PLC_OC_Group_Base_AddRess = 960
Public Const PLC_RC_Group_Base_AddRess = 1472
Public Const PLC_TV_Group_Base_AddRess = 2048
Public Const PLC_CV16_Group_Base_AddRess = 2560
Public Const PLC_CV32_Group_Base_AddRess = 3072
當我們用DEVICE READ命令時,D100地址=100*2+4096;M100地址=100+256;不同的是D類型寄存器存放的是字,M寄存器存放的是位,同樣是讀兩個字節,D100返回的就是PLC中D100地址的值,M類型寄存器返回的是M100到M116的值。所以當我們用FORCE ON 命令時,M100寄存器地址=100+2048;
這也沒有什么復雜的,不是嗎?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列與DEVICE READ/WRITE不同,是低位在前高位在后。如Y20,地址是0510H,代碼中4個字節地址表示為:1005。(注意:Y寄存器為八進制,如Y20地址=16+1280=0510H)