技术论坛

 分个享,一个有用的功能。

返回主题列表
作者 主题
芳季
至圣

经验值: 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次参数算了。

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