文档库 最新最全的文档下载
当前位置:文档库 › Wincc与s7300--PID调节应用

Wincc与s7300--PID调节应用

Wincc与s7300--PID调节应用
Wincc与s7300--PID调节应用

Wincc6.0与s7300--PID调节应用

Liking5200 sdyjdx

Wincc:可以单独建立需要的变量,单推荐建立结构变量,这样可以方便快捷的建立多个相同的控制,变量连接出错率低。结构变量建议把300-PID全部参数都键入,可以方便调节学习。

WINCC.1可建立结构变量

,命名为PID

可建立结构变量,

Bit COM_RST 偏移0 位0;PID完全重启,自动执行的初始化程序

Bit MAN_ON 偏移0 位1;手动开关,为1中断控制回路,手动值作为操作值进行设置Bit PVPER_ON 偏移0 位2;过程变量直接从外设输入

Bit P_SEL 偏移0 位3;比例选择

Bit I_SEL 偏移0 位4;积分选择

Bit INT_HOLD 偏移0 位5;积分保持,即积分作用暂停选择

Bit I_ITL_ON 偏移0 位6; 积分作用初始化

Bit D_SEL 偏移0 位7;微分选择,通常不用

FLOAT CYCLE (选择类型转换FloatToSignedWord,线性标定0~1000—0~1)偏移2; 采样时间输入

FLOAT SP_INT (选择类型转换FloatToFloat)偏移6;给定值设定值

FLOAT PV_IN (选择类型转换FloatToFloat)偏移10;过程值反馈

WORD PV_PER (选择类型转换WordToUnsignedWord)偏移14; 过程变量外设输入FLOAT MAN (选择类型转换FloatToFloat)偏移16;手动设定值

FLOAT GAIN (选择类型转换FloatToFloat)偏移20;P增益

FLOAT TI (选择类型转换FloatToUnsingedDwourd,线性标定0~1000—0~1)偏移24;积分时间设定值

FLOAT TD (选择类型转换FloatToUnsingedDwourd,线性标定0~1000—0~1)偏移28;微分时间设定值

FLOAT TM_LAG (选择类型转换FloatToUnsingedDwourd,线性标定0~1000—0~1)偏移32; 微分作用的时间延迟

FLOAT DEADB_W (选择类型转换FloatToFloat)偏移36; 死区带宽,防止震荡

FLOAT LMN_HLM (选择类型转换FloatToFloat)偏移40; 操作值上限

FLOAT LMN_LLM (选择类型转换FloatToFloat)偏移44; 操作值下限

FLOAT PV_FAC (选择类型转换FloatToFloat)偏移48; 过程变量因子

FLOAT PV_OFF (选择类型转换FloatToFloat)偏移52; 过程变量偏移

FLOAT LMN _FAC(选择类型转换FloatToFloat)偏移56; 操作值因子

FLOAT LMN _OFF(选择类型转换FloatToFloat)偏移60; 操作值偏移

FLOAT I_ITLV AL (选择类型转换FloatToFloat)偏移64; 设置积分始化值

FLOAT DISV (选择类型转换FloatToFloat)偏移68; 前馈干扰输入

FLOAT LMN (选择类型转换FloatToFloat)偏移72; 操作值输出

WORD LMN _PER(选择类型转换WordToUnsignedWord)偏移76; 操作值外设输出,

Bit QLMN_HLM 偏移78 位0; 操作值到达上限

Bit QLMN_lLM 偏移78 位1; 操作值到达下限

FLOAT LMN_P (选择类型转换FloatToFloat)偏移80; 操作值输出,比例分量

FLOAT LMN_I (选择类型转换FloatToFloat)偏移84; 操作值输出,积分分量

FLOAT LMN_D (选择类型转换FloatToFloat)偏移88; 操作值输出,微分分量FLOAT PV (选择类型转换FloatToFloat)偏移92; 过程变量输出

FLOAT ER (选择类型转换FloatToFloat)偏移96; 误差输出

WINCC.2建立PID变量—FI101

添加驱动连接:

打开一个新的Wincc项目—》右键点击“变量管理”—》点击“添加新的驱动程序(N)。。。”—》选择“SIMATIC S7 Protocol Suite.chn”,点击“”打开。

展开“变量管理”—》展开“SIMATIC S7 Protocol Suite”—》右键点击“TCP/IP”,选择“新驱动程序的连接(N)。。。”—》输入新连接的名字—》点击“属性”,打开属性对话框,设置IP地址:如:192.168.1.200,与PLC地址相同;机架号,设为0;插槽号,设为2,然后点击“确定”。这样新的连接已建好。

双击打开建立好的连接,右侧空白处,点击右键选择“新建组(G)”,命名为PID。双击打开变量组PID,右侧空白处,点击右键选择“新建变量(N)”,打开变量属性对话框,名称:FI101,数据类型:选择PID,点击“选择”打开地址属性对话框,数据:选择DB,DB号:设为50,地址:选择“字节”,DBB设为0,点击“确定”,“确定”。这样就建立好一个与FI101 PID控制有关的所有变量(是不是相当的方便,且地址连接也简单,绝不会出错)

同样的方法可以建立其他新的变量,如FI102,PI101等。

WINCC.3建立建立画面模板画面模板画面模板,,及控制画面

在图形编辑器中新建一个画面,命名为“PID_Control.Pdl ”

打开画面“PID_Control.Pdl ”,

建立如下画面

遵循画面模板设计要求,变量连接仅设后缀,

以变量https://www.wendangku.net/doc/1518520822.html,_RST ,为例,

建立时变量设为.COM_RST ,如图。

按钮“手动”、 “过程变量外设”、 “P 选择”、

“I 选择”、 “积分保持”、 “D 选择”

为取反动作;按钮“完全重启”、

“积分初始化”、为按1松0动作

画面模板,有用的仅是左上角小部分,过程值滑动块模拟反馈用。

手动状态控制图,过程值反馈为0,手动调节输出

给手动设定值,实现自动—》》手动无扰动切换。

S7300.1建立

项目PID

建立项目

S7300.2组态项目PID硬件

S7300.3组态项目PID软件程序

OB1主程序无需任何操作

OB35调用FB41,设置背景数据块为DB50,其他无需设置,自动时,将操作值赋值给手动设定值,实现无扰动切换。

S7300.4仿真项目PID

打开仿真管理器,点击下载

下载完成后,选择RUN 运行

打开背景数据块DB50,点击可以观查数据。

总结

这样,一个基本的PID控制已经做好,根据实际控制变量性质,设置参数!根据经验设置,再进行微小调整。

wincc标准函数介绍

标准函数 该系统包含标准函数。可以按需要修改这些函数。此外,还可以自己创建标准函数。 该系统包括一个标准函数集。 一、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报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 Control 1是WinCC报警控件的对象名。 4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数 外部消息窗口操作,该函数显示先前所选消息的注释。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst("gs_alarm_00","Control1"); } AXC_OnBtnMsgFirst函数参数: “gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 5.BOOL AXC_OnBtnEmergAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数打开确认对话框(紧急确认/复位)。

wincc中使用vbs常用函数.

wincc 中使用vbs 常用函数 1. 函数array() 功能: 创建一个数组变量 格式:array(list) 参数:list 为数组变量中的每个数值列,中间用逗号间隔 例子: <% i = array ( “1”, ”2”, ”3”) %> 结果: i 被赋予为数组 2. 函数Cint() 功能: 将一表达式/ 其它类型的变量转换成整数类型(int) 格式:Cin t(expressio n_r) 参数:expression」是任何有效的表达式/其它类型的变量 例子: <% f = ” 234” response.write cINT(f) + 2 %> 结果: 236 函数Cint() 将字符” 234”转换成整数234.如果表达式为空, 或者无效时, 返回值为0; 3. 函数:Creatobject() 功能: 创建及返回一个ActiveX 对象. 格式:Creatobject(obname)

参数bname 是对象的名称 例子: <% Set con = Server.CreateObject( “ADODB.Connection”) %> 结果: 4. 函数Cstr() 功能: 将一表达式/其它类型的变量转换成字符类型(string) 格式:Cstr(expression_r) 参数:expression」是任何有效的表达式/其它类型的变量例子: <% s = 3 + 2 response.write ”The result is: ” & cStr(s) %> 结果: 函数Cstr() 将整数 5 转换成字符” 5”. 5. 函数Date() 功能: 返回当前系统(server 端) 的日期 格式: Date() 参数:无 例子<% date () %> 结果:05/10/00

Wincc系统函数

报警 1、ClearAlarmBuffer 应用:删除HMI设备报警缓冲区中的报警。说明:尚未确认的报警也被删除。 2、ClearAlarmBufferProtoolLegacy 应用:该系统函数用来确保兼容性。 它具有与系统函数“ClearAlarmBuffer”相同的功能,但使用旧的ProTool编号方式。参数:Alarm class number 将要删除其消息的报警类别号: -1 (hmiAllProtoolLegacy) = 所有报警/事件 0 (hmiAlarmsProtoolLegacy) = 错误 1 (hmiEventsProtoolLegacy) = 警告 2 (hmiSystemProtoolLegacy) = 系统事件 3 (hmiS7DiagnosisProtoolLegacy) = S7 诊断事件 3、SetAlarmReportMode 应用:确定是否将报警自动报告到打印机上。 4、ShowAlarmWindow 应用:隐藏或显示 HMI 设备上的报警窗口。 5、ShowSystemAlarm 应用:将已传递参数的值显示为 HMI 设备上的系统报警。 编辑位 1、InvertBit 应用:对给定的“Bool”型变量的值取反。如果变量具有值 1(真),它将被设置为 0(假)。如果变量具有值 0(假),它将被设置为 1(真)。说明:不要使用循环事件或递归事件或具有外部变量的系统函数。 在画面中创建一个开关。该开关连接到外部布尔类型变量“Tag1”。将系统函数“InvertBit”分配给“更改”事件。该系统函数连接到外部变量“Tag1”。 在运行期间,这会导致无法预料的行为。 2、InvertBitInTag 应用:对给定变量中的位取反:如果变量中的位为值 1(真),它将被设置为 0(假)。如果变量中的位为值 0(假),它将被设置为 1(真)。 在改变了给定位之后,系统函数将整个变量传送回 PLC。不检查此过程期间变量中是否有其它位发生更改。在变量被传送回 PLC 之前,操作员和 PLC 对变量具有只读访问权限。 说明:如果 PLC 支持 BOOL 型变量,不要使用该系统函数。而是使用“InvertBit”系统函数。不要使用循环事件或递归事件或具有外部变量的系统函数。 在画面中创建一个开关。该开关连接到外部布尔类型变量“Tag1”。将系统函数“InvertBitInVariable”分配给“更改”事件。该系统函数连接到外部变量“Tag1”。 在运行期间,这会导致无法预料的行为。 3、ResetBit 应用:将“Bool”型变量的值设置为 0(假)。 4、ResetBitInTag 应用:将给定变量中的一个位设置为 0(假)。 在改变了给定位之后,系统函数将整个变量传送回 PLC。不检查此过程期间变量中是否有其它位发生更改。在指示的变量被传送回 PLC 之前,操作员和 PLC 对变量具有只读访问权限。说明:如果 PLC 支持 BOOL 型变量,不要使用该系统函数。而使用系统函数“ResetBit”。 5、SetBit 应用 将“Bool”型变量的值设置为 1(真)。

wincc中使用vbs的常用函数

wincc中使用vbs的常用函数 1.函数array() 功能:创建一个数组变量 格式:array(list) 参数:list为数组变量中的每个数值列,中间用逗号间隔 例子: <%i=array(“1”,”2”,”3”)%> 结果:i被赋予为数组 2.函数Cint() 功能:将一表达式/其它类型的变量转换成整数类型(int) 格式:Cint(expression) 参数:expression是任何有效的表达式/其它类型的变量 例子: <% f=”234” response.write cINT(f)+2 %> 结果:236 函数Cint()将字符”234”转换成整数234.如果表达式为空,或者无效时,返回值为0; 3.函数:Creatobject() 功能:创建及返回一个ActiveX对象. 格式:Creatobject(obname) 参数bname是对象的名称 例子: <% Set con=Server.CreateObject(“ADODB.Connection”) %> 结果: 4.函数Cstr() 功能:将一表达式/其它类型的变量转换成字符类型(string) 格式:Cstr(expression) 参数:expression是任何有效的表达式/其它类型的变量 例子: <% s=3+2 response.write”The result is:”&cStr(s) %> 结果:函数Cstr()将整数5转换成字符”5”. 5.函数Date() 功能:返回当前系统(server端)的日期

格式:Date() 参数:无 例子<%date()%> 结果:05/10/00 6.函数Dateadd() 功能:计算某个指定的时间和 格式:dateadd(timeinterval,number,date) 参数:timeinterval是时间单位(月,日..);number是时间间隔值,date是时间始点. 例子: <% currentDate=#8/4/99# newDate=DateAdd(“m”,3,currentDate) response.write newDate %><% currentDate=#12:34:45PM# newDate=DateAdd(“h”,3,currentDate) response.write newDate %> 结果: 11/4/99 3:34:45PM 其中 “m”=”month”; “d”=”day”; 如果是currentDate格式,则, “h”=”hour”; “s”=”second”; 7.函数Datediff() 功能:计算某量个指定的时间差 格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]]) 参数:timeinterval是时间单位;date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear是任意选项. 例子: <% fromDate=#8/4/99# toDate=#1/1/2000# response.write”There are”&_ DateDiff(“d”,fromDate,toDate)&_ “days to millenium from8/4/99.” %> 结果:There are150days to millenium from8/4/99. 8.函数day() 功能:返回一个整数值,对应于某月的某日 格式:day(date)

WINCC c语言基础

要使对象动态化,在WinCC中有多种不同的选项可用。其中包括变量连接.动态对话框和直接连接。通过它们可以实现复杂的动态。然而,随着要求的增加它们会有限制。对于用户来说,组态C动作、项目函数或动作可以有更广的范围。它们在WinCC 脚本语言C中创建。对于许多应用来说,不必具备非常全面的C语言知识。它足以为现有函数提供参数。然而,为了使用WinCC脚本语言C的全部功能,需要具备有关这种编辑语言的基本知识。本课程可以为用户提供这些知识。 本课程用来为不熟悉C语言的人员提供有关编辑语言C的常规应用的基本知识。具备C语言编辑经验的编程员可以学习C语言应用于WinCC时的特性。 C脚本的开发环境 对于C脚本的创建,WinCC提供两个不同的编辑器。一个是图形编辑器中的动作编辑器,用于在对象处创建C动作;另一个是全局脚本编辑器,用于创建项目函数和全局动作。脚本语言的语法与采用ANSI的标准C语言相一致。 在WinCC中编辑语言C的另一个应用领域是关于动态向导的创建。为此,可以使用一个单独的编辑器。 图形编辑器的动作编辑器 在图形编辑器中,可以通过C动作使对象属性动作化。同样,也可以使用C动作来响应对象事件。 1.动作编辑器 对于C动作的组态,可以使用动作编辑器。此编辑器可以在对象属性对话框中通过以下方法打开,即点击鼠标右键期望的属性或事件,然后从显示的弹出式菜单中选择C动作。已经存在的C动作在属性或事件处用绿色箭头标记。 在动作编辑器中,可以编写C动作。对于属性的C动作,必须定义触发器。对于事件的C 动作,由于事件本身就是触发器所以不必再定义。完成的C动作必须进行编译,如果编译程序没有检测到错误,则可以通过单击确定退出动作编辑器 2.动作的结构 通常,一个C动作相当与C中的一个函数。C动作由两种不同类型:为属性创建动作和为事件创建的动作。通常,属性的C动作用于根据不同的环境条件控制此属性的值(例如变量的值)。对于这种类型的C动作,必须定义触发器来控制其执行。事件的C动作来响应此事件。 3.属性的C动作 #include apdefap h long-main(char* * *lpszPropertyName)

WinCC C函数详解

WinCC C函数详解 GetFontSize函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。 1). 读出当前字体大小和fontsize中的缓冲区。 2). 执行处理返回值的自定义代码。 2. long int GetAlignmentTop(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义垂直文本对齐(上对齐、居中、下对齐)。 读出字体大小的实例 { long int fontsize; //获得实际字体大小fontsize = GetFontSize(lpszPictureName,"Static Text 1"); //自定义代码 //在那里用户可以使用返回值做某事 ... } GetFontSize函数参数: “lpszPictureName”是在其中组态该对象的画面的名称。 “Static Text1”是该对象的名称。

3. BOOL GetFontBold(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,定义字体样式是否为“粗体字”。 读出静态文本域的布尔型属性的实例 { BOOL bbold; //了解文本是否是粗体字bbold = GetFontBold(lpszPictureName,"Static Text 1"); if(bbold) { // 自定义代码 // 字体是否是粗体字 ... } else { // 自定义代码 // 字体是否不是粗体字 ... } } GetFontBold函数参数:

WINCC C脚本的标准函数

WINCC C脚本的标准函数1 -------------------------------------------------------------------------------- 标准函数 该系统包含标准函数。可以按需要修改这些函数。此外,还可以自己创建标准函数。 该系统包括一个标准函数集。 一、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报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数 外部消息窗口操作,该函数显示先前所选消息的注释。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst("gs_alarm_00","Control1"); }

WinCC实例教程

WinCC 视频教程知识点总结 第一讲组态软件基础 一、WinCC简介 1、WinCC 西门子视窗控制中心SIMATIC WinCC(Windows Control Center)是在计算机上对PLC 控制的运行设备进行状态监控的软件,是PC上的监控软件。 运行该软件,可以动画监视现场设备的运行状况,监视相应的运行参数,以及更改、设置系统的运行数据。 2、WinCC的特点 (1)开放性 WinCC对用户所添加的任何形式的扩充是绝对开放,该绝对开放性是通过WinCC的模块结构及其强大的编程接口来获取的。 (2)将应用软件集成到WinCC中 WinCC提供了一些方法将其他应用程序和应用程序块统一地集成到用于过程控制的用户界面中。OLE应用程序窗口和OLE自定义控制或Active控制可以集成到WinCC应用软件中。 (3)WinCC中的数据管理 WinCC的数据库为Windows SQL,从属于WinCC,该数据库用于存储所有面向列表的组态数据(如变量列表和消息文本),以及当前过程数据(如消息,测量值和用户数据记录等)该数据库具有服务器功能。

(4)在项目开始之前规定组态分类 a、文件夹名称 除一些特殊字符(例如\)之外,文件夹名称允许使用所有的字符。还允许使用数字0~9. b、变量名称 变量名称可以多于8个字符。但应尽量避免太长的名称。WinCC项目的变量名称必须是唯一的。如果变量名称还包含了其他信息,这对用户将非常有用。 c、画面名称 确定画面名称时应注意其长度的影响,太长的名称(文件名)不容易识别(列表框中的选择,脚本中的调用等)。根据经验表明,长度最好不超过28个字符,画面名称应遵守以下限制条件:①最大长度为255个字符;②不使用某些特殊字符(例如\);③画面名称中的字母不区分大小写。 二、WinCC软件的安装 1、安装S7-300/400PLC编程软件STEP7及PLCSIM; 2、安装数据库软件SQL Server 2000; 3、安装消息列队(软件操作); 4、安装WinCC(建议不选典型安装,选择全部安装)。 三、WinCC管理器 1、WinCC项目管理器的结构 WinCC项目管理器的用户界面由以下元素组成:标题栏、菜单栏、工具栏、状态栏、浏览窗口和数据窗口:

wincc函数实例

如何在 WinCC 运行时通过按下一个按钮来启动一个程序,打印一个文本文件或者打开一个PDF文件? 显示订货号

?当调用某些文件类型(如 Microsoft Excel文件)时,需要输入不止一个函数参数。因此,如果路径规范里包含一个路径,需要在函数参数里面将该路径放在反斜线和双引号标志之间,(如, ProgramExecute("C:\\Programme\\Microsoft Office\\OFFICE11\\EXCEL.EXE \"C:\\temp\\New Folder\\Mappe1.xls\""))。 ?注意当操作员打开系统窗口的时候,可能会有操作系统级别的系统操作。 执行完程序之后关闭这些窗口。 ?您可以用Win32 API函数终止一个程序,更多信息和例程可参考条目号2976503。 使用C函数“Sleep” 显示订货号 问题: 如何在WinCC中编程“Sleep”等待功能? 解答: 为此,可以使用Windows API功能“Sleep()”。下面的样例程序演示了如何使用“Sleep”功能。 #pragma code("Kernel32.dll") void Sleep(int Milliseconds); #pragma code() Sleep(1000); //time in milliseconds 警告: “Sleep”函数对动作处理性能有很大的负面影响。因此,如果想用此函数的话,请注意以下几点: ?使用Sleep()时,C 脚本的处理在特定的一段时间内被中断。在此期间内,任何对于被中断功能的请求将不被处理。 ?而且,使用相同触发器的所有动作将不再被处理。使用相同的触发器意味着用同一个循环触发器所有动作或变量触发器的所有动作将不再被处理。 如果同步地调用动作,这种调用通过一个变量触发器或事件被周期性地 或非周期性地启动,而且所有这些功能使用了Sleep()函数,那么所有的动作会被终止。最坏情况下是;由于启动这四个动作将终止对所有动作 的处理。

WINCC c语言基础

WINCC C语言基础 要使对象动态化,在WinCC中有多种不同的选项可用。其中包括变量连接.动态对话框和直接连接。通过它们可以实现复杂的动态。然而,随着要求的增加它们会有限制。对于用户来说,组态C动作、项目函数或动作可以有更广的范围。它们在WinCC 脚本语言C中创建。对于许多应用来说,不必具备非常全面的C语言知识。它足以为现有函数提供参数。然而,为了使用WinCC脚本语言C的全部功能,需要具备有关这种编辑语言的基本知识。本课程可以为用户提供这些知识。 本课程用来为不熟悉C语言的人员提供有关编辑语言C的常规应用的基本知识。具备C语言编辑经验的编程员可以学习C语言应用于WinCC时的特性。 2.1 C脚本的开发环境 对于C脚本的创建,WinCC提供两个不同的编辑器。一个是图形编辑器中的动作编辑器,用于在对象处创建C动作;另一个是全局脚本编辑器,用于创建项目函数和全局动作。脚本语言的语法与采用ANSI的标准C语言相一致。 在WinCC中编辑语言C的另一个应用领域是关于动态向导的创建。为此,可以使用一个单独的编辑器。 2.1.1 图形编辑器的动作编辑器 在图形编辑器中,可以通过C动作使对象属性动作化。同样,也可以使用C动作来响应对象事件。 1.动作编辑器 对于C动作的组态,可以使用动作编辑器。此编辑器可以在对象属性对话框中通过以下方法打开,即点击鼠标右键期望的属性或事件,然后从显示的弹出式菜单中选择C动作。已经存在的C动作在属性或事件处用绿色箭头标记。 在动作编辑器中,可以编写C动作。对于属性的C动作,必须定义触发器。对于事件的C 动作,由于事件本身就是触发器所以不必再定义。完成的C动作必须进行编译,如果编译程序没有检测到错误,则可以通过单击确定退出动作编辑器 2.动作的结构 通常,一个C动作相当与C中的一个函数。C动作由两种不同类型:为属性创建动作和为事件创建的动作。通常,属性的C动作用于根据不同的环境条件控制此属性的值(例如变量的值)。对于这种类型的C动作,必须定义触发器来控制其执行。事件的C动作来响应此事件。 3.属性的C动作 #include apdefap h

WinCC C语言基础

WinCC C语言基础 要使对象动态化,在WinCC中有多种不同的选项可用。其中包括变量连接.动态对话框和直接连接。通过它们可以实现复杂的动态。然而,随着要求的增加它们会有限制。对于用户来说,组态C动作、项目函数或动作可以有更广的范围。它们在WinCC 脚本语言C中创建。对于许多应用来说,不必具备非常全面的C语言知识。它足以为现有函数提供参数。然而,为了使用WinCC脚本语言C的全部功能,需要具备有关这种编辑语言的基本知识。本课程可以为用户提供这些知识。 本课程用来为不熟悉C语言的人员提供有关编辑语言C的常规应用的基本知识。具备C语言编辑经验的编程员可以学习C语言应用于WinCC时的特性。 2.1 C脚本的开发环境 对于C脚本的创建,WinCC提供两个不同的编辑器。一个是图形编辑器中的动作编辑器,用于在对象处创建C动作;另一个是全局脚本编辑器,用于创建项目函数和全局动作。脚本语言的语法与采用ANSI的标准C语言相一致。 在WinCC中编辑语言C的另一个应用领域是关于动态向导的创建。为此,可以使用一个单独的编辑器。 2.1.1 图形编辑器的动作编辑器 在图形编辑器中,可以通过C动作使对象属性动作化。同样,也可以使用C动作来响应对象事件。 1.动作编辑器

对于C动作的组态,可以使用动作编辑器。此编辑器可以在对象属性对话框中通过以下方法打开,即点击鼠标右键期望的属性或事件,然后从显示的弹出式菜单中选择C动作。已经存在的C动作在属性或事件处用绿色箭头标记。 在动作编辑器中,可以编写C动作。对于属性的C动作,必须定义触发器。对于事件的C 动作,由于事件本身就是触发器所以不必再定义。完成的C动作必须进行编译,如果编译程序没有检测到错误,则可以通过单击确定退出动作编辑器 2.C动作的结构 通常,一个C动作相当与C中的一个函数。C动作由两种不同类型:为属性创建动作和为事件创建的动作。通常,属性的C动作用于根据不同的环境条件控制此属性的值(例如变量的值)。对于这种类型的C动作,必须定义触发器来控制其执行。事件的C动作来响应此事件。 3.属性的C动作 #include apdefap h long-main(char* lpszPictureName.char* lpszObjectName.char*lpszPropertyName) { /*1*/ long 1ReturnV alue;

最新wincc函数实例资料

如何在WinCC运行时通过按下一个按钮来启动一个程序,打印一个文本文件或者打开一个PDF文件? 显示订货号 说明:WinCC在动态向导里提供了方便的“启动其他应用程序”功能来启动一个外部程序。这个向导生成一个C脚本。为了给这个程序添加参数,可以打开该脚本并添加 也可以在WinCC在线帮助中找到相关描述,在目录"WinCC信息系统> 使用WinCC >用于创建函数和动作的ANSI-C > ANSI-C 函数描述> 标准函数〉 Win dows",如果您使用的是VBS,则在目录"使用WinCC >用于创建程序和动作的VBS > VBScript实例> 常规例程"。 *在编写C动作时,当指定路径时必须输入双斜线("\"),否则会被解释为一个控制字符。

*当调用某些文件类型(如 Microsoft Excel 文件)时,需要输入不止一 个函数参数。因此,如果路径规范里包含一个路径, 需要在函数参数里面 将该路径放在反斜线和双引号标志之间, (如, ProgramExecute("C:\\Programme\\Microsoft OfficeWOFFICE11WEXCEL.EXE \" C:\\temp\\New FolderWMappe1.xls \""))。 ?注意当操作员打开系统窗口的时候,可能会有操作系统级别的系统操作。 执行完程序之后关闭这些窗口。 ?您可以用Win32 API 函数终止一个程序,更多信息和例程可参考条目号 2976503。 使用C 函数“ Sleep 显示订货号 问题: 如何在WinCC 中编程“ Sleep ”等待功能? 解答: 为此,可以使用 Windows API 功能“ Sleep() ”。下 用“ Sleep ”功能。 F 面的样例程序演示了如何使 #pragma code("Kernel32.dll") void Sleep(i nt Millisec on ds); #pragma code() Sleep(1000); //time in milliseco nds 警告. “ Sleep ”函数对动作处理性能有很大的负面影响。 请注意以下几点: 因此,如果想用此函数的话, *使用Sleep()时,C 脚本的处理在特定的一段时间内被中断。 在此期间内, 任何对于被中断功能的请求将不被处理。 ?而且,使用相同触发器的所有动作将不再被处理。 使用相同的触发器意味 着用同一个循环触发器所有动作或变量触发器的所有动作将不再被处理。 如果同步地调用动作,这种调用通过一个变量触发器或事件被周期性地 或非周期性地启动,而且所有这些功能使用了 Sleep()函数,那么所有的 动作会被终止。最坏情况下是; 由于启动这四个动作将终止对所有动作 的处理。

WINCC脚本实例

1、问:如何触发计算机扬声器的声音? 答:编写如下C-Action: #pragma code("kernel32.dll"); BOOL Beep(DWORD dwFreq,DWORD dwDuration); #pragma code(); Beep(500,500); 2、问:如何通过C脚本来确定报警信息? 答:首先必须在画面中插入报警控件,可以用如下两种方式来确认信息: (1)、确认单条信息 4版本和高于此版本的WinCC BOOL OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName) 5版本和高于此版本的WinCC BOOL AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)(2)、确认报警窗口所有可见的报警 4版本和低于此版本的WinCC BOOL OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName) 5版本和高于此版本的WinCC BOOL AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName) 3、问:如何在WinCC中读取系统时间? 答:通过如下C-Action: #pragma code("kernel32.dll"); Void GetLocalTimes(SYSTEMTIME*lpst); #pragma code(); SYSTEMTIME time; 字串7 GetLocalTime(&time); SetTagWord("Varname",time.wYear); SetTagWord("Varname",time.wMonth); SetTagWord("Varname",time.wDayOfWeek); SetTagWord("Varname",time.wDay); SetTagWord("Varname",time.wHour); SetTagWord("Varname",time.wMinute); SetTagWord("Varname",time.wSecond); SetTagWord("Varname",time.wMilliseconds); 4、问:如何经Windows对话框设置日期时间?

WinCC系统函数

1. ActivateRightScreen 应用:将画面切换到与激活画面同一层级的右侧的画面。如果当前画面的右侧没有其它画面,则不发生画面切换。 说明:必须已经在“画面浏览”编辑器中组态了一个浏览结构。 语法:ActivateRightScreen 在脚本中是否可用:有 (ActivateRightScreen)参数 2. ActivateRootScreen 应用:将画面切换到定义为起始画面的画面。如果所显示的画面是根画面,则不会发生画面切换。 说明:必须已经在“画面浏览”编辑器中组态了一个浏览结构。 语法:ActivateRootScreen 在脚本中是否可用:有 (ActivateRootScreen) 3. ActivateScreen 应用:将画面切换到指定的画面。使用“ActivateScreenByNumber”系统函数可以从根画面切换到永久性窗口,反之亦然。 语法:ActivateScreen (Screen name, Object number) 在脚本中是否可用:有 (ActivateScreen) 参数 1) Screen name要切换到的画面的名称。 2) Object number画面切换后在指定画面中获得焦点的操作员控件元素。操作员控件元素的编号在组态期间使用 TAB 顺序确定。 在指定为“0”时: 如果调用该系统函数时焦点位于永久性窗口,则永久性窗口保留焦点。 如果调用该系统函数时焦点位于根画面,则指定画面中的第一个操作员控件元素获得焦点。说明 :如果将“到达边界”事件分配给“ActivateScreen”系统函数,则只有数值“0”对“Object number”参数有效。活动对象不是由对象号定义的,而是由画面更改之前其 X 位置定义的。 4. ActivateScreenByNumber 应用:根据变量值将画面切换到另一画面。画面由其画面号标识。 语法:ActivateScreenByNumber (Screen number, Object number) 在脚本中是否可用:有 (ActivateScreenByNumber) 参数 1)Screen number 包含要切换到的画面号的变量。 如果需要从根画面切换到永久性窗口,则指定“0”或“-1”: 0 = 从根画面切换到永久性窗口 -1 = 从永久性窗口切换到根画面 2) Object number 画面切换后在指定画面中获得焦点的画面对象的编号。操作员控件元素的编号在组态期间使用 TAB 顺序确定。 在指定为“0”时: ?如果调用该系统函数时焦点位于永久性窗口,则永久性窗口保留焦点。 ?如果调用该系统函数时焦点位于根画面,则指定画面中的第一个操作员控件元素获得焦点。

WINCC-C脚本大全

WINCC C脚本的标准函数 1 2009-08-06 17:04 标准函数 该系统包含标准函数。可以按需要修改这些函数。此外,还可以自己创建标准函数。 该系统包括一个标准函数集。 一、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-VBscript常用函数

WinCC VBscript常用函数 1.数值型函数: abs(num): 返回绝对值 sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负 hex(num): 返回十六进制值直接表示:&Hxx 最大8位 oct(num): 返回八进制值直接表示:&Oxx 最大8位 sqr(num): 返回平方根 num>0 int(num): 取整 int(99.8)=99; int(-99.2)=100 fix(num): 取整 fix(99.8)=99; fix(-99.2)=99 round(num,n): 四舍五入取小数位 round(3.14159,3)=3.142 中点数值四舍五入为近偶取整 round(3.25,1)=3.2 log(num): 取以e为底的对数 num>0 exp(n): 取e的n次幂通常用 num^n sin(num): 三角函数,以弧度为值计算 (角度*Pai)/180=弧度 con(num); tan(num); atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符 1;替代次数不限;比较方法区分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置 InStrRev(str,查找字符串[,起始字符][,比较方法]):反向检测是否包含子字符串返回起始位置 space(n):构造n个空格的字符串 string(n,str):构造由n个str第一个字符组成的字符串 StrReverse(str):反转字符串 split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选 3.数据类型转换函数:

WinCC应用实例—用按钮实现登录与注销

WinCC应用实例—用按钮实现登录与注销 除了为登录或注销过程而组态的热键之外,WinCC还提供了函数PWRTLogin()来执行登录,函数PWRTLogout()用于注销。可以使用这两个函数,组态一个通过鼠标动作和键盘两者激活的独立按钮。还可通过按钮的热键属性设置功能键控制动作。用于登录和注销的函数是WinCC应用程序函数。可以在鼠标动作或按下按钮事件中使用C动作来调用函数。 由函数PWRTLogin()来执行登录。 下面是如何使用该函数的实例: #pragma code("USEADMIN.DLL") #include "PWRT_API.H" #pragma code() PWRTLogin('1'); 由函数PWRTLogout()来实现注销。 下面是如何使用该函数的实例: #pragma code("USEADMIN.DLL") #include "PWRT_API.H" #pragma code() PWRTLogout();

打开“用户管理器”,新建用户“family” 用户权限设定(红灯亮的说明该用户有此操作的权限)

按钮授权配置:只有用户的权限包含按钮的权限时该用户才可以操作此按钮。

运行时登陆提示:

未登陆时操作提示: 成功登陆后操作提示: 登陆后再次单击“登陆按钮”会弹出下面的窗口,这时的“退出登陆”可以操作了,可以从这里退出登陆,而不用单独设置退出按钮了。

以下转帖: WINCC-如何使用自定义的对话框实现用户登录在登录按钮中加处以下脚本: #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() if (PWRTSilentLogin("username", "Pa Word")){//登录成功后的处理}其中"USERNAME","PA WORD"可以用存储用户名和密码的变量替换.如: PWRTSilentLogin(GetT agChar("user"), GetT agChar("Pa Word"))当登录成功时,函数返回值为真;如登录失败,则返回值为假 WINCC--如何在程序中动态修改用户密码 1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器 2、在用户D 页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码: #pragma code("UseGen.dll") #include "USEGENAP.H" #pragma code() LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用 if (PWGENCo ect("CC_a _04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_a _04-09-21_16:35:22用第二步中记下的名称取代{if (PWGENChangePa word(GetT agChar("user"),GetT agChar("oldpa word"),GetT agChar("pa word"),err)) //修改密码,user,oldpa word,pa word分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{//密码修改成功后的操作,如给用户提示等}} PWGENDisco ect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在A LIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。

相关文档