学习PLC编程过程中不可避免会接触到数据运算、比较等操作,当两个操作数类型不同时就需要进行转换,所以数据转换指令也是编程的重要指令。但是很多人往往不是太了解ASCII字符及字符与数据之间如何转换,本文就着重介绍字符与数据之间如何进行转换。

有些设备在通信过程中发送的报文是ASCII形式,那么就需要将其转换成数据。

一、名词认识

1. ASCII字符字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节

2.字符串

字符串变量是一个字符序列,其中的每个字符均以字节形式存储。STRING 数据类型的第一个字节定义字符串的长度,即字符字节数。

下图所示为存储器中以变量形式存储的 STRING 数据类型。字符串的长度可以是 0 到 254 个字符。变量字符串的最大存储要求为 255 个字节(长度字节加上 254 个字符)。

如果直接在程序编辑器中输入常数字符串参数(最多 126 个字符),或在数据块编辑器中初始化变量字符串(最多 254 个字符),则字符串赋值必须以双引号字符开始和结束。

3.字符组

ASCII 字符数组指令的字符输入输出采用 BYTE 数据类型。ASCII 字符数组为被引用的字节地址序列,与字符串类似,只是没有指定长度。由于未使用长度字节,因此该数组并不是 STRING 数据类型。可使用 ASCII 字符串指令处理 STRING 数据类型的变量。

二、字符转换指令类型

1)整数转字符串(I_S):将整数字IN 转换为长度为 8 个字符的 ASCII 字符串。

格式 (FMT) 分配小数点右侧的转换精度,并指定小数点显示为逗号还是句点。结果字符串会写入从OUT 处开始的 9 个连续字节中。

nnn表示小数点右侧的位数,可设置为0-5。c位指定使用逗号(c=1),使用小数点(c=0)作为整数部分与小数部分之间的分隔符。

下图还给出了值的示例,其格式为:使用小数点(c = 0),小数点右侧有三位数 (nnn = 011)。OUT 处的值为下一字节地址中存储的字符串的长度。

2)双整数转字符串(DI_S)

双整数转换为字符串的指令会将双整数 IN 转换 为长度为 12 个字符的 ASCII 字符串。格式(FMT) 分配小数点右侧的转换精度,并指定小数点显示为 逗号还是句点。结果字符串会写入从OUT 处开始的13 个连续字节中。

输出字符串的长度始终为 12 个字符。输出缓冲区中小数点右侧的位数由nnn 字段指定。nnn 字段的有效范围是 0 到 5。如果分配0 位数到小数点右侧,则该值不显示小数点。对于nnn 大于 5 的值,输出为 12 个 ASCII 空格字符组成的字符串。c 位指定使用逗号 (c=1) 还是小数点 (c=0) 作为整数与小数部分之间的分隔符。格式的高4 位必须是零。

下图还给出了一个值的示例,其格式为:使用小数点(c = 0),小数点右侧有四位数 (nnn = 100)。OUT 处的值为下一字节地址中存储的字符串的长度。

3)浮点数转字符串(R_S)

实数转换为字符串的指令会将实数值 IN 转换为 ASCII 字符串。格式(FMT) 分配小数点右侧的转换精度、小数点显示为逗号还是点以及输出字符串的长度。转换结果放置在以OUT 开头的字符串中。结果字符串的长度在格式中指定,可以是3到 15 个字符。

CPU使用的实数格式最多支持7位有效数字。尝试显示7位以上有效数字会产生舍入错误。输出字符串的长度由ssss 字段指定。0、1或2个字节大小无效。输出缓冲区中小数点右侧的位数由nnn 字段分配。nnn字段的有效范围是0到5。如果分配0位数到小数点右侧,则该值不显示小数点。如果nnn大于5,或者因分配的输出字符串长度太小而无法存储转换的值,则会用ASCII 空格字符填充输出字符串。c位指定使用逗号(c=1)还是小数点(c=0)作为整数与小数部分之间的分隔符。

下图还给出了一个值的示例,其格式为:小数点(c = 0),小数点右侧有一位数(nnn = 001),输出字符串的长度为 6 个字符 (ssss = 0110)。OUT 处的值为下一字节地址中存储的字符串的长度。

4)字符串转整数(S_I)

INDX 转换的起始字符参数,INDX值通常设为1,从字符串的第一个字符开始 转换。INDX 值可设置为其它值,以在字符串中的不同点处开始转换。当输入字符串包含不属于要转换的数字一部分的文本时,可采用此方法,遇到不可转换的将自动终止。例如,如果输入字符串为“Temperature:77.8”,可将INDX设置为13 来跳过字符串开头的单词 “Temperature:”转换结果77。

如果INDX为1,则IN输入字符串“12345”转换成12345。如果INDX为2,则转换为2345

5)字符串转双整数(S_DI):与S_I类似,此处不复述。

6)字符串转浮点数(S_R)

将字符串转换为实数的指令不会转换以科学记数法或指数形式表示实数的字符串。该指令不会产生溢出错误(SM1.1),但会将字符串转换为指数之前的实数,然后终止转换。例如,字符串“1.234E6”会转换为实数值 1.234,而不会出现错误。

7)整数转ASCII字符组(ITA)

将整数值 IN 转换为 ASCII 字符数组。格式参数FMT 将分配小数点右侧的转换精度,并指定小数点显示为逗号还是句点。得出的转换结果将存入以OUT 分配的地址开始的8 个连续字节中。

8)双整数转ASCII字符组(DTA)

将双字 IN 转换为 ASCII 字符数组。格式参数FMT 指定小数点右侧的转换精度。得出的转换结果将存入以OUT 开头的 12 个连续字节中。

输出缓冲区的大小始终为12个字节。输出缓冲区中小数点右侧的位数由nnn 字段分配。nnn字段的有效范围是0到5。如果分配0位数到小数点右侧,则转换后的值无小数点。对于nnn值大于5的情况,将使用ASCII 空格字符填充输出缓冲区。c位指定使用逗号(c=1)还是小数点(c=0) 作为整数部分与小数部分之间的分隔符。4 个最高有效位必须始终为零。

9)浮点数转ASCII字符组(RTA)

将实数值 IN 转换成 ASCII 字符。格式参数FMT指定小数点右侧的转换精度、小数点显示为逗号还是点以及输出缓冲区大小。得出的转换结果会存入以OUT 开头的输出缓冲区中。

得出的ASCII字符数(或长度)就是输出缓冲区的大小,它的值在3到15个字节或字符之间。实数格式最多支持7位有效数字。尝试显示7 位以上的有效数字将导致舍入错误。

下图显示了 RTA 指令的格式操作数 (FMT)。通过ssss 字段分配输出缓冲区的大小。0、1 或 2 个字节大小无效。输出缓冲区中小数点右侧的位数由nnn 字段分配。nnn 字段的有效范围是 0 到 5。如果分配0 位数到小数点右侧,则转换后的值无小数点。如果nnn 的值大于 5 或者分配的输出缓冲区太小以致无法存储转换后的值,则使用 ASCII 空格填充输出缓冲区。c 位指定使用逗号 (c=1) 还是小数点 (c=0) 作为整数部分与小数部分之间的分隔符。

下图给出了一个数值作为示例,其格式为使用小数点(c=0)、小数点右侧有一位(nnn=100)、缓冲区的大小为六个字节(ssss=0111)。

10)十六进制数转ASCII(HTA)

将从输入字节 IN 开始的十六进制数转换为从 OUT 开始的 ASCII 字符。由长度LEN 分配要转换的十六进制数的位数。可以转换的ASCII 字符或十六进制数的最大数目为 255。

上图vb20=16#4E,vb21=16#2D,转换后VB30,VB31,VB32,VB33分别为‘4’‘E’‘2’‘D’。

11)ASCII转十六进制数(ATH)

将从 IN 开始,LEN个长度的 ASCII字符转换为从 OUT 开始的十六进制数。可转换的 最大 ASCII 字符数为 255 个字符。

如果VB0,VB1,VB2,VB3为‘3’,‘5’,‘8’,‘6’则转换

后VB10=16#35,VB11=16#86。

c语言把字符变成asc11值,PLC字符与数据之间如何进行转换?相关推荐

  1. PLC对模拟量信号是如何转换的?

    模拟量信号是自动化过程控制系统中最基本的过程信号(压力.温度.流量等)输入形式.系统中的过程信号通过变送器,将这些检测信号转换为统一的电压.电流信号,并将这些信号实时的传送至控制器(PLC). PLC ...

  2. C语言--02输出一个字符的ASCII值

    /*输出一个字符的ASCII值*/ #include<stdio.h> int main(){ //定义一个字符变量 char c1; //printf语句提示输入一个字符 printf( ...

  3. c语言几行代码打印每个英文字符对应的码值(十进制表示形式)

    CharToIntValue.c 源码: #include <stdio.h> int main(){char c;int i;while(0<1){scanf("%c&q ...

  4. ACMNO.8输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32

    题目描述 输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32oasdf/.' ...

  5. c语言计算字符串的函数是什么,字符函数

    字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...

  6. 【C 语言】字符串模型 ( 键值对模型 )

    文章目录 一.业务逻辑需求 二.完整代码实现 一.业务逻辑需求 在 C 中实现 键值对 字符串 的 读取 , 解析 , 保存 操作 ; 键值对字符串样式 "key = value" ...

  7. 【STM32】利用 C 语言 strchar() 函数查找字符串中指定字符的位置

    文章目录 字符串中查找字符 strchr() 描述 声明 参数 返回值 字符串分割 strtok() 描述 声明 参数 返回值 自己的函数 字符串中查找字符 strchr() 描述 C 库函数 cha ...

  8. 检测是否输入字母c语言程序,C语言判断字符是否为可打印字符的方法

    C语言isprint()函数:判断字符是否为可打印字符头文件: #include isprint() 函数用来判断一个字符是否为打印字符,其原型为: int isprint(int c); [参数]c ...

  9. c语言中用于判断ch是否是字符的表达式,最新C语言复习题集资料

    精品文档 C语言复习题集 一. 判断题 1-1.C语言程序是从源文件的第一条语句开始执行的. 正确答案:F 1-2.C语言中的变量名不区分大小写. 正确答案:F 1-3.若变量定义为double x; ...

最新文章

  1. python进阶免费-菜鸟世界 -python进阶---生成器
  2. 干货,springboot自定义注解实现分布式锁详解
  3. 各种语言速度之比,实验验证Cgojuliajavapythonoctave
  4. exit()函数学习
  5. 十一、python生成器和迭代器
  6. 开关电源闭环控制原理_stepbystep,电路设计全过程(含原理图)
  7. iOS关键代码遭泄露;Google正式抛弃HTTP;微博网页版出故障 | 一周业界事
  8. Thinkphp 实现上一篇与下一篇的方法
  9. 第七节:SpringBoot高级属性配置二
  10. Delphi编译后的程序图标无法修改一例
  11. 三十款国外IES灯光经典素材整理n
  12. 计算机接口时序波形图怎样看,TimeQuest就一定要搞定——看懂时序波形图
  13. 信息系统项目管理师必背核心考点(四十三)预期货币价值(EMV)
  14. 这种木头比钢和陶瓷更锋利,轻松切开半熟牛排,钉穿三层木板,还永不生锈 | Cell子刊...
  15. 电脑配置单4(自用勿删)
  16. 计算机工具都有什么,电脑上有哪些特别好用的小工具?盘点10大PC工具,个个都精品...
  17. 数据仓库系列文章一:浅谈数仓设计
  18. UVa 10382 - Watering Grass
  19. 物联卡是正规卡还是漏洞卡?一篇最简单明了的解释!
  20. 【洛谷 P6151 [集训队作业2019] 青春猪头少年不会梦到兔女郎学姐】【容斥原理+生成函数】

热门文章

  1. 几款好用证件照制作工具推荐
  2. 英语学习——长难句01
  3. Web客户端语言HTML、XHTML和XML相关知识介绍
  4. JavaScript之显示和隐藏图片
  5. 利用DirectShow开发C#版的音频文件播放器(补充完善)
  6. 微信公众号开发部署服务器
  7. 你是否了解APP耗电问题?深入探索 Android 电量优化,flutter插件推荐
  8. php车秘,2020秘趣导航自动收录网站导航源码原版 自动审核|批量检查友链有效性...
  9. 微软2016校园招聘4月在线笔试 hihocoder 1288 Font Size (模拟)
  10. 关于华硕主板的图像输出设置