下图所示为 Frequency_Output 功能块的引脚图:
Frequency_Output 功能块用于实现频率。
i_xEn 中的正信号激活此功能块。输出信号开始时为 TRUE,并保持此信号持续 (TimeBase * i_rIput) 时间,然后变为 FALSE 并持续 TimeBase * (1-i_rIput) 时间。
如果输入信号进入跳变沿范围 0 至 i_rEdge,则输出信号不再轮替,一直保持为 FALSE。如果输入信号进入范围 1-i_rEdge 至 1,则输出信号一直保持为 TRUE。
如果消除 i_xEn 中的信号,则输出信号会保持其当前值,直到通过 i_xEn 中的正信号重新启动该功能块。
下表描述了 Frequency_Output 功能块的输入引脚:
|
输入 |
数据类型 |
说明 |
|---|---|---|
|
i_xEn |
BOOL |
TRUE:FB 启用 FALSE:禁用 |
|
i_rIput |
REAL |
输入值 范围: 0.0...1.0 |
|
i_rEdge |
REAL |
输入值 范围: 0.0...1.0 |
|
i_tBase |
TIME |
时间周期 范围:0...4294967295 毫秒 |
下表描述了 Frequency_Output 功能块的输出引脚:
|
输出 |
数据类型 |
说明 |
|---|---|---|
|
q_xActv |
BOOL |
功能块活动状态 |
|
q_xOput |
BOOL |
输出值 |
该示例使用产生 2 个信号的以下自定义信号发生器:
o 将作为 Frequency_Output 功能块的输入的一个 5 秒周期信号。
o 将作为 Frequency_Output 功能块的跳变沿的一个 50 秒周期信号。
此 POU 在 MAST 中具有一个 10 毫秒的周期。
此图所示为自定义信号发生器:
此示例提供以下结果:
蓝色 i_rEdge 信号,50 秒周期。
绿色 i_rIput 信号,5 秒周期。
红色 q_xOput,Frequency_Output 功能块的输出。
下表所示为真值表:
|
跳变沿级别 |
输入级别 |
输出 |
|---|---|---|
|
i_rEdge < 0.5 |
i_rIput < i_rEdge |
FALSE |
|
i_rEdge < i_rIput < (1-i_rEdge) |
PWM; duty = i_rIput |
|
|
(1 - i_rEdge) < i_rIput |
TRUE |
|
|
i_rEdge >= 0.5 |
i_rIput < i_rEdge |
FALSE |
|
i_rEdge <= i_rIput |
TRUE |
i_rEdge < 0.5 的示例:
i_rEdge >= 0.5 的示例:
示例:如果引脚 i_xEn 处的输入处于高位,i_rIput 输入和初始 i_rEdge 输入设置为 0.5,而且 i_tBase 输入设置为 1 秒,则 q_xOput 会按 500 毫秒设置并按 500 毫秒的时间周期复位。经过一定时间后,输入 i_rEdge 会变为 0.7。
下图所示为上述示例的时序图: