阶梯逻辑305:ASCII和字符串

美国信息交换标准代码(ASCII)和字符串被设计用来将可打印字符转换为可编程逻辑控制器(plc)可以处理的数字,在美国广泛使用

通过Frank Lamb,自动化入门 2017年2月22日

美国信息交换标准代码(ASCII)是一种基于字节的将文本转换为数值的编码。虽然它不是将可打印字符转换为可编程逻辑控制器(plc)可以处理的数字的唯一方法,但它是美国最常用的方法

图片来自Allen-Bradley RSLogix5000 ControlLogix程序,写于2006年。该程序与基于pc的康耐视机器视觉系统通信,该系统发送和接收从相机触发到正在检查的物体的位置数据报告等各种数据字符串。

下表显示了一些可打印字符及其对应的二进制、八进制、十进制和十六进制值。注意,二进制列中只有7位;最初的基于电传打印机的编码在串行传输时,留下了使用第8位进行奇偶校验的选项。标准ASCII表有128(0到127)个字符,同时也有8位(或更多)的变体,包括诸如圆周率、外币符号等字符。

然而,并非所有ASCII字符都是可打印的。标准ASCII中有95个可打印字符,而其他字符由其他键盘相关命令组成,如退格键、制表符和回车/换行。null、SOH、STX和ETX字符通常用于与打印机等设备的接口。

在一些PLC课程中,有些课程会给学生一个双整数(DINT),它应该表示条形码。本课程通常使用蒙版、旋转和位移位来提取代表产品颜色、类型或其他值的DINT部分。虽然这是解释数据如何编码的一个很好的练习,但条形码读取的ASCII字符串必须以不同的方式解码。

下面的文章转载自我最近出版的培训手册,“PLC硬件和编程,多平台”,其中强调了PLC中使用的一些常见字符串操作及其目的。

正如本手册的数据部分所提到的,字符串是sint或单个整数(字节)的数组。数组元素包含ASCII字符,可以将其视为包含一些不可打印命令的可打印字符。字符串中包含的值可以显示为十进制或十六进制数字,也可以显示为文本字符。如果在文本中,它们通常在字符前显示一个“$”符号,例如text = $T, $e, $x, $T字符。这些等于十进制数84 101 120 116或十六进制数54 65 78 74。这些可以在标准ASCII表中找到;在本手册的附录中有一个。

字符串也可以包含一个长度(LEN)字段,该字段包含字符串中存在的字符数。例如,如果一个字符串有80个字符的空间,但被字符“今天是星期二,9月13日”填充,那么LEN = 30。

其他需要了解的术语包括:

  • CONCAT -把两根弦一个接一个地连在一起。
  • 中(MID) -将指定字符串复制到指定位置上另一个字符串的中间。
  • Find (FND) -在另一个字符串中查找指定字符串的起始位置。通常返回找到的字符串的位置。
  • 删除(SDEL) -从字符串中指定位置移除字符。
  • 插入(INS) -在指定位置向字符串中添加字符。
  • 长度(LEN) -如果长度不是字符串定义的一部分,则查找字符串中的字符数。

还有一些处理字符串的技巧:

1.在用新字符串覆盖字符串寄存器之前,清除字符串寄存器中的任何数据是很重要的。否则,如果新数据比旧数据短,就会有字符剩余;这真的会打乱你的计算。

2.为在数据处理中多次使用的字符或字符串创建标记或寄存器是一个好主意。一个充满空值的“Null String”对于清除数据很有用,正如你可以看到上面的字符被创建为“&”@和“逗号”作为分隔符。

处理字符串需要大量代码;例如,本文顶部示例中的n_Vision_Command和o_Vision_Response例程是37级和11级。这还不包括d1_Seq_Auto例程(56级)和q_Clear_Data例程(6级),它们完全专用于与视觉计算机通信。这个程序是在附加指令(aoi)出现之前编写的,这将使代码更有组织。

那些使用其他IEC 61131 PLC语言的人会发现使用结构化文本(ST)的过程更容易。但是,无论哪种方式,在PLC中使用ASCII还是字符串数据类型都是复杂的。

弗兰克羊肉他是自动化咨询服务公司的创始人。本文最初发表于自动化入门博客。Automation Primer是CFE Media的内容合作伙伴。由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

在线额外

参见下面链接的自动化入门关于阶梯逻辑的其他故事。

原始内容可以在automationprimer.com