控制工程师论坛

PLC与PAC

用984LL语言实现32位数计算

wj321
wj321

2008-12-14

由于在984LL中没有32位数的运算功能块直接使用,原来考虑使用的“EMTH”块只允许操作数为32位,而结果不能超出65536,所以无法直接应用。

在某项目中,编码器的数值变化范围为126000左右,超出65536,所以考虑分高低位来进行计算,即通过判断编码器实际值与初始值的高位是相等、不等分别进行计算,计算结果可以满足实际需要。

以左油缸行程为例说明计算过程,油缸全收回时,编码器数值为33232271(对应油缸行程为9403mm),全伸出时编码器数值为33106005(对应油缸行程为0mm),即每1mm行程对应13.428个编码器数值,假如计数器的寄存器为%300021DINT),初始值存在寄存器%400323DINT)中,那么油缸行程left可以由以下计算获得:

If  %300022=%4000324 then

    Left = (%300021-%400323)/13.428=(%300021-%400323)*1000/13428;

If  %300022>%4000324 then

    Left = [(%300021-%400323)+(%300022-%4000324)*65536]/13.428

        =(%300021-%400323)*1000/13428+(%300022-%4000324)*4880.55

        ≈(%300022-%4000324)*4880+%300021*1000/13428-%400323*1000/13428

这样就可以通过984LL语言中的16位计算命令获得结果。
回帖

评论0

首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China