信捷PLC C功能块编程经验分享

信捷PLC C功能块编程经验
一. 在信捷官网下载的资料《XC系列可编程序控制器用户手册(特殊指令篇).pdf》中提到:“注意:XC2系列和XCM系列的寄存器D的地址并不连续,在使用时,请注意按以下地址定义:XC2系列:D0-D999写成W[0]-W[999];D4000-D4999写成W[1000]-W[1999];”但是实际使用中给功能块传D4000以后的参数地址,如果使用W[1000] -W[1999]作为功能块内部运算用地址,则下面GetLowest函数不能按预设想的运行。不论是使用D0-D999还是使用D4000-D4999范围内寄存器作为实参地址,都只有用W[0]~W[999]范围内的地址作为形参,程序才能按预期执行。
二. 下面009#句代码如果不写,则程序的运行也不能达到预期。原因分析如下:函数体内提到的地址,即与函数体外某一实参有关联的函数内形参,如果每次运行中没有定义具体的值,则函数体返回给实参地址时,函数体不清楚具体返回什么值,函数体就无法正常运行。


Comment:
筛选采集到的最低值。
W[0]: 前一次采集到的数据存放地址; W[2]: 后一次采集到的数据存放地址;
W[4]: 两次采集到的最小值的暂存地址; W[6]: 筛选到的最小数据存放地址;


001# Void GetLowest( WORD W, BIT B)
{

    }

三. 下面这段数据累加或递减计算函数。在调试中发现,如果用D4000-D4999范围内寄存器作为实参地址,则函数体不按预期运行,只有使用D0-D999范围内寄存器作为实参地址,函数体才按预期的运行。具体原因不详,猜测是掉电保持性寄存器作为实参其可以迭代运算的属性不具备。


Comment:
判断并执行W[0]的值递增或递减。
W[0]: 接受外部传入的需要操作的数据; W[1]: 接收外部传入的递增运算的指令;
W[2]: 接收外部传入的递减运算的指令;
B[1]: 通知外部切换成递减运算; B[2]: 通知外部切换成递加运算;


001# Void AD_VALUE( WORD W, BIT B)
{

    }
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值