转换操作指令是将操作数1进行数据类型转换,转换的结果仍然存放在操作数2中。
TIA Portal中的转换指令有七种:①CONVERT(转换值指令);②ROUND(取整指令);③CEIL(浮点数向上取整指令);④FLOOR(浮点数向下取整指令);⑤TRUNC(截尾取整指令);⑥SCALE(缩放指令);⑦UNSCALE(取消缩放指令)。
这七种转换指令参数的数据类型、存储区、说明如表6-23所示。
表6-23 转换操作指令参数表

续表

续表

1.BCD码和整数、双整数的互转
BCD码与整数、双整数之间转换的指令如表6-24所示。
表6-24 BCD码与整数、双整数之间转换的指令

表6-24中,如果“Tag_In”的信号状态为1,则发生数据类型的转换和存储。如果转换指令执行无错误,则输出“Tag_Out”置位为1。
在执行BCD码转换为整数或双整数时,如果BCD码的某位出现无效数据(如2#1010~2#1111,对应十进制数10~15),将不能进行正确转换,并导致出现“BCDF”错误,此时系统的正常运行顺序被终止,将出现下列事件之一:
①CPU进入STOP状态,“BCD转换错误信息”写入诊断缓冲区;
②调用组织块OB121(OB121已经编程,用户可以在OB121中编写错误响应程序)。
由于3位BCD码的有效数据范围是-999~+999,而16位整数的有效范围是-32767~+32767,所以不是所有整数都可以转换为BCD码的,当被转换的整数超出了BCD码的范围时,在累加器1中将得不到正确的转换结果,同时状态字的溢出位OV和溢出保持位OS被置1。在程序中,用户可以根据OV和OS位的状态判断转换结果是否正确,以避免产生进一步的运算错误。
2.整数转换为双整数
整数转换为双整数的指令格式如表6-25所示。
表6-25 整数转换为双整数指令

3.双整数与实数之间的转换
双整数与实数之间的转换指令如表6-26所示。
表6-26 双整数与实数之间的转换指令

续表(https://www.xing528.com)

4.缩放指令
缩放指令如表6-27所示。
表6-27 缩放指令

缩放指令的语句表为:

(1)功能说明:缩放指令可以将数据类型为整数的“Tag_Input Value”转换为浮点数,并将转换后的浮点数在介于上下限之间的物理单位内进行缩放。“Tag_Highlimit”为上限,“Tag_Lowlimit”为下限,指令结果从OUT口输出。缩放公式为:
OUT=[((FLOAT(IN)-K1)/(K2-K1))*(HI_LIM-LO_LIM)]+LO_LIM
(2)K1、K2值的确定:公式中K1、K2的值由参数“Tag_Bipolar”决定。
●Tag_Bipolar=1:此时“Tag_Input Value”的值为双极性且取值范围为-27648~27648。这种情况下,K1=-27648.0,K2=+27648.0。
●Tag_Bipolar=0:此时“Tag_Input Value”的值为单极性且取值范围为0~27648。这种情况下,K1=0.0,K2=+27648.0。
(3)错误信息的输出:错误信息在RET_VAL端口输出。
●如果Tag_Input Value>K2,则指令输出结果为上限值“Tag_Highlimit”的值,RET_VAL端口输出错误代码0008。
●如果Tag_Input Value<K1,则指令输出结果为下限值“Tag_Lowlimit”的值,RET_VAL端口输出错误代码0008。
●无错误时,RET_VAL端口输出的代码是0000。当Tag_Lowlimit>Tag_Highlimit时,会对指令输入值进行反向缩放。
5.取消缩放指令
取消缩放指令如表6-28所示。
表6-28 取消缩放指令

(1)功能说明:取消缩放指令可以取消在上限和下限之间以物理单位为增量对参数IN中的浮点数进行的缩放,并将其转换为整数。“Tag_Highlimit”为上限,“Tag_Lowlimit”为下限,指令结果从OUT口输出。取消缩放公式为:
OUT=[((IN-LO_LIM)/(HI_LIM-LO_LIM))*(K2-K1)]+K1
(2)K1、K2值的确定:公式中K1、K2的值由参数“Tag_Bipolar”决定。
●Tag_Bipolar=1:此时“Tag_Input Value”的值为双极性且取值范围为-27648~27648。这种情况下,K1=-27648.0,K2=+27648.0。
●Tag_Bipolar=0:此时“Tag_Input Value”的值为单极性且取值范围为0~27648。这种情况下,K1=0.0,K2=+27648.0。
(3)错误信息的输出:错误信息在RET_VAL端口输出。
如果Tag_Input Value超出上下限,则指令输出结果为最接近的限值,RET_VAL端口输出错误代码0008。当Tag_Lowlimit>Tag_Highlimit时,会对指令输入值进行反向缩放。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
