回复:S7-200SMART基于BGN_ITIME相对时间戳的延时输出

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1560
  • 精华

    24
  • 被关注

    161

论坛等级:至圣

注册时间:2015-06-03

钻石 钻石 如何晋级?

发布于 2018-12-13 20:43:42

33楼


1:参考建议增加了容错机制,建议库程序在1MS的定时中断中调用,捕捉精度正负1MS(若不在1MS中断中调用可以修改功能指针第2个字节开始的双字值(例程中VD5)来设定误差,比如误差设成2MS,意思输出点在大于等于时间戳-2以及小于等于时间戳+2范围内的某个值就可以输出.亲测将函数块放在主程序中测试有漏捕捉错误,将VD5由0MS设成1MS就好了,若函数块放在OB1中时如果扫描周期SMW22较大,此时VD5估计还要适当放大).

2:在SMART-CR60上测试OK.(SMB34的1MS中断捕捉SMB35制造的周期是2MS脉宽是1MS的方波,能想到的最”严格”测试)

3 : 在中断程序SMB34_1MS的网络2中增加检验输出沿是否严格与输入沿数目相等检测机制.

4 : 表格长度TABLE_LEN = 2*延时时间段内缓冲的沿总数+2;(或者=(延时时间+平均周期)*2/平均周期;比如例程中延时时间1500MS,方波信号平均周期是2MS;则表格长度=(1500+2)*2/2 = 1502 ).

各参数说明如下:

输入:

SIM_INPUT       : 待延时输入点

INITIAL             : 初始化脉冲

S_TIME_SET      : 输出开始固定延时时间偏移长度设置(相对于输入上升沿的时间偏置值)( ms ) 

E_TIME_SET      : 输出结束固定延时时间偏移长度设置(相对于输入下降沿的时间偏置值)( ms ) 

以上两者只能在固定值不重叠失真的很小邻域内微调(可让输入点在输出点的宽度稍微变宽点,变窄点,一边宽一边窄点,一边窄一边宽点,以及一样宽以适用不同工艺要求.当两者相等时输出点延时复现输入点)

TABLE_LEN       : 双字表格长度为节省指令开销设置成偶数(每个数据占4个字节)

TABLE_ADDR    : 表格开头绝对地址

FUNCTION_POINTER : 功能指针(第一个字节0位=1时仅初始化指针,第0位=0时初始化指针和整个表格区;第4位=1时不输出上升沿时间戳,第4位=0时输出上升沿时间戳;第5位=1时不输出下降沿时间戳,第5位=0时输出下降沿时间戳;第二个字节开始的一个双字是输出偏差设置(多此一项程序增加很多内容)),至少占据5个字节空间.尚未加入先捕上升或先捕下降沿功能.

输入输出:

BUFFER           :  双字缓冲变量(分配地址即可,用户不可写地址,否则运行错乱)

WR_NUMBER   :  写位置(指示写缓冲区指针位置)

RD_NUMBER    :  读位置(指示读缓冲区指针位置)

输出:

SIM_OUTPUT  :  延时后的输出点.

S_TIME_POINT:  上升沿BGN相对时间戳(ms).

E_TIME_POINT:  下降沿BGN相对时间戳(ms ) .

TIME_SINCE    :   函数块运行以来的BGN相对时间戳(ms) .

ERROR: 第0位=1 溢出,第0位=0 未溢出;第1位=1未初始化,第1位=0已初始化.

测试例程及BITIME相对时间戳延时库V2.1版本.zip

以上是测试文件

2.1版本是最终版本.

1: 2.1修复下降沿最后一个数据和上升沿一致的显示方面的BUG. 

2: 2.1修复溢出偶尔不报警BUG.

3: 以上两个BUG不对函数块正确运行产生直接影响且已在2.1版本修复.

4:如有不受限于扫描周期需求可采用立即输入输出指令.




以下为处理溢出图

以下图片处理读到的有符号绝对值时间戳小于等于0情况有溢出机制且带误差允许的一个思路 其中功能指针第2个字节开始的双字是时间戳误差值(设成2MS就是在时间戳大于等于时间戳减2以及小于等于时间戳加2就可以输出)

以下处理读到的有符号时间戳大于0且带允许误差情况




评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8933条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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