欧姆龙HostLink通讯心得,个人心得,仅供参考。
PLC HOSTLINK的通讯收发:
帧格式:
一次交换中传输的命令或应答数据称为一帧,一帧最多包含131个数据字符
发送帧格式:
起始符+节点号+识别码+正文+校验码+中止符
=@+地址(1个字节)+FA+000000000(9个0)+FINS指令(2个字节)+正文+FCS校验码(1个字节)+*+CR
1)FA为识别号,可为"FA","RD","WD"...,RD只能用来读,WD只能用来写,前两种属于HostLink,FA既能读也能写,属于HostLink FINS串口,格式不一样
2)FA后5位为等待时间,默认0*10ms
3)后面的数据依次从右到左依次为:ICF\DA2\SA2\SID各占一个自己默认为0
应答帧格式:
起始符+节点号+识别码+异常码+正文+校验码+中止符
常用的异常码:
0 - 正常完成
1 - PLC在运行方式下不能执行
2 - PLC在监控方式下不能执行
4 - 地址超出区域
0B - 编码模式下不能执行命令
13 - FCS校验出错
14 - 格式错误
15 - 入口号数据错误
16 - 命令不支持
18 - 帧长度错误
19 - 不可执行
20 - 不能识别远程IO单元
23 - 用户存储区写保护
A3 - 由于数据传送中FCS错误而中止
A4 - 由于数据传送中格式错误而中止
A5 - 由于数据传输中入口号数据错误而中止
A6 - 由于数据传送中帧长错误而中止
FCS校验计算:
FCS校验是两个ASCII字符,从帧开始到校验码之前的所有数据执行"异或"操作的结果
例:
读取00号机DM000数据去命令
@ 00 RD 0000 0001 56 * CR
节点号 识别码 正文 校验码
FCS计算方式:
ASCII码 高4位 低4位
@ 40 0100 0000
XOR
0 30 0011 0000
XOR
1 31 0011 0001
XOR
R 52 0101 0010
XOR
D 44 0100 0100
. . . .
. . . .
. . . .
1 31 0011 0001
----------------------------------
计算结果 0101 0111
ASCII字符 5 6
存储区代码:
IO区 :B0
IO区字节位:30
W区 :B1
W区字节位 :31
HR区 :B2
HR区 :32
DM区 :82
DM区字节位:02
(1)存储区写命令(FINS指令):0102
格式:
FINS指令(2个字节)+正文+FCS校验码(1个字节)+*+CR
= 0102 + 存储区代码(1字节) + 开始地址(3字节) + 字节个数(2字节) + 数据值(根据个数来,是个数的2倍) + FCS校验码(1字节) + * +CR
例:
PLC地址为0,W210寄存器写入0x0388
PLC发送:
@ 00 FA000000000 B1 00D200 0001 0388 73 * CR
PLC接收:
@ 00 FA0040000000 0102 0000 40 * CR
0102后面跟着的0000代表写入成功
(2)存储区读命令(FINS指令):0101
格式:
FINS指令(2个字节)+正文+FCS校验码(1个字节)+*+CR
= 0101 + 存储区代码(1字节) + 开始地址(3字节) + 字节个数(2字节) + FCS校验码(1字节) + * +CR
例:
PLC地址为0,读W210寄存器的值,向PLC发送
PLC发送:
@ 00 FA000000000 0101 B1 00D200 0001 73 * CR
PLC接收:
@ 00 FA0040000000 0101 0000 0388 40 * CR
0101后面跟的0000代表读取成功,
W210=0x0388
(3)强制置位(SET/写1)和复位(RESET/写0)命令(FINS指令):2301
FINS指令(2个字节)+正文+FCS校验码(1个字节)+*+CR
= 2301 + 字节数量(2字节) + 置位/复位命令字(2字节) + 存储区代码(1字节) + 字节地址(3字节) + * +CR
置位/复位命令字:
0000 - 强制复位
0001 - 强制置位
8000 -
8001 -
FFFF - 接触强制
例1:
PLC地址为0,强制W212.01=On
PLLC发送:
@ 00 FA000000000 2301 0001 0001 31 00D401 04 * CR
PLC回应:
@ 00 FA0040000000 2301 0000 43 * CR
2301后面跟的0000代表读取成功
例2:
强制W212.01=OFF
PLC发送:
@ 00 FA000000000 2301 0001 0000 31 00D401 05 * CR
PLC回应:
@ 00 FA0040000000 2301 0000 43 * CR
例3:
接触强制:
PLC发送:
@ 00 FA000000000 2301 0001 FFFF 31 00D401 05 *CR
PLC回应:
@ 00 FA0040000000 2301 0000 43 * CR
C-Code收发:
(和上面的基本上一样)
命令格式(上位机→PLC)
起始符 节点号 命令符 操作内容 校验符 结束符
起始符:@
节点号:PLC单元号0-31
命令符:发送命令的目的
操作内容:命令符操作的参数
校验符:FCS校验(异或运算),与上面相同
结束符:*CR
响应格式(PLC→上位机)
起始符 节点号 命令符 状态符 操作内容 校验符 结束符
起始符:@
节点号:PLC单元号0-31
命令符:发送命令的目的
状态符:显示响应的结果(正确或异常)
操作内容:返回的响应数据
校验符:FCS校验(异或运算),与上面相同
结束符:*CR
实例:
1)读取PLC内存
读取PLC内从0通道中数据值
命令帧(上位机→PLC)
@ 00 RD 0000 0001 57 2A0D(*CR)
起始符 节点号 命令符 起始地址 数据长度 校验码 结束符
(1字节) (1字节) (2字节) (2字节,10进制) (2字节) (1字节) (2字节)
响应帧(PLC→上位机)
@ 00 RD 00 0001 57 2A0D(*CR)
起始符 节点号 命令符 状态符 数据 校验码 结束符
(1字节) (1字节) (2字节) (1字节) (2字节*数据长度) (1字节) (2字节)
2)写值给PLC内存
写数据至PLC内存D1通道中
命令帧(上位机→PLC)
@ 00 WD 0001 ABCD 56 2A0D(*CR)
起始符 节点号 命令符 起始地址 写的数据 校验码 结束符
(1字节) (1字节) (2字节) (2字节,10进制) (写入个数=写的数据/4) (1字节) (2字节)
响应帧(PLC→上位机)
@ 00 WD 00 53 2A0D(*CR)
起始符 节点号 命令符 状态符 校验码 结束符
(1字节) (1字节) (2字节) (1字节) (1字节) (2字节)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|