打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?

为了避免捕捉到不想要的计数脉冲,对于特定的应用是可以在运行时打开和关闭高速计数器的,例如那些由震动引起的干扰。 使用'HscGate' FB可以实现S7-1200高速计数执行的门控制。

在OB1中调用FB,如下图所示:

管脚定义如下表所示:

'hscValue'和'hscHwId'输入可以从CPU属性里高速计数器的设置中获取。

程序流程图

在“enable”给一个下降沿信号,将高速计数器的当前值传输到计数值 'newCV'中。

在“enable”给一个上升沿信号,在SFB 'CTRL_HSC'的帮助下将高速计数器值设置成'newCV'的值。

在Reset指令('reset')下 ,在传送到高速计数器之前将计数值'newCV'置0。

当'enable' = TRUE,高速计数器的数值被传到'countValue' 输出。

因此,在使用'enable' = TRUE时,高速计数器的计数值与'countValue'输出值完全相同。

只有在'enable' = FALSE时高速计数器值与'countValue' 输出值不相同。

这样,当给高速计数器做事件组态时,'enable'输入变量的状态也要考虑在内。

下面看看FB块中的程序:

接口设置:

FB块中的程序如下:

// 检测到enable下降沿信号,停止counter。

#instStopTrig(CLK := #enable,

Q => #statStop);

// 当停止时存储HSC数值

IF (#statStop = TRUE) THEN

#statStopValue := #hscValue;

END_IF;

// 当enable检测到上升沿开始计数

#instStartTrig(CLK:=#enable,

Q=>#statStart);

// 复位HSC

IF (#reset = TRUE) THEN

#statStopValue := 0;

#countValue := 0;

END_IF;

// 当开始,设置HSC的值为停止时的值

#instCtrlHsc(HSC := #hscHwId,

CV := #statStart OR #reset,

NEW_CV := #statStopValue,

STATUS => #status);

// 复位'reset'

IF (#reset = TRUE) THEN

#reset := FALSE;

END_IF;

// 当它使能,则将HSC的值送到counter。m

IF (#enable = TRUE) THEN

#countValue := #hscValue;

END_IF;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
涨知识 | S7-1200内部培训讲座(9)——HSC高速计数器B
关于PLC高速计数器使用
没有外部复位的清零方法
西门子1200的HSC的应用实例!
一招教您轻松运用1200高速计数功能!
关于西门子S7-200高速计数器的使用方法(转载自网络)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服