您正在浏览的页面需要登录,为了提高您的阅读体验,请在右上角登录您的账号!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IF smOnce THEN
uComScanID:=1;
END_IF;
bSpaceTime:=LDF(smAll,smTimer200ms) AND (mTestEn);
IF bSpaceTime THEN
IF uComScanID<4 THEN
uComScanID:=uComScanID+1;
ELSE
uComScanID:=1;
END_IF;
END_IF;
IF uPositionCmdAct=1 THEN
_bOut:=UINT2DINT(1,uPositionParam,_uwTemp);
//升降杆行程范围处理
IF uPositionAxisNm=1 OR uPositionAxisNm=2 THEN
IF uPositionParam<0 THEN
uPositionParam:=0;
ELSIF uPositionParam>cnElevateMaxDistanc THEN
uPositionParam:=cnElevateMaxDistanc;
END_IF;
END_IF;
//俯仰角度角度范围处理
IF uPositionAxisNm=3 OR uPositionAxisNm=4 THEN
IF uPositionParam<0 THEN
uPositionParam:=0;
ELSIF uPositionParam>cnMaxMoveAngle THEN
uPositionParam:=cnMaxMoveAngle;
END_IF;
END_IF;
IF uPositionAxisNm=1 THEN
uElevate1PositionCmd:=1;
_uwTemp:=_uwTemp*cnOneMmPulsCnt; //320是0.1mm
//uSetValueElevate1:=uPositionParam;
_bOut:=DINT2UDINT(1,_uwTemp,uSetValueElevate1);
ELSIF uPositionAxisNm=2 THEN
uElevate2PositionCmd:=1;
_uwTemp:=_uwTemp*cnOneMmPulsCnt; //320是0.1mm
//uSetValueElevate2:=uPositionParam;
_bOut:=DINT2UDINT(1,_uwTemp,uSetValueElevate2);
ELSIF uPositionAxisNm=3 THEN
uSteering1PositionCmd:=1;
//_bOut:=UINT2DINT(1,uPositionParam,_uwTemp);
_uwTemp:=(_uwTemp*cnEncodeValue)/cnOneRoundAngle;
_bOut:=DINT2UINT(1,_uwTemp,_uSteering1LogicValue);
/*
uSetValueSteering1:=_uSteering1LogicValue+uHomeValueSteering1;
IF uSetValueSteering1>cnEncodeValue THEN
uSetValueSteering1:=uSetValueSteering1-cnEncodeValue;
END_IF;
*/
IF uHomeValueSteering1>=_uSteering1LogicValue THEN
uSetValueSteering1:=uHomeValueSteering1-_uSteering1LogicValue;
ELSE
uSetValueSteering1:=cnEncodeValue-_uSteering1LogicValue+uHomeValueSteering1;
END_IF;
ELSIF uPositionAxisNm=4 THEN
uSteering2PositionCmd:=1;
//_bOut:=UINT2DINT(1,uPositionParam,_uwTemp);
_uwTemp:=(_uwTemp*cnEncodeValue)/cnOneRoundAngle;
_bOut:=DINT2UINT(1,_uwTemp,_uSteering2LogicValue);
uSetValueSteering2:=_uSteering2LogicValue+uHomeValueSteering2;
IF uSetValueSteering2>cnEncodeValue THEN
uSetValueSteering2:=uSetValueSteering2-cnEncodeValue;
END_IF;
END_IF;
uPositionCmdAct:=0;
END_IF;
IF uMulPositionCmdAct=1 THEN
uSteering1PositionCmd:=1;
uSteering2PositionCmd:=1;
uElevate1PositionCmd:=1;
uElevate2PositionCmd:=1;
//升降杆行程范围处理
IF uSetPosition1<0 THEN
uSetLocalElevate1:=0;
ELSIF uSetPosition1>cnElevateMaxDistanc THEN
uSetLocalElevate1:=cnElevateMaxDistanc;
ELSE
uSetLocalElevate1:=uSetPosition1;
END_IF;
_bOut:=UINT2DINT(1,uSetLocalElevate1,_uwTemp);
_uwTemp:=_uwTemp*cnOneMmPulsCnt; //320是0.1mm
_bOut:=DINT2UDINT(1,_uwTemp,uSetValueElevate1);
IF uSetPosition2<0 THEN
uSetLocalElevate2:=0;
ELSIF uSetPosition2>cnElevateMaxDistanc THEN
uSetLocalElevate2:=cnElevateMaxDistanc;
ELSE
uSetLocalElevate2:=uSetPosition2;
END_IF;
_bOut:=UINT2DINT(1,uSetLocalElevate2,_uwTemp);
_uwTemp:=_uwTemp*cnOneMmPulsCnt; //320是0.1mm
_bOut:=DINT2UDINT(1,_uwTemp,uSetValueElevate2);
//俯仰角度角度范围处理
IF uSetAngle1<0 THEN
uSetAngleSteering1:=0;
ELSIF uSetAngle1>cnMaxMoveAngle THEN
uSetAngleSteering1:=cnMaxMoveAngle;
ELSE
uSetAngleSteering1:=uSetAngle1;
END_IF;
_bOut:=UINT2DINT(1,uSetAngleSteering1,_uwTemp);
_uwTemp:=(_uwTemp*cnEncodeValue)/cnOneRoundAngle; //转换成拨码值
_bOut:=DINT2UINT(1,_uwTemp,_uSteering1LogicValue);
/*
uSetValueSteering1:=_uSteering1LogicValue+uHomeValueSteering1;
IF uSetValueSteering1>cnEncodeValue THEN
uSetValueSteering1:=uSetValueSteering1-cnEncodeValue;
END_IF; |