手册提供信息:
接收模式参数 1(设定不连续时间 5~3000ms)且设定为 16 位处理模式(SM106=OFF)
-
设定要传送的数据长度 D20=4
-
设定要传送的数据内容 D100=16#3231、D101=16#3433
-
设定 D10=16#0001(模式参数 1),D11=300(不连续时间设定值 300ms)
-
启动条件接点 M0
-
PLC 发送出 4 笔数据
PLC 传送数据→外部机器 31 32 33 34
- 外部机器收到 PLC 传送的数据之后,依序发送 5 笔连续数据给 PLC 且每字间隔不超过 20 ms
外部机器→PLC 35 36 37 38 39
-
读取 D200=5(接收数据数),接收数据内容为 D201=16#3635、D202=16#3837、D203=16#0039
-
读取 SM100=ON(接收完毕)
-
如欲再次传送,需手动将完成标志 SM100 设为 OFF,即可再次执行。
注:当数据传送完毕时,接收中标志 SM98 为 ON,并进入接收状态,准备开始接收数据,当接收到第一个字符时开始累积计时结束时间,每收到一个字符即清除累积计时值,直到累积计时超过 D11 的设定值,完成标志 SM100 为 ON。
根据以上要求编写ST程序
cs
/*范例程序二*/
SM106:=FALSE; //16位模式
通讯端口_COM1:=1; //通讯端口号:com1
接收数据结束条件参数设定:=1; //模式参数1
D11:=300; //不连续时间设定值 300ms
D100:=16#3231;
D101:=16#3433;
发送数据长度:=4;
IF M0 THEN
//M0:=FALSE;
//SM100:=FALSE; //如欲再次传送,需手动将完成标志 SM100 设为 OFF
COMRS( 通讯端口_COM1 , D100 , 发送数据长度 , D200 , 接收数据结束条件参数设定 );//发送数据,D200是接收数据的起始地址。
//如果收到数据SM100会ON,清除:触发条件和收到数据标志。
IF SM100 THEN
M0:=FALSE;
SM100:=FALSE;
END_IF;
END_IF;
验证结果:
- M0 ON后,PLC发送数据:31,32,33,34。串口助手监控到:

- 使用串口助手回传回复数据给PLC:35,36,37,38,39。PLC监控到:

踩过的坑:
IF的触发条件M0不能立即清除,否则发送会失败。
