定时器编程 规划和创建用户程序时应考虑以下定时器运行说明: ● 可在同一个扫描周期内多次更新定时器。每次执行定时器指令(TP、TON、TOF、TONR)和每次将定时器结构的 ELAPSED 或 Q成员用作其它已执行指令的参数时,都会更新定时器。 这在需要*新时间数据(本质上是立即读取定时器)时会是一项优点。但是,如果希望在整个程序扫描周期内保持一致的值,则请将定时器指令放置在需要 这些值的其它所有指令之前,并使用定时器指令的 Q 和 ET输出中的变量而不是定时器 DB 结构的 ELAPSED 和 Q 成员。 ● 扫描期间可以不执行定时器更新。可以在函数中启动定时器,然后在一个或多个扫描周期内不再调用该函数。 如果没有执行引用定时器结构中 ELAPSED 或 Q成员的其它指令,则不会更新定时器。 直到再次执行定时器指令或执行将定时器结构的 ELAPSED 或 Q用作参数的其它指令时,才会再次更新定时器。 ● 尽管并不常见,但可以将同一个 DB 定时器结构分配给多个定时器指令。通常,为避免意外交互作用,应当使每个 DB 定时器结构仅对应一个定时器指令(TP、TON、TOF、TONR)。自复位定时器适合用于触发需要周期性发生的动作。 通常,将引用定时器位的常闭触点放置在定时器指令前面可创建自复位定时器。该定时器网络通常位于使用该定时器位来触发动作的一个或多个依赖型网络上面。当定时器时间已到(经过的时间达到预设值)时,定时器位将在一个扫描周期内为 ON,因而可执行由该定时器位控制的依赖型网络逻辑。下次执行定时器网络时,常闭触点将为 OFF,从而复位定时器并清除定时器位。 下次扫描期间,常闭触点将为 ON,因此将重启定时器。创建此类自复位定时器时,请勿将定时器 DB 结构的“Q”成员用作该定时器指令前面常闭触点的参数。而是要使用与该定时器指令的“Q”输出相连的变量。 如果访问定时器 DB 结构的 Q成员,将导致定时器更新,且如果因常闭触点而更新定时器,该触点将立即复位该定时器 。 定时器指令的 Q 输出将在一个扫描周期内不为ON,并且依赖型网络不会执行。 -(TP)-、-(TON)-、-(TOF)- 和 -(TONR)-定时器线圈必须是网络中的*后一个指令。 如定时器示例中所示,后面网络中的触点指令会求出定时器线圈 IEC_Timer DB 数据中的Q 位值。 同样,如果要在程序中使用经过的时间值,必须访问 IEC_timer DB 数据中的 ELAPSED 元素。 简化了编程6.3 功能强大的指令使编程更加轻松 入门手册 设备手册, 01/2015, A5E02486780-AG 125 当Tag_Input 位的值由 0 转换为 1 时,脉冲定时器启动。 定时器开始运行并持续 Tag_Time 时间值指定的时间。只要定时器运行,就存在 DB1.MyIEC_Timer.Q 状态=1 且 Tag_Output 值=1。当经过 Tag_Time值后,DB1.MyIEC_Timer.Q=0 且 Tag_Output 值=0。 6.3.6 计数器操作可使用计数器指令对内部程序事件和外部过程事件进行计数。 ● 输入参数 CU 的值从 0 变为 1 时,“加计数”计数器 (CTU)就会加 1。 ● 输入参数 CD 的值从 0 变为 1 时,“减计数”计数器 (CTD) 就会减 1。 ● “加计数和减计数”计数器(CTUD) 在加计数 (CU) 或减计数 (CD) 输入从 0 转换为 1 时加 1 或减 1。 S7-1200 还提供高速计数器(页 136) (HSC),用于计算发生速率快于 OB 执行速率的事件。 CU、CD 和 CTUD指令使用软件计数器,软件计数器的*大计数速率受其所在 OB 的执行速率限制。 说明 如果待计数事件的发生速率处于 OB执行速率范围内,请使用 CTU、CTD 或 CTUD 计数器指令。 如果事件的发生速率快于 OB 的执行速率,则应使用 HSC。每个计数器都使用数据块中存储的结构来保存计数器数据。 对于 SCL,必须首先为各个计数器指令创建 DB 方可引用相应指令。 对于LAD 和 FBD,STEP 7 会在插入指令时自动创建 DB。