作者 | 主题 |
---|---|
WWCWWC 至圣 经验值:71501 发帖数:7980 精华帖:145 |
楼主 2019-02-22 09:53:34
主题:简单的锯齿波编程 简单的锯齿波编程 今天在“找答案”栏目中看到有这样一个帖子,描述在单位时间内,将一个寄存器内的数据由0上升(下降)最大值或退回到0。问题链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=212415&cid=1072 我记得西门子关于这个类似的问题,早就有类似的官方例子,典型的就是Rampe(斜波函数发生器指令)、锯齿波电路的应用,有需求可以到官网上下载来学习。 我在实际回复时,根据网友提问的条件:“15S时间内数据MW100由0上升至60,或者在这个时间段将MW100数据由60下降到0”的依据,写一个简单的程序段,cpu选择315-2pn/dp,调用循环中断组织块OB35,在这个信号定时中断组织块中编辑这个控制程序。 编程思路: 1) 根据这个15S时间,把它折算为15000mS,315-2pn/dp的cpu循环定时中断默认值为100mS,需要重新设置后下载到cpu中,15000 / 60 = 250 mS; 2) 如果定义M0.0为升控制条件、M0.1为降控制条件、M0.2清除MW100数据; 3) 因为控制要求最大值为60,最小值为0,需要在程序中做一些限制。 程序:仿真验证 1) 组态cpu硬件: 插入导轨,1#槽插入电源模块,2#槽插入所选择的cpu,双击导轨2#槽的cpu,在弹出的cpu属性窗口“周期性中断”将原100mS,修改为按要求的250mS,确定,编译、保存项目。 2) 在step7编辑区“插入”一个OB35: 在step7编辑区,插入一个OB35,确定。 3) 在OB35中编辑升、降程序: 4) 将硬件和程序下载到仿真器,进行验证:为方便监控数据状态创建一个变量表VAT_1。 5) 仿真验证结果: 仿真结果能够在15S时间内,将MW100内的数据由0上升到60。 这个程序非常简单,在ADD_I前面加入控制条件和数据上限,下降的原理与上升的一致。有需要的网友可以通过自己具体的要求,适当修改循环定时中断OB35中的程序段就可以应用了。 小结: 循环定时中断,一般plc均带有类似的循环定时中断组织块或子程序,循环的含义是调用后cpu会根据设置的定时时间,无限循环进行,当定时中断时间到,OB1主程序会优先执行一次该组织块或子程序。但凡,中断组织块(子程序)均带有一次调用有效周期为一个的特性,类似于沿脉冲触发。理解了上述基本概念,编辑类似的程序变的简单了。 |