技术论坛

 在FB中使用S5定时器的坑

返回主题列表
作者 主题
YiMoon
至圣

经验值:11055
发帖数:1221
精华帖:35
楼主    2019-03-29 12:21:17
主题:在FB中使用S5定时器的坑 精华帖 

 在STEP7编程环境中,一直是使用FC,很少用FB。这次在编写与S120通讯的公用块时,使用了FB编写。大家都知道,FC块在调用时,每一个形参都要赋实参,要不然STEP7会报错,编译不过去。而FB因为有背景数据块,所以,形参可以不用都赋实参,有需要使用时才赋实参。

因为是程序开发阶段,编写好FB通讯公用块后,下载测试,一切正常(因为只下载了一个调用FC)。接下来,下载了4个调用块,问题来了,定义为T0定时器的形参工作不正常了,其它定时器正常工作,见下图:

  1. 第一个调用块,定时器形参赋了实参

     

2. 下载了4个调用块

 

3. 其它3个调用块没有给定时器形参赋实参

 

 

发现问题后,第一反应是T0被重复使用了,但程序是自己编写的,用过哪些定时器都知道的,指针方式就更不用说了,一定会有记录。折腾了很久,想来想去,肯定还是T0被重复使用了,把T0改为别的定时器,就没有问题,但就是找不到是哪里。偶然在监视FB背景数据块时,发现定义为定时器的形参,默认初始值都是T0,这下找到原因了。

  1. FB背景数据块


2.FB参数接口

 


为了避免今后再次发生这种问题,于是把定时器形参去掉,在块中使用了IEC定时器(SFB4)

  1. 原S5定时器

 

2.修改为IEC定时器

 

 

定时器有类似问题,计数器应该也是有这样的问题,因此,建议以后FB用定时器时,还是尽量用IEC定时器,不要使用S5定时器,FC因为每个管脚都要赋值,所以,不存在这种问题。

 

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