【分享】分享下我是怎么样在FB里计时的

已锁定

宁超

  • 帖子

    1009
  • 精华

    39
  • 被关注

    370

论坛等级:至圣

注册时间:2012-12-11

普通 普通 如何晋级?

【分享】分享下我是怎么样在FB里计时的

9851

58

2015-09-21 16:48:46

star star star

- 在编写电机阀门等一类功能块时,需要用到计时功能,如在开关阀门命令Q点输出10秒内,阀门没有反馈已经打开的命令,需要提醒操作员阀门有反馈错误的报警。

- 阀门与电机功能块在程序大量被调用,少则几十个,多则几百个,如果每次调用都分配一个单独的计时器,你会不会当心计时器不够用或者计时器混用呢?

- 下面的方法是里面时钟脉冲的方式计时,使用的是CPU自带的Clock Memory功能,被设置的MBxx字节,它的每个bit位能发出不同频率的脉冲

STEP 1.

首先在硬件组态里将CPU属性里的Clock Memory功能勾选,填写Memory byte(本例中为MB1)。

填写后点击填写栏空白处,按F1功能,点击继续选择高亮文本,

Bit 7 /6 /5 /4 /3 /2 /1 /0

Periodduration (s): 2 /1.6 /1 /0.8 /0.5 /0.4 /0.2 /0.1

Frequency(Hz): /0.5 /0.625 /1 /1.25 /2 /2.5 /5 /10

程序被下载进CPU的时候MB1的8个bit就开始有规律的闪烁了,以M 1.1为例:

接通0.2秒,休息0.2秒如此反复


STEP 2.

建立计时使用的接口,SCL编程方式为例:

我们建立两个接口在INPUT位置

VAR_INPUT

    MON_T   {S7_m_c:='true'} : REAL := 10.0;   // Monitoring Time

    SAMPLE_T     : REAL := 0.2;     // Sample time 

    PULSE        : BOOL := FALSE; 

END_VAR


VAR_OUTPUT 

   QMON_T      : REAL := 0.0;       // Current Monitoring Time Feedback

END_VAR


STEP 3.

实例程序调用,在SAMPLE_T填写0.2在PULSE填写M1.1

  

STEP 4.

    我们以计算电机启动后,运行反馈信号达到时间计时为例子,如果输出启动命令,反馈还没回来之前,我们认为电机正在启动Starting,如果停止输出命令,电机反馈信号依然存在,我们认为电机的状态是正在停止Stopping,指定DBx监控FB:

  


   正在启动和正在停止时,每次Pulse的上升沿都给QMON_T加上0.2,看看会有什么情况发生,M1.1一秒钟内会有5次上升沿,5个0.2相加其实就是1秒钟,当你MON_T电机启动监视时间设定不能超过10秒时,其实就是启动停止过程中M1.1闪烁了50次,即完成了QMON_T通过自加0.2加到了10.0秒。


QMON_ERR 监视错误出来了,传上wincc看看效果图:

【分享】分享下我是怎么样在FB里计时的 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。