技术论坛

 工艺轴Wincc画面模板+博图工艺轴FB

返回主题列表
作者 主题
荧惑mars
侠士

经验值:1413
发帖数:157
精华帖:6
楼主    2023-06-28 20:31:02
主题:工艺轴Wincc画面模板+博图工艺轴FB 精华帖 

wincc版本:v7.5 sp2 up11

tia版本:v18

net版本:v18

step7版本:v5.5 sp4(安装这个有助于wincc和新版本固件PLC通信)








结构变量+变量前缀,之前都是做画面模板弹窗,这个直接就在主画面显示了……


博图软件这边工艺轴编程如下:


程序内容如下:

REGION 使能

    #MC_Power(Axis := #Axis,

              Enable := #Enable,

              StartMode := 1,

              StopMode := 0,

              Status => #Enabled,

              Error => #ErrorArray[0],

              ErrorID => #ErrorIDArray[0],

              ErrorInfo => #ErrorInfoArray[0]);

END_REGION

REGION 复位

    #MC_Reset(Axis := #Axis,

              Execute := #Reset,

              Restart := #Restart,

              Error => #ErrorArray[1],

              ErrorID => #ErrorIDArray[1],

              ErrorInfo => #ErrorInfoArray[1]);

END_REGION

REGION 回零

    #MC_Home(Axis := #Axis,

             Execute := #Home,

             Position := 0.0,

             Mode := 0,

             Error => #ErrorArray[2],

             ErrorID => #ErrorIDArray[2],

             ErrorInfo => #ErrorInfoArray[2]);


    IF #MC_Home.Done AND NOT #Homed_P THEN

        #Homed := TRUE;

        #Homed_Temp := TRUE;

    ELSIF (#Home AND NOT #Home_P) OR NOT #Enable THEN

        #Homed := FALSE;

        #Homed_Temp := FALSE;

    END_IF;

    #Homed_P := #MC_Home.Done;

    #Home_P := #Home;


END_REGION

REGION 暂停

    #MC_Halt(Axis := #SpeedAxis,

             Execute := #Pause,

             Error => #ErrorArray[3],

             ErrorID => #ErrorIDArray[3],

             ErrorInfo => #ErrorInfoArray[3]);

END_REGION

REGION 绝对定位

    IF #Homed_Temp THEN

        #MC_MoveAbsolute(Axis := #PositioningAxis,

                         Execute := #MoveAbsolute,

                         Position := #Position,

                         Velocity := #Velocity_Move,

                         Direction := 3,

                         Error => #ErrorArray[4],

                         ErrorID => #ErrorIDArray[4],

                         ErrorInfo => #ErrorInfoArray[4]);

    END_IF;

END_REGION

REGION 相对定位

    #MC_MoveRelative(Axis := #PositioningAxis,

                     Execute := #MoveRelative,

                     Distance := #Position,

                     Velocity := #Velocity_Move,

                     Error => #ErrorArray[5],

                     ErrorID => #ErrorIDArray[5],

                     ErrorInfo => #ErrorInfoArray[5]);

END_REGION

REGION 定位完成

    IF (#MC_MoveAbsolute.Done OR #MC_MoveRelative.Done) AND NOT #PositionOK_P THEN

        #PositionOK := TRUE;

    ELSIF #MoveAbsolute OR #MoveRelative OR NOT #Enable THEN

        #PositionOK := FALSE;

    END_IF;

    #PositionOK_P := #MC_MoveAbsolute.Done OR #MC_MoveRelative.Done;

END_REGION

REGION 连续运动

    #MC_MoveVelocity(Axis := #SpeedAxis,

                     Execute := #MoveVelocity,

                     Velocity := #Velocity_Continuous,

                     Direction := 0,

                     Error => #ErrorArray[6],

                     ErrorID => #ErrorIDArray[6],

                     ErrorInfo => #ErrorInfoArray[6]);

END_REGION

REGION 点动

    #MC_MoveJog(Axis := #SpeedAxis,

                JogForward := #JogForward,

                JogBackward := #JogBackward,

                Velocity := #Velocity_Jog,

                Error => #ErrorArray[7],

                ErrorID => #ErrorIDArray[7],

                ErrorInfo => #ErrorInfoArray[7]);

END_REGION

REGION 更改加减速参数

    #MC_ChangeDynamic(Axis := #SpeedAxis,

                      Execute := #ChangeDynamic,

                      ChangeRampUp := TRUE,

                      RampUpTime := #RampUpTime,

                      ChangeRampDown := TRUE,

                      RampDownTime := #RampDownTime,

                      ChangeEmergency := TRUE,

                      EmergencyRampTime := #EmergencyRampTime,

                      ChangeJerkTime := TRUE,

                      JerkTime := #JerkTime,

                      Error => #ErrorArray[8],

                      ErrorID => #ErrorIDArray[8],

                      ErrorInfo => #ErrorInfoArray[8]);

END_REGION

REGION 更改最大速度和启动速度

    IF NOT #MC_Power.Status THEN

        #MC_WriteParam(Execute := #WriteParam,

                       Parameter := #PositioningAxis.DynamicLimits.MaxVelocity,

                       Value := #MaxVelocity,

                       Error => #ErrorArray[9],

                       ErrorID => #ErrorIDArray[9],

                       ErrorInfo => #ErrorInfoArray[9]);

        #MC_WriteParam(Execute := #WriteParam,

                       Parameter := #PositioningAxis.DynamicLimits.MinVelocity,

                       Value := #MinVelocity,

                       Error => #ErrorArray[10],

                       ErrorID => #ErrorIDArray[10],

                       ErrorInfo => #ErrorInfoArray[10]);

    END_IF;

END_REGION

REGION 当前状态

    #ActualPosition := #PositioningAxis.ActualPosition;

    #ActualVelocity := #PositioningAxis.ActualVelocity;

END_REGION

REGION 标记错误位置

    IF NOT #ErrorTemp AND NOT #Reset THEN

        FOR #i := 0 TO 10 DO

            IF #ErrorArray[#i] THEN

                #ErrorTag := INT_TO_WORD(#i);

                #ErrorID := #ErrorIDArray[#i];

                #ErrorInfo := #ErrorInfoArray[#i];

                #Error := TRUE;

                #ErrorTemp := TRUE;

                EXIT;

            END_IF;

        END_FOR;

    ELSIF #Reset THEN

        #ErrorTag := 16#0000;

        #ErrorID := 16#0000;

        #ErrorInfo := 16#0000;

        #Error := FALSE;

        #ErrorTemp := FALSE;

    END_IF;

END_REGION


总体思路:利用指令→工艺→Motion_Control

错误标识:for循环,按从小到大优先级,记录错误标签,赋值相应标签的错误ID和错误信息。由复位按钮复位错误。


有不对之处,欢迎斧正

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