首页 理论教育 数据转换指令介绍与应用介绍

数据转换指令介绍与应用介绍

时间:2023-06-29 理论教育 版权反馈
【摘要】:图5.13数据转换指令如果输入 IN 为 INF(无穷大)或 NaN,或转换结果超出了 OUT的数据类型允许的范围,ENO为0状态。表5.3不同的取整格式举例因为浮点数的数值范围远远大于32位整数,有的浮点数不能成功地转换为32位整数。

数据转换指令介绍与应用介绍

1.CONV指令

CONV指令的参数IN、OUT的数据类型可以是Byte、Word、DWord、SInt、Int、DInt、USInt、UInt、UDInt、BCD16、BCD32和Real,IN还可以是常数。

EN输入端有能流流入时,CONV指令将输入IN指定的数据转换为OUT指定的数据类型。数据类型Bcd16只能转换为Int,Bcd32只能转换为DInt。

如图5.13所示I0.3的常开触点接通时,执行CONV指令,将MD42中的32位BCD码转换为双整数后送MD46。如果执行时没有出错,有能流从CONV指令的ENO端流出。ROUND指令将MD50中的实数四舍五入转换为双整数后保存在MD54。

图5.13 数据转换指令

如果输入 IN 为 INF(无穷大)或 NaN(无效的数学运算结果),或转换结果超出了 OUT的数据类型允许的范围,ENO为0状态。

2.浮点数转换为双整数的指令

浮点数转换为双整数有4条指令,它们将IN输入的浮点数转换为32位双整数。其中用得最多的是四舍五入ROUND指令,CEIL和FLOOR指令用得很少。因为转换规则不同,得到的结果也不相同。如表5.3所示为不同的取整格式的例子。

表5.3 不同的取整格式举例

因为浮点数的数值范围远远大于32位整数,有的浮点数不能成功地转换为32位整数。如果被转换的浮点数超出了32位整数的表示范围,得不到有效的结果,ENO为0状态。

3.SCALE_X指令

图5.14中的SCALE_X指令的浮点数输入值VALUE(0.0≤VALUE≤1.0)被线性转换(映射)为参数MIN(下限)和MAX(上限)定义的数值范围之间的整数。转换结果保存在OUT指定的地址

图5.14 SCALE_X与NORM_X指令

点击方框内指令名称下面的问号,用下拉式列表设置变量的数据类型。参数MIN、MAX和OUT的数据类型应相同,可以是SInt、Int、DInt、USInt、UInt、UDInt和Real,MIN和MAX可以是常数。

各变量之间的线性关系如下(见图5.15):

OUT =VALUE(MAX -MIN)+MIN =0.4×(1000 -200)+200 =520(www.xing528.com)

如果参数VALUE小于0.0或大于1.0,可以生成小于MIN或大于MAX的OUT,此时ENO为l。例如VALUE为1.2时,OUT为1160。

图5.15 SCALE_X指令的线性关系

图5.16 NORM_X指令的线性关系

满足下列条件之一时,ENO为0状态:

(1)EN输入为0状态。

(2)MIN的值大于等于MAX的值。

(3)实数值超出IEEE-754规定的范围。

(4)有溢出。

(5)输入VALUE为NaN(无效的算术运算结果)。

4.NORM_X指令

如图5.16所示,NORM_X指令的整数输入值VALUE(MIN≤VALUE≤MAX)被线性转换(规格化)为0.0~1.0之间的浮点数,转换结果保存在OUT指定的地址。

NORM_X的输出OUT的数据类型为Real(实数),点击方框内指令名称下面的问号,用下拉式列表设置输入VALUE的数据类型。输入参数MIN、MAX和VALUE的数据类型应相同,可以是SInt、Int、DInt、USInt、UInt、UDInt、Real,也可以是常数。

各变量之间的线性关系为(见图5.16)

OUT=(VALUE -MIN)/(MAX -MIN)=(800 -200)/(1000 -200)=0.75

如果参数VALUE小于MIN或大于MAX,可以生成小于0.0或大于1.0的OUT,此时ENO为1。例如:图5.14中的VALUE为0时,OUT为-0.25。

使ENO为0状态的条件与指令SCALE_X的相同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈