技术论坛

 • 产品分类
 • 咱工程师的故事
 • 培训与认证答疑专区
 • 服务合作伙伴专区

 【万泉河】WINCC C脚本变量查找替换,以及关于就事论事

返回主题列表
作者 主题
万泉河
至圣

经验值:28788
发帖数:10865
精华帖: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
万泉河
至圣

经验值:28788
发帖数:10865
精华帖:132
4楼    2021-06-01 10:07:47
精华帖  主题:回复:【万泉河】WINCC C脚本变量查找替换,以及关于就事论事

你在define的时候,可以定义一个完整的变量的名字,即前缀+后缀,然后它就可以被搜索替换到了,对吧?


然后呢,这个define其实只是个字符串,你在程序中对字符串进行操作,把分隔符点前面的字符部分提取出来,送给窗口做前缀。 


我曾经用VBS这么做过。 通过变量的名字,把变量名字的字符串给读取出来了。 

应该是一样的道理。 


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