wincc 常用脚本

合集下载

WINCC基本的画面C脚本

WINCC基本的画面C脚本

WINCC基本的画面C脚本对于刚刚学习WINCC的人,希望有用。

SetVisible函数是用来执行是否显示的函数。

lpszPictureName:表示当前画面lpszObjectName:表示当前对象SetVisible(lpszPictureName,lpszObjectName,0); //Return-Type :BOOL以上面函数为例。

假如你点击一个按钮,代码如上,则点击后按钮隐藏。

同理,SetVisible(lpszPictureName,"@ERROR",FALSE)表示当前画面上有一个名称为"@ERROR"对象,将其隐藏。

FALSE或者0都可以。

Set_Focus(lpszPictureName,"@LoginIn");次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中,比如一个输入域。

修改变量前缀————SetPropChar(lpszPictureName,"PW","Tagprefix","F40708.") ;重设画面窗口的画面名称————SetPictureName(lpszPictureName,"PW","P1_FFU.pdl");SetVisible表示可见度———SetVisible(“画面名称”,“对象名称\画面窗口”,1或0);——利用画面窗口显示画面1 OpenPicture("index.Pdl"); 打开“index.Pdl”画面;————(middle*为画面窗口)SetPictureName("index.Pdl","middle","CR.Pdl"); 使“CR.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开SetPictureName("index.Pdl","middle9","lift2.Pdl");使“lift2.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开#pragma option(mbcs)2.单个设备的控制面板(不唯一):P1_FFU.pdlSetVisible( lpszPictureName,"PW",0);表示当前画面上有一个名称为"PW"对象,将其隐藏。

wincc-全套脚本总结

wincc-全套脚本总结

—————-1、wincc全局脚本动作-——-—-—隐藏控件——————#include "apdefap.h"int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit(”IM_in”);//"IM_in”为触发的变量.if(value==1){SetVisible("lianxi.pdl”,”按钮8",TRUE);//lianxi。

pdl为控制对象所在画面名,“按钮8”为对象名称}else{SetVisible(”lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax:#define PicNameInAction "PictureName”// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in-—————2、wincc全局脚本动作-——-提示框————--#include "apdefap.h”int gscAction( void ){// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName”// next TagID : 1// WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit(”IM_in”);if(value==1){MessageBox(NULL,”请确认三厅相关门是否关好,或者请解锁。

wincc中常用的vb指令

wincc中常用的vb指令

在WinCC中,常用的VB指令有很多,以下是一些常见的示例:
1. **ScreenItems**:这个函数用于获取屏幕上的项目。

例如,你可以使用`ScreenItems(圆1)`来获取名为"圆1"的项目。

2. **HMIRuntime.Screens**:这个函数用于获取要操作的窗体。

例如,你可以使用`HMIRuntime.Screens(Home1)`来获取名为"Home1"的窗体。

3. **Set**:这个函数用于设置对象的属性。

例如,你可以使用`Set objCircle= ScreenItems(圆1)`来获取名为"圆1"的项目并将其赋值给`objCircle`变量。

4. **InStr**和**InStrRev**:这两个函数都在主字符串中搜索子字符串,并返回找到的子字符串在主字符串中出现的位置。

不同之处在于,InStr从左到右搜索,而InStrRev从右到左搜索。

以上只是WinCC中VB指令的一部分,还有很多其他的指令和函数可供使用,具体取决于你的需求和场景。

wincc中常用C脚本

wincc中常用C脚本

查看文章wincc常用C动作2010-06-27 10:311.用户注销:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();2.用户登录:#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC ();4.退出运行到wincc资源管理器:DeactivateRTProject ();5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsysint iRet;hWnd = FindWindow(NULL,"WinCC-运行系统 - ");iRet=MessageBox(hWnd,"结束监控并关闭计算机","关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL);if(iRet==IDYES)DMExitWinCCEx (DM_SDMODE_POWEROFF);6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消:int r;r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO|MB_SYSTEMMODAL);if (r==IDYES)SetTagBit("TAGNAME",TRUE);elseSetTagBit("TAGNAME",FALSE);7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT)// Funktion: Bit in Doppelwort setzen;if (GetTagBitWait("COLSE_DISPLAY")==1 ){SetTagBit("COLSE_DISPLAY",0);SetTagBit("DISPLAY_NO",0); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}else{SetTagBit("COLSE_DISPLAY",1);SetTagBit("DISPLAY_NO",1); //Return-Type: BOOLSetTagBit("DISPLAY_COMMENT",0);}8.开阀确认:BOOL a;a=GetTagBit("30T制水启动"); //Return-Type :short intif (a==0){if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水启动",1);//Return-Type :BOOL}}else{if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水停止",1);}}9.将WinCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext为内部的二进制变量)if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL{SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL//Return-Type: BOOL}else{SetTagBit("hiddVtext",FALSE);}10.打开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR#elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL);hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL);if(hExplorerWindow){ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000ShowWindow(hExplorerWindow, SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow);}elseprintf("\r\n SetForeground failed");#endif11.如何在WINCC中制作一个保持型按钮方法1:if( GetTagBit("M10") )SetTagBit("M10",0);elseSetTagBit("M10",1);方法2:SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0"));求反指令,如果为1点击变为0,如果为0点击变为1方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。

Wincc的VBS脚本使用

Wincc的VBS脚本使用

W i n c c的V B S脚本使用------------------------------------------作者xxxx------------------------------------------日期xxxx变量读写: Write和Read方法的语法:读:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")2 HMIRunTime.Tags("变量名").Read写:1 Dim objTag Set objTag=HMIRunTime.Tags("变量名")objTag.Write 1 '向变量写入数值12 HMIRunTime.Tags("变量名").Write 1中间变量的值写入:Dim objTag,valSet objTag=HMIRunTime.Tags("变量名")objTag.Readval=objTag.Value '中间变量val存放了变量的值VBS语言使用方法概述:VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC 脚本版).正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言.我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.一、入门: 1) 注释(以REM或'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序. 2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="3)以""包裹起来的字符称之为"字符串"4)函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出例:REM 输入并回显你的名字'使用InputBox和Msgbox函数Dim name,msgmsg="请输入你的名字:"name=Inputbox(msg,"名称")Msgbox(name)上例中,Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变.常量:格式是:const 常量名=常量值.例如: const PI=3.1415926 const NAME="记忆碎片"二、进阶数据类型转换:1)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=a*2+b*2Msgbox(c)这个输入1、2时是62)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=(a+b)*2Msgbox(c)这个输入1、2时是24为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转成整数值, 我们这样修改: c=(int(a)+int(b))*2四、循环结构for....nextdim i,jfor i=1 to 9for i=1 to 9str=str & i * j & " " '&是和并字符串的符号next '每个next对应一个fornext1)do..loop和exit do的用法2) while当表达式true的时候执行循环体,until反之3) for...next是计数循环, 每次执行计数器递加4) 嵌套循环的作用和写法 4.5) &用于连接字符串5) vbCrLf相当于键盘上的回车键五、数组定义:dim 数组名(元素数量), 这里大家要注意一点, 这里定义的元素数量总是比你要的要少一个, 因为一个数组的起点是0号数据而不是1, 所以大家一定要小心: 你需要10个数据, 就定义"9"。

WINCCVBS脚本文件操作

WINCCVBS脚本文件操作

WINCCVBS脚本文件操作WinCC VBS脚本中的文件操作主要涉及文件的创建、读取、写入和删除等操作。

下面是一个超过1200字的文章,介绍了WinCC VBS脚本中常用的文件操作方法和示例。

在WinCC VBS脚本中,可以使用FileSystemObject对象来进行文件操作。

首先,需要创建一个FileSystemObject对象:```Dim fsoSet fso = CreateObject("Scripting.FileSystemObject")```接下来,可以使用FileSystemObject对象的属性和方法来操作文件。

下面是常用的文件操作方法示例:1.创建文件夹:```fso.CreateFolder "C:\TestFolder"```2.创建文件:```Dim fileSet file = fso.CreateTextFile("C:\TestFile.txt", True)file.WriteLine "This is a test file."file.Close```3.打开文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadAllfile.Close```4.写入文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt", 8) file.WriteLine "This is a new line."file.Close```5.读取文件:```Dim fileSet file = fso.OpenTextFile("C:\TestFile.txt")MsgBox file.ReadLinefile.Close```6.复制文件:```fso.CopyFile "C:\SourceFile.txt", "C:\DestinationFile.txt"```7.移动文件:```fso.MoveFile "C:\SourceFile.txt","C:\NewLocation\SourceFile.txt"```8.删除文件:```fso.DeleteFile "C:\TestFile.txt"```9.删除文件夹:```fso.DeleteFolder "C:\TestFolder"```以上示例中的文件路径可以根据实际情况进行修改。

WINCC C脚本的标准函数

WINCC C脚本的标准函数

WINCC C脚本的标准函数标准函数该系统包含标准函数。

可以按需要修改这些函数。

此外,还可以自己创建标准函数。

该系统包括一个标准函数集。

一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。

标准函数可用于工具栏中的每一个按钮。

这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。

1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。

使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_MsgNr"));}指定待确认的消息号。

在本例中是从变量读取的。

2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

Control 1是WinCC报警控件的对象名。

3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Control1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

最新WINCC脚本整理

最新WINCC脚本整理

切换按钮001 SetTagBit("TE_BOOL",!GetTagBit("TE_BOOL"));002 BOOL AA=GetTagBit("TE_BOOL");if(A) SetTagBit("TE_BOOL",0);Else SetTagBit("TE_BOOL",1);003 SetTagBit("TE_BOOL ",1-GetTagBit("TE_BOOL "));I O 域处的格式化输入输出在I/O域的输出值事件处的动作Float F_TAG;F_TAG =GetTagFloat("TE_FLOAT");return(F_TAG /100);WINCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);CloseWindow(WinCCHwnd);WINDOWS中提供的标准对话框{ BOOL bool1;HWND Hwnd;int iRet;Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");iRet=MessageBox(Hwnd,"确认合闸","确认对话框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);switch (iRet){case IDYES: printf("user do YES\r\n");SetTagBit("TE_QUEST",1);break;case IDNO: printf("user do NO\r\n");SetTagBit("TE_QUEST",0);break;case IDCANCEL: printf("user do CANCEL\r\n");break;}}本画框的功能是点击按钮的时候弹出windows询问对话框其中“确认合闸”为对话内容,对话框的名称为“确认对话框”用户不同显示不同的按钮你可以在用户管理器给每个用户不同的权限,使他们对按钮有不同的操作权,这是最简便的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DeactivateRTProject ();//退出系统#pragma code("useadmin.dll")#include"PWRT_api.h"#pragma code()char* CUser=NULL;CUser=GetTagChar("@CurrentUser");if (strlen(CUser)==0){PWRTSilentLogin("operator","123456");//用户“operator",密码"123456”登录}OpenPicture("@MAIN.pdl");}在画面中结合不同按钮来组态下面 C 操作LoginAction for login (for example, "mouse click" event):#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogin('c');LogoutAction for logout (for example, "mouse click" event):#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();PWRTLogin 参数必须是CHAR 字符。

它指定了显示对话框的监视器。

如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。

注意可以使用PASSLoginDialog 函数来代替PWRTLogin 或者PWRTLogout 函数。

这个函数需要和函数PWRTLogin 相同的参数。

PWRTLogin 和PASSLoginDialog 函数可以调用登录界面,在上面可以登录或者注销。

函数PWRTLogout 被正确执行并且不调用登录界面。

正确执行后这两个函数都返回“1”。

然而,登录不会等到显示对话框之后。

注意如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCC Basic Process Control (OS项目编辑器)。

不使用WinCC Basic Process Control 时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。

#include"apdefap.h"//调用函数代码void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){SetVisible(lpszPictureName,"@ERROR",FALSE); //当前画面上有一个名称为"@ERROR"对象,将其隐藏。

FALSE或者0都可以SetOperation(lpszPictureName,"@LoginIn",TRUE); //函数SetOperation是控制画面对象的可操作性SetOperation(lpszPictureName,"@PasswordIn",TRUE);SetOperation(lpszPictureName,"@OK",TRUE);Set_Focus(lpszPictureName,"@LoginIn"); //次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中SetVisible(lpszPictureName,lpszObjectName,FALSE);SetVisible函数是用来执行是否显示的函数在利用画面窗口实现画面切换中使用了SetPictureName函数实现画面属性的更改使用了SetPropChar函数SetPictureName("@MAIN.pdl", "Alarm", "AlarmList.pdl"); //调用MAIN中Alarm画面中的AlarmList画面SetProp是一种函数,功能是增加一个新项,修改一个现有项。

实现画面属性的更改使用了SetPropChar函数SetPropChar("@MAIN.pdl","Alarm","CaptionText","报警清单"); //更改MAIN中Alarm画面中标题属性为报警清单SetPropBOOL("@MAIN.Pdl","Alarm","Visible",1);} // MAIN画面中中Alarm对象属性被设置为1SetVisible("@MAIN.pdl","LoginWindow",TRUE);}void Open_AI_Pannel(char *AI_Num,char *TagName,char *Unit) //定义变量//void *可以指向任何类型的数据//Open_AI_Pannel名称{char AI_TemplateName[80]; //80为最大字符长度char str_Title[80];char str_Unit[80];char str_Loop_Name[80];strcpy(AI_TemplateName,"AI_Template");//strcpy复制地址strcat(AI_TemplateName,AI_Num); //strcat两个char类型链接strcpy(str_Title,TagName);strcat(str_Title," AI Loop Control Pannel");SetPropChar("@MAIN.pdl",AI_TemplateName,"CaptionText",str_Title); //置为变量SetPropBOOL("@MAIN.pdl",AI_TemplateName,"Visible",0); //To make the Picture window NO visible //不显示SetPropChar("@MAIN.pdl",AI_TemplateName,"TagPrefix",TagName); //Set the ObjectName as TagPrefix -???¨???¨?oSetPropBOOL("@MAIN.pdl",AI_TemplateName,"Visible",1); //To make the Picture window visible ?-¨strcpy(str_Unit , TagName);strcpy(str_Loop_Name,TagName);//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName); //Set the title to the oject name//SetText("PID_Pannel.pdl","Unit01",Unit);//Unit_VL//SetText("PID_Pannel.pdl","Unit02",Unit);//Unit_VLstrcat(str_Unit,"._LOOP_UNIT"),SetTagChar(str_Unit,Unit);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);//strcat(str_Zero,"._PID_ZERO");//SetTagWord(str_Zero,PID_Zero);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);//strcat(str_Span,"._PID_SPAN");//SetTagWord(str_Span,PID_Span);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);strcat(str_Loop_Name,"._LOOP_NAME");SetTagChar(str_Loop_Name,TagName); //str_Loop_Name=TagName}DOL电机脚本:void Open_Motor_Pannel(char *Pannel_Num,char * Motor_Name){//char pannel_name[80];char tagname[80];char str_Title[80];strcpy(pannel_name,"Motor_Template");strcat(pannel_name,Pannel_Num);//SetPropBOOL("@MAIN.Pdl",pannel_name,"Visible",0);strcpy(tagname,Motor_Name);strcat(tagname,"._MOTOR_NAME"); //._MOTOR_NAME模版变量名SetTagChar(tagname,Motor_Name);SetPropChar("@MAIN.pdl",pannel_name,"TagPrefix",Motor_Name); //TagPrefix变量前缀SetPropChar("@MAIN.pdl",pannel_name,"PictureName","Motor_Pannel.pdl");//画面名称strcpy(str_Title,Motor_Name);strcat(str_Title," MOTOR Control Pannel");SetPropChar("@MAIN.Pdl", pannel_name,"CaptionText",str_Title);SetPropBOOL("@MAIN.Pdl",pannel_name,"Visible",1); //让画面窗口可见PID模版void Open_PID_Pannel(char *PID_Num,char *TagName,char *Unit){char PID_TemplateName[80];char str_Title[80];char str_Unit[80];char str_Loop_Name[80];strcpy(PID_TemplateName,"PID_Template");strcat(PID_TemplateName,PID_Num);strcpy(str_Title,TagName);strcat(str_Title," PID Loop Control Pannel");SetPropChar("@MAIN.pdl",PID_TemplateName,"CaptionText",str_Title); //±êìa??±? SetPropBOOL("@MAIN.pdl",PID_TemplateName,"Visible",0); //To make the Picture window NOvisible ?-??2??é??£??é2?ó?SetPropChar("@MAIN.pdl",PID_TemplateName,"TagPrefix",TagName); //Set the ObjectName as TagPrefix -??μ?±?á??ó?°×oSetPropBOOL("@MAIN.pdl",PID_TemplateName,"Visible",1); //To make the Picture window visible ?-é??strcpy(str_Unit , TagName);strcpy(str_Loop_Name,TagName);//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName); //Set the title to the oject name//SetText("PID_Pannel.pdl","Unit01",Unit);//Unit_VL//SetText("PID_Pannel.pdl","Unit02",Unit);//Unit_VLstrcat(str_Unit,"._LOOP_UNIT"),SetTagChar(str_Unit,Unit);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);//strcat(str_Zero,"._PID_ZERO");//SetTagWord(str_Zero,PID_Zero);//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);//strcat(str_Span,"._PID_SPAN");//SetTagWord(str_Span,PID_Span);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);strcat(str_Loop_Name,"._LOOP_NAME");SetTagChar(str_Loop_Name,TagName); //str_Loop_Name=TagName。

相关文档
最新文档