技术论坛

[下载]wincc延时控制功能实现

作者 主题
版主

经验值: 23522
发帖数: 10172
精华帖: 123
[下载]wincc延时控制功能实现
精华帖


只看楼主 只看精华 2004-01-02 13:11:18
应朋友之请,编制了一个实现延时控制功能的sample,现共享在网上,有需要的同志可以拿去参考。同时也欢迎大家讨论、提出意见。
wincc版本:v5.1中文版

点击此处查看附件
实现的功能:
1,一个按钮,单击按钮,按钮隐藏,10s之后,按钮自动恢复显示。
2,为了验证在延时期间,系统仍在正常工作,设计了一个周期增加的变量显示。
3,变量递增的周期为250ms,所以正常计时的话,隐藏阶段的总计数40个。
4,按钮事件首先执行将计数变量清零,但实际运行时,总会有失误的时候,变量清0不成功,请有兴趣的找出失误的原因,并设计出对应的解决方法。
微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=47589&b_id=5

游士

经验值: 204
发帖数: 191
精华帖: 0
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-02 23:39:47
看了一下,猜想可能是由于WINCC扫描周期,全局脚本触发时间和按钮mouse事件所致,但却不知如何修改!
 
以下网友喜欢您的帖子:

  
侠客

经验值: 872
发帖数: 592
精华帖: 9
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-05 11:42:51
我想这个问题用PLC来实现定时控制显示与否更方便,我的思路如下
WINCC中按钮的显示用一个位控制,按钮执行时,给定时启动位置一,定时开始时,给那个用于显示的位置1,按钮隐藏,定时结束,显示位置0,按钮重新显示.
比在WINCC中弄更直观,更利于理解,当然,c语言高手不必考虑我的思路.
欢迎大家讨论
做人要厚道
以下网友喜欢您的帖子:

  
版主

经验值: 15356
发帖数: 8202
精华帖: 17
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-05 20:50:34
上位机直接通过RS232/485与下位机通讯(没有PLC),读取下位机数据,但两次访问同一地址的下位机(肯定存在这种情况)的时间间隔不能少于n毫秒,必须将所有下位机数据全部读上来才能进行后面的数据处理工作。这些事务只能放在一个全局动作中,你说如果不Sleep,还有更好的方法吗?
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
侠客

经验值: 644
发帖数: 509
精华帖: 2
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-07 10:07:07
看了一下,应该是 aijunlin 所说的原因,

就是全局脚本执行的时候,读上来TAG1,在脚本还正在执行时候,画面的按钮
触发信号。所以只要是把清零做到脚本里就没有什么问题了。

解决方法:
1,在延时前加SET位1,在延时后SET该位为0,
2,在脚本里判断该位状态,为1时,进入累加,为0时,清零
3,因为延时结束后即清零,所以具体累加次数要在累加时存入另一变量





 
以下网友喜欢您的帖子:

  
版主

经验值: 23522
发帖数: 10172
精华帖: 123
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-07 21:34:07
CZS:看来我还是领会错了你的意图。早知是这样的目的,我是坚决不会支持你用SLEEP的方式。
WINCC能够从WINDOWS中得到的线程是有限的,你这样处理,通讯程序一直占有一个线程,同时却十分容易被打断,所以不稳定。
微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
版主

经验值: 23522
发帖数: 10172
精华帖: 123
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-01-07 21:45:29
linhbo:你的思路很对!
微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
游侠

经验值: 499
发帖数: 110
精华帖: 6
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-02-04 10:34:06
为什么我下载后运行不了?
让学习成为一种习惯
以下网友喜欢您的帖子:

  
新手

经验值: 44
发帖数: 38
精华帖: 0
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-02-05 17:10:57
主要是扫描周期的问题,把脚本变为1S,画面的周期小点就可以了。
 
以下网友喜欢您的帖子:

  
游侠

经验值: 527
发帖数: 469
精华帖: 2
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-04-03 16:45:23
SLEEP指令是精度不高的延时程序,有更好的延时指令,经度绝对准确,你这个误差太大了,好的机器可能还好一点,一般的机器,误差有可能会在30秒左右都完全由可能。
一起学习,一起进步!!!谢谢
以下网友喜欢您的帖子:

  
fgb
游士

经验值: 152
发帖数: 130
精华帖: 1
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-04-04 10:52:11
1、当全局脚本多的时候,WINCC的全局脚本的触发周期是不准确的。可以仅做一个脚本产生几个周期性变化的变量,用变量来触发别的脚本。
2、SLEEP函数是不太好的函数,会阻断WINCC中的一个进程,但现在的机器性能都很高,用一下也无妨。
3、万老师的那个清零经常失败,是因为,按钮按下的瞬间动作,与全局脚本动作有冲突。linhbo的思路是解决的方法。
 
以下网友喜欢您的帖子:

  
游侠

经验值: 499
发帖数: 110
精华帖: 6
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-04-08 19:58:45
我用vb做控件可以解决这样的问题
让学习成为一种习惯
以下网友喜欢您的帖子:

  
游侠

经验值: 478
发帖数: 314
精华帖: 4
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-05-31 12:35:05
C动作编写如下:
if (GetTagBit("新建变量")==1)
SetTagDWord("新建变量_1",(GetTagWord("新建变量_1")+1));
return 0;

按扭鼠标事件改动如下:
#pragma code ("kernel32.dll")
VOID WINAPI Sleep (long int dwMilliseconds);
#pragma code()
SetTagWord("新建变量_1",0);
SetTagBit(("新建变量"),TRUE);
SetVisible(lpszPictureName,lpszObjectName,0);
Sleep(10000);
SetVisible(lpszPictureName,lpszObjectName,1); //返回类型:BOOL
SetTagBit(("新建变量"),FALSE);

万泉河老师你看对吗?
另外我其实对C不是很了解,你能讲一讲下面两条语句的意思吗?
#pragma code ("kernel32.dll")
VOID WINAPI Sleep (long int dwMilliseconds);



知识的积累由一点一滴开始.
以下网友喜欢您的帖子:

  
侠士

经验值: 1188
发帖数: 900
精华帖: 3
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-05-31 14:52:58
定义sleep参数为长整型、毫秒
 
以下网友喜欢您的帖子:

  
游侠

经验值: 478
发帖数: 314
精华帖: 4
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-06-01 08:37:12
#pragma code ("kernel32.dll")呢?
谢谢!


知识的积累由一点一滴开始.
以下网友喜欢您的帖子:

  
游侠

经验值: 527
发帖数: 469
精华帖: 2
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-06-01 09:35:54
好像是调用windows的api。
一起学习,一起进步!!!谢谢
以下网友喜欢您的帖子:

  
游侠

经验值: 478
发帖数: 314
精华帖: 4
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-06-01 14:04:40
API是什么????呵呵!
我可是一点都不知道。
知识的积累由一点一滴开始.
以下网友喜欢您的帖子:

  
新手

经验值: 40
发帖数: 29
精华帖: 1
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-06-01 15:02:17
在IFX中有一个类似于VB的定时器,但是在WINCC中关于时间触发的问题就显得不太方便。如果你的周期时间比较久可以用变量控制+时间比较来控制程序的执行。如果你的时间比较的短或者说非常的短,最好和PLC结合做外部触发。如果你的系统非用软件实行不可,那么我认为还是全局脚本触发比API要可靠,如果你的处理事件很长,那么做好把处理事件分散在系统中比较好。用WINCC调用API效果没有大家想象的好。
 
以下网友喜欢您的帖子:

  
游侠

经验值: 478
发帖数: 314
精华帖: 4
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2004-06-01 16:48:03
???
一头雾水
我想知道API是什么呀!天啊,谁能告送我
知识的积累由一点一滴开始.
以下网友喜欢您的帖子:

  
游士

经验值: 258
发帖数: 155
精华帖: 5
回复:[下载]wincc延时控制功能实现


只看楼主 只看精华 2005-08-10 12:56:43
我下载调试了万兄的例程。linhbo的方法是可以解决这个问题!
糊口饭吃
以下网友喜欢您的帖子:

  
收起
[下载]wincc延时控制功能实现
×
扫描打开手机版
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。