如何存一个bool变量上一周期的状态

大家好!
      用300PLC控制变频电机通过齿轮、链轮传动装置后驱动一个大转盘做定位转动,电机顺时针和逆时针两个方向运动,大转盘也做顺时针和逆时针转动;大转盘转动角度由上位机给PLC发角度指令通过PLC控制变频电机转动实现,大转盘上没有安装任何角度检测装置,就靠变频电机末端的编码器检测通过传动比计算来得到大转盘的当前位置,所以是一个开环位置控制。正是这个原因所以存在误差,但实验发现:电机侧安装的编码器反映的位置通过计算完全能反映大转盘的位置(转动角度)。但由于机械传动装置存在传动误差,大转盘一直顺时针转动时,上位机给多少角度都能转那么大角度(误差很小),但一旦顺时针转了,再逆时针转动就存在一个误差,但再继续逆时针转动,有不存在这个误差了,实验发现这个误差是个固定值,所以我们认为误差导致的原因是传动装置(尤其是链条传动)的传动间隙引起的,所以想通过程序补偿,但不知道如何实现?分以下情况:
      1、顺时针转动一次后,如果一直顺时针转动,就不能补偿;
      2、顺时针转动一次或多次后,如果逆时针转动,就在第一次逆时针转动时补偿且仅补偿一次,再逆时针转动就不能补偿;
      1、顺时针转动一次后,如果一直顺时针转动,就不能补偿;
      2、顺时针转动一次或多次后,如果逆时针转动,就补偿且仅补偿一次,再逆时针转动就不能补偿;
      3、逆时针转动一次后,如果一直逆时针转动,就不能补偿;
      4、逆时针转动一次或多次后,如果顺时针转动,就在第一次顺时针转动时补偿且仅补偿一次,再顺时针转动就不能补偿。
       
~~~~~~~~~****有网友提出以下解决方案:
1、用一个bool变量tag1保存转动方向,为0正传,为1反转,然后再用一个bool量tag2保存tag1的上一个周期的状态
2、如果tag1和tag2不一样,则说明出现反向的动作,那么就加一个补偿。最后把tag1的值保存到tag2中也就相当于异或的功能。
    我的问题是如何通过PLC程序实现将bool变量上一周期的状态保存,用两个bool量实现热心网友的逻辑功能,请大家帮忙贴个程序。请高速指导!!!谢!!

问题补充:
谢谢大家,我试过了,没成功。给定正角度,按正转按钮电机正转,自动到位停止,给负角度,按反转钮,电机自动反转到位停止。我补偿的值增加到给定值中的,当然只正转或反转不补,仅正转后反转或反转石正转时仅仅补偿一次。我会再试验。谢谢大家,期待有更多好方法!

最佳答案

如下程序.比如M0.0和M0.1分别为正转和反转,M1.0得电就启用补偿,M1.0失电就不启用补偿.

图片说明:

如何存一个bool变量上一周期的状态  

提问者对于答案的评价:
谢谢。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc234315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐