在wincc中,在弹出式的画面窗口中,变量都增加了前缀,其中有一个变量,我不需要加前缀,如何解决?另外,我想在弹出式窗口中获取变量前缀值,又是如何获取?
问题补充:
请大家看清楚标题,是在C脚本中,不是VB。@RENHQ,GetTagPrefix(lpszPictureName,lpszObjectName);?//Return-Type:?char*?
这个函数我在窗口中的按钮中测试了,读到的前缀值为(NULL),这是怎么回事呢?
最佳答案
以下实例说明了请求不带前缀的变量的原因。
您想要使用“@CurrentUser”变量读取本地用户。在多用户系统中,或者如果使用了面板技术,则在变量名称前始终会有服务器前缀或变量前缀。可使用下列变量附加件取消前缀以读取“@CurrentUser”变量。
● “@NOTP”取消变量前缀。
● “@NOSP”取消服务器前缀。
● “@NOP”取消变量前缀和服务器前缀。
附加件不能用于画面窗口或基本画面的“TagPrefix”或“ServerPrefix”属性。
附加件适用于所有动态化类型。仅当客户端带有自身项目时,取消服务器前缀才能发挥作用。
如果在多用户系统中建立了标准服务器,则无法使用“@NOP”和“@NOSP”附加件。
手册:
WinCC V7.4:使用 WinCC 系统手册
https://support.industry.siemens.com/cs/cn/zh/view/109736220
1146页 请求不带前缀的变量
获取画面的变量前缀可以使用:
GetTagPrefix(lpszPictureName,lpszObjectName); //Return-Type: char*
函数
补充:
用这个函数是没问题的,我用过,返回是NULL,一是你设置的画面或对象不对,二是你子画面的变量前缀是不是没设置,还有就是你子画面窗口是否已经显示,没显示会找不到对象的,返回值可能也是空
您也可以使用这个函数获取:
GetPropChar("START.Pdl","画面窗口1","TagPrefix"); //Return-Type: char*
下图是我测试的结果,两个都没问题
图片说明:
提问者对于答案的评价:
变量前缀可以读取到了,但是避开变量前缀在脚本中无法实现。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc147599.html