关于全局脚本运行的问题

已锁定

beyondfutrue

  • 帖子

    3
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2009-06-14

普通 普通 如何晋级?

关于全局脚本运行的问题

379

2

2009-06-14 17:19:25

近日做一个PLC项目时用C语言写了个脚本发现运行起来后整个WINCC都变得不流畅了,把改脚本取消激活WINCC马上就正常了。请高手帮忙解决下!!!!

WINCC版本:6.02;通过OPC通讯连接了一个(V1.0 PC Access SP3)200的PLC;

该脚本内容如下:
#include "apdefap.h"

int gscAction( void )
{
int i,k;
float bcl[4][9];
float bcl1[4][9];
float temp;
int a,b,time_m,time_d,group,file_ptr[6];
int i,j;
FILE *fp,*fp1;
# pragma code("kernel32.dll");
void GetLocalTime(SYSTEMTIME *lpst);
# pragma code();

SYSTEMTIME MYTime;
GetLocalTime(&MYTime);
time_m = MYTime.wMonth;
time_d = MYTime.wDay;
if(GetTagBit("BAN_1")) {group=0;}
else if(GetTagBit("BAN_2")) {group=1;}
else if(GetTagBit("BAN_3")) {group=2;}

a = (time_m-1)*128+(time_d-1)*4;//某月某日数据开始
b = (time_m-1)*128+124;//某月结束时月累计数据的开始

file_ptr[0] = (a+group)*36;//某月某日某班数据的开始
file_ptr[1] = (a+3)*36;//某备累计数据的开始(3班)

if(GetTagWord("DAY_num")!=GetTagWord("time_d"))
{
SetTagFloat("DAYCL_1_1",0);SetTagFloat("DAYCL_1_2",0);SetTagFloat("DAYCL_1_3",0);SetTagFloat("DAYCL_1_4",0);
SetTagFloat("DAYCL_1_5",0);SetTagFloat("DAYCL_1_6",0);SetTagFloat("DAYCL_1_7",0);SetTagFloat("DAYCL_1_8",0);
SetTagFloat("DAYCL_2_1",0);SetTagFloat("DAYCL_2_2",0);SetTagFloat("DAYCL_2_3",0);SetTagFloat("DAYCL_2_4",0);
SetTagFloat("DAYCL_2_5",0);SetTagFloat("DAYCL_2_6",0);SetTagFloat("DAYCL_2_7",0);SetTagFloat("DAYCL_2_8",0);
SetTagFloat("DAYCL_3_1",0);SetTagFloat("DAYCL_3_2",0);SetTagFloat("DAYCL_3_3",0);SetTagFloat("DAYCL_3_4",0);
SetTagFloat("DAYCL_3_5",0);SetTagFloat("DAYCL_3_6",0);SetTagFloat("DAYCL_3_7",0);SetTagFloat("DAYCL_3_8",0);
SetTagWord("DAY_num",GetTagWord("time_d"));
}

bcl[0][0] = GetTagFloat("DAYCL_1_1");
bcl[0][1] = GetTagFloat("DAYCL_1_2");
bcl[0][2] = GetTagFloat("DAYCL_1_3");
bcl[0][3] = GetTagFloat("DAYCL_1_4");
bcl[0][4] = GetTagFloat("DAYCL_1_5");
bcl[0][5] = GetTagFloat("DAYCL_1_6");
bcl[0][6] = GetTagFloat("DAYCL_1_7");
bcl[0][7] = GetTagFloat("DAYCL_1_8");

bcl[1][0] = GetTagFloat("DAYCL_2_1");
bcl[1][1] = GetTagFloat("DAYCL_2_2");
bcl[1][2] = GetTagFloat("DAYCL_2_3");
bcl[1][3] = GetTagFloat("DAYCL_2_4");
bcl[1][4] = GetTagFloat("DAYCL_2_5");
bcl[1][5] = GetTagFloat("DAYCL_2_6");
bcl[1][6] = GetTagFloat("DAYCL_2_7");
bcl[1][7] = GetTagFloat("DAYCL_2_8");

bcl[2][0] = GetTagFloat("DAYCL_3_1");
bcl[2][1] = GetTagFloat("DAYCL_3_2");
bcl[2][2] = GetTagFloat("DAYCL_3_3");
bcl[2][3] = GetTagFloat("DAYCL_3_4");
bcl[2][4] = GetTagFloat("DAYCL_3_5");
bcl[2][5] = GetTagFloat("DAYCL_3_6");
bcl[2][6] = GetTagFloat("DAYCL_3_7");
bcl[2][7] = GetTagFloat("DAYCL_3_8");

bcl[3][0] = bcl[0][0] + bcl[1][0] + bcl[2][0];
bcl[3][1] = bcl[0][1] + bcl[1][1] + bcl[2][1];
bcl[3][2] = bcl[0][2] + bcl[1][2] + bcl[2][2];
bcl[3][3] = bcl[0][3] + bcl[1][3] + bcl[2][3];
bcl[3][4] = bcl[0][4] + bcl[1][4] + bcl[2][4];
bcl[3][5] = bcl[0][5] + bcl[1][5] + bcl[2][5];
bcl[3][6] = bcl[0][6] + bcl[1][6] + bcl[2][6];
bcl[3][7] = bcl[0][7] + bcl[1][7] + bcl[2][7];

for(i=0;i<4;i++)
{
bcl[i][8] = 0;
for(j=0;j<8;j++)
{
bcl[i][8] += bcl[i][j];
}
}
temp = 0;
fp = fopen("e:\\cl_data.dat", "r+b");
if( fp == NULL )
{
fp = fopen("e:\\cl_data.dat", "wb");
for(i=0; i<30000; i++)
fwrite(&temp, sizeof(float), 1, fp);
fclose(fp);
fp = fopen("e:\\cl_data.dat", "r+b");
}
fseek(fp,file_ptr[0]*1L,0);
fwrite(bcl[group],sizeof(float),9,fp);
fseek(fp,file_ptr[1]*1L,0);
fwrite(bcl[3],sizeof(float),9,fp);
fclose(fp);
return 0;

}
个人感觉这样写的太复杂另求能把该程序写的更简单的方法,THANKS!!!!
关于全局脚本运行的问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33265条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。