PLC保存型寄存器数量不足问题的探讨

2018-05-16 06:27:06郎亮波
电子测试 2018年7期
关键词:二进制寄存器命令

郎亮波

(浙江海牛环境科技股份有限公司,浙江杭州,311121)

0 引言

公司设备目前使用的都是三菱的PLC,其中不乏一些上世纪的产品。在修改其控制程序中就碰到过一些问题,其中最普遍的情况是保持型寄存器不够用,而非保存型的寄存器资源十分宽裕。随着工艺的改进,此情况有越来越严重的趋势。现有这样的设备多于40台,如果每台都换新的PLC成本会增加很多,况且整个工艺改进涉及到地方很少,花大成本只是为了这小小的改进,显然很不划算。本文介绍的方法就是在此背景下提出,其最直接目的是解决老PLC数据寄存器资源缺乏的问题,满足功能的前提下为企业节约成本,而且修改工艺周期较其他方法快、成功率较高。通过此方法举一反三可以延伸到其他类似情况,既扩大解决问题的思路,又对PLC数据结构以及指令有更深认识。

1 解决思路

目前在使用的数据存储器有不少只是存储小于255的数值,三菱PLC一个数据寄存器有16位BIT,小于255的数只是占有了一个数据寄存器的低8位空间,而高8位空间却白白地浪费掉。如果将一个数据寄存器调整为两个来使用,将高低8位存储空间独立为两个数据寄存器,保存型寄存器数量就能增加一倍。此方法需要两个非保存型寄存器配合使用,在生产中直接调用的是这两个非保存型寄存器,保存型寄存器的高低8位与这两个寄存器也需要同步刷新,这样关机时保持型寄存器存储的就是最新的值。开机时对这3个寄存器的处理刚好与上述过程相反。上述方法不需要增加额外的成本,只要按上面的思路增加一段程序。

2 解决方法

实现这个目标需要在程序中需要增加两个过程。

(1)开机时将保存型寄存器分离并将各自的值保存到非保存型寄存器中,此程序只开机时操作一次。(2)同步刷新保存型数据寄存器,也就是将非保存型寄存器两个新值合并到保存型数据寄存器中,开机时的分离的数值是上次保存的值,这个值虽然保存在一个寄存器中,本身是没有意义的。

3 仿真结果

以下是仿真分离寄存器得到的结果,设D250当前值为15400,高低8位的二进制化为十进制分别为60和40,D20=40(低8位),D30=60(高8位),这与仿真得到的结果是一致的(见图1)。

图1 仿真结果1(分离值)

以下是仿真合并寄存器得到的结果,D20、D30预设值分别为20、30,合并到D250等于7700(见图2)。

4 原理描述

将保存型寄存器分离及合并所涉及的命令少而简单,其关键命令是字与和字或。字与逻辑运算:1∧1=1;1∧0=0;0∧1=0;0∧0=0。十六进制FF转化为二进制为1111111,FF00转化为二进制为1111111100000000,将D250十进制值15400转化为二进制为11110000101000。经过字与运算后D250低8位数存放在D20中,而高8位存放在D30中。

图2 仿真结果2(合并值)

图3 字与运算过程

字或逻辑运算:1∨1=1;1∨0=1;0∨1=1;0∨0=0。D20十进制值20转化为二进制10100。D30十进制值30转化为二进制11110,经过高低8位交换后为1111000000000。字或运算得到的结果为1111000010100,转化为十进制为7700。而十进制值7700按上述字与运算,然后将D30高低8位交换,又能还原成D20=20、D30=30的结果,这与仿真得到的结果是一致的。

图4 字或运算过程

5 结论

解决这个问题运用了字与和字或运算,其实还可以利用移位的方法得到,不过那样涉及的命令比较多,程序相对比较复杂。字与和字或运算虽然是一种简单命令,平时很少用到,但它与其他命令结合一起使用,可以十分巧妙地处理数据,本例就是其中之一。

参考文献

[1]宋伯生.PLC 编程理论·算法及技巧[M].北京:机械工业出版社.2005.2.

[2]史国生.电气控制与可编程控制器技术[M].北京:化学工业出版社.2003.12.

猜你喜欢
二进制寄存器命令
只听主人的命令
用二进制解一道高中数学联赛数论题
中等数学(2021年8期)2021-11-22 07:53:38
Lite寄存器模型的设计与实现
计算机应用(2020年5期)2020-06-07 07:06:44
有趣的进度
二进制在竞赛题中的应用
中等数学(2019年4期)2019-08-30 03:51:44
移防命令下达后
分簇结构向量寄存器分配策略研究*
这是人民的命令
蓝色命令
高速数模转换器AD9779/AD9788的应用