主题:smart带参子程序的注意
关键词:smart 子程序 多次调用
详情:
前些时候有个客户使用smart系列PLC,现场的模拟量值有些不稳定,想增加计算下平均值在输出。编写的程序如下:
本来期望每个模拟量增加一次调用就可以。实际运行来看,并不能实现。
具体现象如下:
新做测试程序,单次调用这个子程序结果正常。
放到原有程序,单次调用这个子程序结果不对。
新做测试程序,多次调用这个子程序结果不对。
出现这个结果的原因:L区的地址区域是共享的。L区的变量的结果是不能保留的,上面程序的SUM和NUM都需要保留之前的结果才能正确计算。
所以,以上现象的原因:
放到原有程序,单次调用这个子程序结果不对。
是因为原有程序也有其他程序使用了L区的地址。
新做测试程序,多次调用这个子程序结果不对。
同上面原因,两个以上的程序都对L区的地址计算了计算。
把SUM和NUM两个变量用作INOUT变量,每个程序执行的时候分配V区变量后,就可正常运行。
系统手册的提示: