WINCC函数
1.切换画面按钮 (2)2.设定BIT变量当前值 (2)3.取当前登陆用户 (2)4.取硬盘剩余容量 (3)5.以图像模式显示(灯、钮)等 (5)6.自定义对象 (6)7.OK返回值 (19)8.小键盘 (19)9.PID传递页面C脚本 (23)10.将变量B的值赋给变量A(无符号16位) (25)11.乒乓键 (26)12.C脚本、脉冲延时 (27)13.CONFIGURATION TOOOL (28)14.用“笔组”实现一张页面做趋势 (28)15.滑竿,SLIDER CONTROL的使用 (34)16.切换语言 (35)1.切换画面按钮#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {SetPictureName(lpszPictureName,"PictureWindow1","HS_MODE.Pdl"); //设定PictureWindow1填充为页面HS_MODE.Pdl SetTagChar("TT","操作模式"); //Return-Type: BOOL //设定字符串变量TT当前值为“操作模式”以显示页眉}2.设定BIT变量当前值SetTagBit("N3_VALVE_RESET",0);3.取当前登陆用户 @CurrentUser4.取硬盘剩余容量5.以图像模式显示(灯、钮)等智能对象\状态显示选透明颜色6.自定义对象C动作#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {Valve(lpszPictureName,lpszObjectName); //Return-Type: void}全局脚本\项目函数void Valve(char *lpszPictureName, char *lpszObjectName){char* Tagname = GetPropChar(lpszPictureName, lpszObjectName, "ObjectName");//设TAGNAME当前值为N3_HS_Achar* TitleName = GetPropChar(lpszPictureName, lpszObjectName, "TITLE");//设TITLENAME当前值为热风炉自动char* Name = GetPropChar(lpszPictureName, lpszObjectName, "PICNAME");//设NAME当前值为QD_BUTTONchar* DIS = GetPropChar(lpszPictureName, lpszObjectName, "DIS");//设DIS是否显示,本变量空用于下面的阀函数static BOOL visble; //声明BOOL量VISBLElong lLeft ; //声明常整数1LEFT,用于弹出框的左上角long lTop;BOOL Bool=TRUE; //声明BOOL量BOO1为真LINKINFO linkinfo; //Structure definition结构定义visble=TRUE; //设VISBLE当前值为真//lLeft =599;//lTop=327;lLeft =GetLeft(lpszPictureName,lpszObjectName)+50; //1LEFT当前值为当前页面的当前对象的左坐标+50,注意不是VALUE的值而是当前对象按钮“热风炉自动”lTop=GetTop(lpszPictureName,lpszObjectName); //1TOP当前值为当前页面的当前对象的上坐标if (lLeft <20) //限制坐标范围{lLeft =20;}if (lLeft >1240){lLeft =1240;}if (lTop>200){lTop=200;}if (lTop<20){lTop=20;}SetLeft(lpszPictureName,"value",lLeft); //设定当前页面中画面窗口VALUE的左上角坐标SetTop(lpszPictureName,"value",lTop);SetPictureName(lpszPictureName,"value",".PDL"); //设定当前页面中画面窗口VALUE填充页面为.PDLPDLRTSetPropEx(0,lpszPictureName,"value","Visible",VT_BOOL,&visble,NULL,NULL,0,NULL,NULL); //设定 VALUE的一些属性,帮助里未查到,待查SetPropChar(lpszPictureName,"value","CaptionText",TitleName); //设定VALUE的CAPTION TEXT为热风炉自动SetPropChar(lpszPictureName,"value","TagPrefix",Tagname); //为VALUE中所有变量增加前缀N3_HS_ASetPropChar(lpszPictureName,"value","PictureName",Name); //为VALUE填充页面为QD_BUTTONSetPropChar(Name,"text","Text",Tagname);//为当前页面名字叫TEXT的TEXT属性设定为TAGNAME的当前值,本项目用于阀函数SetPropChar(Name,"Button4","Visible",DIS);//为当前页面名字叫BUTTON4的VISIBLE属性设定为DIS的当前值,本项目用于阀函数,下同SetPropChar(Name,"Button5","Visible",DIS);SetPropChar(Name,"Button10","Visible",DIS);SetPropChar(Name,"Button11","Visible",DIS);}画面窗口定义如下:QD_BOTTON页面定义如下:其中确定按钮定义如下:动作按下置1,抬起置0取下按钮为关闭当前窗口阀门自定义对象C脚本#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {Valve(lpszPictureName,lpszObjectName); //Return-Type: void}页面VALVE_FUNCTION_STAME如下其中设备名称定义为TEXT,取的即为OBJECTNAME,本例中为N3_SV101 其中远程等状态灯显示为结构变量后缀 .XXX其中打开、关闭等按钮(未知是否需要确定取消),本例中是这样实现的,以打开按钮为例:实际上本例中打开按钮有2个重叠在一起下面的打开按钮(黑色边框)控制实际的IO后缀:上面的打开按钮的可见性由DIS变量的当前值确定,若DIS为真,则蓝色边框打开按钮可见,蓝打开按钮(BOTTON4)控制PIC1可见8 PIC1填充为OPEN页面OPEN页面如下:其中确定按钮为BOTTON8,因所有变量前缀已赋值,则确定按钮仍连接实际IO后缀,同黑色打开按钮。
7.OK返回值本例中如此操作有些繁琐,对于需要确认的按钮可以用OK返回值实现,则简便许多,代码如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){int ret_val;ret_val=MessageBox(NULL,"你确定要顺启流程吗?","请确认此动作",MB_OKCANCEL|MB_SETFOREGROUND|MB_SYSTEMMODAL); if(ret_val==1)SetTagBit("FLOW.STR_FM",1);}8.小键盘,有时候操作人员不希望用键盘操作而是希望用鼠标操作,如图:其中绿色为输出值:1、2、3~.按钮的C脚本一样就是对象名称不同,对象名称为当前按钮:C脚本如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {char*A=GetPropChar(lpszPictureName, "TAG", "TEXT");char*B=GetPropChar(lpszPictureName, lpszObjectName, "ObjectName");strcat(A,B);SetPropChar(lpszPictureName, "TAG", "TEXT",A);}空白域定义为TAG,无脚本确定按钮将TAG赋给SP,C脚本如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {char*A=GetPropChar(lpszPictureName, "TAG", "TEXT");SetTagChar(".SP",A);SetPropChar(lpszPictureName, "DIS", "OutputValue","1");}取消按钮清空TAG,代码如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {SetPropChar(lpszPictureName, "TAG", "TEXT","");}9.PID传递页面C脚本附录 PID传递页面C脚本:void PID(char *lpszPictureName, char *lpszObjectName){char* Tagname = GetPropChar(lpszPictureName, lpszObjectName, "ObjectName");char* TitleName = GetPropChar(lpszPictureName, lpszObjectName, "TITLE");char* Name = GetPropChar(lpszPictureName, lpszObjectName, "PICNAME");char* MAX = GetPropChar(lpszPictureName, lpszObjectName, "MAX");char* MIX = GetPropChar(lpszPictureName, lpszObjectName, "MIX");char* UNIT = GetPropChar(lpszPictureName, lpszObjectName, "UNIT");char* PV = GetPropChar(lpszPictureName, lpszObjectName, "PV");char* SP = GetPropChar(lpszPictureName, lpszObjectName, "SP");char* Out = GetPropChar(lpszPictureName, lpszObjectName, "OUT");char* In = GetPropChar(lpszPictureName, lpszObjectName, "IN");char* MANUAL_SP= GetPropChar(lpszPictureName, lpszObjectName, "MANUAL_SP");//char* PID = GetPropChar(lpszPictureName, lpszObjectName, "PID"); static BOOL visble;long lLeft ;long lTop;BOOL Bool=TRUE;LINKINFO linkinfo;visble=TRUE;lLeft =50;lTop=50;//lLeft =GetLeft(lpszPictureName,lpszObjectName)+50;//lTop=GetTop(lpszPictureName,lpszObjectName);//if (lLeft <20)//{//lLeft =20;//}//if (lLeft >840)//{//lLeft =840;//}//if (lTop>500)//{//lTop=500;//}//if (lTop<20)//{//lTop=20;//}SetLeft(lpszPictureName,"value",lLeft);SetTop(lpszPictureName,"value",lTop);SetPictureName(lpszPictureName,"value",Name);PDLRTSetPropEx(0,lpszPictureName,"value","Visible",VT_BOOL,&visble,NULL,NULL,0,NULL,NULL); SetPropChar(lpszPictureName,"value","CaptionText",TitleName);SetPropChar(lpszPictureName,"value","TagPrefix",Tagname);SetPropChar(lpszPictureName,"value","PictureName",Name);SetPropChar(Name,"text","Text",Tagname);SetPropChar(Name,"IO1","OutputValue",MAX);SetPropChar(Name,"IO2","OutputValue",MIX);SetPropChar(Name,"IO3","OutputValue",UNIT);SetPropChar(Name,"IO4","OutputValue",PV);SetPropChar(Name,"IO5","OutputValue",SP);SetPropChar(Name,"IO6","OutputValue",Out);SetPropChar(Name,"IO7","OutputValue",In);SetPropChar(Name,"IO8","OutputValue",MANUAL_SP);}10.将变量B的值赋给变量A(无符号16位)#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){SetTagWord("A", GetTagWord("B"));SetTagWord("TOPP2_E_TOP_SYS_STOP", 0);SetTagWord("TOPP2_E_TOP_SYS_RUN", 1);}11.乒乓键#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {//Return-Type: BOOLBOOL bstate;//Get the current state of the tagbstate = GetTagBit("TOPP2_E_r_SEL");if(bstate){SetTagBit("TOPP2_E_r_SEL",0);}else{SetTagBit("TOPP2_E_r_SEL",1);}}另一种:SetTagBit("DEN_20",1-GetTagBit("DEN_20"));12.C脚本、脉冲延时在wincc 实现延时,比较浪费资源,不建议这么做。
(完整word版)WINCC函数
(完整word版)WINCC函数1.切换画面按钮 (2)2.设定BIT变量当前值 (2)3.取当前登陆用户 (2)4.取硬盘剩余容量 (3)5.以图像模式显示(灯、钮)等 (5)6.自定义对象 (6)7.OK返回值 (19)8.小键盘 (19)9.PID传递页面C脚本 (23)10.将变量B的值赋给变量A(无符号16位) (25)11.乒乓键 (26)12.C脚本、脉冲延时 (27)13.CONFIGURATION TOOOL (28)14.用“笔组”实现一张页面做趋势 (28)15.滑竿,SLIDER CONTROL的使用 (34)16.切换语言 (35)1.切换画面按钮#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {SetPictureName(lpszPictureName,"PictureWindow1","HS_M ODE.Pdl"); //设定PictureWindow1填充为页面HS_MODE.Pdl SetTagChar("TT","操作模式"); //Return-Type: BOOL //设定字符串变量TT当前值为“操作模式”以显示页眉}2.设定BIT变量当前值SetTagBit("N3_VALVE_RESET",0);3.取当前登陆用户 @CurrentUser。
WinCC部分函数说明说明书
WinCC部分函数说明凡是C与VB脚本函数名称一样的是实现一样的功能,只是调用环境不一样以下是部分CAPI1、int soundonce(char *src)//声音播放,仅仅播放一次,未使用src=声音文件位置2、void ccsleep(float sec) //暂停一段时间sec=时间S3、int ccGetPicStr(char *DesStr, char *SourPrefix, char *SourStrem, char *SourFomat) //生成图片的地址DesStr=生成后的地址SourPrefix=源前缀SourStrem=图片名称SourFomat=格式以下是部分VB函数说明,没有涉及到的请参照同名C函数的注释说明1、is_Correct_Pre_Visible(Byval pre_loc,Byval cur_val) ''用来修正一种情况的显示错误Pre_loc=前一轮出的牌位置Cur_loc=当前出的牌位置以下请自行参照源代码中的注释1、实现声音播放:SendSound、SendGetSound、SendUngetSound、GetSound2、实现牌面动态布局:GetGroupLeftByObj动作以及其他未涉及到函数的说明请参照源码中的注释PLC端部分函数、函数块说明(依次)1、未使用,2、产生一个随机整数3、等待一小段时间(西门子有提供标准块)(请注意该函数与硬件挂钩不基于时间单位)4、识别牌类型5、摸牌6、手牌转换成选中的牌7、判定是否是双已经连对并返回和8、判定是否是四带二并返回和(含飞机)9、判定是否是顺子并返回和10、判定是否是三带一并返回和(含飞机)11、判定是否是三不带并返回和(含飞机)12、抓牌调用了513、选中牌转换成手牌(14、选中牌转换成当前出牌15、洗牌16、排序从小到大。
Wincc系统函数
Wincc系统函数报警1、ClearAlarmBuffer应用:删除HMI设备报警缓冲区中得报警。
说明:尚未确认得报警也被删除。
2、ClearAlarmBufferProtoolLegacy 应用:该系统函数用来确保兼容性。
它具有与系统函数“ClearAlarmBuffer”相同得功能,但使用旧得ProT ool编号方式。
参数: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".将系统函数“InvertBi t”分配给“更改”事件.该系统函数连接到外部变量“Tag1”.在运行期间,这会导致无法预料得行为。
2、InvertBitInT ag应用:对给定变量中得位取反:如果变量中得位为值1(真),它将被设置为0(假)。
如果变量中得位为值 0(假),它将被设置为 1(真).在改变了给定位之后,系统函数将整个变量传送回PLC。
不检查此过程期间变量中就是否有其它位发生更改。
wincc全部函数 经典
在WinCC的全局脚本里有几种函数专门是用来提取(GetTag 函数)和设置函数值(SetTag 函数)的。
这里的列表给出了不同的函数及它们的功能:SetTag 函数:SetTagxxx此函数给作业赋予一个值去写,然后立即返回到调用函数。
它并不等到值实际写好后再返回。
该调用的明显特点是:∙此调用比较快。
∙调用函数并不清楚这个值实际是在何时写的。
∙该函数也不提供写作业状态的有关信息。
SetTagxxxWait此函数给作业赋予一个值去写,但是只有当值已经写好后才返回到调用函数。
该调用的明显特点是:∙该调用慢于SetTagxxx。
其实际速度取决于通道和PLC的其它因素。
∙调用后值已经实际写好。
∙该函数不提供写作业状态的有关信息。
SetTagxxxState此函数具有SetTagxxx相同的特点。
另外,SetTagxxxState函数还提供写作业的状态的信息。
由于状态永远是内部提供的,故相比于SetTagxxx性能上没有什么差别。
SetTagxxxStateWait此函数具有与SetTagxxxWait相同的特点。
但是SetTagxxxStateWait函数还提供了写作业的状态信息。
由于状态永远是内部提供的,故相比于SetTagxxxWai t性能上没有什么差别。
SetTagxxxStateWait与SetTagxxxState这两个函数间的差别与SetTagxxxWai t与SetTagxxx这两个函数间的差别相对应。
注意:当写过程结束时只能给出某些状态。
SetTagMultiWait此函数的特点与SetTagxxxWait相同。
但是它也提供在一个作业里发出多个写作业的选件。
GetTag 函数:GetTagxxx当此函数被调用时变量被注册下来。
然后变量受到PLC的周期性请求。
注册的周期取决于触发器(参看下面的叙述)。
使用GetTagxxx调用,提供了WinCC 中的可用值。
取消了对图象的选择后,变量被再次注消。
WINCCC函数用法大全
函数名: stpc py功能:拷贝一个字符串到另一个用法: c har *stpcp y(cha r *de stin, char *sou rce);程序例:#inclu de <s tdio.h>#inclu de <s tring.h> intmain(void){ ch ar st ring[10];c har *str1= "ab cdefg hi";stpcp y(str ing,str1); prin tf("%s\n", stri ng);r eturn 0; }函数名: st rcat功能: 字符串拼接函数用法: cha r *st rcat(char*dest in, c har *sourc e); 程序例:#in clude <str ing.h>#i nclud e <st dio.h>i nt ma in(vo id) { char dest inati on[25]; cha r *bl ank = " ", *c = "C++", *B orlan d = "Borla nd";strcp y(des tinat ion,Borla nd);s trcat(dest inati on, b lank); strc at(de stina tion, c);print f("%s\n",desti natio n); re turn0;}函数名: str chr 功能:在一个串中查找给定字符的第一个匹配之处\用法: c har *strch r(cha r *st r, ch ar c);程序例:#incl ude <strin g.h>#inc lude<stdi o.h>int main(void){ char stri ng[15]; ch ar *p tr, c = 'r';s trcpy(stri ng, "Thisis astrin g");ptr = strc hr(st ring, c);if (p tr) pri ntf("The c harac ter %c isat po sitio n: %d\n",c, pt r-str ing); elsep rintf("The char acter wasnot f ound\n");retur n 0;} 函数名:strcm p功能: 串比较用法:int s trcmp(char *str1, ch ar *s tr2);看As ic码,s tr1>s tr2,返回值 >0;两串相等,返回0程序例:#i nclud e <st ring.h>#inclu de <s tdio.h>int m ain(v oid){ c har *buf1= "aa a", *buf2= "bb b", *buf3= "cc c"; i nt pt r;p tr =strcm p(buf2, bu f1);if (p tr >0) prin tf("b uffer 2 is grea ter t han b uffer 1\n"); el se prin tf("b uffer 2 is less than buff er 1\n"); ptr= str cmp(b uf2,buf3); if(ptr> 0) pr intf("buff er 2is gr eater than buff er 3\n");else pr intf("buff er 2is le ss th an bu ffer3\n"); re turn0;}函数名: st rncmp i功能: 将一个串中的一部分与另一个串比较, 不管大小写用法:int s trncm pi(ch ar *s tr1,char*str2, uns igned maxl en);程序例:#i nclud e <st ring.h>#inclu de <s tdio.h>int m ain(v oid){ cha r *bu f1 ="BBB", *bu f2 ="bbb"; intptr;ptr = strc mpi(b uf2,buf1); if(ptr> 0) pri ntf("buffe r 2 i s gre aterthanbuffe r 1\n"); i f (pt r < 0)p rintf("buf fer 2 is l ess t han b uffer 1\n");if (ptr == 0)p rintf("buf fer 2 equa ls bu ffer1\n"); ret urn 0;}函数名: strc py功能:串拷贝用法: char *str cpy(c har *str1, char *str2); 程序例:#in clude <std io.h>#in clude <str ing.h>i nt ma in(vo id) { ch ar st ring[10];char*str1 = "a bcdef ghi"; str cpy(s tring, str1); p rintf("%s\n", s tring); re turn0;}函数名: st rcspn功能: 在串中查找第一个给定字符集内容的段用法: in t str cspn(char*str1, cha r *st r2);程序例:#i nclud e <st dio.h>#i nclud e <st ring.h>#inclu de <a lloc.h>int m ain(v oid){ c har *strin g1 ="1234567890"; c har *strin g2 ="747D C8";int l ength; le ngth= str cspn(strin g1, s tring2); p rintf("Cha racte r whe re st rings inte rsect is a t pos ition %d\n", le ngth); re turn0;}函数名: st rdup功能: 将串拷贝到新建的位置处用法: char *str dup(c har *str);程序例:#inclu de <s tdio.h>#inclu de <s tring.h> #incl ude <alloc.h> intmain(void){char*dup_str,*stri ng ="abcd e"; dup_s tr =strdu p(str ing); prin tf("%s\n", dup_str); free(dup_str); ret urn 0;}函数名: str icmp功能: 以大小写不敏感方式比较两个串用法: i nt st ricmp(char *str1, ch ar *s tr2);程序例:#inclu de <s tring.h> #incl ude <stdio.h> intmain(void){ ch ar *b uf1 = "BBB", *b uf2 = "bbb"; int ptr; ptr= str icmp(buf2, buf1);if (ptr > 0) pr intf("buff er 2is gr eater than buff er 1\n");if (p tr <0)print f("bu ffer2 islessthanbuffe r 1\n"); i f (pt r ==0)print f("bu ffer2 equ als b uffer 1\n");re turn0;}函数名: s trerr or功能:返回指向错误信息字符串的指针用法: cha r *st rerro r(int errn um);程序例:#i nclud e <st dio.h>#i nclud e <er rno.h>i nt ma in(vo id) { char *buf fer;b uffer = st rerro r(err no);p rintf("Err or: %s\n", buff er);r eturn 0; }函数名: st rcmpi功能: 将一个串与另一个比较,不管大小写用法: in t str cmpi(char*str1, cha r *st r2);程序例:#i nclud e <st ring.h>#inclu de <s tdio.h>int m ain(v oid){ cha r *bu f1 ="BBB", *bu f2 ="bbb"; intptr;ptr = strc mpi(b uf2,buf1); if(ptr> 0) pri ntf("buffe r 2 i s gre aterthanbuffe r 1\n"); i f (pt r < 0)p rintf("buf fer 2 is l ess t han b uffer 1\n");if (ptr == 0)p rintf("buf fer 2 equa ls bu ffer1\n"); ret urn 0;}函数名: strn cmp 功能:串比较用法: int strn cmp(c har *str1, char *str2, in t max len);程序例:#inclu de <s tring.h> #incl ude <stdio.h> int main(void){char*buf1 = "a aabbb", *b uf2 = "bbb ccc", *buf3 = "ccc";int p tr; p tr =strnc mp(bu f2,bu f1,3); if (ptr > 0) prin tf("b uffer 2 is grea ter t han b uffer 1\n"); els ep rintf("buf fer 2 is l ess t han b uffer 1\n");pt r = s trncm p(buf2,buf3,3);if (p tr >0)print f("bu ffer2 isgreat er th an bu ffer3\n"); else pr intf("buff er 2is le ss th an bu ffer3\n"); ret urn(0);}函数名: s trncm pi功能:把串中的一部分与另一串中的一部分比较,不管大小写用法: in t str ncmpi(char *str1, ch ar *s tr2);程序例:#inclu de <s tring.h> #incl ude <stdio.h> intmain(void){ ch ar *b uf1 = "BBB ccc", *buf2 = "bbbcc c"; in t ptr; ptr = st rncmp i(buf2,buf1,3); if (ptr > 0) prin tf("b uffer 2 is grea ter t han b uffer 1\n");if (ptr < 0) pr intf("buff er 2is le ss th an bu ffer1\n"); if(ptr== 0) pr intf("buff er 2equal s buf fer 1\n"); retu rn 0;} 函数名: str ncpy功能: 串拷贝用法: ch ar *s trncp y(cha r *de stin, char *sou rce,int m axlen); 程序例: #inc lude<stdi o.h>#inc lude<stri ng.h>in t mai n(voi d){charstrin g[10]; char *str1 = "abcde fghi"; str ncpy(strin g, st r1, 3); str ing[3] = '\0';p rintf("%s\n", s tring); ret urn 0;}函数名: st rnicm p功能: 不注重大小写地比较两个串用法: i nt st rnicm p(cha r *st r1, c har *str2, unsi gnedmaxle n); 程序例:#in clude <str ing.h>#i nclud e <st dio.h>i nt ma in(vo id) { char *buf1 = "BBBcc c", *buf2= "bb bccc"; intptr;ptr = strn icmp(buf2, buf1, 3); if (ptr > 0) prin tf("b uffer 2 is grea ter t han b uffer 1\n");if (ptr < 0) pr intf("buff er 2is le ss th an bu ffer1\n"); if(ptr== 0) pr intf("buff er 2equal s buf fer 1\n"); retu rn 0;} 函数名:strns et功能:将一个串中的所有字符都设为指定字符用法:char*strn set(c har *str,charch, u nsign ed n);程序例:#incl ude <stdio.h> #incl ude <strin g.h>int main(void){c har *strin g = "abcde fghij klmno pqrst uvwxy z"; ch ar le tter= 'x'; pri ntf("strin g bef ore s trnse t: %s\n",strin g); st rnset(stri ng, l etter, 13); prin tf("s tring afte r st rnset: %s\n", s tring);re turn0;}函数名: s trpbr k功能: 在串中查找给定字符集中的字符用法: char *str pbrk(char*str1, cha r *st r2);程序例:#i nclud e <st dio.h>#i nclud e <st ring.h>int m ain(v oid){ cha r *st ring1 = "a bcdef ghijk lmnop qrstu vwxyz"; cha r *st ring2 = "o nm";c har *ptr;ptr = strp brk(s tring1, st ring2);if (ptr)p rintf("str pbrkfound firs t cha racte r: %c\n",*ptr); else pr intf("strp brk d idn't find char acter in s et\n");re turn0;}函数名: str rchr功能: 在串中查找指定字符的最后一个出现用法: char *str rchr(char*str, char c);程序例:#i nclud e <st ring.h>#inclu de <s tdio.h>int m ain(v oid){ cha r str ing[15]; ch ar *p tr, c = 'r';st rcpy(strin g, "T his i s a s tring"); pt r = s trrch r(str ing,c); if (ptr)p rintf("The char acter %c i s atposit ion:%d\n", c,ptr-s tring); els ep rintf("The char acter wasnot f ound\n");r eturn 0; }函数名: st rrev功能: 串倒转用法: ch ar *s trrev(char *str);程序例: #inc lude<stri ng.h>#in clude <std io.h>in t mai n(voi d){char*forw ard = "str ing"; prin tf("B efore strr ev(): %s\n", fo rward); str rev(f orwar d); pr intf("Afte r str rev(): %s\n",forwa rd);r eturn 0; }函数名: str set 功能:将一个串中的所有字符都设为指定字符用法: char *str set(c har *str,charc); 程序例:#in clude <std io.h>#in clude <str ing.h>i nt ma in(vo id) { char stri ng[10] = "123456789"; char symb ol ='c';print f("Be forestrse t():%s\n", str ing);strse t(str ing,symbo l); pr intf("Afte r str set(): %s\n",strin g); re turn0;}函数名: str spn 功能:在串中查找指定字符集的子集的第一次出现用法: in t str spn(c har *str1, char *str2); 程序例:#in clude <std io.h>#in clude <str ing.h>#i nclud e <al loc.h>i nt ma in(vo id) { char *str ing1= "1234567890";char*stri ng2 = "123DC8";int l ength; len gth = strs pn(st ring1, str ing2); prin tf("C harac ter w herestrin gs di fferis at posi tion%d\n", len gth);retur n 0;}函数名: strs tr功能:在串中查找指定字符串的第一次出现用法: c har *strst r(cha r *st r1, c har *str2);程序例:#incl ude <stdio.h> #incl ude <strin g.h>int main(void){c har *str1= "Bo rland Inte rnati onal", *st r2 ="nati on",*ptr; ptr= str str(s tr1,str2); prin tf("T he su bstri ng is: %s\n", p tr);r eturn 0; }函数名:strto d功能: 将字符串转换为doub le型值用法: dou ble s trtod(char *str, cha r **e ndptr);程序例: #inc lude<stdi o.h>#inc lude<stdl ib.h>in t mai n(voi d){charinput[80], *end ptr;d ouble valu e;pr intf("Ente r a f loati ng po int n umber:");g ets(i nput); valu e = s trtod(inpu t, &e ndptr); pri ntf("The s tring is %s the numb er is %lf\n", i nput, valu e); re turn0;}函数名: str tok 功能:查找由在第二个串中指定的分界符分隔开的单词用法:char*strt ok(ch ar *s tr1,char*str2);程序例: #inc lude<stri ng.h>#in clude <std io.h>in t mai n(voi d){charinput[16]= "ab c,d";char*p; /* str tok p laces a NU LL te rmina tor in fron t ofthe t oken, if f ound*/ p = strt ok(in put,",");if (p) p rintf("%s\n", p);/* A se condcallto st rtokusing a NU LL asthe f irstparam eterretur ns apoint er tothe c harac ter f ollow ing t he to ken */ p = strt ok(NU LL, ",");i f (p) pr intf("%s\n", p); retu rn 0;} 函数名:strto l功能: 将串转换为长整数用法:longstrto l(cha r *st r, ch ar **endpt r, in t bas e); 程序例:#in clude <std lib.h>#i nclud e <st dio.h>i nt ma in(vo id) { char *str ing = "87654321", *e ndptr; long lnum ber;/* st rtolconve rts s tring to l ong i ntege r */lnumb er =strto l(str ing,&endp tr, 10); pr intf("stri ng =%s l ong = %ld\n", s tring, lnu mber); ret urn 0;}函数名:strup r功能: 将串中的小写字母转换为大写字母用法: cha r *st rupr(char*str);程序例:#incl ude <stdio.h> #incl ude <strin g.h>int main(void){c har *strin g = "abcde fghij klmno pqrst uvwxy z", *ptr;/* co nvert s str ing t o upp er ca se ch aract ers */ ptr= str upr(s tring); pri ntf("%s\n", ptr); ret urn 0;}函数名: swab功能: 交换字节用法:voidswab(char *fro m, ch ar *t o, in t nby tes);程序例:#inclu de <s tdlib.h> #incl ude <stdio.h> #incl ude <strin g.h>cha r sou rce[15] ="rFna koBl rna d";c har t arget[15];in t mai n(voi d){swab(sourc e, ta rget, strl en(so urce)); pri ntf("Thisis ta rget: %s\n", ta rget); retu rn 0;} 。
wincc标准函数
wincc标准函数WinCC标准函数。
WinCC是西门子公司推出的一款用于人机界面(HMI)和过程控制的软件平台。
在WinCC中,标准函数是一种非常重要的功能模块,它可以帮助用户实现各种自动化控制和监控任务。
本文将介绍WinCC标准函数的基本概念、使用方法和一些常见的应用场景。
1. 标准函数的概念。
标准函数是WinCC中的一种可重复使用的功能模块,它包含了一系列的程序代码和参数设置,可以完成特定的功能。
用户可以在WinCC中创建和编辑标准函数,并在需要的地方进行调用。
标准函数的使用可以大大简化程序的编写和维护工作,提高开发效率和代码的可重用性。
2. 标准函数的创建和编辑。
在WinCC中,用户可以通过图形化界面创建和编辑标准函数。
首先,用户需要定义标准函数的输入和输出参数,然后编写函数的程序代码。
在编辑过程中,用户可以使用WinCC提供的丰富的函数库和控件库,以及图形化的编程工具来完成标准函数的设计和实现。
通过这些工具,用户可以轻松地创建各种复杂的控制逻辑和界面功能。
3. 标准函数的调用和应用。
一旦标准函数创建完成,用户就可以在WinCC的其他部分进行调用和应用。
在界面设计中,用户可以将标准函数与按钮、图表、报警等控件进行关联,实现用户交互和数据展示的功能。
在控制逻辑中,用户可以在脚本或PLC通讯模块中调用标准函数,实现自动化控制和数据处理的功能。
通过标准函数的调用和应用,用户可以快速地构建出功能完善的HMI应用程序。
4. 常见应用场景。
标准函数在WinCC中有着广泛的应用场景。
例如,在工业生产过程中,用户可以使用标准函数来实现设备的自动控制和故障诊断;在能源监控系统中,用户可以使用标准函数来实现数据采集和报表生成;在楼宇自动化系统中,用户可以使用标准函数来实现照明控制和空调调节。
总之,标准函数可以帮助用户实现各种自动化控制和监控任务,提高系统的稳定性和可靠性。
5. 总结。
通过本文的介绍,我们了解了WinCC标准函数的基本概念、使用方法和一些常见的应用场景。
wincc函数手册
wincc函数手册(最新版)目录1.WinCC 函数手册概述2.WinCC 函数手册的内容3.WinCC 函数手册的应用4.WinCC 函数手册的优点5.WinCC 函数手册的未来发展正文1.WinCC 函数手册概述WinCC 函数手册是一款由西门子公司开发的人机界面(HMI)软件,主要用于工业自动化领域。
它提供了丰富的函数库,可以帮助工程师快速、高效地开发和设计人机界面。
2.WinCC 函数手册的内容WinCC 函数手册包含了众多功能强大的函数,主要分为以下几个类别:(1)数据访问:这类函数主要用于访问和操作数据库,例如 SQL 查询、修改和删除数据等。
(2)图形绘制:这类函数主要用于绘制各种图形,例如折线图、柱状图、饼图等。
(3)文本处理:这类函数主要用于处理和显示文本信息,例如字符串操作、文本格式化等。
(4)界面布局:这类函数主要用于设计人机界面的布局,例如窗口、对话框、按钮等。
(5)其他功能:这类函数包括日期时间处理、数学计算、文件操作等实用功能。
3.WinCC 函数手册的应用WinCC 函数手册在工业自动化领域的应用十分广泛,例如:(1)监控和控制系统:用于监控生产过程中的数据,如温度、压力、速度等,并通过图形化界面进行显示和控制。
(2)数据采集与处理:用于采集现场设备的数据,并进行处理、分析和存储。
(3)人机交互:用于实现操作员与设备之间的交互,例如报警、故障诊断、参数设置等。
4.WinCC 函数手册的优点WinCC 函数手册具有以下优点:(1)易于学习和使用:提供了丰富的函数库,工程师可以快速上手并进行开发。
(2)功能强大:涵盖了工业自动化领域的各种需求,可以应对复杂的应用场景。
(3)灵活性高:可以根据实际需求进行灵活配置,以满足不同工程项目的需要。
(4)稳定性好:经过了长期的实际应用和优化,具有较高的稳定性和可靠性。
5.WinCC 函数手册的未来发展随着工业自动化领域的不断发展,WinCC 函数手册也将不断完善和升级,以满足更高的性能和功能需求。
WINCC函数
1.切换画面按钮 (2)2.设定BIT变量当前值 (2)3.取当前登陆用户 (2)4.取硬盘剩余容量 (3)5.以图像模式显示(灯、钮)等 (5)6.自定义对象 (6)7.OK返回值 (19)8.小键盘 (19)9.PID传递页面C脚本 (23)10.将变量B的值赋给变量A(无符号16位) (25)11.乒乓键 (26)12.C脚本、脉冲延时 (27)13.CONFIGURATION TOOOL (28)14.用“笔组”实现一张页面做趋势 (28)15.滑竿,SLIDER CONTROL的使用 (34)16.切换语言 (35)1.切换画面按钮#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {SetPictureName(lpszPictureName,"PictureWindow1","HS_MODE.Pdl"); //设定PictureWindow1填充为页面HS_MODE.Pdl SetTagChar("TT","操作模式"); //Return-Type: BOOL //设定字符串变量TT当前值为“操作模式”以显示页眉}2.设定BIT变量当前值SetTagBit("N3_VALVE_RESET",0);3.取当前登陆用户 @CurrentUser4.取硬盘剩余容量5.以图像模式显示(灯、钮)等智能对象\状态显示选透明颜色6.自定义对象C动作#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {Valve(lpszPictureName,lpszObjectName); //Return-Type: void}全局脚本\项目函数void Valve(char *lpszPictureName, char *lpszObjectName){char* Tagname = GetPropChar(lpszPictureName, lpszObjectName, "ObjectName");//设TAGNAME当前值为N3_HS_Achar* TitleName = GetPropChar(lpszPictureName, lpszObjectName, "TITLE");//设TITLENAME当前值为热风炉自动char* Name = GetPropChar(lpszPictureName, lpszObjectName, "PICNAME");//设NAME当前值为QD_BUTTONchar* DIS = GetPropChar(lpszPictureName, lpszObjectName, "DIS");//设DIS是否显示,本变量空用于下面的阀函数static BOOL visble; //声明BOOL量VISBLElong lLeft ; //声明常整数1LEFT,用于弹出框的左上角long lTop;BOOL Bool=TRUE; //声明BOOL量BOO1为真LINKINFO linkinfo; //Structure definition结构定义visble=TRUE; //设VISBLE当前值为真//lLeft =599;//lTop=327;lLeft =GetLeft(lpszPictureName,lpszObjectName)+50; //1LEFT当前值为当前页面的当前对象的左坐标+50,注意不是VALUE的值而是当前对象按钮“热风炉自动”lTop=GetTop(lpszPictureName,lpszObjectName); //1TOP当前值为当前页面的当前对象的上坐标if (lLeft <20) //限制坐标范围{lLeft =20;}if (lLeft >1240){lLeft =1240;}if (lTop>200){lTop=200;}if (lTop<20){lTop=20;}SetLeft(lpszPictureName,"value",lLeft); //设定当前页面中画面窗口VALUE的左上角坐标SetTop(lpszPictureName,"value",lTop);SetPictureName(lpszPictureName,"value",".PDL"); //设定当前页面中画面窗口VALUE填充页面为.PDLPDLRTSetPropEx(0,lpszPictureName,"value","Visible",VT_BOOL,&visble,NULL,NULL,0,NULL,NULL); //设定 VALUE的一些属性,帮助里未查到,待查SetPropChar(lpszPictureName,"value","CaptionText",TitleName); //设定VALUE的CAPTION TEXT为热风炉自动SetPropChar(lpszPictureName,"value","TagPrefix",Tagname); //为VALUE中所有变量增加前缀N3_HS_ASetPropChar(lpszPictureName,"value","PictureName",Name); //为VALUE填充页面为QD_BUTTONSetPropChar(Name,"text","Text",Tagname);//为当前页面名字叫TEXT的TEXT属性设定为TAGNAME的当前值,本项目用于阀函数SetPropChar(Name,"Button4","Visible",DIS);//为当前页面名字叫BUTTON4的VISIBLE属性设定为DIS的当前值,本项目用于阀函数,下同SetPropChar(Name,"Button5","Visible",DIS);SetPropChar(Name,"Button10","Visible",DIS);SetPropChar(Name,"Button11","Visible",DIS);}画面窗口定义如下:QD_BOTTON页面定义如下:其中确定按钮定义如下:动作按下置1,抬起置0取下按钮为关闭当前窗口阀门自定义对象C脚本#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {Valve(lpszPictureName,lpszObjectName); //Return-Type: void}页面VALVE_FUNCTION_STAME如下其中设备名称定义为TEXT,取的即为OBJECTNAME,本例中为N3_SV101 其中远程等状态灯显示为结构变量后缀 .XXX其中打开、关闭等按钮(未知是否需要确定取消),本例中是这样实现的,以打开按钮为例:实际上本例中打开按钮有2个重叠在一起下面的打开按钮(黑色边框)控制实际的IO后缀:上面的打开按钮的可见性由DIS变量的当前值确定,若DIS为真,则蓝色边框打开按钮可见,蓝打开按钮(BOTTON4)控制PIC1可见8 PIC1填充为OPEN页面OPEN页面如下:其中确定按钮为BOTTON8,因所有变量前缀已赋值,则确定按钮仍连接实际IO后缀,同黑色打开按钮。
winccc函数用法大全(WINCCCfunctionDaquan)
wincc c函数用法大全(WINCC C function Daquan)Function name: stpcpyFunction: copy one string to anotherUsage: char, *stpcpy (char, *destin, char, *source); Procedure example:#include <stdio.h>#include <string.h>Int main (void){Char string[10];Char *str1 = "abcdefghi"";Stpcpy (string, STR1);Printf ("%s\n", string);Return 0;}Function name: strcatFunction: string concatenation functionUsage: char, *strcat (char, *destin, char, *source); Procedure example:#include <string.h>#include <stdio.h>Int main (void){Char destination[25];Char, *blank = "", *c = "C++", *Borland = "Borland""; Strcpy (destination, Borland);Strcat (destination, blank);Strcat (destination, C);Printf ("%s\n", destination);Return 0;}Function name: strchrFunction: finding the first match of a given character in a string \Usage: char, *strchr (char, *str, char, C);Procedure example:#include <string.h>#include <stdio.h>Int main (void){Char string[15];Char, *ptr, C ='r';Strcpy (string, This, is, a, string);PTR = strchr (string, C);If (PTR)Printf (The, character,%c, is, at,%d\n, position:, C,ptr-string);ElsePrintf ("The character was not found\n");Return 0;}Function name: StrCmpFunction: string comparisonUsage: int, StrCmp (char, *str1, char, *str2);Look at the Asic code, str1>str2, return value > 0; two strings equal, return 0Procedure example:#include <string.h>#include <stdio.h>Int main (void){Char, *buf1 = AAA, *buf2 = BBB, *buf3 = ccc";Int ptr;PTR = StrCmp (buf2, buf1);If (PTR > 0)Printf ("buffer 2, is, greater, than, buffer, 1\n");ElsePrintf ("buffer 2, is, less, than, buffer, 1\n");PTR = StrCmp (buf2, buf3);If (PTR > 0)Printf ("buffer 2, is, greater, than, buffer, 3\n");ElsePrintf ("buffer 2, is, less, than, buffer, 3\n");Return 0;}Function name: strncmpiFunction: compare a part of a string with another string, case or caseUsage: int, strncmpi (char, *str1, char, *str2, unsigned, maxlen);Procedure example:#include <string.h>#include <stdio.h>Int main (void){Char *buf1 = "BBB", *buf2 = "BBB"";Int ptr;PTR = strcmpi (buf2, buf1);If (PTR > 0)Printf ("buffer 2, is, greater, than, buffer, 1\n"); If (PTR < 0)Printf ("buffer 2, is, less, than, buffer, 1\n");If (PTR = 0)Printf ("buffer 2, equals, buffer, 1\n");Return 0;}Function name: strcpyFunction: String copyUsage: char, *strcpy (char, *str1, char, *str2);Procedure example:#include <stdio.h>#include <string.h>Int main (void){Char string[10];Char *str1 = "abcdefghi"";Strcpy (string, STR1);Printf ("%s\n", string);Return 0;}Function name: strcspnFunction: find the first segment of a given character set ina stringUsage: int, strcspn (char, *str1, char, *str2);Procedure example:#include <stdio.h>#include <string.h>#include <alloc.h>Int main (void){char * string1 = "1234567890";char * string2 = "747dc8";int length;length = strcspn (string1, string2);printf ("where the character strings intersect ice position% d \ n", length);return 0;}函数名: strdup功能: 将串拷贝到新建的位置处用法: char * strdup (char * str);程序例:# include stdio.h > <# include string.h > <# include alloc.h > <int main (void){char * tab _ str, * string = "abcde"; tab _ str = strdup (string);printf ("% s" n "tab _ str);free (dup _ str);return 0;}函数名: stricmp功能: 以大小写不敏感方式比较两个串用法: int stricmp (char * str1, char * str2);程序例:# include string.h > <# include stdio.h > <int main (void){char * buf1 = "bbb" * buf2 = "bbb";int ptr;ptr = stricmp (buf2, buf1);if (ptr > 0).printf ("buffer 2 is greater than buffer 1 \ n"); if (ptr < 0)printf ("buffer 2 ice less than buffer 1 \ n");if (ptr = = 0)printf ("buffer 2 equals buffer 1 \ n"); return 0;}函数名: strerror功能: 返回指向错误信息字符串的指针用法: char * strerror (int errnum);程序例:# include stdio.h > <# include errno.h > <int main (void){char * buffer;buffer = strerror (errno);printf ("error:% s% n" buffer);return 0;}函数名: strcmpi功能: 将一个串与另一个比较, 不管大小写用法: int strcmpi (char * str1, char * str2);程序例:# include string.h > <# include stdio.h > <int main (void){char * buf1 = "bbb" * buf2 = "bbb";int ptr;ptr = strcmpi (buf2, buf1);if (ptr > 0).printf ("buffer 2 is greater than buffer 1 \ n"); if (ptr < 0)printf ("buffer 2 ice less than buffer 1 \ n");if (ptr = = 0)printf ("buffer 2 equals buffer 1 \ n");return 0;}函数名: strncmp功能: 串比较用法: int strncmp (char * str1 str2, char *, int maxlen); 程序例:# include string.h > <# include stdio.h > <int main (void){char * buf1 = "aaabbb" * buf2 = "bbbccc" * buf3 = "ccc"; int ptr;ptr = strncmp (buf2, buf1,3);if (ptr > 0).printf ("buffer 2 is greater than buffer 1 \ n");elseprintf ("buffer 2 ice less than buffer 1 \ n");ptr = strncmp (buf2, buf3,3);if (ptr > 0).printf ("buffer 2 is greater than buffer 3 \ n");elseprintf ("buffer 2 ice less than buffer 3 \ n");return (0);}函数名: strncmpi功能: 把串中的一部分与另一串中的一部分比较, 不管大小写用法: int strncmpi (char * str1, char * str2);程序例:# include string.h > <# include stdio.h > <int main (void){char * buf1 = "bbbccc" * buf2 = "bbbccc";int ptr;ptr = strncmpi (buf2, buf1,3);if (ptr > 0).printf ("buffer 2 is greater than buffer 1 \ n"); if (ptr < 0)printf ("buffer 2 ice less than buffer 1 \ n"); 如果(ptr = = 0)printf(“缓冲2等于缓冲1 \n”);返回0;}函数名:strncpy功能:串拷贝用法:char * strncpy(char *德斯坦,源字符串,整数maxlen);程序例:#包括< stdio. h >#包括<字符串。
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".将系统函数“InvertBi t”分配给“更改”事件.该系统函数连接到外部变量“Tag1”.在运行期间,这会导致无法预料得行为。
2、InvertBitInTag应用:对给定变量中得位取反:如果变量中得位为值 1(真),它将被设置为0(假)。
如果变量中得位为值 0(假),它将被设置为 1(真).在改变了给定位之后,系统函数将整个变量传送回PLC。
不检查此过程期间变量中就是否有其它位发生更改。
