SCL编程语言学习(3.1)-通过TON控制气缸运动距离

有些工程项目需要控制气缸的运动距离,实现的方式有很多种,本文承接上一篇文章 的内容,讲讲如何通过控制气缸的通/断时间来控制气缸的运动距离(对位置精度要求不高的场合)。

本文为了简化程序,只考虑一种额定载荷的情况(同时运动机构摩擦系数、供气压力保持恒定),载荷不变,流量开度相同的情况下,运动的速度基本相同,通过控制气缸运动时间,即可控制气缸运动距离。

在上一篇文章 中已经实现的上升和下降,在此基础上,使用TON接通延时指令,通过设定时间,转换流量开度值实现气缸停止。同时由于气缸携带负载,要考虑负载自身重量,停止在某一位置是需要气缸具有持续上升力抵消载荷重力,保持在某一位置。所以停止时,气缸控制阀的流量开度不是0,具体开度值需要根据载荷大小而定。

首先需要了解一下“接通延时”指令的相关知识。


TON: 接通延时

使用“接通延时”指令将 Q 输出的设置延时 PT 指定的一段时间。当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信号上升沿)时,启动该指令。指令启动时,预设的时间 PT 即开始计时。超出时间值 PT 之后,Q 参数的信号状态将变为“1”。只要启动输入 IN 仍为“1”,参数 Q 就保持置位。启动输入的信号状态从“1”变为“0”时,将复位参数 Q。在启动输入检测到新的信号上升沿时,该定时器功能将再次启动。

可以在 ET 输出上查询当前时间值。该定时器值从 T#0s 开始,达到时间值 PT 时结束。只要参数 IN 的信号状态变为“0”,就立即复位 ET 参数。

每次调用“接通延时”指令,都必须为其分配一个 IEC 定时器用以存储该指令的数据。IEC 定时器是一个 IEC_TIMER、IEC_LTIMER、TON_TIME 或 TON_LTIME 数据类型的结构,可如下声明:

  • 声明为一个系统数据类型为 IEC_TIMER 或 IEC_LTIMER 的数据块(例如,“MyIEC_TIMER”)
  • 声明为块中“Static”部分的 TON_TIME、TON_LTIME、IEC_TIMER 或 IEC_LTIMER 类型的局部变量(例如,#MyIEC_TIMER)

该指令的参数见表1所示。

SCL编程语言学习(3.1)-通过TON控制气缸运动距离

表1 TON指令的参数

该指令执行操作的脉冲时序图如图1所示。

SCL编程语言学习(3.1)-通过TON控制气缸运动距离

图1 TON时序图


明确了实现方式,了解了TON的使用规范。接下来定义变量,根据【每次调用“接通延时”指令,都必须为其分配一个 IEC 定时器用以存储该指令的数据】的要求,首先定义一个IEC定时器,同时定义其运行所需的变量,所有变量汇总如图2所示(蓝色区域为新定义的变量)。

SCL编程语言学习(3.1)-通过TON控制气缸运动距离

图2 定义的变量

采用SCL语言编程,具体程序如图3所示。

SCL编程语言学习(3.1)-通过TON控制气缸运动距离

图3 SCL程序

有“//”标识的部分为新编写程序,具体每个行程序释义如下:

  • 第6行程序是将“keep_rate”标准化为0.0~1.0范围内的值;
  • 第7行程序是将“NORM_keep_rate”缩放到PLC能够执行的整数范围,具体上一篇文章有解释。
  • 第10~13行程序如果“rise_command”信号状态从“0”变为“1”时,PT 参数预设的时间开始计时,在ET 中显示实时的时间值,达到预设的时间1000ms,“timer_Q”变为TRUE,具体可参照图1时序图理解。
  • 第15~17行程序如果“timer_Q””为TRUE,则将则将缩放过的值“SCALE_keep_rate”赋值给输出变量AQ1,该值与载荷重量相抵,维持在某一位置。直到接到“fall_command”指令进行动作。


分享到:


相關文章: