vb和三菱FX2N-48MR的串口通讯协议
三菱FX係列PLC編程口通信协议举例 1、DEVICE READ(读出软设备状态值) 计算机向PLC发送: 始命令首地址位数终和校验
STX CMD GROUP ADDRE BYTES ETX SUM 例子:从D123开始读取4个字节数据
'STX'010F604'ETX'74
02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h
地址算法:addre =addre *2 1000h 再转换成ASCII 31h,30h,46h,36h
我對上麵的算法不是太熟悉(1)地址算法:addre =addre *2+1000h 怎麼得到的31h,30h,46h,36h,能不能在說的詳細一下好嗎?(2)sum=30h 31 ...... 03h=74h,得到的74h為什麼要轉化成37h,34h.這種變化叫什麼啊,能不能詳細給說明一下啊 請知道的朋友告知一下好嗎?我的電子郵件:lw2008sd@163.com
一、三菱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)
其实一点技术含量都没有,就是拐了几个弯,偏偏很多时候又不都告诉你,让人浪费不少时间。不废话了,自己做个程序试试吧。
pc与三菱PLC FX2N系列串口通讯地址变换规律: D区:ADDRESS=ADDRESS*2+1000H X区:ADDRESS=0080H Y区:ADDRESS=00A0H
因篇幅问题不能全部显示,请点此查看更多更全内容