技成培训网论坛

 找回密码
 立即注册
开启左侧

请哪个大神看看写这个的是不是程序员改行写PLC啦

[复制链接]
发表于 2021-1-15 10:39:22 | 显示全部楼层 |阅读模式   来自:14.211.85.37

您正在浏览的页面需要登录,为了提高您的阅读体验,请在右上角登录您的账号!

您需要 登录 才可以下载或查看,没有帐号?立即注册

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;
此软件“仅限学习交流”,如用于商业用途,请到官方购买正版软件,追究法律责任与“技成培训网”无关!
本站仅提供软件下载,不提供软件安装、破解等指导服务。
您需要登录后才可以回帖 登录 | 立即注册

本版技能点规则

小黑屋|技成培训网论坛   粤ICP备11069432号-1

GMT+8, 2024-3-29 23:45

Powered by jcpeixun X3.3

© 2007-2024 深圳市技成科技有限公司

快速回复 返回顶部 返回列表