技术论坛

 按钮的延时功能

返回主题列表
作者 主题
xiatianyun
侠圣

经验值: 4857
发帖数: 735
精华帖: 10
楼主    2021-09-11 15:43:04
主题:按钮的延时功能 精华帖 

想用一个按钮来控制PLC的一个bool变量,实现复位功能:按下Set,抬起Reset。

一开始用取反的直接变量连接,发现不能用(或是我不知道如何取反)。后来做了两个按钮来暂时替代测试,之后当然还是回到一个按钮的实现来。

用两个事件来实现,效果不能正确,原因当然是通讯的延时问题,不能检测到短暂的按下释放并有效传输到PLC。当然可以用脚本来实现,不过我感觉太麻烦了。


论坛搜到了2016年万版主的旧贴:

【万泉河】在WINCC中如何单击按钮发出一个脉冲信号?-技术论坛-工业支持中心-西门子中国 (siemens.com.cn)

http://www.ad.siemens.com.cn/club/bbs/PostStory.aspx?a_id=1276061&b_id=82


有点意思,我研究了一下,还没仔细看,不过解决了我昨天的问题:可以借用控件的属性动态来做和属性无关的周期动作,这个万版主也是这么做的,看来我的没问题。


我认真思考了这个按钮延时问题。

按钮发指令给PLC,为了可靠,需要做成延时一段时间再off。这个我现在觉得如果只是用来发指令的话其实还是采用PLC接受到信号1后由PLC复位这个信号比较合适。原因是就算WinCC发的是短时脉冲,PLC能够可靠接受到信号,PLC还是需要做沿检测的,这样PLC反而多了一些沿检测程序,多了一个静态变量来存储信号状态,不如PLC接受到信号后由PLC复位来得简单。

西门子提供的例程BST里也是这么处理的,看来确实有道理。


不过WinCC按钮实现脉冲自复位的功能还是有使用的空间的,比如这次我需要临时调试,不太可能在PLC中增加复位信号的程序,就只能由WinCC来做脉冲信号了。


问题是如何实现呢?万版主的原来的实现确实好,借助按钮的填充动态来1s周期执行计数,这样就可以实现延时了。

不过填充动态还是需要不停地执行,无论这个脉冲功能已经使用还是正在使用。总之需要不停地劳累。

问题1:普通周期动作有没有像动画触发一样有激活和灭活的功能,这样需要动态时就激活,不用时就不让触发。(也许可以在按钮填充动态使用动画触发)

问题2:如果要简单使用,不费劲编程,当然使用面板比较合适。这样按钮控制的变量也可以做成属性供用户直接改写,不用在程序中来改写。


手机用户20180604694547
侠圣

经验值: 3812
发帖数: 730
精华帖: 3
1楼    2021-09-11 19:16:46
精华帖  主题:回复:按钮的延时功能

最好的方法还是在PLC中进行复位,实在想在wincc中实现的话VBS有一个延时的指令用起来比较烦但封装在项目函数中重复调用也还是不错的,可能唯一的缺点就是在延时期间不能执行其他脚本,这个可能是wincc的脚本机制导致的。

xiatianyun
侠圣

经验值: 4857
发帖数: 735
精华帖: 10
2楼    2021-09-11 22:44:37
主题:回复:按钮的延时功能

我已经对按钮脉冲的实现做了些修改,在填充动态里面使用动画周期。按钮按下事件除了对填充量也就是延时值进行赋值外还激活了动画并让动画周期为1s,在填充动态里检测到填充量小于等于0除了复位变量外还灭活动画触发。这样周期动作就只在按钮延时持续时间内有效了。

不过我尝试做成面板时有了新问题,面板脚本似乎不支持动画的激活灭活,看来面板脚本对VBS不是全部支持。要怎么处理还不知道。

手机用户20180604694547
侠圣

经验值: 3812
发帖数: 730
精华帖: 3
3楼    2021-09-12 09:29:37
主题:回复:按钮的延时功能
没必要那么复杂的,只需要用按钮的点击按钮事件,先把位置位,然后加入延时指令,延时指令之后再复位就可以了,写起来也很方便,如果想更简单一点就把这个做成项目函数重复调用。编程的方法有很多但最终目的只有一个那就是实现功能,每个人都有自己不同的想法,方法没有好坏,只有是否方便。
zhcwos
侠圣

经验值: 3103
发帖数: 440
精华帖: 0
4楼    2021-09-12 11:00:45
主题:回复:按钮的延时功能

不知道上升沿和下降沿能不能实现

云淡风轻
天芯
至圣

经验值: 18851
发帖数: 2106
精华帖: 0
5楼    2021-09-12 12:32:05
主题:回复:按钮的延时功能

跟着学习了

楼前
奇侠

经验值: 5374
发帖数: 557
精华帖: 0
6楼    2021-09-12 19:45:57
主题:回复:按钮的延时功能

功能是在PLC上实现,所以PLC上接收到信号,执行就可以了

屏上自行复位即可

上升沿和下降沿的时间,大于通讯周期

mengquanshui
至圣

经验值: 11235
发帖数: 3296
精华帖: 4
7楼    2021-09-13 08:17:36
主题:回复:按钮的延时功能

1,学习了,我公司的屏的单个按键是直接使用按下 SET , 释放 RESET 二个做的

2,个人感觉如是使用实物单个按键来做,是不是可以直接先将 I MOVE 到 M 中间变量,然后直接上下沿?

喜欢用SIEMENS,乐水工控生活 打造工业智能家居生活!
AISHUISHUI
奇侠

经验值: 9022
发帖数: 375
精华帖: 0
8楼    2021-09-13 08:38:14
主题:回复:按钮的延时功能


谢谢分享!

随心所欲
Zaxife
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
9楼    2021-09-13 10:35:30
主题:回复:按钮的延时功能

讲真,这种上位机实现脉冲的逻辑,还要考量脉冲宽度的应用,在实际使用上是很糟糕的做法。从2009年开始我就反对这种做法,推荐上位机仅写1,然后PLC自己复位的做法。


楼主这种上位机实现脉冲,且不说脉冲宽度不好控制,还要浪费一次通讯写操作,如果中控有上百台设备需要同时开关机操作,本来1百条写1通讯就满足了,楼主绞尽脑汁搞出来的这个要2百条通讯才能完成,而且还要具体分配....这简直是没事找抽么?就算不考量通讯次数占用的问题,那么如果有些丢失了写0(通讯时好时坏写0不成功),那么你第二次再写1,PLC原先是1现在又写1,PLC不会执行任何操作的!这次的写1又浪费一次通讯。这种做法简直是太滑稽。



ZD_JY
至圣

经验值: 13056
发帖数: 1080
精华帖: 8
10楼    2021-09-13 11:03:02
主题:回复:按钮的延时功能

@xiatianyun ,你使用万版的第二种方法已经实现了吗?怎么使用内部变量,仿真这个功能,按钮动态没反应啊?已经把按钮的动态填充打开,然后事件里吧填充量属性改为50,在属性里吧填充量属性使用万版的vbs脚本循环减10,这个不对吗?

做最好的自己!活出自我!
xiatianyun
侠圣

经验值: 4857
发帖数: 735
精华帖: 10
11楼    2021-09-13 11:23:42
主题:回复:按钮的延时功能

权当学习了。

至于实际应用我也写明了最好用PLC来处理。

万泉河的写法没错呀,你好好看看。

我把我改的贴图。


事先在变量管理器先建立内部实验变量P.

修改下填充脚本:



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