• 制作日期:2020/02/19
  • 硬件配置:CP1H-XA40DT ,CP1L-EM40DT-D
  • 软件配置:CX-Programmer
  • 实现功能:利用232串口走Hostlink协议,实现CP间的数据读写

1.硬件接线

1.jpg

CIF模块 DB9针接线方式

PLC1-主站 PLC2-从站
2——- 3
3——- 2
9——- 9
4-5短接 4-5短接

2.Hostlink协议介绍

Hostlink有两种模式 C-mode 和 Fins ,本案例使用的是C-mode ,Hostlink采用的是ASCII 码。

Hostlinkg格式如下:
命令帧格式:
2.png

①起始符@,该符号必须置于每个命令的开头;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码

响应帧格式:
3.png

①起始符@,该符号必须置于每个命令的开头;1个ASCII码=1字节
②节点号即PLC单元号,范围为0~30(BCD数);2个ASCII码
③命令符,设置2个字符的命令代码;2个ASCII码
④结束码,反馈通信格式是否正确
⑤从站响应的内容,命令不同,内容也不一样;最多31word,即31*4=122个ASCII码
⑥校验符为FCS校验,对校验的内容进行异或运算,结果为2个字符;2个ASCII码
⑦结束符为号+回车键;号和回车各是1个,共2个 ASCII 码

FCS校验是从@到FCS前的数据进行异或计算
END CODE 为00时通信正确,详细错误代码请看 Hostlink说明

常用的操作符:读/写 D区: RD/WD
读/写 CIO区:RR/WR


3.PLC设置:

主站PLC:打开CX-Programmer,连上PLC ,点击设置将通信设置设为定制,波特率和格式根据现场选一个,模式选择RS-232无协议模式。由于Hostlink的结束码是/CR ,ASCII码为OD,所以设OD。
4.png

注意:结束码设置不对可能会导致数据接收不全或收不到数据

从站PLC: 打开CX-Programmer,连上PLC ,点击设置将通信设置设为定制,波特率和格式和主站设置一样,模式选择Hostlink。
5.png


4.程序

用到的功能块
TXD,用于发送无协议通信帧
6.png

RXD,用于接收无协议通信帧

7.png

FCS,用于计算FCS校验码
8.png

  1. PLC发送时需要先将Hostlink通信帧格式转为HEX<br />如:读取站号1 D0一个通道<br /> **命令指令 **@ 0 1 R D 0 0 0 0 0 0 0 1 FCS * /CR<br /> HEX: 40 30 31 52 44 30 30 30 30 30 30 30 31 待计算 2A 0D

响应指令 40 30 31 52 44 30 30 32 32 33 33 35 37 2A
转成ACSII @ 0 1 R D 0 0 2 2 3 3 5 7 *

将命令数据填入发送数据开头的D100通道,接收的数据存放到接收数据开头D200,FCS功能块对@到FCS前的数据进行异或计算
9.png

10.png

11.png

12.png

触发通信前D200数据是0,从站D0数据为2233
13.png

触发通信后D200 收到数据,D203,D204为读取的数据
14.png

写入站号1 D0一个字,数据1
命令指令 @ 0 1 W D 0 0 0 0 0 0 0 1 FCS /CR
HEX 40 30 31 57 44 30 30 30 30 30 30 30 31 待计算 2A 0D

响应指令 40 30 31 57 44 30 30 35 32 2A
ASCII @ 0 1 W D 0 0 5 2

End Code 为00时表示通信正常

通信前从站D0是0
15.png

通信后D0数据是0001,D200收到数据
16.png


5.案例模版

CP间Hostlink通信.zip