首页 理论教育 实训十七:数据转换指令仿真实验

实训十七:数据转换指令仿真实验

时间:2023-06-20 理论教育 版权反馈
【摘要】:数据转换指令将累加器1中的数据进行数据类型的转换,转换的结果仍然在累加器1。数据转换指令见表3-9。需要用数据转换指令,将PLC中的整数或双整数转换为BCD码,然后分别送给各个译码驱动芯片。图3-74 拨码开关图3-75 LED七段显示器电路表3-9 数据转换指令浮点数转换为双整数有4条指令,它们将浮点数转换为32位双整数。二进制数的最高4位均为1,表示该数是负数。

实训十七:数据转换指令仿真实验

数据转换指令将累加器1中的数据进行数据类型的转换,转换的结果仍然在累加器1。数据转换指令见表3-9。

1.BCD码

BCD码是二进制编码的十进制数的缩写,用4位二进制数表示一位十进制数(见表3-5),每位的数值范围为2#0000~2#1001,对应于十进制数0~9。

BCD码的最高4位二进制数用来表示符号,负数的最高位为1,正数为0,其余3位可取0或1。16位BCD码字的范围为-999~+999,32位BCD码双字的范围为-9999999~+9999999。BCD码各位之间的关系是逢十进一,图3-72中的BCD码为-862,图3-73是7位BCD码的格式。

978-7-111-31641-1-Chapter03-103.jpg

图3-72 3位BCD码的格式

978-7-111-31641-1-Chapter03-104.jpg

图3-73 7位BCD码的格式

拨码开关(见图3-74)的圆盘圆周面上有0~9这10个数字,用按钮来增、减各位要输入的数字。它用内部的硬件将10个数字转换为4位二进制数。PLC用输入点读取的多位拨码开关的输出值就是BCD码,需要用数据转换指令将它转换为整数(或双整数)。

用PLC的4个输出点给译码驱动芯片4547提供输入信号(见图3-75),可以用LED七段显示器显示一位十进制数。需要用数据转换指令,将PLC中的整数或双整数转换为BCD码,然后分别送给各个译码驱动芯片。

978-7-111-31641-1-Chapter03-105.jpg

图3-74 拨码开关

978-7-111-31641-1-Chapter03-106.jpg

图3-75 LED七段显示器电路

3-9 数据转换指令

978-7-111-31641-1-Chapter03-107.jpg

浮点数转换为双整数有4条指令,它们将浮点数转换为32位双整数。使用得最多的是四舍五入的ROUND指令,CEIL和FLOOR指令用得很少。

2.BCD码与整数相互转换的仿真实验

打开OB1,执行菜单命令“视图”→“LAD”,切换到梯形图语言,输入图3-76和图3-77中的梯形图程序。

用鼠标右键单击SIMATIC管理器左边窗口中的“块”,执行出现的快捷菜单中的命令“插入新对象”→“变量表”,生成变量表VAT_1(见图3-78)。显示格式HEX和DEC分别是十六进制数和十进制数。

978-7-111-31641-1-Chapter03-108.jpg

图3-76 BCD码转换为整数

978-7-111-31641-1-Chapter03-109.jpg(www.xing528.com)

图3-77 整数转换为BCD码

打开PLCSIM,将OB1下载到仿真PLC,将仿真PLC切换到RUN-P模式。打开OB1,单击工具栏上的978-7-111-31641-1-Chapter03-110.jpg按钮,起动程序状态监控功能。

在变量表第1行的“修改数值”列输入十六进制数W#16#8123(从拨码开关读取的BCD码),二进制数的最高位(符号位)为1,表示负数。单击工具栏上的按钮978-7-111-31641-1-Chapter03-111.jpg,“修改数值”被写入PLC内的MW2,并在“状态值”列显示出来。图3-76中的指令将它转换为十进制数-123。

将MW2中的数分别修改为W#16#F123(最高4位二进制数均为1)和W#16#0123,观察转换后的MW4中的十进制数。

978-7-111-31641-1-Chapter03-112.jpg

图3-78 变量表

在变量表第3行的“修改数值”列输入十进制数-456,单击工具栏上的“激活修改数值”按钮978-7-111-31641-1-Chapter03-113.jpg,“修改数值”被写入PLC内的MW6。图3-77中的指令将它转换为BCD码W#16#f456。二进制数的最高4位均为1,表示该数是负数。

将MW6中的数修改为456,观察转换后的MW8中的BCD码。

执行菜单命令“视图”→“STL”,切换到语句表语言,观察图3-76和图3-77对应的语句表程序。

3.BCD码转换的仿真练习

将图3-76和图3-77中的程序修改为BCD码与双字的转换指令,修改变量表中的地址

打开PLCSIM,将修改后的程序下载到仿真PLC,将仿真PLC切换到RUN-P模式。用变量表设置指令的输入值,观察转换后的结果是否正确。

4.压力计算程序中的数据转换

压力变送器量程为0~10MPa,输出信号为4~20mA,模拟量输入模块的量程为4~20mA,转换后的数字量为0~27648,设转换后的数字为N,以kPa为单位的压力值的转换公式为

P=(10000×N)/27648=0.36169×N (kPa) (3-1)

来自AI模块的PIW320的原始数据为16位整数,首先用I_DI指令将整数转换为双整数,然后用DI_R指令转换为实数(Real),再用实数乘法指令MUL_R完成式(3-1)的运算(见图3-79)。最后用四舍五入的ROUND指令,将运算结果转换为以kPa为单位的整数。

打开PLCSIM,将程序下载到仿真PLC,将仿真PLC切换到RUN-P模式。将0和27648分别输入PIW320,观察MD24中的计算结果是否是0和10000 kPa。将0~27648之间的任意数值输入PIW320,观察计算结果是否与计算器计算的相同。

指令ROUND的运算结果为双字,但是由式(3-1)可知最终的运算结果实际上不会超过一个字,保存运算结果的MD20的高位字MW20的值为0,运算结果的有效部分在低位字MW22中。观察MW20和MW22的值,验证上述结论是否正确。

5.数据转换指令的仿真练习

半径(小于1000的整数)在MW10中,圆周率为3.14159,用浮点数运算指令计算圆的周长,将运算结果转换为整数,存放在MW14中。将程序输入到OB1后下载到仿真PLC,调试程序直到满足要求。

978-7-111-31641-1-Chapter03-114.jpg

图3-79 使用浮点数运算指令的压力测量值计算程序

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

我要反馈