Hostlink通讯协议(C-mode)

来源:互联网 发布:张艺兴粉丝知乎 编辑:程序博客网 时间:2024/05/07 10:41
Hostlink通讯协议有两种模式:C-mode和FINS
1、Cmode:专用于hostlink通讯指令采用的是ASCII码,适用于所有OMRON的PLC通讯只能上位机发出指令给CPUCPU无法主动发数据给上位机。
2、FINS:采用的二进制码,适用于新开发的PLC,可用在多种网络设备(Controller  Link,  Ethernet,  etc),可被 CPU、IO模块、上位机主动发出,不同的指令分别适用于不同的信息接受单元。有两种链接协议:CMND和hostlink,当上位机是做发送源时,必须采用hostlink协议。

区别:目前总结2点
1、在PLC运行时,FINS直接对PLC进行读,写操作,但Cmode写入时必须把PLC改成监控模式。
2、FINS支持传送的数据长,Cmode传送数据短。

————————————————————————————————————
————————————————————————————————————
因为是修改别人的程序,这里是用C-mode。
Hostlink通讯协议中文手册一直说首个传送帧不能超过131个字节,但是手册随后又说首个帧不能超过30个字,以后帧不能超过31个字,1个字=2字节,那就是60字节和62字节。
这不矛盾么,乱七八糟的!!!

后找来英文手册“131 characters of data ”,后边又写了一句“30、31 words of data”,突然明白,131包含所有命令格式,而后边的30是纯粹说数据。

所以我的理解:
characters不是指数据data 的Byte,如果那样,应该写131 bytes of data,所以应给是指131个ASCII 码。
而ASCII 码本身也是7位,即一字节
举例:一个word的十六进制数,比如“1234”H,用ASCII 码表示就是“31H 32H 33H 34H”,
如果是十六进制数“AAAA”,则ASCII 码表示就是“41H 41H 41H 41H”,
所以有1个word  data =4个ASCII 码,不同于一般认识中的1个字=2个字节,
会得出1 WORD =4 BYTE 这样违背常识的结论~~~~

验证一下理解,假如按照以下通讯格式:
命令格式:
①起始符@,该符号必须置于每个命令的开头;1个 ASCII 码=1字节
②节点号即PLC单元号,用于辨识PLC,范围为0~30(BCD数);2个 ASCII 码
③命令符即发送命令的目的,设置2个字符的命令代码;2个 ASCII 码
④操作内容表示命令符操作的参数,命令不同,内容也不一样;最多31word,即31*4=122个ASCII 码
⑤校验符为FCS校验,对校验的内容进行异或运算,结果为2个字符;2个 ASCII 码
⑥结束符为*号+回车键;*号和回车各是1个,共2个 ASCII 码
统计1+2+2+122+2+2=131个 ASCII 码,即131字节。

so,文中两句话:131个字节,31个字,本质是完全一致的~~

总结:
通讯帧的每个字符都是一个ASCII 码,而不是一个数据data,
而且1 WORD data = 4 BYTE character。

0 0
原创粉丝点击