描述
本条目将阐述"程序中使用定时器"主题在 STEP 7 V5.x 及STEP 7 (TIA Portal) 的不同处理步骤.
在STEP 7 V5.x步骤
基于STEP 5的兼容性,仍然可以使用STEP7 S5定时器与计数器,定时器和计数器是全局的且基于编号寻址,当启动定时器/计数器时,需要预定义"值范围"及"精度"模式以决定定时器是延时定时器及计数器是否是加计数器,需要注意以下参数属性设置:
每个定时器或计数器有一个单独的编号.
在块中不能多次调用同一个编号的S5定时器/计数器.
定时器的计时范围最大为9990秒,计数器的最大计数值为999.
定时器的时基可以设置为0.01 .. 9.99, 0.1 … 99.9, 1 … 999 及10 … 9990 秒
定时器的精度取决于时基.
在STEP 7 (TIA Portal)步骤
在块调用的地方定义定时器和计数器,IEC定时器是一个结构体数据类型,包括IEC_TIMER, IEC_LTIMER, TON_TIME 或TON_LTIME,可作为本地变量使用.
优势
通过创建多个背景数据块,可以调用多次定时器功能的FB块。
块将有更宽的计数范围 ,且定时器的精度与时基无关.
IEC定时器有比普通S5定时器更好的性能.
图1位上述步骤地两个例程,其中变量 "SwitchDelay" 被声明为一个本地"TON_TIME"类型变量,变量"CountDB" 被声明为一个"CTU_INT"类型变量 .
可以按如下方式声明 IEC 计数器:
系统数据类型 IEC_
声明为块中“Static”部分的 CTU_ 或 IEC_
如果在单独的数据块中设置 IEC 计数器(单背景),则将默认使用“优化的块访问”(optimized block access) 创建背景数据块,并将各个变量定义为具有保持性。有关在背景数据块中设置保持性的更多信息,请参见“另请参见”。
如果在函数块中使用“优化的块访问”(optimized block access) 设置 IEC 计数器作为本地变量(多重背景),则其在块接口中定义为具有保持性。
执行“加计数”指令之前,需要事先预设一个逻辑运算。该运算可以放置在程序段的中间或者末尾。
图 01
示例
以下示例说明了该指令的工作原理:
当“TagIn_1”操作数的信号状态从“0”变为“1”时,将执行“加计数”指令,同时“Tag_CV”操作数的当前计数器值加 1。每检测到一个额外的信号上升沿,计数器值都会递增,直至达到该数据类型的上限 (INT = 32767)。
PV 参数的值作为确定“TagOut”输出的限制。只要当前计数器值大于或等于操作数“Tag_PV”的值,输出“TagOut”的信号状态就为“1”。在其它任何情况下,输出“TagOut”的信号状态均为“0”。
IEC 定时器是一个 IEC_TIMER 或 TP_TIME 数据类型的结构,可如下声明:
声明为一个系统数据类型为 IEC_TIMER 的数据块(例如,“MyIEC_TIMER”)
声明为块中“Static”部分的 TP_TIME 或 IEC_TIMER 类型的局部变量(例如,#MyIEC_TIMER)
示例
以下示例说明了该指令的工作原理:
下表将通过具体的操作数值对该指令的工作原理进行说明:
参数 | 操作数 | 值 |
---|---|---|
IN | Tag_Start | 信号跃迁“0”=>“1” |
PT | Tag_PresetTime | T#10s |
Q | Tag_Status | TRUE |
ET | Tag_ElapsedTime | T#0s => T#10s |
当“Tag_Start”操作数的信号状态从“0”变为“1”时,PT 参数预设的时间开始计时,且“Tag_Status”操作数置位为“1”。
当前时间值存储在“Tag_ElapsedTime”操作数中。定时器计时结束时,操作数“Tag_Status”的信号状态复位为“0”。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !