用户中心

资讯 > 应用案例

RSLogix 5000子程序中计时器的使用

作者:张浩风,北京冶金自动化院2008.04.27阅读 10193

  RSLgix5000中子程序的内部使用的输入、返回参数称之为“形参”,子程序的调用者提供“实参”,以通过子程序完成某种控制要求。子程序是由“形参”代替“实参”来执行的,对于一般的如BOOL,DINT等的数据类型,可以很容易地实现“实参”对“形参”的赋值。但是,计时器等由于利用了CPU系统的资源,例如“时钟中断”等,因而不能像上述类型数据那样可以用赋值的方式实现。要想使用计时器就必须得声明一个,以便系统能对此计时器进行操作。如果子程序的“形参”可以是普通的计时器,那么对于N个子程序的调用,这个“形参”计时器就必须实现N个计时器的功能,显然对于只能完成一次计时的普通计时器是无法完成的,所以子程序中是不可能有普通计时器作为“形参”的。这样就可以理解为什么RSLgix5000子程序中,不能使用计时器作为“形参”。

RSLogix 5000子程序中计时器的使用如图

  但是,众所周知,西门子S7系列plc的Step 7编程软件中的FB,FC功能块,也就是子程序,可以实现计时器作为子程序的“形参”,这如何解释呢?其实,在STEP 7功能块,或者说是子程序中出现的计时器,虽然外形和普通计时器一样,但是根据上面的论述,我们可以确定其并非是

普通计时器,而是一个“伪计时器”,真正的计时器应该是声明的那一个,也就是作为“实参”的那一个。由此可见,每当子程序被调用执行的时候,“伪计时器”将作为“实参”的那一个真正的计时器的参数,诸如CONTROL ENGINEERING China版权所有,计时当前时间,计时时间到等参数读入,然后进行和普通计时器一样的操作。当然也包括将“伪计时器”的启动条件赋值给“实参”计时器,以便使“实参”计时器启动工作。这样就可以实现子程序中的计时器作为“形参”的功能。也是说,它的“形参”计时器是经过特殊设计的,并非普通的计时器。
  因此,西门子Step 7中的子程序中的计时器CONTROL ENGINEERING China版权所有,本质上依然使用了声明过的,子程序外部的普通计时器。对于RSLgix5000来说,要实现子程序中的计时器功能也是一样,使用子程序外部的计时器。

  RSLgix5000子程序使用计时器的方法
  由于在RSLgix5000梯形图子程序中,没有实现“形参”功能的“伪计时器”,所以只能在全局变量中声明的计时器。为了便于在子程序中使用这些计时器,我们将这些计时器放在数组里,这样子程序只需一个数组下标变量,就可以使用这些计时器。但是,很遗憾,在RSLgix5000梯形图中是无法使用数组下标变量的,因此,我们就只能使用ST即结构化文本,一种类似于PASCAL语言的编程工具,它提供完整的数组支持。
  举一个例子,如果要实现3个计时器的时间设置工作控制工程网版权所有,对于梯形图来说,即使是使用数组,由于它不能使用数组下标变量CONTROL ENGINEERING China版权所有,也只能是采用一个一个的赋值方式,即,T[1].PRE = 1000,T[2].PRE = 1000,T[3].PRE = 1000等等。如果子程序也采用一个一个赋值的方式,就没有任何优势,还不如不使用子程序来实现,这样的子程序是毫无意义的(不带“形参”的子程序除外)。如果采用ST结构化文本,由于其数组下标可使用变量,就可以用子程序实现,子程序如下所示。
  FOR I := 1 TO 3 BY 1 DO
  T[I] := 1000;
  END_FOR;
  这样就很适合子程序使用,不管是有100个还是1000个计时器,也都只是使用这一个子程序,就可以完成所有计时器的计时时间设置工作。由于梯形图无法完成这样的工作控制工程网版权所有,因此子程序中的计时器数组的使用,只能用ST结构化文本实现。
  例如有2个相同控制要求的设备,用子程序来实现,如果每个设备需要使用3个计时器,那么需要声明含有2×3=6个计时器的计时器数组。设备1使用前3个计时器,设备2使用后3个计时器。在子程序中,设置一个DINT型的“形参”作为起始计时器号,例如设备1使用1,即从下标为1的计时器数组开始;设备2使用4,即从下标为4的计时器数组开始。
  需要说明的是,在RSLgix5000中,ST结构化文本所用的计时器同梯形图所用计时器不一样,在ST结构化文本中是FBD_TIMER类型,使用时用TONR指令声明。

  一个实例
  我们以两个水泵的控制为例子进行说明。水泵A的启动输出信号为START_A;出水阀门A的打开输出信号为OPEN_A;水泵A启动反馈为STARTED_A;出水阀门A开到位反馈为OPENED_A;水泵A的启动运行输入信号PUMP_START_A;水泵A启动完成标志PUMP_A_STARTED。水泵B的启动信号为START_B,出水阀门B的打开输出信号为OPEN_B;水泵B启动反馈为STARTED_B;出水阀门B开到位反馈为OPENED_B;水泵B的启动运行输入信号PUMP_START_B;水泵B启动完成标志PUMP_B_STARTED。
  控制要求为水泵启动5秒后打开出水阀门,水泵使用3秒的输出脉冲启动

版权声明:版权归控制工程网所有,转载请注明出处!
联系厂商

通过本站与本文涉及的厂商 罗克韦尔自动化(中国)有限公司 联系,本站注册会员请登录后填写更便捷。 登录注册

  • 您的姓名:
  • 单位名称:
  • 联系电话:
  • 电子邮件:
  • 我想得到贵公司详细的技术资料
  • 我想得到贵公司的价格信息
  • 我想让贵公司销售人员和我联系
  • 我想让贵公司技术支持人员和我联系
其他意向:

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688