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

已下信息是从手册上获得:

程序范例四:

接收模式参数 3(两个特定字符为结尾字符)且设定为 16 位处理模式(SM106=OFF)

假设外部机器为 DVP-ES2,并要对 DVP-ES2 的 D100 写入 H1234

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

  2. 设定要传送的数据内容 D100=16#303A、D101=16#3031、D102=16#3136、D103=16#3630、

D104=16#3134、D105=16#3332、D106=16#3334、D107=16#0D46、D108=16#000A

  1. 给定 D10=16#0003(模式参数 3),D11=16#0D0A(表示结尾字符 16#0D 与 16#0A)

  2. 启动条件接点 M0

  3. PLC 发送出 17 笔数据

PLC 传送数据→外部机器 3A 30 31 30 36 31 30 36 34 31 32 33 34 33 46 0D 0A

(ASCII 为:0106106412343FCRLF)

  1. 外部机器收到 PLC 传送的数据后,发送 18 笔数据给 PLC 且最后 2 笔是终止符 16#0D 16#0A

外部机器→PLC 3A 30 31 30 36 31 30 36 34 31 32 33 34 33 46 0D 0A

(ASCII 为:0106106412343FCRLF)

  1. 读取 D200=17(接收数据数),接收数据内容为 D201=16#303A、D202=16#3031、D203=16#3136、

D204=16#3630、D205=16#3134、D206=16#3332、D207=16#3334、D208=16#0D46、D209=16#000A

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

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

注:当数据传送完毕时,接收中标志 SM98 为 ON,并进入接收状态,当开始接收数据后,直至收到设定的两个特定结尾字符 16#0D0A 为止,若完成接收则完成标志 SM100 为 ON(若超过通讯逾时时间仍未收到特定结尾字符,则通讯逾时标志 SM104 为 ON)

编写ST程序如下:

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

SM106:=FALSE;										//16位模式
通讯端口_COM1:=1;								//通讯端口号:com1
接收数据结束条件参数设定:=3;				//模式参数3, D10
D11:=16#0D0A;										//表示结尾字符 16#0D0A
发送数据长度:=17;									//D20,PLC发送17比数据给外部
D100:=16#303A;
D101:=16#3031;
D102:=16#3136;
D103:=16#3630;
D104:=16#3134;
D105:=16#3332;
D106:=16#3334;
D107:=16#0D46;
D108:=16#000A;

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数据:3A 30 31 30 36 31 30 36 34 31 32 33 34 33 46 0D 0A

通过PLC可以监控到:

同样,我们也回头看看手册的介绍:

相关推荐
Tangyuewei8 分钟前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界37 分钟前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
繁星蓝雨1 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J2 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
杜大哥2 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5552 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
yurenpai(27届找实习中)2 小时前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18
shmily麻瓜小菜鸡3 小时前
JS/TS 易踩坑知识点 — 模块化与工程化类
开发语言·javascript·ecmascript
geovindu3 小时前
CSharp: Observer Pattern
开发语言·后端·观察者模式·设计模式·c#·.netcore·行为模式
郝学胜-神的一滴3 小时前
C++11 工程级应用 09:告别无谓拷贝,解锁高性能移动语义
开发语言·数据结构·c++·vscode·软件工程·visual studio