WinCC项目函数之间相互调用

采用WinCC作为上位机框架进行开发工业控制界面,全局脚本中C-Editor进行开发工业控制模型。
我们用C#或者C++时,方法之间调用、类调用等等,比较灵活。其实WinCC和C#或者C++一样。 项目函数之间相互调用用法如下:

项目函数编写完成后,全部关闭,通过选项—>重新生成头文件
#include “AP_PBIB.H”
#include “APDEFAP.H”

在这里插入图片描述

必须加上以下头文件

#include "AP_PBIB.H"
#include "APDEFAP.H"

该项目函数添加上述头文件才能实现对其它项目函数进行调用

marst = aupedge(e> 0.20 && e<= 0.25 && ec> 0);
mbrst = bupedge(e> 0.25 && e<= 0.30 && ec> 0);
mcrst = cupedge(e> 0.30 && ec> 0);

mdrst = dupedge(e<-0.20 && e>=-0.25 && ec<0);
merst = eupedge(e<-0.25 && e>=-0.30 && ec<0);
mfrst = fupedge(e<-0.30 && ec< 0);
/*
e:蒸汽压力偏差
ec:蒸汽压力偏差变化率
cf:当前空气流量
krb:设定空燃比
manauto:手自动
*/
#include "AP_PBIB.H"
#include "APDEFAP.H"
double* aflowing_control(double e,double ec,double er,double ecr,double ur,double cf,double krb,double umin,double umidle,double umax,BOOL manauto)                        
{
	BOOL marst,mbrst,mcrst,mdrst,merst,mfrst;
	BOOL ma,mb,mc,md,me,mf;
	double result[2];
	double u;
	double ke;
	double kec;
	double ku;
	double egrad,ecgrad;
	int E,EC;//索引值
	double U;//
	double rule[17][13] = {   
		    { 5.4142,	 5.3557,	 5.3155,	 5.1658,	 5.0757,	 5.0188,	 4.7789,	 4.3334,	 3.8891,	 3.5692,	 3.1397,	 2.4440,	 1.9903,},
                { 5.3390,	 5.3338,	 5.2910,	 5.0465,	 4.5707,	 4.4888,	 4.2632,	 3.6773,	 3.3778,	 3.0630,	 2.5135,	 1.9192,	 1.4531,},
                { 5.3139,	 5.2791,	 5.2139,	 5.0194,	 4.5405,	 4.0300,	 3.8185,	 3.3822,	 2.6474,	 2.2449,	 1.8102,	 1.1916,	 0.6536,},
                { 5.1553,	 4.9028,	 4.8534,	 4.6484,	 4.1371,	 3.7538,	 3.4571,	 2.9699,	 2.2751,	 1.6242,	 1.0637,	 0.4119,	-0.0121,},
                { 4.9277,	 4.4331,	 4.2646,	 4.0716,	 3.5638,	 3.1049,	 2.7887,	 2.2806,	 1.6649,	 0.9845,	 0.3107,	-0.2975,	-0.8005,},
                { 4.9494,	 4.4634,	 3.9776,	 3.7124,	 3.2728,	 2.5335,	 1.9966,	 1.5649,	 0.8880,	 0.2396,	-0.3898,	-1.0639,	-1.5404,},
                { 4.4701,	 3.8909,	 3.5808,	 3.2882,	 2.7475,	 2.0981,	 1.4608,	 0.7897,	 0.1518,	-0.4716,	-1.1668,	-1.8093,	-2.2368,},
                { 3.9287,	 3.4818,	 2.8249,	 2.5070,	 2.0421,	 1.4297,	 0.7181,	 0.0750,	-0.5364,	-1.2412,	-1.8928,	-2.5119,	-3.0558,},
                { 3.5692,	 3.1437,	 2.4179,	 1.7464,	 1.3221,	 0.6340,	 0.0010,	-0.6322,	-1.3204,	-1.7452,	-2.4171,	-3.1426,	-3.5682,},
                { 3.0564,	 2.5122,	 1.8937,	 1.2419,	 0.5367,	-0.0740,	-0.7172,	-1.4292,	-2.0410,	-2.5059,	-2.8240,	-3.4812,	-3.9280,},
                { 2.2364,	 1.8089,	 1.1665,	 0.4713,	-0.1522,	-0.7900,	-1.4607,	-2.0980,	-2.7475,	-3.2881,	-3.5808,	-3.8908,	-4.4700,},
                { 1.5396,	 1.0627,	 0.3888,	-0.2404,	-0.8893,	-1.5659,	-1.9976,	-2.5338,	-3.2730,	-3.7126,	-3.9776,	-4.4634,	-4.9493,},
                { 0.7994,	 0.2967,	-0.3115,	-0.9854,	-1.6657,	-2.2814,	-2.7897,	-3.1058,	-3.5642,	-4.0721,	-4.2653,	-4.4331,	-4.9277,},
                { 0.0104,	-0.4135,	-1.0655,	-1.6251,	-2.2761,	-2.9712,	-3.4578,	-3.7548,	-4.1385,	-4.6492,	-4.8545,	-4.9039,	-5.1553,},
                {-0.6547,	-1.1931,	-1.8115,	-2.2462,	-2.6482,	-3.3829,	-3.8194,	-4.0303,	-4.5410,	-5.0203,	-5.2144,	-5.2796,	-5.3144,},
                {-1.4525,	-1.9183,	-2.5135,	-3.0627,	-3.3772,	-3.6778,	-4.2632,	-4.4886,	-4.5711,	-5.0468,	-5.2913,	-5.3340,	-5.3392,},
                {-1.9896,	-2.4432,	-3.1387,	-3.5683,	-3.8883,	-4.3322,	-4.7776,	-5.0178,	-5.0746,	-5.1652,	-5.3155,	-5.3557,	-5.4142}};
	 //
	double EM=8;      
	double ECM=6;           
	double UM=6;   
	//
	double em=er;//0.2;      
	double ecm=ecr;//0.05;           
	double um=ur;//300; 
	 
	marst = aupedge(e> 0.20 && e<= 0.25 && ec> 0);
	mbrst = bupedge(e> 0.25 && e<= 0.30 && ec> 0);
	mcrst = cupedge(e> 0.30 && ec> 0);

	mdrst = dupedge(e<-0.20 && e>=-0.25 && ec<0);
	merst = eupedge(e<-0.25 && e>=-0.30 && ec<0);
	mfrst = fupedge(e<-0.30 && ec< 0);
	printf("%d——%d——%d——%d——%d——%d\r\n", marst,mbrst,mcrst,mdrst,merst,mfrst); 

	if(e>=-0.20 && e<= 0.20) 
	{
	  	
	//
	ke = EM/em;
	kec = ECM/ecm;	
	ku = um/UM; 	
	egrad = (int)(ke*e);                                        
	if(egrad>EM)
		egrad=EM;
	if(egrad<-EM)
		egrad=-EM;
	E = (int)(egrad + EM);
	//
	ecgrad = (int)(kec*ec);
	if(ecgrad>ECM)
		ecgrad=ECM;
	if(ecgrad<-ECM)
		ecgrad=-ECM;
	EC = (int)(ecgrad + ECM);

	U = rule[E][EC];

	u = ku*U;
	}
	//
	else if (e> 0.20 && e<= 0.25 && marst==1)    
    		u =-umin;
	else if (e> 0.25 && e<= 0.30 && mbrst==1)    
		u =-umidle;
	else if (e>0.30 && mcrst==1)    
		u =-umax;
	else if (e<-0.20 && e>=-0.25 && mdrst==1)
   	 	u = umin;
	else if (e<-0.25 && e>=-0.30 && merst==1)
    		u = umidle;
	else if (e<-0.30 && mfrst==1)
    		u = umax;
	//
	else if (e> 0.20 && e<= 0.25 && marst==0)    
    		u = 0;
	else if (e> 0.25 && e<= 0.30 && mbrst==0)    
		u =-umidle;
	else if (e>0.30 && mcrst==0)    
		u =-umax;//u = 0;
	else if (e<-0.20 && e>=-0.25 && mdrst==0)
   	 	u = 0;
	else if (e<-0.25 && e>=-0.30 && merst==0)
    		u = 0;
	else if (e<-0.30 && mfrst==0)
    		u = umax;//u = 0;


	if(manauto == 1)
	{
		result[0] = cf + u; 	
	}
	else
	{
		result[0] = cf; 
	}

	result[1] = result[0]/krb;
return result; 
}

abcBoiler项目属于智能控制优化燃烧的锅炉项目,WinCC项目函数相互调用技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铮...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值