最近在做一个多台设备WINCC远程监控的项目,其中有一个想法不知道怎么实现,因为后续厂家会有成百上千台设备生产出来,要求我WINCC这边同时采集所用设备数据,所以我这边用是用变量加前缀来做的画面,通过前缀变量监控所有画面。我贴了我用来切换设备的脚本,此脚本以测试通过(通过往变量“zi”写入数字,来切换设备)。 但是设备将来会有上千台,所以自认为该脚本有些麻烦,而且存在隐患,我想我能不能通过往变量‘zi’里直接写入字符(如GRM1),然后SetTagPrefix(lpszPictureName,"画面窗口1","?");?这边调用字符变量"zi"里的GRM1?同样SetText("监控画面.PDL","静态文本11","?")这边怎么获取该字符?; 因为我想只要字符变量'zi'中写入的是什么字符,那么我的变量前缀就是该字符。这样就算我有再多台设备,脚本这边也不需更改。后期就不会存在工作量了。
{float a=GetTagFloat("zi");
if(a==1)
{
SetPictureName("jianshi.PDL","画面窗口1","监控画面.PDL"); //激活调用编号对应在线设备
SetTagPrefix(lpszPictureName,"画面窗口1","GRM1"); //画面变量前缀为GRM1
SetVisible(lpszPictureName,"画面窗口1",0); //Return-Type: BOOL
SetVisible(lpszPictureName,"画面窗口1",1); //Return-Type: BOOL
SetText("监控画面.PDL","静态文本11","GRM1"); //画面文本窗口为GRM1
}
else if(a==2)
{
SetPictureName("jianshi.PDL","画面窗口1","监控画面.PDL"); //激活调用编号对应在线设备
SetTagPrefix(lpszPictureName,"画面窗口1","GRM2"); //画面变量前缀为GRM2
SetVisible(lpszPictureName,"画面窗口1",0); //Return-Type: BOOL
SetVisible(lpszPictureName,"画面窗口1",1); //Return-Type: BOOL
SetText("监控画面.PDL","静态文本11","GRM2"); //画面文本窗口为GRM2
}