WinCC采用C脚本计算累积量(static)

WinCC 全局动作中计算累积量时,声明变量前必须加修饰词static充当全局变量。

static double useJ1;
static double ogtJ1;
static double ohtJ1;

#include "apdefap.h"

int gscAction( void )
{
//燃烧
//useJ = allJ + (OGT - OHT) * (OMQ + OKQ) / 3600;//吸收的热量
//ogtJ = ogtJ + OGT * (OMQ + OKQ) / 3600;//总
//ohtJ = ogtJ - useJ;//损失掉的热量
//rxl = useJ/ogtJ;

static double useJ1;
static double ogtJ1;
static double ohtJ1;
double rxl1,szJ1,syJ1,sft1,syt1,k1;

static double useJ2;
static double ogtJ2;
static double ohtJ2;
double rxl2,szJ2,syJ2,sft2,syt2,k2;

static double useJ3;
static double ogtJ3;
static double ohtJ3;
double rxl3,szJ3,syJ3,sft3,syt2,k3;



BOOL flag1_1,flag1_2,flag1_3;
BOOL flag2_1,flag2_2,flag2_3;
BOOL flag3_1,flag3_2,flag3_3;


flag1_1=GetTagWord("AUTO_1_1");
flag1_2=GetTagWord("DQL1RS_1");
flag1_3=GetTagWord("DQL1SF_1");

flag2_1=GetTagWord("AUTO_2_1");
flag2_2=GetTagWord("DQL2RS_1");
flag2_3=GetTagWord("DQL2SF_1");

flag3_1=GetTagWord("AUTO_3_1");
flag3_2=GetTagWord("DQL3RS_1");
flag3_3=GetTagWord("DQL3SF_1");


//1#
if (/*flag1_1==1&&*/flag1_2==1)
{
	useJ1 = useJ1 + (GetTagDouble("OGT1_1") - GetTagDouble("OHT1_1")) * (GetTagDouble("OMQ1_1") + GetTagDouble("OKQ1_1")) / 3600;//吸收热量
	ogtJ1 = ogtJ1 + GetTagDouble("OGT1_1") * (GetTagDouble("OMQ1_1") + GetTagDouble("OKQ1_1")) / 3600;//总热量
	ohtJ1 = ogtJ1 - useJ1;//损失掉的热量
	rxl1 = useJ1/(ogtJ1+1);

}
else
{
	useJ1 = 0;
	ogtJ1 = 0;
	ohtJ1 = 0;
	rxl1 = 0;
}

SetTagDouble("useJ1",useJ1);
SetTagDouble("ogtJ1",ogtJ1);
SetTagDouble("ohtJ1",ohtJ1);
SetTagDouble("rxl1",rxl1);

//printf("rgmodel = %4.4f—%4.4f—%4.4f—%4.4f\r\n",useJ1, ogtJ1,ohtJ1, useJ1/(ogtJ1+1));


//2#
if (/*flag2_1==1&&*/flag2_2==1)
{
	useJ2 = useJ2 + (GetTagDouble("OGT2_1") - GetTagDouble("OHT2_1")) * (GetTagDouble("OMQ2_1") + GetTagDouble("OKQ2_1")) / 3600;//吸收热量
	ogtJ2 = ogtJ2 + GetTagDouble("OGT2_1") * (GetTagDouble("OMQ2_1") + GetTagDouble("OKQ2_1")) / 3600;//总热量
	ohtJ2 = ogtJ2 - useJ2;//损失掉的热量
	rxl2 = useJ2/(ogtJ2+1);

}
else
{
	useJ2 = 0;
	ogtJ2 = 0;
	ohtJ2 = 0;
	rxl2 = 0;
}

SetTagDouble("useJ2",useJ2);
SetTagDouble("ogtJ2",ogtJ2);
SetTagDouble("ohtJ2",ohtJ2);
SetTagDouble("rxl2",rxl2);

//printf("rgmodel = %4.4f—%4.4f—%4.4f—%4.4f\r\n",useJ2, ogtJ2,ohtJ2, rxl2);

//3#
if (/*flag3_1==1&&*/flag3_2==1)
{
	useJ3 = useJ3 + (GetTagDouble("OGT3_1") - GetTagDouble("OHT3_1")) * (GetTagDouble("OMQ3_1") + GetTagDouble("OKQ3_1")) / 3600;//吸收热量
	ogtJ3 = ogtJ3 + GetTagDouble("OGT3_1") * (GetTagDouble("OMQ3_1") + GetTagDouble("OKQ3_1")) / 3600;//总热量
	ohtJ3 = ogtJ3 - useJ3;//损失掉的热量
	rxl3 = useJ3/(ogtJ3+1);

}
else
{
	useJ3 = 0;
	ogtJ3 = 0;
	ohtJ3 = 0;
	rxl3 = 0;
}

SetTagDouble("useJ3",useJ3);
SetTagDouble("ogtJ3",ogtJ3);
SetTagDouble("ohtJ3",ohtJ3);
SetTagDouble("rxl3",rxl3);

//printf("rgmodel = %4.4f—%4.4f—%4.4f—%4.4f\r\n",useJ3, ogtJ3,ohtJ3, rxl3);

/*
if (flag1_3==1)
{
	k1=1;
	szJ1 = k1 * szJ1 + GetTagDouble("OGT1_1") * GetTagDouble("SFQ1_1") / 3600;//送走的热量
	syJ1 = GetTagDouble("ogtJ1") - szJ1;//剩余的热量
	SetTagDouble("szJ1",szJ1);
	SetTagDouble("syJ1",syJ1);

}
*/

//送风
//szJ = k * szJ + OGT * SFQ / 3600;//送走的热量
//syJ = ogtJ - szJ;//剩余的热量
//sft = (OHTb - OHTe)/((OHT[0] - OHT[9])/10);//送风时间
//syt = (OHT - OHTe)/((OHT[0] - OHT[9])/10);//剩余送风时间

return 0; 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "WinCC-C脚本大全"是指WinCC软件中使用的C脚本的完整集合。以下是WinCC-C脚本大全的主要内容: 1. 脚本语法:WinCC-C脚本是基于C语言的,包含常见的C语法,如变的声明、循环、条件语句等。 2. 运算符:WinCC-C脚本支持常见的数学运算符,如加减乘除、赋值运算符、逻辑运算符等。 3. 变和数组:脚本允许创建和使用变和数组来存储数据,方便读写和处理数据。 4. 函数和过程:可以定义自定义函数和过程来实现特定的功能,提高代码的复用性和可维护性。 5. 数据读写:脚本提供了读写数据的函数,可以读取和写入WinCC系统中的数据点和标记,方便进行数据处理和控制。 6. 报警处理:脚本允许对报警进行处理,如生成报警记录、发送报警通知等。 7. 事件处理:脚本可以响应WinCC系统中的事件,如按键事件、触发事件等,从而执行特定的操作。 8. 字符串处理:脚本支持字符串操作,如连接、切割、比较等,方便对文本数据进行处理和分析。 9. 时间处理:脚本提供了时间函数,可以获取系统时间、延时等,方便进行时间相关的操作。 10. 图形对象控制:脚本可以控制和操作WinCC系统中的图形对象,如显示、隐藏、改变位置和大小等。 总之,WinCC-C脚本大全提供了丰富的功能和工具,可以帮助用户实现更灵活、高效的自动化控制和数据处理操作。通过熟练掌握脚本语法和函数库,用户可以根据自己的需求编写个性化的脚本,提升WinCC系统的功能和性能。 ### 回答2: "WinCC-C脚本大全"是指WinCC-C编程语言中的所有功能和特性的详尽指南。WinCC-C是西门子WinCC软件的编程语言,用于开发和定制人机界面(HMI)应用程序。以下是WinCC-C脚本中一些常见的功能和特性: 1. 变和数据类型:WinCC-C支持各种数据类型,如整数、浮点数、字符串、数组等。它还允许定义和操作变,如赋值、比较和运算。 2. 事件处理:WinCC-C脚本能够捕捉和处理各种事件,如按键、鼠标点击、变值改变等。通过编写响应的事件处理函数,可以实现特定的行为和操作。 3. 数据读写:WinCC-C脚本允许对数据进行读写操作,包括从变读取数据、将数据写入变、从数据库读取数据等。这使得应用程序能够与外部系统进行数据交互。 4. 图形绘制:WinCC-C脚本提供了丰富的绘图函数,可用于在HMI界面上创建图形元素,如线条、矩形、圆形、文本等。通过这些函数,可以实现界面的美化和定制。 5. 报警管理:WinCC-C脚本具有丰富的报警管理功能,可以监测变的状态,并触发相应的警报。开发人员可以编写脚本来定义警报条件和动作。 6. 数据处理:WinCC-C脚本提供了一系列数据处理函数,用于对变进行加工和转换。这些函数可以实现统计、过滤、排序、格式化等操作,方便了数据的处理和分析。 7. 通讯功能:WinCC-C脚本支持与PLC和其他外部设备进行通讯,通过编写脚本,可以实现与外部设备的数据交换和控制。 总而言之,"WinCC-C脚本大全"是指WinCC-C编程语言中各种功能和特性的详尽指南,通过学习和使用这些功能,开发人员可以定制和扩展WinCC应用程序,实现更加灵活和个性化的HMI界面。 ### 回答3: WinCC-C脚本大全是指为了实现自动化控制以及数据处理而编写的WinCC-C脚本的完整集合。WinCC-C脚本是西门子公司开发的一种用于编写自动化控制脚本的编程语言,它可以与WinCC进行集成,用于灵活配置和控制自动化过程。 在WinCC-C脚本大全中,包含了丰富的脚本示例和功能模块,可以帮助工程师快速实现各种自动化控制任务。脚本示例可以包括但不限于以下内容: 1. 界面控制:通过脚本实现按钮、输入框、复选框等控件的事件处理和状态控制,实现界面与自动化过程的交互。 2. 数据处理:通过脚本实现数据采集、转换、计算等处理,使得实时数据能够被准确地分析和显示。 3. 报警处理:通过脚本实现报警条件的判断和报警信息的处理,提高系统的可靠性和安全性。 4. 历史数据记录:通过脚本实现历史数据的记录和查询,方便工程师进行数据分析和故障诊断。 5. 资源管理:通过脚本实现对设备和资源的管理,包括设备状态监控、资源分配等。 6. 任务调度:通过脚本实现定时任务的调度和执行,提高系统的自动化程度和效率。 通过研究和应用WinCC-C脚本大全中的示例和功能模块,工程师可以根据具体的自动化需求快速构建和优化自动化控制系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨铮...

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

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

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

打赏作者

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

抵扣说明:

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

余额充值