有一个键盘连接到PLC控制器。键盘正在向控制器发送帧。
下面是键盘发送的帧。
$200103001<000000008000000000000000000009$ 3$ 200103001<000000008000000000000000000009$ 3$ 200103001<000000008000000000000000000009$ 3$ 200103001<000000008000000000000000000009$ 3$ 200103001<000000008000000000000000000009$ 3$ 200103001<000000008000000000000000000009$ 3$ 200100?1$ 3
单帧的结构是STX(02),然后是有用数据,然后是ETX(03)。在上图中,您可以看到 STX 为 2 美元,ETX 为 3 美元。
这里的“$”符号代表什么?
我正在尝试使用结构化文本 IEC 编程语言。如何提取$2到$3之间的数据?
顺便说一句,接收到的帧保存为 STRING(255)。
我尝试使用FIND功能来定位STX和ETX位置。然而,由于$符号,它没有找到STX和ETX。
FIND (StringWhereDataIsSaved, '$3') -> 不起作用
FIND (StringWhereDataIsSaved, '03') -> 将在帧的数据部分找到 03 而不是 ETX
FIND (StringWhereDataIsSaved, '3') -> 将在帧的数据部分找到 3,而不是 ETX。
在允许您查看隐藏字符的文本编辑器中查看接收到的数据,例如Notepad++。 $ 和数字之间有一些东西,看起来是一个空格,但也可能是其他东西,例如回车符。修改您的
FIND
命令以搜索正确的字符串,它应该可以工作。