作者 | 主题 |
---|---|
WWCWWC 至圣 经验值: 71500 发帖数: 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主程序会优先执行一次该组织块或子程序。但凡,中断组织块(子程序)均带有一次调用有效周期为一个的特性,类似于沿脉冲触发。理解了上述基本概念,编辑类似的程序变的简单了。 |
星动行働 侠士 经验值: 1384 发帖数: 213 精华帖: 0 |
1楼 2019-02-22 09:58:43
主题:回复:简单的锯齿波编程 谢谢您的分享,我最近在项目上也在使用循环中断的功能,对于循环中断的使用有了更多的认识。特别是小结部分,总结的很细,结合了具体的使用过程。 我个人肤浅的理解是循环中断实际就是一个系统自带的定时器,可独立于主程序外,用好了,节约定时器和计数器的资源。
勤奋吃苦,是最好的技巧与捷径。
|
菲戈 至圣 经验值: 28599 发帖数: 5906 精华帖: 61 |
2楼 2019-02-22 10:27:29
主题:回复:简单的锯齿波编程
欢迎交流,QQ:2301013064 邮箱:feige6@139.com
|
holdkcsxyz 至圣 经验值: 12948 发帖数: 1802 精华帖: 22 |
3楼 2019-02-22 11:06:17
主题:回复:简单的锯齿波编程 |
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
4楼 2019-02-22 11:25:32
主题:回复:简单的锯齿波编程 你说的555是不是那个集成电路?早前,我使用过这个集成电路做的定时器,这个电路非常简单的搭接就可以了。我第一次使用这个集成电路555,由于RC电路中的电解电容器操作漏电,定时器很长时间才输出,以为是电路连接错了, 现在,自己做线路板已经没有再做了。但是,这个过程将永远记录在我的心里。 |
不断攀登 至圣 经验值: 12543 发帖数: 1843 精华帖: 0 |
5楼 2019-02-22 13:42:29
主题:回复:简单的锯齿波编程 不错,楼主有东西~
邮箱 yongquancun@126.com
|
Zane 至圣 经验值: 75765 发帖数: 19245 精华帖: 376 |
6楼 2019-02-22 23:31:02
主题:回复:简单的锯齿波编程 能不能编一个不要计算中断分辨率,在OB1及时钟中断中都能用的斜坡函数?
Zane
注册自动化系统工程师
Always save before download
|
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
7楼 2019-02-23 17:06:13
主题:回复:简单的锯齿波编程 没有吃透你的要求,是在OB1中编辑斜坡函数? 如果是,这个并不难,取一个根据斜坡时间长度的数据,用一个系统时钟的时间作为升、降速速率,做斜坡函数。 |
Zane 至圣 经验值: 75765 发帖数: 19245 精华帖: 376 |
8楼 2019-02-24 16:17:42
主题:回复:简单的锯齿波编程 通用的,在OB1及定时中断中均可使用,且与定时中断的设置无关
Zane
注册自动化系统工程师
Always save before download
|
quiet 奇侠 经验值: 7577 发帖数: 1988 精华帖: 0 |
9楼 2019-02-25 08:32:17
主题:回复:简单的锯齿波编程 运算周期越小越平滑,cpu够力的话最好是1ms改变一次。 |
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
10楼 2019-02-25 10:11:16
主题:回复:简单的锯齿波编程 理解了,这几天正在考虑这个问题。 |
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
11楼 2019-02-25 10:12:52
主题:回复:简单的锯齿波编程 我也是这样想的,但是,一定会增加cpu工作负担,让cpu每1mS输出也不是一件容易的事情。 |
quiet 奇侠 经验值: 7577 发帖数: 1988 精华帖: 0 |
13楼 2019-02-27 14:47:58
主题:回复:简单的锯齿波编程 要是plc的扫描周期小于1毫秒的话,也不用中断了,其实这个运算量很小的。 |
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
14楼 2019-02-27 15:21:34
主题:回复:简单的锯齿波编程 实际上就模拟量输出模块的控制精度而言,不一定需要做的过份的平滑线性。 就输出波形上看,当然希望运算次数越多越平滑。 |
baishan 侠士 经验值: 1012 发帖数: 435 精华帖: 1 |
16楼 2019-02-28 10:41:38
主题:回复:简单的锯齿波编程 15000 / 60 = 250 mS 为什么要除以60那?
只要去研究,就会有收获,学无止境!
|
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
17楼 2019-02-28 11:04:23
主题:回复:简单的锯齿波编程 15000是时间长度,即15S时间内,60是需要上升(下降)的数据。 即在15S时间内,数据由0上升(下降)到60,这个60不要理解为时间数据的进制关系。 我将上升速率设置为250mS,即每250mS时间到,数据升(降)1个数据,如有不明白按我的例子程序自己写一边,仿真验证是最能够理解的方法。 |
WWCWWC 至圣 经验值: 71500 发帖数: 7980 精华帖: 145 |
18楼 2019-02-28 14:50:55
主题:回复:简单的锯齿波编程 是的。 我这不是为了做那个网友的提问问题来着吗,他要求将一个MW100的数据在15S时间内,由0上升到60的数。 就是把60这个数,按15S时间分配的。 这几天也在做Z版的题目,近期工作任务多,稍后我做好也会发上来的。 |