quote:以下是引用Zane在2012-08-28 18:43:42的发言:quote:以下是引用Automann在2012-08-27 16:32:05的发言:
某些其他品牌的小型PLC的子程序没有局部变量和输入、输出参数,在子程序内部只能使用全局变量。这样的子程序移植性极差。FC、FB的局部变量和输入、输出参数、各被控对象专用的背景数据块,这是S7-300/400程序结构的精华。如果一次调用可完成全部任务,可以选用FC。需要多个扫描周期的调用才能完成全部任务,则需要选用FB,用它的静态变量在两次调用之间来保存数据。
底层FC、FB内部不使用全局变量,才能保证块的100%的可移植性。全局变量用来作块的实参。
调用块与被调用块之间的数值传送应该用块的输入、输出参数来完成,而不是用全局变量来完成。
廖老师的话有一定的道理,但是难道FC与FB就不能实现完全一样的功能了吗?话再说回来,S7-200只有FC,难道就不能实现类似S7-300/400的FB的功能了吗?
有时候,倒也不必拘泥于一定的规矩,尝试一下倒也能有一片别样的天地,当然这不是对于初学者说的,他们还要打好基础。
同意Zane版的观点。
S7-300/400给我们提供了比较完美的程序结构,严格按规范来使用FB和FC也应该是高手的首选。
对于没有FB的PLC当然另当别论。S7-200作为小型PLC,程序一般较简单。在需要静态变量的场合,初学者可用全局变量来保存数据,虽然影响可移植性,但是这种全局变量不会太多,问题也不太大。
当然也可以用Zane版的思路实现100%的可移植性。
由于硬件的进步,S7-1200基本上采用了300/400的程序结构。但是对多重背景还有限制。