步科M4414T关于使用宏的时候,宏运行速度非常慢的问题 点击:1423 | 回复:3



artemis_moon

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 2回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2015年5月16日
发表于:2015-09-12 20:15:26
楼主

不知道大家在使用的时候有没有遇到这个问题,发现只要使用了宏,不管宏里面程序有多简单,运行速度都非常慢?我想问问大家有没有解决办法呢?多谢多谢啦。




工控-小夏

  • 精华:18帖
  • 求助:1118帖
  • 帖子:1373帖 | 411回
  • 年度积分:0
  • 历史总积分:3673
  • 注册:2015年3月11日
发表于:2015-09-14 10:08:59
1楼

是在什么情况下使用的呢?

artemis_moon

  • 精华:0帖
  • 求助:2帖
  • 帖子:3帖 | 2回
  • 年度积分:0
  • 历史总积分:17
  • 注册:2015年5月16日
发表于:2015-09-19 22:47:32
2楼

其实就是正常使用,我连了一台S7-200,然后做组合控制。 在屏幕上先进行几个回路的设定,然后就编写了一个宏,在宏里面去判断这几个回路是否符合组合规律,其实就是一些for循环和If判断,但是不知道为什么运行起来那么慢,大概要5~10秒中才能运行完,甚至更长,难道步科的屏幕都是这样吗?

下面是程序:

#include "macrotypedef.h"

#include "math.h"



int MacroEntry()

{

int i=0;

int j=0;

   unsigned int Order_Num[4]={M0,M1,M2,M3}; //顺控设定的数字

unsigned int Double_Ctrl[4]={M4,M5,M6,M7}; //双速设定的数字

int Flag_no_repeat=0;

Flag_Order=0;

Flag_S_D=0;

Flag_D_D=0;


S_1=0;

S_0=0;


//顺序控制

if(Order_Num[0]!=Order_Num[1]&&Order_Num[0]!=Order_Num[2]&&Order_Num[0]!=Order_Num[3]&&Order_Num[1]!=Order_Num[2]&&Order_Num[1]!=Order_Num[3]&&Order_Num[2]!=Order_Num[3]&&Order_Num[0]!=0&&Order_Num[1]!=0&&Order_Num[2]!=0&&Order_Num[3]!=0)

{

Flag_Order=1;

}

//单机双速控制

if(Double_Ctrl[0]!=Double_Ctrl[2]&&Double_Ctrl[0]!=0&&Double_Ctrl[1]==0&&Double_Ctrl[2]!=0&&Double_Ctrl[3]==0)

{

Flag_S_D=1;

}

//双机双速控制

if(Double_Ctrl[0]!=Double_Ctrl[1]&&Double_Ctrl[0]!=Double_Ctrl[2]&&Double_Ctrl[0]!=Double_Ctrl[3]&&Double_Ctrl[1]!=Double_Ctrl[2]&&Double_Ctrl[1]!=Double_Ctrl[3]&&Double_Ctrl[2]!=Double_Ctrl[3]&&Double_Ctrl[0]!=0&&Double_Ctrl[1]!=0&&Double_Ctrl[2]!=0&&Double_Ctrl[3]!=0)

{

Flag_D_D=1;

}


for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

{

if((Order_Num[i]==Double_Ctrl[j])&&Order_Num[i]!=0) //顺序控制和双速控制中有重复的数值,弹出重复界面

{

FLAG_S_1=0;

FLAG_S_1=1; //0->1 : 触发“重复界面”

S_1=1;

Flag_no_repeat=1;

break;

}

}

}

if(Flag_no_repeat==0)

{

for(i=0;i<4;i++)

for(j=i+1;j<4;j++)

{

if(Order_Num[i]==Order_Num[j]&&Order_Num[i]!=0)

{

FLAG_S_1=0;

FLAG_S_1=1; //0->1 : 触发“重复界面”

S_1=1;

Flag_no_repeat=1;

break;

}

}

}

if(Flag_no_repeat==0)

{

for(i=0;i<4;i++)

for(j=i+1;j<4;j++)

{

if(Double_Ctrl[i]==Double_Ctrl[j]&&Double_Ctrl[i]!=0)

{

FLAG_S_1=0;

FLAG_S_1=1; //0->1 : 触发“重复界面”

S_1=1;

Flag_no_repeat=1;

break;

}

}

}


if(Flag_no_repeat==0)

{

FLAG_S_0=0;

FLAG_S_0=1; //0->1 : 触发"有效界面”

S_0=1;

}

return 0;

}


江湖再见-余辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3351帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2015-09-20 10:00:00
3楼

楼主的脚本写的不错啊             


热门招聘
相关主题

官方公众号

智造工程师