作者 | 主题 |
---|---|
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
楼主 2018-11-19 15:39:23
主题:分个享,一个有用的功能。 分享一个有用的库,可多次调用,并内含边缘指令的制作原理和计时原理。这两个重点都是很多人问过的。 收藏起来,日后就不用问了。 程序很少,6个网络。 下面一行开始为程序开始。 SUBROUTINE_BLOCK 点消抖:SBR1 TITLE=子程序注释 VAR_INPUT 入点:BOOL; 门限ms:DWORD; END_VAR VAR_IN_OUT 记忆D:DWORD; 记忆B:BYTE; END_VAR VAR_OUTPUT 出点:BOOL; END_VAR VAR 位_上次:BOOL; 持续时:DWORD; END_VAR BEGIN Network 1 // 本程序当输入点状态稳定达到门限毫秒时间后输出才跟着输入点发生变化。作者:芳季。 Network 2 // 上升缘和下降缘读取一次时钟。 // 网络注释 LD L0.0 AN L9.0 LDN L0.0 A L9.0 OLD BITIM LD5 Network 3 // 制作边缘 LD L0.0 = L9.0 Network 4 LD L9.7 = L10.0 Network 5 // 输入和输出一致,结束子程序。就不需要做什么了。 不一致表示正在等待变换。不结束程序,计算时间。 LD L0.0 A L9.7 LDN L0.0 AN L9.7 OLD CRET Network 6 // 不一致,会运行到这里。 检查时间,未达到门限时间,不需要做什么。 LD SM0.0 CITIM LD5, LD11 AD< LD11, LD1 CRET Network 7 // 达到了门限,变换输出。 LD L0.0 = L9.7 END_SUBROUTINE_BLOCK 上面一行是程序最后一行。 把以上程序复制粘贴到记事本,保存为*.awl文件。用导入功能,导入awl到新的程序里可以生成一个完整功能的子程序。你可以自行制作成库。 在主程序或其他子程序做无条件调用,便可实现需要的功能。有条件调用请自行分析现象。 如果本程序对你有用,你可以再次分享,但请你分享时不要删除注释中那两个字。 |
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
1楼 2018-11-19 15:47:54
主题:回复:分个享,一个有用的功能。 |
不断攀登 至圣 经验值: 12543 发帖数: 1843 精华帖: 0 |
2楼 2018-11-19 16:55:38
主题:回复:分个享,一个有用的功能。 感谢分享!
邮箱 yongquancun@126.com
|
holdkcsxyz 至圣 经验值: 13012 发帖数: 1814 精华帖: 22 |
3楼 2018-11-19 17:19:32
主题:回复:分个享,一个有用的功能。 MARK先标记再细看 |
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
4楼 2018-11-19 17:41:07
主题:回复:分个享,一个有用的功能。 9.0 9.7这是子程序内部使用到的在那个叫记忆B之中的一个位。对于外部,这是一个B的in/out参数。我打算以后增加功能,会使用到更多的bit,就在这里用一个B做参数。 |
云山雾绕 至圣 经验值: 16400 发帖数: 2397 精华帖: 0 |
5楼 2018-11-19 20:36:45
主题:回复:分个享,一个有用的功能。 感谢你的分享!
开心每一天,懂得包容、感恩!
|
--意孤行 奇侠 经验值: 5101 发帖数: 520 精华帖: 7 |
6楼 2018-11-19 20:51:51
主题:回复:分个享,一个有用的功能。 感谢,分享 很实用 而且运行时很精简 不占很长时间
认真做事,低调做人
|
holdkcsxyz 至圣 经验值: 13012 发帖数: 1814 精华帖: 22 |
8楼 2018-11-20 08:42:24
主题:回复:分个享,一个有用的功能。 感谢分享,不错的一个机制;单点的消抖和N个点(N太大时应该不适合调用N次单点消抖函数)的消抖还是有点区别的,找出相对合理的N个点的消抖处理机制还是有很多用处的。 |
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
9楼 2018-11-20 11:10:50
主题:回复:分个享,一个有用的功能。 n个点一样要n个计时器,一样要n个中继(我这叫做边缘辅助暂存)。比如说每一个字节做一个库,一并处理。是吗?这……我想到的是不会比我这调用n次更省时。 我再在外面做一个库,专门作为这个消抖的库的外挂,for或轮询这消抖n次,间接寻址切换。这个思路做行不行?你呢? |
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
10楼 2018-11-20 12:01:34
主题:回复:分个享,一个有用的功能。 @winter938 你觉得如果有100个点要消抖,要怎样做? |
winter938 至圣 经验值: 10684 发帖数: 1561 精华帖: 33 |
11楼 2018-11-21 10:00:04
主题:回复:分个享,一个有用的功能。 100个点就有100个点对应的过程数据要存储,就要用程序来处理这一堆数据,不管你用啥子PLC,啥子程序。八仙过海各显神通这个核心是一样的。具体程序实现方案都是有利有弊的,可以追求完美,遗憾的是相信没有绝对的完美。有时笨拙的程序跑得快,有时精巧简短的程序功能却不差,高兴之余追求完美的你仍能发现丝丝遗憾。200系统而言楼主的这个题目我也做不出什么新花样能实现功能就好。
工控爱好者
|
芳季 至圣 经验值: 67501 发帖数: 14774 精华帖: 100 |
12楼 2018-11-21 15:32:32
主题:回复:分个享,一个有用的功能。 小系统,不会有这么多个点的需求了。开玩笑啦。就算是20个,也把库调用20次抄20次参数算了。 |