wincc功能使用总结

wincc功能使用总结
wincc功能使用总结

1、Wincc online trend控件实现多条曲线查询

项目要求,查询任意时段内的两条曲线的历史数据

1、首先在变量记录中设置需要记录的变量,如果需要在一个控件内显示两条曲线,做数据

归档时,归档属性最好是一致的,归档属性不一样是否会出现问题,这个没测试,有兴趣的可以测试一下。

2、数据记录设置OK后,新建画面插入online trend控件,我的项目需要把趋势打印出来,

所以把控件的工具栏全部隐藏。

3、双击online trend控件,添加需要显示的归档变量。选择公共X,Y轴等参数。坐标显示

根据自己使用选择,基本上不用设置太多参数。

4、添加需要显示的历史归档变量后,就需要写脚本了,西门子工控网论坛有实例,实例提

示针对于一条曲线时使用,咨询西门子技术支持,如果需要同时显示两条曲线时,需要对两条曲线分别进行设置属性“控件.index=0,1”,但是测试其实只设置index=0的起始及结束时间就OK,就是论坛给的实例不是只针对于一条曲线,两条曲线时同样适用,再多的曲线就没测试了。

5、西门子默认的时间格式为“MM-DD-YYYY HH-MM-SS”格式,所以在设置趋势起始及

结束时间时需要注意。

6、注:导入归档数据需要一定的时间,建议按钮触发。尝试在画面打开时触发脚本,有的

时候会出现历史数据加载不上来。

7、脚本如下,仅供参考

Dim objConnection

Dim strConnectionString

Dim strSQL

Dim objrs

Dim chaxun

'定义曲线控件

Dim TREND

Dim strval_1

Dim strval_2

Dim strval_t1

Dim strval_t2

'初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。

'初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。

chaxun=HMIRuntime.Tags("管号查询输入").Read strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;" strSQL = "select * from report where guanhao='"&chaxun&"';"

Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.Open

Set objrs = CreateObject("ADODB.RecordSet")

objrs.open strSQL,objConnection

/赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/

/赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/

objrs.close

Set objrs = Nothing

objConnection.Close

Set objConnection = Nothing

'趋势时间设定

Set trend = ScreenItems("控件1")

strval_r=HMIRuntime.Tags("测试日期_read").Read

strval_t1=HMIRuntime.Tags("开始时间_read").Read

strval_t2=HMIRuntime.Tags("测试时间_read").Read

strval_1=strval_r+" "+strval_t1

strval_2=strval_r+" "+strval_t2

trend.Index=0

trend.Online=False

trend.TimeRange=False

trend.BeginTime=strval_1

trend.EndTime=strval_2

https://www.360docs.net/doc/1e9112121.html,mand="Reload"

实际效果如下:

2、Wincc ODBC连接ACCESS数据库,MshflexGird控件显示数据

1、wincc自带安装SQL数据库,连接不上,退而求其次只能使用ACCESS数据库了,

好多人说ODBC方法过时了,但是对于我们这些对数据查询量较小,查询频率较低的高级语言初学者来说,该方法还是比较实用。

2、MshflexGird控件,个别电脑上可能没有注册,可以在网上下载重新注册,这次尝试

了好多次可以注册,但是在添加的时候总是报错,使用较笨的方法安装了VB6.0,3、MshflexGird控件的属性比如列数,行数,列宽,列头注释等等。百度一下有好多文

档介绍

4、脚本部分:

Dim objConnection

Dim strConnectionString

Dim strSQL

Dim objrs

Dim chaxun

Dim i

Dim j

'定义报表控件

Dim aa

'chaxun=HMIRuntime.Tags("管号查询输入").Read

'数据库连接字符串

strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;"

strSQL = "select * from report order by 编号ASC;"

Set objConnection = CreateObject("ADODB.Connection")

objConnection.ConnectionString = strConnectionString

objConnection.Open

Set objrs = CreateObject("ADODB.RecordSet")

objrs.open strSQL,objConnection

'数据循环写入MSFlexgrid控件

Set aa = ScreenItems("控件5")

aa.rows = 2

'设置列头文字

aa.FormatString = "^序号|^管号|^管径|^管长|^壁厚|^材质|^试压压力Mpa|^保压时间S|^试压日期|^结束时间|^开始时间|^操作员|^班次|^结论|^标准|^规格|^温度℃|"

'设置列宽度

For j=2 To 14

aa.ColWidth(j)=1500

Next

j=j+1

aa.ColWidth(1)=2000

aa.ColWidth(15)=2000

'写入数据

On Error Resume Next

objrs.moveFirst

Do While Not objrs.eof

For i=0 To 16

aa.TextMatrix(aa.Rows-1,i)=objrs.fields(i).value

Next

aa.Rows=aa.Rows+1

objrs.movenext

Loop

'释放连接

objrs.close

Set objrs = Nothing

objConnection.Close

Set objConnection = Nothing

效果如下:

3、页面打印问题:

1、这次项目需要打印的报表格式为曲线及数据在同一个页面内,数据保存在access数

据库内,曲线使用online trend控件显示。具体怎么实现呢,方法1,把曲线及查询的数据放在同一个页面内显示,打印页面。

2、打印整个页面,网上及西门子论坛好多高手说了好多方法,可以借鉴一下。

3、偶适用的方法是硬拷贝。

3.1、报表编辑器—新建一个布局,在新建的布局中插入硬拷贝对象。双击硬拷贝对象---选择—区域选择。区域=一个分段的硬拷贝(2),然后设置X,Y坐标,宽度及高度。X Y轴设置为需要硬拷贝的开始点,宽度及高度为区域设置。

3.2、新建好布局,需要添加一个打印作业(报表编辑器—打印作业)设置名称,布局选择你设计的布局,对话框选择打印机设置(选择该项为打印的时候会弹出打印机选择对话框,个人感觉比较实用)。

3.3、最后一步就是脚本了,脚本是从网上赋值的C脚本。

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

#pragma option(mbcs)

// WINCC:TAGNAME_SECTION_START

// syntax: #define TagNameInAction "DMTagName"

// next TagID : 1

// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START

// syntax: #define PicNameInAction "PictureName"

// next PicID : 1

// WINCC:PICNAME_SECTION_END

RPTJobPrint("新建的打印作业的名称");

}

4、Wincc输入框输入负数问题:

Wincc输入输出框属性:输出格式=s99999,注意时小s,为啥大S不行呢,只能问siemens 的技术了。

第一次用到wincc,需要过好多基于初学者的问题,就碰到的问题总结了一下,希望对各位朋友有所帮助。

2014年3月17号于湖州

陌上尘

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 常用脚本

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 操作 Login Action for login (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogin('c'); Logout Action 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)

wincc vbscript Split 函数用法

vbscript Split 函数用法 用法:传回数组 = Split(原始字串, 要找的字串, 拆成几个数组) 描述 返回一个下标从零开始的一维数组,它包含指定数目的子字符串。 语法 Split(expression[, delimiter[, count[, compare]]]) 例如用逗号(,)分割字符串为数组 复制代码代码如下: str="1,2,3,4" strarr=split(str,",") for i=0 to ubound(strarr) msgbox strarr(i) next Split函数语法有如下几部分: 部分描述 expression 必需的。包含子字符串和分隔符的字符串表达式。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。 delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。

count 可选的。要返回的子字符串数,-1表示返回所有的子字符串。 compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。 参数的设置 设置值 compare参数的设置值: 常数值描述 vbUseCompareOption -1 用Option Compare语句中的设置值执行比较。vbBinaryCompare 0 执行二进制比较。 vbTextCompare 1 执行文字比较。 vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。 复制代码代码如下: Private Sub Command1_Click() Dim MyStr As String MyStr = "1234567123456712345" MyStrs = Split(MyStr, "67") For Each Strs In MyStrs Print Strs Next End Sub 输出结果:"12345"、"12345"、"12345"

WINCC的API编程

如何将其它程序的窗口置于最前面? 可以通过使用Windows API 函数FindWindow找到一个窗口的句柄。 假设您希望将一个Microsoft Access 窗口置于最前面: HWND Handle= ZERO; Handle= FindWindow("OMAIN",ZERO); if(Handle) { ShowWindow(Handle, SW_MINIMIZE); // ShowWindow ( Handle, SW_SHOWNORMAL ); SetForegroundWindow(Handle); } else ProgramExecute("C:\\MSOffice.97\\Office\\ACCESS.EXE"); 如果没有发现该窗口,随后Microsoft Access 将重新启动。 FindWindow 函数的注意事项: 第一个参数是窗口的类。 可以使用编译器(比如:用Visual C++ 中的Spy 命令)找到类。 第二个参数是窗口的标题(标题栏)。可以指定两个参数中的任何一个,或者两个都指定。在本

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

22560470 WinHelp (Windows Help) via API 显示订货号 QUESTION: Can a user-specific Help be called in a WinCC project? ANSWER: Yes, in WinCC you can call use an API call to call a user-specific Help. With "fuCommand" you can branch to a specific topic. For this you create a new project function with the following code: #pragma code("user32.dll") BOOL WinHelpA(hwnd, lpszHelpFile, fuCommand, dwData); #pragma code() #define HELP_CONTENTS 0x0003L void WinHelpApi() { HWND hwnd; /* handle of window requesting help */ char HelpFile[255]; UINT fuCommand; /* type of help */

wincc功能使用总结

1、Wincc online trend控件实现多条曲线查询 项目要求,查询任意时段内的两条曲线的历史数据 1、首先在变量记录中设置需要记录的变量,如果需要在一个控件内显示两条曲线,做数据 归档时,归档属性最好是一致的,归档属性不一样是否会出现问题,这个没测试,有兴趣的可以测试一下。 2、数据记录设置OK后,新建画面插入online trend控件,我的项目需要把趋势打印出来, 所以把控件的工具栏全部隐藏。 3、双击online trend控件,添加需要显示的归档变量。选择公共X,Y轴等参数。坐标显示 根据自己使用选择,基本上不用设置太多参数。 4、添加需要显示的历史归档变量后,就需要写脚本了,西门子工控网论坛有实例,实例提 示针对于一条曲线时使用,咨询西门子技术支持,如果需要同时显示两条曲线时,需要对两条曲线分别进行设置属性“控件.index=0,1”,但是测试其实只设置index=0的起始及结束时间就OK,就是论坛给的实例不是只针对于一条曲线,两条曲线时同样适用,再多的曲线就没测试了。 5、西门子默认的时间格式为“MM-DD-YYYY HH-MM-SS”格式,所以在设置趋势起始及 结束时间时需要注意。 6、注:导入归档数据需要一定的时间,建议按钮触发。尝试在画面打开时触发脚本,有的 时候会出现历史数据加载不上来。 7、脚本如下,仅供参考 Dim objConnection Dim strConnectionString Dim strSQL Dim objrs Dim chaxun '定义曲线控件 Dim TREND Dim strval_1

Dim strval_2 Dim strval_t1 Dim strval_t2 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 chaxun=HMIRuntime.Tags("管号查询输入").Read strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;" strSQL = "select * from report where guanhao='"&chaxun&"';" Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.Open Set objrs = CreateObject("ADODB.RecordSet") objrs.open strSQL,objConnection /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ objrs.close Set objrs = Nothing objConnection.Close Set objConnection = Nothing '趋势时间设定 Set trend = ScreenItems("控件1") strval_r=HMIRuntime.Tags("测试日期_read").Read strval_t1=HMIRuntime.Tags("开始时间_read").Read strval_t2=HMIRuntime.Tags("测试时间_read").Read

WinCC C语言基础

Wincc C语言基础 3.属性的C动作 #include apdefap h long-main(char* lpszPictureName.char* lpszObjectName.char*lpszPropertyName) { /*1*/ long 1ReturnValue; /*2*/ 1ReturnValue * GetTagSDword(*S32icourse-test-1*); /*3*/ return 1ReturnValue; } 上述实例代码代表一个典型的属性的C动作。各部分的含义描述如下: 标题(灰色):灰色阴影显示的前三行构成C的动作标题。该标题自动生成并且不能更改。除返回类型(在实例代码中为long)之外,所有的函数标题完全相同。将三个参数传送给C动作。它们是画面名称(Lpsz PictureName),对象名(lpszObjectName)和属性名(lpszPropertyName). 变量声明(1):在可以编辑的第一段代码中声明使用的变量。在本实例代码中,指的是一个long型的变量。数值计算(2):在本段中,执行属性值的计算。在实例代码中,只读入一个WinCC 变量的数值。 数值返回(3):将计算得出的属性值赋给属性。这通过return命令来完成 4.事件的C动作 #include apdefap.h* void OnClicik(char* lpszPictureName.char* lpszObjectName.char* lpszPropertyName) { /*1*/ long 1Value; /*2*/ 1Value * GetTagSDWord(*s32i-course-tset-1”); SetIeft (lpszPictureName,lpszobjectName,1value); } 上述实例代码代表一个典型的事件的C动作。各部分含义描述如下: 标题(灰色):灰色阴影显示的前三行构成C动作的标题。该标题自动生成并且不能更改。对于不同类型的事件,其参数标题也不同。将参数lpszPictureName(画面名称).lpszObjectName(对象名)和lpszPropertyName(属性名)传递给C动作。参数lpszPropertyName只包含与响应属性变化事件相关信息。可以传递附加的事件指定的参数。 变量声明(1):在可以编辑的第一代码段中声明使用的变量。在本实例代码中,指的是一个long型的变量。事件处理(2):在本段中,执行响应事件的动作。在本实例代码中,读入一个WinCC变量的数值。该数值作为位置X分配给自己的对象。事件的C动作的返回值为void类型,也就是说不需要返回值 5.C动作的创建 创建C动作的步骤如下: (1).打开图形编辑器,打开期望的WinCC画面,打开所期望对象的对象属性对话框 (2)通过鼠标R期望的属性或事件,然后从弹出式菜单中选择C动作来打开动作编辑器 (3)将显示动作编辑器,其中将显示函数的基本框架。此外,C动作的标题已经自动生成,该标题不能

WINCC脚本个人经验总结

语音报警的组态 在工业现场安全是极其重要的,无论从那个角度讲我们应该利用一切手段减少故障的发生。在故障已经发生的时候,应该在第一时间以多种方式通知操作人员有故障发生。现代微处理计算机的处理速度可以完全胜任对于图形,语音地同时处理。所以我们可以利用计算机的声卡和音箱在有故障发生的时候产生语言报警,但是问题是WinCC本身并不能产生语音的功能,而且其内部的上千个函数也没有提供处理声音的函数。解决这个问题的方法归功于微软开发的WinCC与操作系统地完美结合,因为在WinCC中可以直接调用Windows的API函数。实现的具体C脚本代码如下: long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code(\"Winmm.dll\") void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay); #pragma code() if(GetTagBit(\"112排泥备泵故障\")) PlaySoundA(\"d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft sound.wav\",NULL,8); return 1020; }重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录?怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。 解答: 重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。 可使用下面的C脚本执行此项功能,请按照下列步骤进行: 将附件中的函数“Silentlogin.pas”复制到项目中的“PAS”子文件夹中。 在项目中选择Global Script > C Editor > Actions > Global Actions并打开全局动作(Global Action)“Silentlogin.pas”。 在“PWRTSilentLogin (“Login”,“Password”);”一行中,用缺省的用户名替换用户“Login”,用缺省用户的口令代替“Password”。 无限循环命令 static int a=0, b=0; if(GetTagBit("BINi_pictu_dyn_09")) { if(b==0) a++; else a--; if(a==7) b=1; if(a==0) b=0; }

wincc时间显示函数

一、方法一 1.设置一个或多个变量,类型为内存字符串或者是一个连接PLC的外部变量的字符串 2.全局脚本:C脚本 #pragma code("kernel32.dll"); 定义系统链接文件 GetLocalTimes(SYSTEMTIME*lpst);获取系统时间变量 #pragma code(); SYSTEMTIME time; GetLocalTime(&time); SetTagWord("Varname1",time.wYear);年 SetTagWord("Varname2",time.wMonth);月 SetTagWord("Varname3",time.wDayOfWeek);星期 SetTagWord("Varname4",time.wDay);天 SetTagWord("Varname5",time.wHour);小时 SetTagWord("Varname6",time.wMinute);分钟 SetTagWord("Varname7",time.wSecond);秒 SetTagWord("Varname8",time.wMilliseconds);毫秒 3.在输入输出域关联变量,记住要修改显示类型为字符串 如果要在一个中显示,则把Varname1-Varname8通过字符串连接即可 方法二: char* temp=(char*)SysMalloc(26); time_t *p=(time_t*)SysMalloc(sizeof(time_t)),CT; CT=time(p); strcpy(temp,ctime(&CT)); *(temp+24)='\0'; return temp; 方法三: 利用控件中的wincc digital/analog clock contol

WinCC脚本案例保留

WinCC脚本案例保留 2010-09-16 16:44 最近做一个WinCC跟ERP通讯的一个小项目,将脚本语言保留下来,以备不时之需! 仅仅是保留,各位看官如发现不妥之处请加以指教. 1.通过扫描枪扫描到ID号传给PLC,WinCC读取到ID号从ERP数据库中查找相关数据,写回到PLC,并给PLC一个写完成确认信号.(数据库是SqlServer2000) Dim DB240trigger,db241trigger db240trigger=HMIRuntime.Tags("db240itrigger").Read db241trigger=HMIRuntime.Tags("DB241itrigger").Read Dim ss,str str=HMIRuntime.Tags("DB240szcoil_ID").Read ss=CStr(str) If (db240trigger=1 And db241trigger=0 ) Then Dim sPro,sDsn,sSer,sCon,sSql Dim oRsMaterial,conn,oCom,oItem,oRsSCHEMA Dim database,server,uid,pwd sCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=pasword" Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = sCon conn.Open Set oRsMaterial = CreateObject("ADODB.Recordset") sSql= "SELECT * FROM dbo.BRGS_GP_Material where MkNo='" & CStr(ss) & "'" oRsMaterial.open ssql,conn,1,1 Dim m,n m=oRsMaterial.recordcount If m<>1 Then MsgBox "这个ID号找不到唯一的一条参数信息,请手动输入信息!" Exit Function End If Dim sCon2,sSql2

VB操作wincc脚本心得

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename 2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标

WINCC VBSCRIPT常用函数

WinCC VBscript常用函数 1.数值型函数: abs(num):返回绝对值 sgn(num):num>01;num=00;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 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()函数,那么所有的动作会被终止。最坏情况下是;由于启动这四个动作将终止对所有动作 的处理。

VB操作wincc脚本心得精选文档

V B操作w i n c c脚本心 得精选文档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如 Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename

2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符; Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标 VB中的InStr()函数与InStrRev()函数: 都是在主字符串当中搜寻寻找子字符串,返回找到的子字符串在主字符串中出现的位置; 不同在于; InStr()函数,从左开始向右寻找,InStrRev()函数,从右开始向左寻找。 截取 right 和left 获取长度 Len

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中使用vbs常用函数.

wincc中使用vbs常用函数 1.函数array() 功能:创建一个数组变量 格式:array(list) 参数:list 为数组变量中的每个数值列,中间用逗号间隔 例子: <% i = array (“1”,”2”,”3”)%> 结果: i 被赋予为数组 2.函数Cint() 功能:将一表达式/其它类型的变量转换成整数类型(int) 格式:Cint(expression_r) 参数:expression_r 是任何有效的表达式/其它类型的变量 例子: <% 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_r是任何有效的表达式/其它类型的变量 例子: <% s = 3 + 2 response.write ”The result is: ”& cStr(s) %> 结果:函数Cstr()将整数 5 转换成字符”5”. 5.函数Date() 功能:返回当前系统(server端)的日期 格式: Date() 参数:无 例子<% date () %> 结果:05/10/00

相关文档
最新文档