紫外工控论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1542|回复: 1

[分享] 三菱PLC编程口通讯协议

[复制链接]
冰糖 发表于 2013-6-6 22:08:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
三菱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)
WMSWANG 发表于 2013-6-8 05:39:46 | 显示全部楼层
冰糖太{:soso_e179:}了
很好,值的收下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


--------------------------------------------------------------------------------------------------------------------
本站是工控技术交流站点,论坛内容均为网络收集或会员所发表,并不代表本站立场,会员拥有该内容的所有权力及责任!
本站内容如有侵犯您的版权,请按下面方式联系本站管理员,我们将及时删除处理
管理员:冰糖 QQ:5483695(请直击主题), Mail:admin#ziwai.net(#改成@) 其它非本人.
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!

QQ|Archiver|手机版|小黑屋|紫外工控论坛. ( 苏ICP备11032118号-1 )

GMT+8, 2024-5-4 20:05 , Processed in 0.375003 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表