以下是引用yuanyaozi在2017/11/14 9:18:28的发言:
各位大佬,如上图片所述,在功能块内用内部变量求余数的值。
商若是D100,余数就是D101,但是在内部变量里面如何定义商与余数的关系?
如若是用At数据,则在程序里面只能调用一次功能块,第二次调用就处乱了。
求各位大佬帮忙看下,谢谢、
我给给你普及一下为什么要用FB!
使用FB的原因有2个:
1、减少重复代码。
2、提高代码的重复利用率。
第一个原因非常好解释,第二个原因就是通过在不同的项目中使用相同的FB功能,从而使得我们只需要为一个功能编写一次FB,从而提高了代码重复利用率。
要实现提高代码的重复利用率,那么就势必需要在编程中不使用外部,即PLC的实际地址,而是通过输入,输入输出引脚给FB中的数值赋值,因此楼主在内部变量中使用外部地址从而使得代码重复利用率受到极大的影响,因此你不需要FB,只需要一个子程序就可以了。
在来普及以下FB的运行机制:
对于系统来,为FB的存储随机的分配系统内存,当系统中存在带保持的地址时,例如内部静态变量,系统会分配永久存储区供其使用,而对于临时变量,在FB调用结束时,系统会回收资源供其他FB使用,因此这些地址是共用的。
而系统调用FB,并非等FB全部运行完成,而是只要FB运行返回主程序时,就对其进行资源回收。
所以,你的这个FB的正确做法是:
将被除数与除数作为IN变量引入,结果与余数作为OUT变量输出,你这个程序只要一个FC就结束了。
最后,Omron在FB,FC上与其他主流厂商还有一定的差距,特别是CX-ONE,受早期编程方式的拖累,如果使用SysmacStudio的话,会好很多。
HAVE FUN!