设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
200SMART转换指令解析系列(一)
返回列表
发新帖
[西门子]
200SMART转换指令解析系列(一)
[复制链接]
23643
|
0
|
2023-12-30 21:12:48
|
显示全部楼层
|
阅读模式
导读:
这篇文章为大家介绍200SMART的部分转换指令,主要是字符串及字符与其它数据类型相互转换的指令,这些指令理解起来有些难度的,虽不常用,但有时在通信交换数据时也会用到,很多初学者不知如何利用这些指令来编程,因此,本文就此介绍一下其含义和用法。注意此处说的字符串为ASCII码字符串。
一、所需软件及硬件
西门子200SMART编程软件V2.7版,200SMART ST30 CPU一台,通信网线一条。
二、转换指令含义及用法
1.整数、双整数转换为字符串
因这两个指令的用法是类似的,因此放在一起介绍。指令的形式及在指令列表中的位置如下图1所示:
图1
实际生产中配方的数据已经定好,由图1可知,改指令有两个输入管脚和一个输出管脚,其中IN为要转换的整数字(有符号整数),可填常数或变量,如12345或VW10;OUT为输出字符串缓冲区的首字节,如VB100;FMT管脚初学者很多都不知其意,故加以详细说明。FMT即为英文单词formatd的缩写,翻译成中文是“格式”的意思,此处可理解为规定字符串转换后的格式。FMT需填写一个字节型变量或常数,如VB0或常数5,下面以图示的方式介绍其含义,如下图2:
图2
因FMT为以字节型变量,所以由8个二进制位组成,即0位到7位,LSB代表地位,MSB代表高位。指令规定,高四位(4-7位)必须为0,C位指定是用逗号还是小数点来作为转换后整数部分和小数部分的分隔符:当C=1时,使用逗号;当C=0时,使用小数点。右边三位nnn的有效数据为0到5,代表小数点后面字符的个数。nnn=000时,转换后的值无小数点;nnn=5时,小数点右面有5个字符,如输入的数据不在0到5的范围内,则得不到正确的输出结果。还需注意的该指令的下列几条规定:
1)、转换值为正写入输出缓冲区不带时不带符号,为负则需带符号(—);
2)、输出字符串的值为右对齐;
3)、输出字符串的长度为8位,即8个字节,加上首字节(自动填写字符串长度“8”),以共9个字节,需注意该区域地址不要重复使用。
下面用实际的案例及监控加以说明,案例1(输入管脚用常数)如图3所示:
图3
图3上图的转换值以ASCII码的格式显示,首字节VB10内的数据为字符8,代表输出字符串的长度为8为,VB16为以点标志的小数点位,因FMT为2,所以小数点后面为2位,而输出字符串规定为右对齐,所以转换后的值为字符串56.28,其余的字节为空格;下图示意16进制显示的格式,大家可以对照ASCII表,查看是否与上图的数据一致。
案例2(输入管脚用变量)如下图4所示:
图4
图4上图转换的整数VW20为32767,VB30为2#0000_1011,高四位为0,3位1,表示小数点以逗号表示,如图4上图的VB105的当前值,后三位为011,表示小数点后面有3位数,所以转换后的值为32.767;中图中将VB30改为2#0000_1000,表示小数点后没有数据,因此监控图显示转换后的值为32767;下图VB30为2#0000_0111,后三位超出0-5的范围,因此指令报错。
双整数转换为字符串指令与单整数转换指令类似,唯一不同的是输出字符串的长度为12位,加上首字节一共是13个字节,比如VB0到VB12。这里不再赘述,大家可以举一反三进行练习。
2. 浮点数转换为字符串指令
浮点数数转换为字符串的指令会将实数值 IN 转换为 ASCII 字符串。格式 (FMT) 分配小数点右侧的转换精度、小数点显示为逗号还是句点以及输出字符串的长度。转换结果放置在以 OUT 开头的字符串中。结果字符串的长度在格式中指定,可以是 3 到 15 个字符。FMT图示如下图5所示:
图5
总结:由图5可见,“R_S”与“I_S”、“DI_S”的FMT管脚的区别是高四位有效,字段SSSS的取值范围是3-15,表示输出字符串的长度,超出此范围指令会报错。低四位代表的含义与“I_S”、“DI_S”的FMT相同。需要注意的是,CPU 使用的实数格式最多支持 7 位有效数字,尝试显示 7 位以上有效数字会产生舍入错误。请看下面的例子及监控画面,如图6所示:
图6
FMT管脚的VB130的值为16#A4,这就是说转换值的格式是10个字符,小数点后有4位,所以VD120的值456.888转化后为字符串两个空格加456.8880,共10个字节。这个指令需谨慎使用,很容易出错。比如输入是456.888,VB130输入16#74,认为能得到结果为456.8880,但指令会报错,他因为456.8880一共占8个字节,而FMT的值为16#74,只输出7个字节,因此得不到正确结果,将16#74改为16#84后,输出结果正确,如下图7所示。
图7
因篇幅所限,本文先介绍这三个指令,希望能对大家理解和使用有所帮助。
来源:技成培训网,作者:技成-何晓刚,未经授权不得转载!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
bettyzdm
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』