天天看点

S7-1200高速计数器使用详解(二)

作者:一个发芽的土豆

其他功能

高速计数器还支持其他功能,包括:

  • 门功能
  • 同步功能
  • 捕捉功能
  • 比较功能
  • 事件组态
  • 变量修改

门功能

许多应用需要根据其他事件的情况来开启或关闭计数程序。出现这类情况时,便会通过内部门功能来开启或关闭计数。每个高速计数器通道有两个门:软件门和硬件门。这些门的状态将决定内部门的状态参见表 6 所示。

S7-1200高速计数器使用详解(二)

表 6. 内部门状态

如果硬件门处于打开状态或尚未进行组态,并且软件门处于打开状态或没有编写 CTRL_HSC_EXT 指令,则内部门会打开。如果内部门打开,则开始计数。如果内部门关闭,则会忽略计数脉冲,且停止计数。如图 21 所示。

S7-1200高速计数器使用详解(二)

图 21. 内部门与计数器值

硬件门组态,如图 22 所示。

S7-1200高速计数器使用详解(二)

图 22. 硬件门组态

软件门编程

当使用 CTRL_HSC_EXT 指令时,需要根据测量类型新建数据类型为 HSC_Count 、HSC_Frequency 或 HSC_Period 的变量连接在指令的 CTRL 接口,软件门即为该变量中的 EnHSC,如图 23 所示为 HSC_Count 的 EnHSC。HSC_Frequency 和 HSC_Period 的 EnHSC 请参考图 14 和 18。

S7-1200高速计数器使用详解(二)

图 23. 软件门

注意:硬件门功能仅可用在组态计数模式的 HSC 时使用。在"周期"和"频率"模式下,内部门的状态与软件门的状态相同。

软件门功能仅在使用 CTRL_HSC_EXT 指令时有效,当不使用该指令时相当于软件门已打开。

同步功能

同步功能通过外部输入信号给计数器设置为起始值。可通过执行 CTRL_HSC_EXT 指令对起始值进行更改。这样,用户可以将当前计数值与起始值通过外部输入信号进行值同步,同步示例如图 24 所示。该功能仅在计数模式下使用。注意:即使内部门没有打开也将同

S7-1200高速计数器使用详解(二)

图 24. 同步示例

硬件组态,如图 25 所示。

S7-1200高速计数器使用详解(二)

图 25. 同步输入组态

软件部分,两种情况:

1. 不调用 CTRL_HSC_EXT 指令

此时同步信号电平满足组态条件,计数值将修改为 0 即初始计数值,但是无法修改该初始计数值。

2. 调用 CTRL_HSC_EXT 指令

需要新建数据类型为 HSC_Count 的变量连接在指令的 CTRL 接口,同步输入的使能 EnSync 需要置位,然后同步信号电平满足组态条件时就可以实现同步功能,计数值将修改为初始计数值,默认为 0。变量如图 26 所示。

S7-1200高速计数器使用详解(二)

图 26. 同步使能信号

如果需要修改初始计数值,使用 CTRL_HSC_EXT 可以通过将变量 EN_SV 置位,为变量 NewStartValue 赋值新的初始计数值,即修改了初始计数值。这样同步功能将计数值同步为新的初始计数值,变量如图 27 所示。

S7-1200高速计数器使用详解(二)

图 27. 修改初始值

注意:CPU 启动后第一次计数时值为组态页面中的“初始计数器值”,参考图 5 上方红框。该“初始计数器值”仅用于此时,与同步功能无关。

捕捉功能

可使用捕捉功能通过外部输入信号来保存当前计数值。需要通过执行 CTRL_HSC_EXT 指令才可实现。

该功能仅在计数模式下使用。

如图 28 所示组态捕捉功能在上升沿上进行捕捉的示例。

S7-1200高速计数器使用详解(二)

图 28. 捕捉示例

捕捉外部输入组态,如图 29 所示。

S7-1200高速计数器使用详解(二)
S7-1200高速计数器使用详解(二)

图 29. 捕捉输入组态

使用 CTRL_HSC_EXT 指令时,需要根据测量类型新建数据类型为 HSC_Count 连接在指令的 CTRL 接口,捕捉输入的使能 EnCapture 需要置位,然后捕捉信号电平满足组态条件时,当前计数值捕捉到变量 CapturedCount 即实现了捕捉功能,如图 30 所示。

S7-1200高速计数器使用详解(二)

图 30. 捕捉位及捕捉值

注意:必须调用 CTRL_HSC_EXT 指令获取捕捉计数值,在内部门关闭后捕捉功能仍然有效。输入点功能仅可用在组态计数模式的 HSC 时使用。

比较功能

启用"比较"输出值功能会生成一个可组态脉冲,每次发生组态的事件时便会产生脉冲。如果正在输出脉冲期间又发生了组态的事件,则该事件不会产生新的脉冲。如图 31 所示比较功能的示例。

S7-1200高速计数器使用详解(二)

图 31. 比较功能示例

比较功能参考值组态,如图 32 所示。

S7-1200高速计数器使用详解(二)

图 32. 参考值组态

比较输出组态,如图 33 所示。

S7-1200高速计数器使用详解(二)

图 33. 比较输出

注意:需要更改参考计数值除了更改组态外还可以通过 CTRL_HSC(只支持参考值 1) 与 CTRL_HSC_EXT 指令更改,如果需要由参考计数 1 改为参考计数 2,只能通过组态来更改。输出功能仅可在组态计数模式时使用

事件组态

如果需要在高速计数器的某些情况下,迅速做出反应,可以使用高速计数器的事件功能,该功能将触发相应的硬件中断,在硬件中断中编写相关工艺程序实现迅速反应。

S7-1200 高速计数器支持三种事件:

  • 计数值等于参考值 1(仅支持计数模式)
  • 同步事件(仅支持计数模式)
  • 方向信号改变(仅支持单相模式外部方向信号)

如图 34 所示了组态页面。

S7-1200高速计数器使用详解(二)

图 34. 事件组态

修改参数

如果要修改高速计数器的参数,例如修改当前计数值,必须使用指令才可以,CTRL_HSC_EXT 与 CTRL_HSC 指令支持修改的参数不同,具体参考表 7。

S7-1200高速计数器使用详解(二)

表 7. 参数修改比较

对于 CTRL_HSC 指令,修改参数比较简单,直接在指令输入端控制即可。每个参数有值和控制位两个参数,对参数值进行修改,然后对控制位置位即可修改相关参数。

如表 8 所示,前四个参数时控制位,后四个参数是前四个对应的参数值。以修改计数值为例,只需在 NEW_CV 赋值希望的修改的计数值,然后对 CV 置位即可修改完成,但是要注意如果 CV 一直是高电平,此时计数值会保持为修改的计数值无法计数,所以通常使用沿指令触发控制位。

S7-1200高速计数器使用详解(二)

表 8. CTRL_HSC 指令修改参数

对于 CTRL_HSC_EXT 指令,需要根据测量类型新建数据类型为 HSC_Count 、HSC_Frequency 或 HSC_Period 的变量连接在指令的 CTRL 接口,需要修改的参数就在这三个变量中。

其中 HSC_Frequency 与 HSC_Period 只能修改频率更新周期,如图 35 所示。在 NewPeriod 中赋值新的频率更新周期,然后对 EnPeriod 置位即可修改完成,和前述相同,通常使用沿指令触发 EnPeriod 位。

注意:该值只能修改为 1000(对应 1000ms)、100(对应 100ms)、10(对应 10ms)。

S7-1200高速计数器使用详解(二)

图 35. 修改频率更新周期

对于 HSC_Count,可以修改的参数很多,具体详见表 9。思路和上面的 NewPeriod 相同,在参数值处修改变量,然后对相关控制位进行置位,通常使用沿指令触发控制位。

S7-1200高速计数器使用详解(二)

表 9. 修改 HSC_Count 参数