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

程序范例五:
接收模式参数 4(特定字符为开始字符以及不连续时间设定 5~255ms)且设定为 8 位处理模式(SM106=ON)

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

  2. 设定要传送的数据内容 D100=16#0031、D101=16#0032、D102=16#0033、D103=16#0034

  3. 设定 D10=16#0004(模式参数 4),D11=16#3A0F(开始字符为 16#3A,不连续时间设定为 16#0F 即 15ms)

  4. 启动条件接点 M0

  5. PLC 发送出 4 笔数据

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

  1. 外部机器收到 PLC 传送的数据后,依序发送 7 个字符连续数据给 PLC 且每个字间隔为 1 ms

外部机器→PLC 30 3A 35 36 37 38 39

  1. 读取 D200=6(接收数据数),接收数据内容为 D201=16#003A、D202=16#0035、D203=16#0036、

D204=16#0037、D205=16#0038、D206=16#0039

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

  2. 如欲再次传送,需手动将完成标志 SM100 设为 OFF,即可再次执行。

注:当数据传送完毕时,接收中标志 SM98 为 ON,并进入接收状态,当接收到特定开始字符(16#3A)开始接收数据并开始累积计时结束时间,收到一个字符即清除累积计时值,直到累积计时超过 D11 的设定值16#0F(15ms),完成标志 SM100 为 ON。

编写ST程序:

cs 复制代码
/*范例程序五:模式4测试*/

SM106:=TRUE;										//8位模式
通讯端口_COM1:=1;								//通讯端口号:com1
接收数据结束条件参数设定:=4;				//模式参数4, D10
D11:=16#3A0F;											//(开始字符为 16#3A,不连续时间设定为 16#0F 即 15ms)
发送数据长度:=4;										//D20,PLC发送4比数据给外部
D100:=16#0031;
D101:=16#0031;
D102:=16#0033;
D103:=16#0034;

IF M0 THEN
	//M0:=FALSE;
	//SM100:=FALSE;								//如欲再次传送,需手动将完成标志 SM100 设为 OFF
	COMRS( 通讯端口_COM1 , D100 , 发送数据长度 , D200 , 接收数据结束条件参数设定 );//发送数据,D200是接收数据的起始地址。
	
	//如果收到数据SM100会ON,清除:触发条件和收到数据标志。
	IF SM100 THEN
		SM100:=FALSE;
		M0:=FALSE;
	END_IF;
	
END_IF;

运行PLC,触发M0 ON之后,串口助手收到数据:

使用串口助手给PLC回复数据:30 3A 35 36 37 38 39,一共7比数据。

通过PLC监控,我们发现PLC只收到了6比数据。

这是为什么呢?

这就跟模式4有关系,我们来看手册上关于模式4的介绍

我们详细来看:

程序中我们设定D11:

cs 复制代码
D11:=16#3A0F;											//(开始字符为 16#3A,不连续时间设定为 16#0F 即 15ms)

3A:是高8位。表示特定的开始字符。所以串口助手发送的第一个字节30给忽略了,而是从第二个字节的3F开始接收数据。

0F:是低8位。表示不连续的时间。当接收到特定开始字符(16#3A)开始接收数据并开始累积计时结束时间,收到一个字符即清除累积计时值,直到累积计时超过 D11 的设定值16#0F(15ms),完成标志 SM100 为 ON。简单的说就是如果15ms还没收到任何字符,PLC就会认为接收完成,会把接收完成标志SM100设置为ON。

相关推荐
代码游侠12 小时前
学习笔记——HC-SR04 超声波测距传感器
开发语言·笔记·嵌入式硬件·学习
superman超哥12 小时前
Context与任务上下文传递:Rust异步编程的信息高速公路
开发语言·rust·编程语言·context与任务上下文传递·rust异步编程
步达硬件12 小时前
【Matlab】批量自定义图像处理
开发语言·matlab
军军君0112 小时前
Three.js基础功能学习七:加载器与管理器
开发语言·前端·javascript·学习·3d·threejs·三维
liulilittle12 小时前
OPENPPP2 网络驱动模式
开发语言·网络·c++·网络协议·信息与通信·通信
mjhcsp12 小时前
C++ AC 自动机:原理、实现与应用全解析
java·开发语言·c++·ac 自动机
huihuihuanhuan.xin12 小时前
后端八股之java并发编程
java·开发语言
寻星探路12 小时前
【算法通关】双指针技巧深度解析:从基础到巅峰(Java 最优解)
java·开发语言·人工智能·python·算法·ai·指针
崇山峻岭之间12 小时前
Matlab学习记录32
开发语言·学习·matlab
向上的车轮12 小时前
如何选择Python IDE?
开发语言·ide·python