SCL (S7-300, S7-400)
SCL
该章节包括以下主题的信息:
• 定时器操作 (S7-300, S7-400)
• 计数器操作 (S7-300, S7-400)
• 数学函数 (S7-300, S7-400)
• 移动操作 (S7-300, S7-400)
• 转换操作 (S7-300, S7-400)
• 程序控制指令 (S7-300, S7-400)
• 字逻辑运算 (S7-300, S7-400)
• 移位和循环 (S7-300, S7-400)
• 其它指令 (S7-300, S7-400)
- 1 -
定时器操作 (S7-300, S7-400)
定时器操作
该章节包括以下主题的信息:
• IEC 定时器 (S7-300, S7-400)
• SIMATIC 定时器 (S7-300, S7-400)
- 2 -
IEC 定时器 (S7-300, S7-400)
IEC 定时器
该章节包括以下主题的信息:
• TP: 生成脉冲 (S7-300, S7-400)
• TON:接通延时 (S7-300, S7-400)
• TOF: 关断延时 (S7-300, S7-400)
- 3 -
TP: 生成脉冲 (S7-300, S7-400)
TP: 生成脉冲
说明
使用“生成脉冲”指令来设置持续时间 PT 的参数 Q。当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”(信
号上升沿)时,启动该指令。 指令启动时,预设时间 PT 即开始计时。 无论 IN 参数信号的后续状态如
何,Q 参数都将置位一段时间,即 PT。 如果持续时间 PT 仍在计时,即使检测到新的上升沿,参数 Q
的信号状态也不会受到影响。
可以扫描 ET 参数中的当前时间值设置。 该时间值从 T#0s 开始,在达到持续时间 PT 后结束。 达到持
续时间 PT 时,且参数 IN 的信号状态为“0”,则复位参数 ET。
说明
如果程序中未调用定时器(这是因为会忽略定时器),则输出 ET 会在定时器计时结束后立即返回一
个常数值。
每次调用“生成脉冲”指令,都会为其分配一个 IEC 定时器用于存储指令数据。 可按如下方式声明 IEC 定
时器:
• 声明类型为 TP 的数据块(例如,“TP_DB”)
• 声明为块中“Static”程序段内类型为 TP 的局部变量(例如,#MyTP_TIMER)
在程序中插入该指令时,将打开“调用选项”(Call options) 对话框,可以指定 IEC 定时器将存储在自身数
据块中(单个背景)或者作为局部变量存储在块接口中(多重背景)。 如果创建了一个单独的数据块,
则该数据块将保存到项目树“程序块 > 系统块”(Program blocks > System blocks) 路径中的“程序资源”
(Program resources) 文件夹内。 有关本主题的更多信息,请参见“另请参见”。
只有在调用该指令且每次都会访问 Q 或 ET 输出时,才会更新指令数据。
操作系统会在冷启动期间复位“生成脉冲”指令的实例。 如果要在暖启动之后初始化指令的实例,则在启
动 OB 中调用这些实例,其中 PT 参数将置位为值“0”。 如果“生成脉冲”指令的实例位于其它块中,则可
以通过诸如初始化上级块来复位这些实例。
语法
“生成脉冲”指令的语法如下所示:
• 系统数据类型为 IEC_Timer 的数据块(全局 DB):
SCL
TP(IN := <操作数>,
PT := <操作数>,
Q => <操作数>,
ET => <操作数>)
• 局部变量:
SCL
#myLocal_timer(IN := <操作数>,
- 4 -
TP: 生成脉冲 (S7-300, S7-400)
PT := <操作数>,
Q => <操作数>,
ET => <操作数>)
该指令的语法由以下部分组成:
参数
IN
PT
Q
声明
Input
Input
Output
ET
有关有效数据类型的更多信息,请参见“另请参见”。
Output
脉冲图
下图显示了“生成脉冲”指令的脉冲图:
数据类型
BOOL
TIME
BOOL
TIME
说明
启动输入
脉冲的持续时间。
PT 参数的值必须为正
数。
在 PT 持续时间内保持
置位状态的操作数。
当前时间值
示例
以下示例说明了该指令的工作原理:
SCL
"TP_DB".TP(IN := "Tag_Start",
PT := "Tag_PresetTime",
- 5 -
TP: 生成脉冲 (S7-300, S7-400)
Q => "Tag_Status",
ET => "Tag_ElapsedTime");
当“Tag_Start”操作数的信号状态从“0”变为“1”时,PT 参数预设的时间开始计时,且“Tag_Status”操作数
将置位为“1”。 当前时间值存储在 “Tag_ElapsedTime” 操作数中。
- 6 -
TON:接通延时 (S7-300, S7-400)
TON:接通延时
说明
可以使用“接通延时”指令将 Q 参数的设置延时 PT 指定的一段时间。 当参数 IN 的逻辑运算结果 (RLO)
从“0”变为“1”(信号上升沿)时,启动该指令。 指令启动时,预设时间 PT 即开始计时。 超过持续时间
PT 时,参数 Q 的信号状态变为“1”。 只要启动输入仍为“1”,参数 Q 就保持置位。如果 IN 参数的信号状
态从“1”变为“0”,则复位参数 Q。 当在参数 IN 上检测到一个新的上升沿时,重新启动定时器功能。
可以扫描 ET 参数中的当前时间值设置。 该时间值从 T#0s 开始,在达到持续时间 PT 后结束。 只要参
数 IN 的信号状态变为“0”,参数 ET 就复位。
说明
如果程序中未调用定时器(这是因为会忽略定时器),则输出 ET 会在定时器计时结束后立即返回一
个常数值。
每次调用“接通延时”指令,必须将其分配给存储指令数据的 IEC 定时器。 可按如下方式声明 IEC 定时
器:
• 声明类型为 TON 的数据块(例如,“TON_DB”)
• 声明为块中“Static”程序段内类型为 TON 的局部变量(例如,#MyTON_TIMER)
在程序中插入该指令时,将打开“调用选项”(Call options) 对话框,可以指定 IEC 定时器将存储在自身数
据块中(单个背景)或者作为局部变量存储在块接口中(多重背景)。 如果创建了一个单独的数据块,
则该数据块将保存到项目树“程序块 > 系统块”(Program blocks > System blocks) 路径中的“程序资源”
(Program resources) 文件夹内。 有关本主题的更多信息,请参见“另请参见”。
只有在调用该指令且每次都会访问 Q 或 ET 输出时,才会更新指令数据。
操作系统会在冷启动期间复位“接通延时”指令的实例。 如果要在暖启动之后初始化指令的实例,则在启
动 OB 中调用这些实例,其中 PT 参数将置位为值“0”。 如果“接通延时”指令的实例位于其它块中,则可
以通过诸如初始化上级块来复位这些实例。
语法
“接通延时”指令的语法如下所示:
• 系统数据类型为 IEC_Timer 的数据块(全局 DB):
SCL
TON(IN := <操作数>,
PT := <操作数>,
Q => <操作数>,
ET => <操作数>)
• 局部变量:
SCL
#myLocal_timer(IN := <操作数>,
- 7 -
TON:接通延时 (S7-300, S7-400)
PT := <操作数>,
Q => <操作数>,
ET => <操作数>)
该指令的语法由以下部分组成:
参数
IN
PT
Q
声明
Input
Input
Output
ET
有关有效数据类型的更多信息,请参见“另请参见”。
Output
脉冲图
下图显示了“接通延时”指令的脉冲图:
数据类型
BOOL
TIME
BOOL
TIME
说明
启动输入
接通延时的持续时间。
PT 参数的值必须为正
数。
定时器 PT 内时间用完
时,保持置位状态的操作
数。
当前时间值
- 8 -