如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?

描述
在处理字符串变量时,PTP (点-到-点) 通信块忽略了最大字符长度和实际字符长度的定义属性(图.01)。
当写数据到字符串变量时,RCV_PTP 块将覆盖字符串头信息 (图.02)。
当从字符串变量读取数据时,SEND_PTP 块将读取字符串报头信息作为实际的字符串数据的一部分并发送出去(图.03)。n

字符串变量结构
STEP 7 Basic 中的字符串变量包含三部分:n

  • 字符串的最大长度n
  • 字符串的实际长度n
  • 实际字符串数据

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 01n

对于 PTP 通信来说,字符串变量应只包含实际的字符串数据。n

RCV_PTP 块特性
RCV_PTP 块将接收到的实际字符数据写到 S7-1200 PLC 准备好的字符串变量中,前两个字节没有必要的长度信息。因此,由于字符串变量头信息不存在,数据的处理不能继续。n

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 02n

SEND_PTP 块特性
SEND_PTP 块读取请求的字符串数据包含字符串数据的报头信息,并且发送头两个字节作为数据字符串。n

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 03n

前提条件

  • 创建字符串的数据块 (DB),需要使用非符号寻址。n
  • 需要绝对寻址的缓存区

在非符号寻址的数据块中创建字符串变量
浏览 PLC "Project tree" 并双击 "Add new block" 项。在 "Add new block" 对话窗口,点击 "Data Block (DB)" ,并且不勾选"symbolic access only" 。为了与例子中的绝对地址相对应,手动设置数据块号为"2",点击"OK"按钮。 n

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 04n

浏览"Project tree" 并双击数据块状 "Data_block_2 (DB2)"。在表的 "Static" 栏中,输入一个数据类型为 "String[8]" 的变量 。n

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 05n

对于使用 RCV_PTP 块字符串不匹配的补偿

为了补偿,字符串的长度信息必须分开处理。
在这个例子中,使用8 个字符长度的字符串变量。

No. 使用 RCV_PTP 块字符串不匹配的补偿
1.

将实际字符数据写入字符串变量

为了保留字符串的报头数据,接收到的实际字符串数据需要从第三个字节开始写入字符串变量。缓存区的绝对寻址使之成为可能。
在这个例子中,字符串变量有8 个字节长度。起始偏移从 10.0 (DB2.DBBX10.0)开始,所以实际字符串数据从偏移地址 12.0 (DB2.DBBX12.0) 开始。

地址表达包括以下各项:

  • 指针“P#”
  • 绝对地址的第三个字节的第一位
  • 需要写入字符串变量的字节个数,用一个空格分开。这应该是字符串变量的最大长度(如 BYTE 8)

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 06

2.

拷贝最大和实际字符长度到字符串头

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 07

注意
在拷贝“实际长度”值时,需要将数据类型从UINT (双整)转换成 BYTE(字节)。

表01

对于使用 SEND_PTP 块字符串不匹配的补偿电
为了补偿,字符串的长度信息必须分开处理。
在这个例子中,使用8 个字符长度的字符串变量。

No. 补偿使用 SEND_PTP 块的字符串错位
1. 替换 SEND_PTP 块的实际字符串长度

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图. 08

注意
在替换 "#length" 值之前,需要将数据类型从 BYTE(字节)转为 UINT(双整数)。

2.

从字符串变量中读取实际的字符数据
为了使得字符串的报头信息不被发送出去,SEND_PTP 块需要从字符串变量的第三个字节开始读取。缓存区的绝对寻址使之成为可能。
在这个例子中,字符串变量有8 个字节长度。起始偏移从 10.0 (DB2.DBBX10.0)开始,所以实际字符串数据从偏移地址 12.0 (DB2.DBBX12.0) 开始

地址表达与表. 01中的图. 6 相似。

如何补偿 RCV_PTP 和 SEND_PTP 块造成的字符错位?
图 09

表 02

需求

  • S7-1200 PLC
  • 以太网电缆
  • 带以太网接口的 PC / PG
  • STEP 7 Basic V10.5

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc333378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论