codesys程序 点击:849 | 回复:1



一脸不屑

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2013年6月03日
发表于:2013-06-04 20:07:18
楼主

请问哪位大神有codesys编的ST语言的一些简单实例啊,除了交通灯,最好带可视化的,小弟新手,求教育!




miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 3065回
  • 年度积分:0
  • 历史总积分:12421
  • 注册:2008年9月18日
发表于:2013-06-04 21:01:29
1楼

FUNCTION_BLOCK GetPercent    //  获得百分比 ,FB 功能块;

VAR_INPUT
 InPV:DINT;
 InMin:DINT;
 InStart:DINT;
 InEnd:DINT;
 InBasePercent:DINT;
END_VAR

 

VAR_IN_OUT
 iDiff:INT;
 dDiff:DINT;
 fDiff:REAL;
END_VAR

 

VAR_OUTPUT
 ENO:BOOL;
 OutdPercent:DINT;
 OutfPercent:REAL;
END_VAR


VAR
 dArea:DINT;
 fRatio:REAL;
 fPV:REAL;
 fResult:REAL;
 dtDiff:DINT;
END_VAR

 

//    ------------------------------------  code  segment ----------------------

dArea:=InEnd-InMin;
fRatio:=(DINT_TO_REAL(InBasePercent))/(DINT_TO_REAL(dArea));
IF InPV<=InStart THEN
 fPV:=DINT_TO_REAL(InStart)*fRatio;
 OutfPercent:=fPV;
 OutdPercent:=REAL_TO_DINT(fPV);
 iDiff:=0;
 dDiff:=0;
 fDiff:=0;
ELSIF InPV>=InEnd THEN
 fPV:=DINT_TO_REAL(InEnd)*fRatio;
 OutfPercent:=fPV;
 OutdPercent:=REAL_TO_DINT(fPV);
 iDiff:=DINT_TO_INT(dArea);
 dDiff:=dArea;
 fDiff:=DINT_TO_REAL(dArea);
ELSE
 fPV:=DINT_TO_REAL(InPV);
 fResult:=fPV*fRatio;
 OutdPercent:=REAL_TO_DINT(fResult);
 OutfPercent:=fResult;
 dtDiff:=InPV-InStart;
 iDiff:=DINT_TO_INT(dtDiff);
 dDiff:=dtDiff;
 fDiff:=DINT_TO_REAL(dtDiff);
END_IF

 

(*******************************************     调用实例 ××××××××××××××××××)

 

fbPerTest(InPV:=100,InMin:=0,InStart:=0,InEnd:=1000,InBasePercent:=100,iDiff:=fbp_In_OutiNum,
        dDiff:=fbp_In_OutdNum,fDiff:=fbp_In_OutfNum,ENO=>fbp_OutENO,OutdPercent=>fbp_Outdpercent,OutfPercent=>fbp_Outfpercent);


热门招聘
相关主题

官方公众号

智造工程师