台达ST:自定义串行通讯传送与接收指令COMRS程序范例二

手册提供信息:

接收模式参数 1(设定不连续时间 5~3000ms)且设定为 16 位处理模式(SM106=OFF)

  1. 设定要传送的数据长度 D20=4

  2. 设定要传送的数据内容 D100=16#3231、D101=16#3433

  3. 设定 D10=16#0001(模式参数 1),D11=300(不连续时间设定值 300ms)

  4. 启动条件接点 M0

  5. PLC 发送出 4 笔数据

PLC 传送数据→外部机器 31 32 33 34

  1. 外部机器收到 PLC 传送的数据之后,依序发送 5 笔连续数据给 PLC 且每字间隔不超过 20 ms

外部机器→PLC 35 36 37 38 39

  1. 读取 D200=5(接收数据数),接收数据内容为 D201=16#3635、D202=16#3837、D203=16#0039

  2. 读取 SM100=ON(接收完毕)

  3. 如欲再次传送,需手动将完成标志 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;

验证结果:

  1. M0 ON后,PLC发送数据:31,32,33,34。串口助手监控到:
  1. 使用串口助手回传回复数据给PLC:35,36,37,38,39。PLC监控到:

踩过的坑:

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

相关推荐
isyangli_blog4 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008114 小时前
FastAPI APIRouter
开发语言·python
Benszen4 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆4 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木4 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充5 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~5 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6165 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草5 小时前
反射、Tomcat执行
java·开发语言
雪的季节6 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt