回复:请帮忙解读老外程序,谢谢!

天枰

  • 帖子

    315
  • 精华

    10
  • 被关注

    15

论坛等级:侠士

注册时间:2007-08-09

普通 普通 如何晋级?

发布于 2011-08-01 11:30:59

9楼

不知道和这个有多大区别
VAR_TEMP
Temp11:REAL;
Temp12:REAL;
Temp13:REAL;
Temp14:REAL;
END_VAR
VAR
Index:INT;
Data:STRUCT
STAT2:BOOL;
STAT3:REAL;
STAT4:REAL;
STAT5:REAL;
STAT6:REAL;
STAT7:REAL;
STAT8:REAL;
STAT9:REAL;
END_STRUCT;

END_VAR

Index:=Index+1;
IF index >16 THEN
Index:=1;
END_IF;
IF ("DBint_FlowMe".DBD[(Index-1)*4+832] <>0 )THEN
Temp14 ="DBint_FlowMe".DBD[(Index-1)*4+896]/ "DBint_FlowMe".DBD[(Index-1)*4+832];

CASE Index OF
1:
temp11:=DINT_TO_REAL((INT_TO_DINT("Flowmeter_A1")))* 9.042245e-005;
2:
temp11:=DINT_TO_REAL((INT_TO_DINT("Flowmeter_A2")))* 9.042245e-005;
3:
temp11:=DINT_TO_REAL((INT_TO_DINT("Flowmeter_A3")))* 9.042245e-005;
4:
temp11:=DINT_TO_REAL((INT_TO_DINT("Flowmeter_B")))* 2.531829e-005;
END_CASE;
Temp12 := "DBint_FlowMe".DBD[(Index-1)*4+448];

DID[2] := "DBint_FlowMe".DBD[(Index-1)*28+1024];
DID[6] := "DBint_FlowMe".DBD[(Index-1)*28+1024+4];
DID[10] := "DBint_FlowMe".DBD[(Index-1)*28+1024+8];
DID[14] := "DBint_FlowMe".DBD[(Index-1)*28+1024+12];
DID[18] := "DBint_FlowMe".DBD[(Index-1)*28+1024+16];
Data.STAT8:="DBint_FlowMe".DBD[(Index-1)*28+1024+20];
Data.STAT9:="DBint_FlowMe".DBD[(Index-1)*28+1024+24];
Temp13:=temp11;
"DBint_FlowMe".[(Index-1)*28+1044]:=("DBint_FlowMe".DBD 1476+5)*Temp12/100;
/*从这里是输入参数传递,写在调用函数中
DB101.DBW0:=Index;
DBX2.0:= NOT Data.STAT2;
DBD4:=Temp13;
DBD8:=Temp12;
DBD12:=Data.STAT3;
DBD16:=Data.STAT4;
DBD20:=Data.STAT5;
DBD24:=Data.STAT6;
DBW28:=Data.STAT7;
DBD30:=Data.STAT8;
DBD34:=-Data.STAT8;
*/参数传递到这里结束
"FB_PID_FLOW".db101(Index:=Index,In1:=NOT Data.STAT2,
In2:=Temp13,
IN3:=Temp12,
IN4 :=Data.STAT3,
IN5 :=Data.STAT4,
IN6 :=Data.STAT5,
IN7 :=Data.STAT6,
IN8 :=Data.STAT7,
IN9 :=Data.STAT8,
IN10 :=-Data.STAT8,
OUT11:=DID[[30]); //这一行转换的不正确有点问题
"DBint_FlowMe".DBD[(Index-1)*4+960]:=OUT11*Temp14;
// 程序这里交叉了,不知道是什么原因,看着像上数据滤波程序 DID[30]:=Out11;
"DBint_FlowMe".DBD[(Index-1)*4+512]:=Temp13;
"DBint_PlcToPc".DBD[(Index-1)*4+196]:= REAL_TO_DINT(Temp13*1000.0);
"DBint_FlowMe".DBx[Index+11871]:=(DB101.OUT11 >= "DBint_FlowMe".DBD[(Index-1)*28+1044];
END_IF;
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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