您的位置:控制工程论坛网论坛 » PLC与PAC » 用984LL语言实现32位数计算

wj321

wj321   |   当前状态:离线

总积分:1211  2025年可用积分:0

注册时间: 2003-05-12

最后登录时间: 2009-11-05

空间 发短消息加为好友

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

wj321  发表于 2008/12/14 19:45:26      694 查看 0 回复  [上一主题]  [下一主题]

手机阅读

由于在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位计算命令获得结果。
1楼 0 0 回复