WinCC按钮脚本取反和按钮颜色显示问题 点击:601 | 回复:8



353744594@qq.com

    
  • 精华:0帖
  • 求助:18帖
  • 帖子:38帖 | 156回
  • 年度积分:157
  • 历史总积分:21442
  • 注册:2012年3月10日
发表于:2023-08-30 08:32:13
楼主
求助帖30分-未结帖

这个脚本是在网上教程里面看到的,这个脚本是在按钮动作里面的,这个功能就是通过按钮执行这个脚本,然后改变按钮的颜色,其实很简单,原理就是:按下按钮获取L3.red变量的值,然后判断sign值,若=1时将按钮设为红色(255),若=0时将按钮设为黑色(0),但有一点疑问的是下面这个取反脚本,假如按钮动作获取到变量值=1,按钮=红色,然后经过取反sign=0写入L3.red变量,此时按钮=红色,L3.red应该=0才对呀,但是通过程序画面监控结果是:变量=1,按钮=红色,变量=0,按钮=黑色,我分析的是变量=1,按钮=黑色,变量=0,按钮=红色,不知道哪里分析错了,请各位大神帮忙解答疑惑,谢谢



楼主最近还看过



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10263回
  • 年度积分:146
  • 历史总积分:50131
  • 注册:2005年4月22日
发表于:2023-08-30 09:25:56
1楼

if else看不懂?sign的值为真,背景色255,否则背景色0


变量为1的话,else后的语句怎么会执行?


HAVE FUN!

yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10263回
  • 年度积分:146
  • 历史总积分:50131
  • 注册:2005年4月22日
发表于:2023-08-30 09:27:36
2楼

你需要在Sign变量取反前输出变量的值,例如Printf在诊断窗口中看Sign的值,而不是直接监控Sign,因为脚本时间很短,你监控的是已经改变的Sign的值。


HAVE FUN!

JSdanzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 419回
  • 年度积分:82
  • 历史总积分:7540
  • 注册:2012年9月22日
发表于:2023-08-30 11:29:18
3楼

可以尝试下利用计划任务里添加一个脚本用来实时获取当前颜色,再通过按钮来改变当前色

353744594@qq.com

  • 精华:0帖
  • 求助:18帖
  • 帖子:38帖 | 156回
  • 年度积分:157
  • 历史总积分:21442
  • 注册:2012年3月10日
发表于:2023-08-30 14:57:32
4楼

"yuanle" 的回复,发表在1楼
        对内容: 【if else看不懂?sign的值为真,背景色255,否则背景色0变量为1的话,else后的语句怎么会执行?HAVE FUN!...】进行回复:

        -----------------------------------------------------------------


不对呀,如果变量=1不执行取反,那这段脚本功能是单按钮交替输出的呀?

353744594@qq.com

  • 精华:0帖
  • 求助:18帖
  • 帖子:38帖 | 156回
  • 年度积分:157
  • 历史总积分:21442
  • 注册:2012年3月10日
发表于:2023-08-30 15:00:00
5楼

"yuanle" 的回复,发表在2楼
        对内容: 【你需要在Sign变量取反前输出变量的值,例如Printf在诊断窗口中看Sign的值,而不是直接监控Sign,因为脚本时间很短,你监控的是已经改变的Sign的值。HAVE FUN!...】进行回复:

        -----------------------------------------------------------------


我的意思是假如变量=1时,脚本执行了取反再写入变量,此时L3.red=0才对呀,是我分析不对吗?

121111115

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 433回
  • 年度积分:56
  • 历史总积分:24528
  • 注册:2016年1月20日
发表于:2023-08-30 22:46:04
6楼

你这个脚本写下来效果是这样的,点一下为红色,再点一下为黑色,再点一下为红色,······这样交替进行的,最后的取反指令是设置了下次执行IF还是else,由于你这个在按钮按下时操作,所以就点一次就执行一次,所以会变一次颜色,循环执行的话就成了闪烁效果了。

353744594@qq.com

  • 精华:0帖
  • 求助:18帖
  • 帖子:38帖 | 156回
  • 年度积分:157
  • 历史总积分:21442
  • 注册:2012年3月10日
发表于:2023-08-31 10:57:28
7楼

"121111115" 的回复,发表在6楼
        对内容: 【你这个脚本写下来效果是这样的,点一下为红色,再点一下为黑色,再点一下为红色,······这样交替进行的,最后的取反指令是设置了下次执行IF还是else,由于你这个在按钮按下时操作,所以就点一次就执行一...】进行回复:

        -----------------------------------------------------------------


效果是你说的这样没错,我分析的是假如获取变量=1的时候显示为为红色,经过取反之后把0写L3.red里面去了,这种情况虽然显示红色,但是变量应该=0,显示黑色,变量应该=1才对,但实际不是这样的,实际是显示红色,变量=1,显示黑色,变量=0,为啥是这样呢?

Smile-lyc

  • [管理员]
  • 精华:138帖
  • 求助:51帖
  • 帖子:3580帖 | 22504回
  • 年度积分:1428
  • 历史总积分:150159
  • 注册:2006年8月04日
发表于:2023-10-12 11:31:43
8楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。

4、2023加油!!




热门招聘
相关主题

官方公众号

智造工程师