在构建带有参数的子程序时,局部变量是bukehuoque的。通常,我们在PLC变量表和DB块中定义的变量被称作全局变量,它们在整个程序范围内都保持有效性。相对而言,那些在特定块的变量声明表中定义的变量,我们称之为局部变量,它们仅在其所属的块内具有效用。
为了提升代码的通用性和易于迁移到其他项目,子程序FC和FB中更倾向于仅使用局部变量。在局部变量表中,我们通过名称列来赋予局部变量一个符号名,而数据类型列则用于指定这些变量的数据类型。
在FC和FB的变量声明表中,形式变量——也就是形式参数,用于在子程序块和调用它的程序块之间传递数据。形式参数中的INPUT表示传入子程序块的参数,仅允许在子程序块中读取这些值。而OUTPUT则代表从子程序块传出的参数,在子程序块中只能写入这些返回值。INOUT则是既传入又传出的参数,允许在子程序块中读写操作,其输入值和返回值使用同一地址。FC中的RETURN返回值作为单一的数据通道,主要用于FC与调用它的其他程序进行数据交换,反映FC的执行状态。在TEMP行下定义的变量被称作临时变量,它们用于在程序块执行期间临时存储数据,当程序块退出时,这些数据将不再保留。
请注意,临时变量不可设定初始值。若某些变量在调用结束后仍需保持其值,则应将其定义为静态变量,即在STATIC行下定义的变量,但静态变量仅适用于FB。
赋值给FB的背景数据块被用作静态变量的存储区域。由于FB拥有其存储区,即背景数据块,所以形式变量和静态变量都可以被赋予初始值。在FB中定义的静态变量不会出现在生成的指令块中。
在程序中,我们通过符号名来访问变量。全局变量的符号名通常被引号包围,而局部变量的符号名前则带有#号以进行区分。
调用FC时,必须使用实际参数来替代形式参数。而在调用FB时,必须指定其背景数据块,实际参数的值将被存储在该FB的背景数据块中。如果在块调用时没有为形式参数分配实际参数,则在程序执行时,将使用上一次存储在背景数据块中的参数值。
以上我们对局部变量、全局变量、临时变量和静态变量进行了简要的介绍,并阐述了在西门子S7-1200中这些变量的应用方式和它们之间的区别。如果大家想要深化对西门子PLC编程领域的理解,不妨保持对本公众号的关注。在未来的文章里,我将继续为大家分享更多关于西门子PLC编程的知识和宝贵经验,助力大家不断提升专业技能。敬请期待!