前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >西门子SCL--频率功能块

西门子SCL--频率功能块

作者头像
科控物联
发布2022-03-29 19:23:57
7800
发布2022-03-29 19:23:57
举报
文章被收录于专栏:科控自动化科控自动化

变量定义:

FUNCTION_BLOCK "myFrequency"

VAR_INPUT

frequency : Real; // 输入频率:Hz

pulsePauseRatio : Real := 1.0; // 脉冲占空比

END_VAR

VAR_OUTPUT

clock : Bool; // 脉冲输出地址

countdown : Time; //倒计时

END_VAR

VAR

instTofTimePulse : TOF_TIME; // ON时间

instTofTimePause : TOF_TIME; // OFF时间

statFrequency : Real; // -

statTimePeriod : Time; // -

statTimePulse : Time; // -

statTimePause : Time; // -

statPulsePauseRatio : Real; // -

END_VAR

VAR_TEMP

tempPulseRate : Real; // -

tempPauseRate : Real; // -

END_VAR

VAR CONSTANT

"NULL" : Real := 0.0; // -

MS_IN_SEC : Real := 1000.0;

END_VAR

IF (#frequency <= #NULL) OR (#pulsePauseRatio <= #NULL) // 初始化

THEN

#clock := FALSE;

#countdown := t#0s;

ELSE

// 分配频率和占空比

IF #statFrequency <> #frequency OR #statPulsePauseRatio <> #pulsePauseRatio THEN

RESET_TIMER(TIMER := #instTofTimePause);

RESET_TIMER(TIMER := #instTofTimePulse);

#tempPulseRate := #pulsePauseRatio / (#pulsePauseRatio + 1); // 计算ON百分比

#tempPauseRate := 1.0 - #tempPulseRate; // 计算OFF百分比

#statTimePeriod := UDINT_TO_TIME(REAL_TO_UDINT((#MS_IN_SEC / #frequency))); // 计算周期时间

#statTimePulse := UDINT_TO_TIME(REAL_TO_UDINT((#MS_IN_SEC * #tempPulseRate / #frequency))); // 计算ON时间

#statTimePause := UDINT_TO_TIME(REAL_TO_UDINT((#MS_IN_SEC * #tempPauseRate / #frequency))); // 计算OFF时间

#statFrequency := #frequency;

#statPulsePauseRatio := #pulsePauseRatio;

END_IF;

// TOF_off 过期 >> 重新开启

#instTofTimePulse(IN := NOT #instTofTimePause.Q,

PT := #statTimePulse);

#countdown := #statTimePulse - #instTofTimePulse.ET;

#instTofTimePause(IN := #instTofTimePulse.Q,

PT := #statTimePause);

IF #countdown = t#0s THEN

#countdown := #statTimePause - #instTofTimePause.ET;

END_IF;

#clock := #instTofTimePulse.Q; // 分配输出

END_IF;

P.S

在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出。

脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。

频率是描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量多少的计量名称;频率的标准计量单位是Hz(赫)。电脑中的系统时钟就是一个典型的频率相当精确和稳定的脉冲信号发生器。频率在数学表达式中用“f”表示,其相应的单位有:Hz(赫)、kHz(千赫)、MHz(兆赫)、GHz(吉赫)。其1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz。计算脉冲信号周期的时间单位及相应的换算关系是:s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒),其中:1s=1000ms,1ms=1000μs,1μs=1000ns。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档