作者 | 主题 |
---|---|
万泉河 至圣 经验值:28827 发帖数:10871 精华帖:132 |
楼主 2021-03-14 09:43:45
主题:【万泉河】WINCC C脚本变量查找替换,以及关于就事论事 【万泉河】WINCC C脚本变量查找替换,以及关于就事论事 昨天, 一个标准化学习营的学员,发个图,问我个问题 问:这个脚本可以根据报警情况改变背景颜色,但是每调用一次就得在脚本里面改变量吗? 你们大家看了问题可能未必一下子看懂头在问什么。 但我立马就懂了。 标准化的学员们,跟我一样,特别注重工作效率,而不是仅仅能实现目的。他这里是借来了别人的一段程序可以用,但想复制多个,如果要逐个进程序里面改变量名字,就累了。 所以来问我。 我想了一下,虽然我知道他要实现什么,跟他解释起来还是很难。所以索性把程序原文字要来,给改了一下,发回给他。 #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { // WINCC:TAGNAME_SECTION_START #define Tag_H "主减轴温1_H" #define Tag_HH "主减轴温1_HH" // next TagID : 1 // WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END int temp=GetTagBit(Tag_H)+GetTagBit(Tag_HH)*10; switch( temp){ case 1 : return 64255; //黄 break; case 10 : return 255; //红 break; case 11 : return 255; //红 break; default : return 1677786880; } } 然后他就可以用查找替换的方式修改变量了。 这样子: 关于WINCC中变量的查找替换, 以及文本的查找替换, 是一个基本功,不会的同学自己去学习一下, 非常重要,非常重要,非常重要! 这位学员就是因为平素我给他们讲的多,所以上瘾了, 这里没有这个功能,就傻眼了。 在C脚本中被使用过的变量, 要被能WINCC交叉引用查找到,并进行替换,是需要特殊处理的。 所谓的特殊处理,就是你在加入一段新的C脚本时冒出来的那一批注释。那是WINCC的特殊规范,或者说为了应对C脚本环节的缺陷专门设计的。 上面脚本中 // WINCC:TAGNAME_SECTION_START 和 // WINCC:PICNAME_SECTION_START 的那两段。 这部分知识我在我的上一本专著《西门子WINCC从入门到精通》中P129页详细讲解了此功能,但看来还是有很多人没学习到。 看看, 我又在卖弄推销我的书了。 为啥我说又呢?因为上一篇文章《【万泉河】PLC全局变量M正确使用大法-2》 https://mp.weixin.qq.com/s/zTVVi1YIECjwqg3U1bWfRg 我也同样提到过这本书中的知识点。 然后上一篇文章发出后,就有不少网友追问哪里能买到书。 而已经拥有此书的网友估计都赶紧去翻看原书了。 然而,我想, 一些知识点恐怕在谁的脑子里,就永远在谁的脑子里了。别人要学到,真的很难。那些知识点尽管我曾经写到了书里,然而也只有我一个人记得。别人哪怕是花了钱,买了书, 也认真看了,但一些重要的知识点,未必能发现,未必能get到! 作者总不能在书里到处划重点,这里是知识点,那里也很重要吧?那样,整本书都成了重点,也同样没了重点。 所以,我在想,大家更需要的还是一个开放的,能互相帮助互相提醒的交流平台。 遇到什么小问题, 无关企业技术机密以及核心竞争力的小问题, 一时间自己找不到答案的时候,平台里问一下,然后谁了解,谁就顺便给回答了。 然而,这不能是只盯着一个高手,即所谓的大佬,给人发问题问自己的问题。那样不对等,没人欠你的。 同时,平台也需要有一定的互信度。像楼上这个问题,是曾经交过学费的标准化学员问我,我感情上就比较亲近,就愿意多花一点精力帮他。然而,如果是泛泛而交的网友,恐怕连翻书告诉他在书的第几页的精力都不会舍得投入。搞不好还会被骂趁机卖书。 后面内容比较火爆。 请移步看原文 https://mp.weixin.qq.com/s/CifRWY8osbojuzXs6l8a3A
微信公众号:PLC标准化编程,ZHO6371995
|
万泉河 至圣 经验值:28827 发帖数:10871 精华帖:132 |
4楼 2021-06-01 10:07:47
主题:回复:【万泉河】WINCC C脚本变量查找替换,以及关于就事论事 你在define的时候,可以定义一个完整的变量的名字,即前缀+后缀,然后它就可以被搜索替换到了,对吧? 然后呢,这个define其实只是个字符串,你在程序中对字符串进行操作,把分隔符点前面的字符部分提取出来,送给窗口做前缀。 我曾经用VBS这么做过。 通过变量的名字,把变量名字的字符串给读取出来了。 应该是一样的道理。
微信公众号:PLC标准化编程,ZHO6371995
|