>AT变量覆盖方法可以实现使用Bool的Array对Byte、Word或是Dowd数据类型参数的各个位寻址。如下图所示位一个立体货架,共有3◊4共12个人货架组成,每个货架的入口处有一个感应开关用于启动货架的皮带电机运行,通过皮带电机把货物输送到货架中。
当需要对这种量较多的对象进行控制时,如果才能快速的完成程序的设计呢?以每台电机都是做“起保停”控制为例,大家可能会想到通过下面的程序来实现。
在DB块中建立数组,然后配合FOR循环的方法,用SCL来完成程序的设计,但这种方式最后电机的启动信号和电机的运行信号都需要通过IO影视的方式和DB块中建立的地址关联,如下所示: 在这里如果16个电机,那么需要做16个启动信号,16个停止信号(如果停止信号是独立的)和6个电机运行的输出信号,这工作量也很大,所以为了解决这个问题,我们可以使用AT覆盖参数的功能来解决这类问题。 (1)建立FB块的接口参数 新建一个FB1块,对该FB块命名为“CM_MotorControl”,并在该FB块的属性中,去掉“优化的块访问”的“√”,对该FB块采用非优化块的访问方式进行方法。在该FB块中定义相关的接口区变量。在该接口区Input变量接口中先定义输入变量,该变量名称为“MotorStartGroup”,数据类型定义为Word,然后在第下一个的数据类型中输入AT,进行对”MotorStartGroup“参数的覆盖,对该变量名称命名为”MotorStartGroupArray”并对参数使用Array的bool类数据类型,元素个数为1…16 共16个位,以同样的方式建立”MotorStop”和”MotorRun”,如下图所示:
(2)编写PLC的控制程序 在FB块的程序中编写如下所示的程序
在OB1中调用该程序块,并把电机的启动信号组,停止信号组、输出信号组关联到FB块的形似参数管脚上。
从调用的FB块上可以看到接口区中建立数组形式参数变量,并没有出现在程序块的管脚上,这就是AT覆盖参数的效果,通过数组在内部替代了建立的信号组,两者之间有如下的对应关系:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |