找回密码
 请使用中文注册
查看: 17|回复: 1

100个数据的输入输出延时方式的SCL编程

[复制链接]
阅读字号:

29

主题

186

回帖

405

积分

入门维修师

积分
405
发表于 半小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
100个数据的输入输出延时方式的SCL编程
  昨天,帮公司同事处理一个编程逻辑关系问题,在处理过程中发现原程序者用最原始的方式处理多个I、Q输入、输出变量的延时,作为输入、输出的防抖动和滤波,虽然,效果能够同样达到,但是,总感觉似乎缺少一点什么“东西”似的。晚上吃过晚饭就想起这个事情,于是,打开电脑准备按自己的思路测试一番自己的想法。
过程:
1) 新建一个测试项目,选择plc为s7-1214C,新建一个FB1,语言下载SCL及测试用的DB1,图示:
假设测试100个输入I变量的接通延时的测试。
定时器编号定义Array[0..99] of IEC_TIMER,定时器延时数据定义Array[0..99] of Time
2) 在Array[0..99] of Time的默认值中,分别填写需要延时的定时数据,图示:
本次测试,只写了定时器[0] ~ 定时器[9]这样10个为例,分别写入1 ~ 10S不同的定时数据。
3) 在DB1中新建测试用的数据,图示:100个输入,100个输出。
4) 在OB1中调用,并下载到仿真测试,图示:
5) 为测试方便,新建监控表_1,图示:
将输入[0] ~ 输入[9]同时使能为1后,输出[0] ~ 输出[9]分别以间隔1S的时间依次输出,同理,编辑输出[0..99],将输入[0..99].Q作为输出[0..99]的启动接通延时条件,启动输出接通延时定时器,当延时时间到达后,输出[0..99]的状态值,图示:

6) 在输出定时器Array[0..99]写入10 ~ 1S的时间数据,图示:
7) 重新将程序编译、保存后,下载到仿真,重新启动输入[0] ~ 输入[9]的使能,图示:
达到初始思想效果,本次测试结束。
小结:
1) 多个IEC定时器应用时,定时器背景数据放置在FB1的背景数据块DB3中,在FB1接口下的定时器[0..99]单独实现接通延时定时器的数据设置,方便程序管理,如果需要外设修改时间数据,可以将连接在接口Static变更为in_out接口上,那样方便在FB1管脚外进行修改定时器延时时间。
2) 利用FOR或者自身的循环机制,“轮询”各输入、输出通道的状态值,一旦检测到与“索引”匹配的地址为1时,启动延时接通定时器,延时时间到达后,输出到各自对应的通道。其中,FOR循环方式优于自身周期累加方式,启动接通延时定时器时间更精确。
3) 利用数组Array
  • 及FOR循环的索引,能够高效的把100个通道的状态在一个循环周期中采集一边,读、写数据信息的效率高,响应快捷。

  • 29

    主题

    186

    回帖

    405

    积分

    入门维修师

    积分
    405
     楼主| 发表于 半小时前 | 显示全部楼层
    此类方法适用于PLC的输入、输出进行批量滤波,来消除输入信号的抖动及必要的输出延时,来确保定位等动作的温度、可靠。
    您需要登录后才可以回帖 登录 | 请使用中文注册

    本版积分规则

    QQ|手机版|家电维修论坛 ( 蜀ICP备19011473号 川公网安备51102502000164号 )|网站地图|网站地图

    GMT+8, 2026-8-27 12:11 , Processed in 0.108555 second(s), 25 queries .

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表