diff --git a/Codesys/ArfBot.project b/Codesys/ArfBot.project index 5fc58a3..fa51151 100644 Binary files a/Codesys/ArfBot.project and b/Codesys/ArfBot.project differ diff --git a/Codesys/ArfBot.xml b/Codesys/ArfBot.xml index 7749c4f..647c694 100644 --- a/Codesys/ArfBot.xml +++ b/Codesys/ArfBot.xml @@ -1,7 +1,7 @@  - - + + https://github.com/dalethomas81/ArfBotOS @@ -721,6 +721,129 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} + +VAR_GLOBAL CONSTANT + + // + pi: LREAL:=3.14159265358979323846; + + // refer to the position control loop tab in the axis configuration + // Application Values | min:-100 zero:0 max:100 + // Output Values | min:-16#2710 zero:0 max:16#2710 + c_PosCtrl_MaxVel_TU : LREAL := 100.0; // Application [t.u./s] maximum + c_PosCtrl_MaxVel_Int : LREAL := 10000.0; // Output value maximum + c_PosCtrl_VelScale : LREAL := 100.0 / 10000.0; + + // array sizes + DIG_IN_ARR_BEG: INT:=0; + DIG_IN_ARR_END: INT:=15; + DIG_OUT_ARR_BEG: INT:=0; + DIG_OUT_ARR_END: INT:=15; + PWM_OUT_ARR_BEG: INT:=0; + PWM_OUT_ARR_END: INT:=15; + PROG_CMDS_ARR_BEG: INT:=0; + PROG_CMDS_ARR_END: INT:=49; // total number of commands in a program + PROG_ARR_BEG: INT:=0; + PROG_ARR_END: INT:=19; // total number of programs + POS_ARR_BEG: INT:=0; + POS_ARR_END: INT:=49; // total number of stored positions + VIS_ARR_BEG: INT:=0; + VIS_ARR_END: INT:=49; // total number of vision registers + FLG_ARR_BEG: INT:=0; + FLG_ARR_END: INT:=49; // total number of flags + REG_ARR_BEG: INT:=0; + REG_ARR_END: INT:=49; // total number of registers + POSCONT_ARR_BEG: INT:=0; + POSCONT_ARR_END: INT:=5; // total number of axes + + // length of command strings for command processor. + // if this is reduced then commands may stop working. + COMMAND_LEN: UINT:=255; + + // stored positions + POSE_1_IDX: INT:=34; // coordinates of pose 1 + POSE_2_IDX: INT:=35; // coordinates of pose 2 + POSE_3_IDX: INT:=36; // coordinates of pose 3 + POSE_4_IDX: INT:=37; // coordinates of pose 4 + POSE_5_IDX: INT:=38; // coordinates of pose 5 + //RESERVED: INT:=39; // RESERVED + //RESERVED: INT:=40; // RESERVED + //RESERVED: INT:=41; // RESERVED + //RESERVED: INT:=42; // RESERVED + SPEEDS_IDX: INT:=43; // max vel, max accel/decel, max jerk, vel factor, accel/decel factor, jerk factor + HOM_POS_IDX: INT:=44; // homing offsets + DEC_START_POS: INT:=45; // start position for the nc decoder + TCP_POS_IDX: INT:=46; // tool center point offset + PC2_POS_IDX: INT:=47; // part 2 coordinate system offset + PC1_POS_IDX: INT:=48; // part 1 coordinate system offset + MCS_POS_IDX: INT:=49; // machine (robot) coordinate system offset + + // vision registers + //RESERVED: INT:=VIS_ARR_END-4; // RESERVED + //RESERVED: INT:=VIS_ARR_END-3; // RESERVED + //RESERVED: INT:=VIS_ARR_END-2; // RESERVED + //RESERVED: INT:=VIS_ARR_END-1; // RESERVED + //RESERVED: INT:=VIS_ARR_END; // RESERVED + + // flags + HOM_TO_POSE_IDX: INT:=44; + //RESERVED: INT:=45; + //RESERVED: INT:=46; + INIT_DRV_IDX: INT:=47; + HOME_COMPLETE: INT:=48; + INIT_POS_IDX: INT:=49; + +END_VAR + +VAR_GLOBAL + + // task scan times + dwMainInterval: DWORD; + dwMotionInterval: DWORD; + dwVisionInterval: DWORD; + dwVisuInterval: DWORD; + dwEtherCATInterval: DWORD; + + // + PowerOn:BOOL; + Reset: BOOL; + ResetRtrig: R_TRIG; + Enable: BOOL; + + // alarms + sLastFault : STRING; + xClearHistory : BOOL; + xActiveAlarm : BOOL; + + // dialog results + // TODO: this seems like a bad idea. what happens is 2 clients have an HMI open and one presses yes and the other presses no? + AreYouSure_Home_Yes: BOOL; + AreYouSure_Home_No: BOOL; + + // command IO + CmdIO: ST_LogicCmdIO; + + // cnc (testing) + g_x: REAL:=50; // feed rate + g_y: REAL:=50; + g_gripper: INT:=0; + Servo0Position: BYTE; + + // license + LicenseStatus: FB_LicenseStatus; + + // visu + lrGripperOpen: LREAL; + // https://content.helpme-codesys.com/en/libs/SM3_CNC/4.14.0.0/SM_CNC_Data-types/SoftMotion-CNC/SMC_ORI_CONVENTION.html + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + + +END_VAR + + 1430d1bd-aa92-442c-bf72-190d0e907494 @@ -1567,6 +1690,38 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +VAR_GLOBAL PERSISTENT RETAIN + // + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + + // + StoredPositions: ARRAY [GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; + + // + PositionControllers: ARRAY[GVL.POSCONT_ARR_BEG..GVL.POSCONT_ARR_END] OF DUT_PositionController; + + // vision + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; + + // dh parameters + + // axis params + PulsesPerRevolution: ARRAY [0..5] OF LREAL := [32000.0, 40000.0, 40000.0, 35840.0, 15700.0, 16162.5]; + + // homing + HomingGroupOne: DUT_AxisEnabled := (J1:=TRUE, J2:=TRUE, J3:=TRUE, J4:=FALSE, J5:=FALSE, J6:=FALSE); + HomingGroupTwo: DUT_AxisEnabled := (J1:=FALSE, J2:=FALSE, J3:=FALSE, J4:=TRUE, J5:=TRUE, J6:=FALSE); + HomingGroupThree: DUT_AxisEnabled := (J1:=FALSE, J2:=FALSE, J3:=FALSE, J4:=FALSE, J5:=FALSE, J6:=TRUE); + +END_VAR + + 3ec4e751-fd63-4486-9e96-20e1d2f269ab @@ -1578,11 +1733,11 @@ RESERVED: INT:=46; - + - git describe --tags --always --dirty - git describe --tags --always main + git describe --tags --always --dirty (does not get the latest tag from main) + git describe --tags --always main (gets the latest tag from main but the commit is wrong because its from the branch we work from - dev) @@ -1601,6 +1756,18 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +VAR_GLOBAL + // git describe --tags --always --dirty (does not get the latest tag from main) + // git describe --tags --always main (gets the latest tag from main but the commit is wrong because its from the branch we work from - dev) + sPlcVersion : STRING(80) := 'v2.2026.37.1-AlarmHistory-23-gb1a767d-dirty'; + sRelease : STRING(80); + sVersionLine : STRING(160); +END_VAR + + 02cb4726-2332-4e35-9d3d-9ab324dd7797 @@ -1659,6 +1826,21 @@ RESERVED: INT:=46; + + + TYPE ST_CncCmd : +STRUCT + StartPos: SMC_PosInfo; + OriConvention: SMC_ORI_CONVENTION:=SMC_ORI_CONVENTION.ZYX; + Filename: STRING:='CNC_FromFile.cnc'; + CoordinateType: DUT_Command_CoordinateType:=DUT_Command_CoordinateType.Variable; + ArrayIndex: INT:=GVL.DEC_START_POS; + ArrayType: DUT_Command_ArrayType:=DUT_Command_ArrayType.StoredPosition; +END_STRUCT +END_TYPE + + + bfbed99a-036f-4373-a7be-6feb43a2d296 @@ -1687,6 +1869,18 @@ RESERVED: INT:=46; + + + TYPE DUT_Command : +STRUCT + CommandType: DUT_CommandType; + CommandString: STRING(GVL.COMMAND_LEN); + CommandComment: STRING; +END_STRUCT +END_TYPE + + + bc90f47c-5d1d-4a76-b85b-4fab785a8038 @@ -1715,6 +1909,17 @@ RESERVED: INT:=46; + + + TYPE DUT_Program : +STRUCT + ProgramName: STRING; + Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; +END_STRUCT +END_TYPE + + + 6dbc7d5e-b88c-421e-a648-117a087040e6 @@ -1738,6 +1943,17 @@ RESERVED: INT:=46; + + + TYPE DUT_StoredPosition : +STRUCT + Comment: STRING; + Position: MC_COORD_REF; +END_STRUCT +END_TYPE + + + 66e85fd8-6344-4340-a216-0e3ccb4605b3 @@ -1828,6 +2044,22 @@ RESERVED: INT:=46; + + + TYPE ST_VisionLocate : +STRUCT + MaxParts: UINT:=1; // max number of parts to locate + MaxOverlap: REAL:=0.0; // max overlap of parts. only needed if MaxParts is greater than zero. + Score: REAL:=0.6; // min score + ToleranceAngle: REAL:=90.0; // max angle +/- to search + ResultPosition: UINT:=0; // location to store the results in the vision register array + TemplateName: STRING:='Template.jpg'; // name of the template to search + ScriptFilename: STRING:='FastTemplateMatching.py'; // name of the script that runs the vision program +END_STRUCT +END_TYPE + + + 979edabc-249c-4294-9a6b-583c609d1013 @@ -1874,6 +2106,18 @@ RESERVED: INT:=46; + + + TYPE ST_VisionCalibrate : +STRUCT + CheckerSize: REAL:=25.0; // this value is in user units ex mm + CheckerXCount: UINT:=6; // count of checker blocks in x coordinate + CheckerYCount: UINT:=9; // count of checker blocks in y coordinate +END_STRUCT +END_TYPE + + + 182d3d19-8ffc-4b3a-943b-f60486efdc5a @@ -1935,6 +2179,21 @@ RESERVED: INT:=46; + + + TYPE ST_VisionCmd : +STRUCT + CommandType: DUT_Command_VisionType; + ImageWidth: UINT:=640; // pixel count in x direction (must be supported by camera) + ImageHeight: UINT:=400; // pixel coutn in y direction (must be supported by camera) + Calibrate: ST_VisionCalibrate; + Locate: ST_VisionLocate; + Timeout: UDINT:=60; // timeout in seconds +END_STRUCT +END_TYPE + + + bbefe0b0-9a20-4826-9638-01ab457504e9 @@ -1958,6 +2217,16 @@ RESERVED: INT:=46; DUT_StoredPosition + + + TYPE DUT_VisionRegister EXTENDS DUT_StoredPosition : +STRUCT + Scaling: REAL; +END_STRUCT +END_TYPE + + + 183abbbc-75ca-4f97-a156-9832c2bf8b79 @@ -1987,6 +2256,17 @@ RESERVED: INT:=46; + + + TYPE DUT_Flags : +STRUCT + Comment: STRING:=''; + Value: BOOL:=FALSE; +END_STRUCT +END_TYPE + + + 22f963af-e04a-45ab-913c-8ad1ec5e38d9 @@ -2159,6 +2439,35 @@ RESERVED: INT:=46; + + + TYPE ST_MoveCmd : +STRUCT + // common + MoveType: DUT_Command_MoveType:=DUT_Command_MoveType.DirectMove; + Speed: LREAL:=0.0; + CoordSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + // direct/linear moves + PositionType: DUT_Command_PositionType:=DUT_Command_PositionType.AbsolutePosition; + CoordinateType: DUT_Command_CoordinateType:=DUT_Command_CoordinateType.Literal; + ArrayIndex: UINT:=0; + ArrayType: DUT_Command_ArrayType:=DUT_Command_ArrayType.StoredPosition; + CoordRef: MC_COORD_REF:=(X:=0, Y:=0, Z:=0, A:=0, B:=0, C:=0); + + // circular moves + CircularCoordinateType: DUT_Command_CoordinateType:=DUT_Command_CoordinateType.Literal; + CircularArrayIndex: UINT:=0; + CircularArrayType: DUT_Command_ArrayType:=DUT_Command_ArrayType.StoredPosition; + CircleMode: SMC_CIRC_MODE:=SMC_CIRC_MODE.CENTER; + PathChoice: MC_CIRC_PATHCHOICE:=MC_CIRC_PATHCHOICE.CLOCKWISE; + CoordRef2: MC_COORD_REF:=(X:=0, Y:=0, Z:=0, A:=0, B:=0, C:=0); + +END_STRUCT +END_TYPE + + + f71cc9b7-cb4b-485a-9aed-2944bbd084ca @@ -2187,6 +2496,18 @@ RESERVED: INT:=46; + + + TYPE ST_OutputCmd : +STRUCT + OutputType: DUT_OutputType; + OutputTarget: INT; + OutputValue1: LREAL; +END_STRUCT +END_TYPE + + + 8d0742ed-4361-441a-8bce-40feb4d004c2 @@ -2208,6 +2529,16 @@ RESERVED: INT:=46; + + + TYPE ST_PauseCmd : +STRUCT + PauseTime: TIME:=T#1S; +END_STRUCT +END_TYPE + + + be976acf-5a13-4a9d-8d9f-61e2df7de507 @@ -2266,6 +2597,24 @@ RESERVED: INT:=46; + + + TYPE ST_VarSetCmd : +STRUCT + ArrayType: DUT_Command_ArrayType; + ArrayIndex: INT; + Coordinates: MC_COORD_REF; + XOperType: DUT_VarSetCmd_OperType; + YOperType: DUT_VarSetCmd_OperType; + ZOperType: DUT_VarSetCmd_OperType; + AOperType: DUT_VarSetCmd_OperType; + BOperType: DUT_VarSetCmd_OperType; + COperType: DUT_VarSetCmd_OperType; +END_STRUCT +END_TYPE + + + 0b1a37a4-4123-4a33-84fb-db1ab5afd1a7 @@ -2329,6 +2678,20 @@ RESERVED: INT:=46; + + + TYPE ST_LogicCmdIO : +STRUCT + Input: ARRAY [GVL.DIG_IN_ARR_BEG..GVL.DIG_IN_ARR_END] OF BOOL; + Output: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; + Register: ARRAY [GVL.REG_ARR_BEG..GVL.REG_ARR_END] OF UDINT; + Counter: ARRAY [GVL.REG_ARR_BEG..GVL.REG_ARR_END] OF UDINT; +END_STRUCT +END_TYPE + + + d9e4da03-9627-4669-97eb-9d4d80e11f49 @@ -2392,6 +2755,25 @@ RESERVED: INT:=46; + + + TYPE ST_LogicCmd : +STRUCT + IF_Condition : E_LogicIfCondition; + IF_Condition_Idx: INT; + IF_Condition_Operator: E_LogicIfConditionOperator; + IF_Condition_Operator_Value: UDINT; + THEN_Function: E_LogicFunction; + THEN_Function_Value: UDINT; + THEN_Function_Idx: INT; + ELSE_Function: E_LogicFunction; + ELSE_Function_Idx: INT; + ELSE_Function_Value: UDINT; +END_STRUCT +END_TYPE + + + c4e12c65-0b92-43d3-a6f5-ab4569642ec6 @@ -2450,6 +2832,24 @@ RESERVED: INT:=46; + + + TYPE ST_Buttons : +STRUCT + Square: BOOL; + Triangle: BOOL; + Circle: BOOL; + Cross: BOOL; + Share: BOOL; + Options: BOOL; + PS: BOOL; + Touch: BOOL; + Mic: BOOL; +END_STRUCT +END_TYPE + + + 95f2037f-8fc8-4d22-85e5-1ff2dd41a9ab @@ -2508,6 +2908,24 @@ RESERVED: INT:=46; + + + TYPE ST_Controller : +STRUCT + Connected: BOOL; + Joysticks: ST_Joysticks; + Buttons: ST_Buttons; + Dpad: ST_Dpad; + Triggers: ST_Triggers; + Trackpads: ST_Trackpads; + Gyroscope: ST_Gyroscope; + Accelerometer: ST_Accelerometer; + Battery: ST_Battery; +END_STRUCT +END_TYPE + + + cae9356f-d6ac-4e7d-8011-d5a6d5d74766 @@ -2536,6 +2954,18 @@ RESERVED: INT:=46; + + + TYPE ST_Joystick : +STRUCT + X: USINT; + Y: USINT; + ThreeButton: BOOL; +END_STRUCT +END_TYPE + + + 599c74c1-daba-4b5d-bf77-f7cae8b16f11 @@ -2569,6 +2999,19 @@ RESERVED: INT:=46; + + + TYPE ST_Dpad : +STRUCT + Up: BOOL; + Down: BOOL; + Left: BOOL; + Right: BOOL; +END_STRUCT +END_TYPE + + + c497e547-1dfd-4da7-a86e-8ae4d44a7765 @@ -2597,6 +3040,18 @@ RESERVED: INT:=46; + + + TYPE ST_Trigger : +STRUCT + One: BOOL; + Two: USINT; + TwoButton: BOOL; +END_STRUCT +END_TYPE + + + 90a8586d-e3b4-42f9-8d1f-b5349239d03c @@ -2630,6 +3085,19 @@ RESERVED: INT:=46; + + + TYPE ST_Trackpad : +STRUCT + ID: USINT; + Active: BOOL; + X: UINT; + Y: UINT; +END_STRUCT +END_TYPE + + + d80eab9f-545b-4809-8bfc-c7c96718771a @@ -2653,6 +3121,17 @@ RESERVED: INT:=46; + + + TYPE ST_Triggers : +STRUCT + Left: ST_Trigger; + Right: ST_Trigger; +END_STRUCT +END_TYPE + + + 23fe38f5-1749-4c16-9421-9a5256c84443 @@ -2676,6 +3155,17 @@ RESERVED: INT:=46; + + + TYPE ST_Trackpads : +STRUCT + One: ST_Trackpad; + Two: ST_Trackpad; +END_STRUCT +END_TYPE + + + e4026d17-babf-4f21-9b81-8b66dca5d5cd @@ -2699,6 +3189,17 @@ RESERVED: INT:=46; + + + TYPE ST_Joysticks : +STRUCT + Left: ST_Joystick; + Right: ST_Joystick; +END_STRUCT +END_TYPE + + + 185991db-bd55-406a-a1ea-3602fc50608b @@ -2727,6 +3228,18 @@ RESERVED: INT:=46; + + + TYPE ST_Gyroscope : +STRUCT + Pitch: INT; + Yaw: INT; + Roll: INT; +END_STRUCT +END_TYPE + + + 18138b89-cf57-409e-a883-6a58c1af160a @@ -2755,6 +3268,18 @@ RESERVED: INT:=46; + + + TYPE ST_Accelerometer : +STRUCT + X: INT; + Y: INT; + Z: INT; +END_STRUCT +END_TYPE + + + 609788be-6cef-4bab-b82d-0de671123a2d @@ -2778,6 +3303,17 @@ RESERVED: INT:=46; + + + TYPE ST_Battery : +STRUCT + State: USINT; + Level: USINT; +END_STRUCT +END_TYPE + + + d7224d0e-a20c-4ec1-9d9d-a32f25c607e6 @@ -2831,6 +3367,23 @@ RESERVED: INT:=46; + + + TYPE DUT_PositionController : +STRUCT + fKp: LREAL; + fPartVelPilotControl: LREAL; + fDeadTime: LREAL; + fMaxPositionDiff: LREAL; + fSWMaxVelocity: LREAL; + fSWMaxAcceleration: LREAL; + fSWMaxDeceleration: LREAL; + fSWMaxJerk: LREAL; +END_STRUCT +END_TYPE + + + 862da66f-a0ac-4f98-8a1c-2d6c546e43d9 @@ -2929,6 +3482,32 @@ RESERVED: INT:=46; + + + TYPE DUT_GroupStatus : +STRUCT + Valid: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; + GroupMoving: BOOL; + GroupHoming: BOOL; + GroupErrorStop: BOOL; + GroupStandby: BOOL; + GroupStopping: BOOL; + GroupDisabled: BOOL; + TrackingDynamicCS: BOOL; + InSync: BOOL; + ActiveMovementId: SMC_Movement_Id; + FirstReferencedMovementId: SMC_Movement_Id; + LastAcceptedMovementId: SMC_Movement_Id; + PositionLag: LREAL; + OrientationLag: LREAL; +END_STRUCT +END_TYPE + + + 8da24330-28fc-457b-af4f-78411d1da7e7 @@ -2955,6 +3534,22 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerPlayerID : +( + Player1 := 4, + Player2 := 10, + Player3 := 21, + Player4 := 27, + PlayerAll := 31 +); +END_TYPE + + + d98d4d74-0af2-4200-b2d2-a2e62489282e @@ -2979,6 +3574,20 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerBrightness : +( + High := 0, + Med := 1, + Low := 2 +); +END_TYPE + + + 604af7c6-46fd-4031-b39f-42d0051195f9 @@ -3002,6 +3611,19 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerMotor : +( + Left := 0, + Right := 1 +); +END_TYPE + + + a6c1ccec-7589-44ea-8664-b26e13e4589c @@ -3054,6 +3676,26 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerTriggerMode : +( + Off := 0, // no resistance + Rigid := 1, // continous resistance + Pulse := 2, // section resistance + Rigid_A := 3, + Rigid_B := 4, + Rigid_AB := 5, + Pulse_A := 6, + Pulse_AB := 7, + Calibration := 8 +); +END_TYPE + + + 7cfb17e9-0adb-430c-99c4-e3a0b9b689dc @@ -3077,6 +3719,19 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerTrigger : +( + Left := 0, + Right := 1 +); +END_TYPE + + + cf02ac9e-9fa8-4292-8ddb-6ba2ae2076e9 @@ -3105,6 +3760,24 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_ControllerTriggerForceParameter : +( + One := 0, + Two := 1, + Three := 2, + Four := 3, + Five := 4, + Six := 5, + Seven := 6 +); +END_TYPE + + + 54b4a266-7c75-4f63-967a-c2dc24d3f5bb @@ -3131,6 +3804,22 @@ RESERVED: INT:=46; + + + {attribute 'qualified_only'} +{attribute 'strict'} +TYPE E_Pose : +( + One := 0, + Two := 1, + Three := 2, + Four := 3, + Five := 4 +); +END_TYPE + + + b79aef52-6212-478e-b00a-eac3efda95a0 @@ -3174,6 +3863,21 @@ RESERVED: INT:=46; + + + TYPE DUT_AxisEnabled : +STRUCT + J1: BOOL; + J2: BOOL; + J3: BOOL; + J4: BOOL; + J5: BOOL; + J6: BOOL; +END_STRUCT +END_TYPE + + + 6f4bcd56-657b-4601-af50-5b73fde27e36 @@ -3185,22 +3889,52 @@ RESERVED: INT:=46; + + METHOD M_Start +VAR_INPUT +END_VAR + + + + METHOD M_Stop +VAR_INPUT +END_VAR + + + + METHOD M_Home +VAR_INPUT +END_VAR + + + + METHOD M_Abort +VAR_INPUT +END_VAR + + + + METHOD M_Hold +VAR_INPUT +END_VAR + + @@ -3214,7 +3948,17 @@ RESERVED: INT:=46; - + + + VAR +END_VAR + + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropCurrentState : PACK_ML.State + @@ -3226,7 +3970,15 @@ RESERVED: INT:=46; - + + + + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropBusy : BOOL + @@ -3238,7 +3990,15 @@ RESERVED: INT:=46; - + + + + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropError : BOOL + @@ -3250,10 +4010,22 @@ RESERVED: INT:=46; - + + + + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropErrDescription : STRING + + + INTERFACE ITFModule + + @@ -3701,11 +4473,88 @@ RESERVED: INT:=46; + + + + PROGRAM _00_Main +VAR + // + TaskInfo : POINTER TO CmpIecTask.Task_Info2; + TaskHandle: CmpIecTask.RTS_IEC_HANDLE; + Result: CmpIecTask.RTS_IEC_RESULT; + + // group handler for all motion fbs + GroupHandler: FB_GroupHandler; + + // tuning + MoveDistance: LREAL := 5.0; + MoveRelative: ARRAY[0..5] OF MC_MoveRelative; + EstimateDeadTime: ARRAY[0..5] OF SMC_EstimateDeadTime; + TuneStart: ARRAY[0..5] OF BOOL; + TraceStart: ARRAY[0..5] OF BOOL; + TraceStop: ARRAY[0..5] OF BOOL; + SetTuningMoveValues: BOOL:=TRUE; + fCycleTimeMs: LREAL; (* MainTask / SoftMotion bus cycle, ms *) + fMeasuredLagMs: ARRAY[0..5] OF LREAL; + fEstimatedDeadTimeRaw: ARRAY[0..5] OF LREAL; (* unclamped SMC_EstimateDeadTime median *) + fSuggestedDeadTime: ARRAY[0..5] OF LREAL; (* D in MainTask cycles, clamped to (0, 20] *) + nDeadTimeSamples: ARRAY[0..5] OF INT; + bDeadTimeSuggested: ARRAY[0..5] OF BOOL; + UseSuggestedD: ARRAY[0..5] OF BOOL; + sDeadTimeHelp: ARRAY[0..5] OF STRING(255); + fKpPeakLag: ARRAY[0..5] OF LREAL; + fKpCruiseLag: ARRAY[0..5] OF LREAL; + fKpFinalLag: ARRAY[0..5] OF LREAL; + fKpOvershoot: ARRAY[0..5] OF LREAL; + fKpUndershoot: ARRAY[0..5] OF LREAL; + nKpReversals: ARRAY[0..5] OF INT; + nKpVelReversals: ARRAY[0..5] OF INT; + fSuggestedKp: ARRAY[0..5] OF LREAL; + bKpSuggested: ARRAY[0..5] OF BOOL; + UseSuggestedKp: ARRAY[0..5] OF BOOL; + RaiseKp: ARRAY[0..5] OF BOOL; + LowerKp: ARRAY[0..5] OF BOOL; + sKpVerdict: ARRAY[0..5] OF STRING(16); + sKpHelp: ARRAY[0..5] OF STRING(255); + + // homing + ProcessHome: FB_HomingProcessor; + HomingStatusText: STRING(255); + + // jogging + ProcessJog: FB_JogProcessor; + JogStatusText: STRING(255); + ButtonTextIndex: INT:=0; + + // cnc + VisuStruct3DControl_J: VisuStruct3DControl; + TrackPosition: FB_PositionTracker; + + // program processor + ProcessPrograms: FB_ProgramProcessor; + ProcessCommand_ActiveProgram: UINT := 0; + ActiveCommandDetails: STRING(255):=''; + + // controller + Controller: FB_Controller; + + // + EnableRtrig: R_TRIG; + EnableFtrig: F_TRIG; + _i, _j, _k: INT; + BuildTests: BOOL:=FALSE; + FirstScan: BOOL:=TRUE; + +END_VAR + + + - {region "utility"} + +{region "utility"} (* Get the current task info *) {IF defined (IsSimulationMode)} GVL.dwMainInterval := 1000; @@ -3812,6 +4661,26 @@ FirstScan:=FALSE; + + + + METHOD PUBLIC M_Init : BOOL +VAR_INPUT +END_VAR +VAR + // release + _hRelease : SysTypes.RTS_IEC_HANDLE; + _udiReleaseResult : SysTypes.RTS_IEC_RESULT; + _udiReleaseRead : LWORD; + _abyRelease : ARRAY[0..80] OF BYTE; + _iRelease : INT; + _nRelease : UDINT; + _pReleaseLen : POINTER TO BYTE; +END_VAR + + + + @@ -3958,6 +4827,22 @@ PersistentVars.Flags[GVL.HOME_COMPLETE].Value := FALSE; PersistentVars.Flags[GVL.INIT_POS_IDX].Comment := 'Variables Intitialized'; + + METHOD PUBLIC M_Init : BOOL +VAR_INPUT +END_VAR +VAR + // release + _hRelease : SysTypes.RTS_IEC_HANDLE; + _udiReleaseResult : SysTypes.RTS_IEC_RESULT; + _udiReleaseRead : LWORD; + _abyRelease : ARRAY[0..80] OF BYTE; + _iRelease : INT; + _nRelease : UDINT; + _pReleaseLen : POINTER TO BYTE; +END_VAR + + @@ -4013,6 +4898,12 @@ IF ProcessHome.Error THEN END_IF + + METHOD PRIVATE _M_Homing : BOOL +VAR_INPUT +END_VAR + + @@ -4078,6 +4969,12 @@ IF EnableFtrig.Q THEN END_IF + + METHOD PRIVATE _M_Processor : BOOL +VAR_INPUT +END_VAR + + @@ -4111,6 +5008,13 @@ TrackPosition( Hand=>); + + METHOD PRIVATE _M_Cnc : BOOL +VAR_INPUT +END_VAR +VAR +END_VAR + @@ -4136,6 +5040,20 @@ TrackPosition( + + + + METHOD PRIVATE _M_Jogging : BOOL +VAR_INPUT +END_VAR +VAR_STAT + EnableRtrig: R_TRIG; + CoordSystemLast: SMC_COORD_SYSTEM; + ABC_AS_ACSLast: BOOL; +END_VAR + + + @@ -4186,6 +5104,16 @@ IF ProcessJog.Error THEN END_IF + + METHOD PRIVATE _M_Jogging : BOOL +VAR_INPUT +END_VAR +VAR_STAT + EnableRtrig: R_TRIG; + CoordSystemLast: SMC_COORD_SYSTEM; + ABC_AS_ACSLast: BOOL; +END_VAR + @@ -4208,6 +5136,19 @@ END_IF + + + + METHOD PUBLIC M_BuildTests +VAR_INPUT +END_VAR +VAR + _i, _j, _k: INT; +END_VAR + + + + @@ -4359,7 +5300,7 @@ PersistentVars.Programs[3].ProgramName := 'Cnc Validation'; PersistentVars.Programs[3].Commands[0].CommandType := DUT_CommandType.MoveCommand; PersistentVars.Programs[3].Commands[0].CommandString := 'DIR ABS 30.0 ACS VAR STO 34 '; PersistentVars.Programs[3].Commands[1].CommandType := DUT_CommandType.CncCommand; -PersistentVars.Programs[3].Commands[1].CommandString := 'ArfBotOS-HelloWorld.cnc '; +PersistentVars.Programs[3].Commands[1].CommandString := 'CNC_FromFile.cnc'; // FOR _i := GVL.PROG_CMDS_ARR_BEG TO GVL.PROG_CMDS_ARR_END BY 1 DO @@ -4591,6 +5532,15 @@ PersistentVars.Programs[15].Commands[12].CommandString := 'STO 43 E 100.0 E 1000 PersistentVars.Programs[15].Commands[12].CommandComment := 'set velocity, acceleration, and jerk'; + + METHOD PUBLIC M_BuildTests +VAR_INPUT +END_VAR +VAR + _i, _j, _k: INT; +END_VAR + + @@ -4660,6 +5610,27 @@ PersistentVars.Programs[15].Commands[12].CommandComment := 'set velocity, accele + + + + METHOD PRIVATE _M_Controller : BOOL +VAR_INPUT +END_VAR +VAR_STAT + _PowerRtrig: R_TRIG; + _PowerFtrig: F_TRIG; + _PowerTimerRtrig: R_TRIG; + _PowerTimer: TON:=(PT:=T#1S); + _PsButtonRtrig: R_TRIG; + _PsButtonFtrig: F_TRIG; + _PsButtonTimer: TON:=(PT:=T#2S); + _PsButtonTimerRtrig: R_TRIG; + _Reseting: BOOL; +END_VAR + + + + @@ -4718,6 +5689,23 @@ IF _PsButtonTimerRtrig.Q THEN END_IF + + METHOD PRIVATE _M_Controller : BOOL +VAR_INPUT +END_VAR +VAR_STAT + _PowerRtrig: R_TRIG; + _PowerFtrig: F_TRIG; + _PowerTimerRtrig: R_TRIG; + _PowerTimer: TON:=(PT:=T#1S); + _PsButtonRtrig: R_TRIG; + _PsButtonFtrig: F_TRIG; + _PsButtonTimer: TON:=(PT:=T#2S); + _PsButtonTimerRtrig: R_TRIG; + _Reseting: BOOL; +END_VAR + + @@ -5176,6 +6164,67 @@ END_IF + + + + METHOD PRIVATE _M_Tuning : BOOL +VAR_INPUT +END_VAR +VAR_STAT + _MoveDelayTimer: ARRAY[0..5] OF TON; + _TraceStartFtrig: ARRAY[0..5] OF F_TRIG; + _MoveBusyFtrig: ARRAY[0..5] OF F_TRIG; + _MoveBusyRtrig: ARRAY[0..5] OF R_TRIG; + _MoveDelayTime: INT:=10; // ms + _eDtState: ARRAY[0..5] OF INT; (* 0 idle, 1 wait cruise, 2 sampling, 3 done *) + _bEstEnable: ARRAY[0..5] OF BOOL; + _bDtFinish: ARRAY[0..5] OF BOOL; + _aDtSample: ARRAY[0..5, 0..63] OF LREAL; + _nSamples: ARRAY[0..5] OF INT; + _fSetVel: LREAL; + _fCruiseVel: LREAL; + _fMedian: LREAL; + _fSwap: LREAL; + _fDtMin: LREAL := 0.1; (* SoftMotion rejects D = 0 *) + _fDtMax: LREAL := 20.0; (* PosControl delay-buffer limit *) + _fCruiseRatio: LREAL := 0.9; + _nSampleMax: INT := 64; + _bKpMode: ARRAY[0..5] OF BOOL; + _bKpActive: ARRAY[0..5] OF BOOL; + _bKpFinish: ARRAY[0..5] OF BOOL; + _bKpApproached: ARRAY[0..5] OF BOOL; + _fKpDist: ARRAY[0..5] OF LREAL; + _fKpTarget: ARRAY[0..5] OF LREAL; + _fKpActStart: ARRAY[0..5] OF LREAL; + _fKpActMin: ARRAY[0..5] OF LREAL; + _fKpActMax: ARRAY[0..5] OF LREAL; + _fKpActLast: ARRAY[0..5] OF LREAL; + _fKpPrevTgtErr: ARRAY[0..5] OF LREAL; + _fKpPrevActDelta: ARRAY[0..5] OF LREAL; + _fKpCruiseSum: ARRAY[0..5] OF LREAL; + _nKpCruiseN: ARRAY[0..5] OF INT; + _nKpSettle: ARRAY[0..5] OF INT; + _bKpSettleInit: ARRAY[0..5] OF BOOL; + _fKpSettleLeg: ARRAY[0..5] OF LREAL; + _fSetPos: LREAL; + _fActPos: LREAL; + _fLag: LREAL; + _fKpNow: LREAL; + _fKpMin: LREAL := 0.0001; + _fKpMax: LREAL := 2.0; + _fKpRaise: LREAL := 1.5; + _fKpLower: LREAL := 0.9; + _fKpLagNoise: LREAL := 0.02; + _fKpDeltaMin: LREAL := 0.003; + _fKpBounceMin: LREAL := 0.08; + _fKpApproachFrac: LREAL := 0.3; + _fKpReachBand: LREAL := 0.15; + _nKpSettleCycles: INT := 200; + _i, _j, _k: INT; +END_VAR + + + @@ -5690,6 +6739,63 @@ MoveRelative[5]( ErrorID=> ); + + METHOD PRIVATE _M_Tuning : BOOL +VAR_INPUT +END_VAR +VAR_STAT + _MoveDelayTimer: ARRAY[0..5] OF TON; + _TraceStartFtrig: ARRAY[0..5] OF F_TRIG; + _MoveBusyFtrig: ARRAY[0..5] OF F_TRIG; + _MoveBusyRtrig: ARRAY[0..5] OF R_TRIG; + _MoveDelayTime: INT:=10; // ms + _eDtState: ARRAY[0..5] OF INT; (* 0 idle, 1 wait cruise, 2 sampling, 3 done *) + _bEstEnable: ARRAY[0..5] OF BOOL; + _bDtFinish: ARRAY[0..5] OF BOOL; + _aDtSample: ARRAY[0..5, 0..63] OF LREAL; + _nSamples: ARRAY[0..5] OF INT; + _fSetVel: LREAL; + _fCruiseVel: LREAL; + _fMedian: LREAL; + _fSwap: LREAL; + _fDtMin: LREAL := 0.1; (* SoftMotion rejects D = 0 *) + _fDtMax: LREAL := 20.0; (* PosControl delay-buffer limit *) + _fCruiseRatio: LREAL := 0.9; + _nSampleMax: INT := 64; + _bKpMode: ARRAY[0..5] OF BOOL; + _bKpActive: ARRAY[0..5] OF BOOL; + _bKpFinish: ARRAY[0..5] OF BOOL; + _bKpApproached: ARRAY[0..5] OF BOOL; + _fKpDist: ARRAY[0..5] OF LREAL; + _fKpTarget: ARRAY[0..5] OF LREAL; + _fKpActStart: ARRAY[0..5] OF LREAL; + _fKpActMin: ARRAY[0..5] OF LREAL; + _fKpActMax: ARRAY[0..5] OF LREAL; + _fKpActLast: ARRAY[0..5] OF LREAL; + _fKpPrevTgtErr: ARRAY[0..5] OF LREAL; + _fKpPrevActDelta: ARRAY[0..5] OF LREAL; + _fKpCruiseSum: ARRAY[0..5] OF LREAL; + _nKpCruiseN: ARRAY[0..5] OF INT; + _nKpSettle: ARRAY[0..5] OF INT; + _bKpSettleInit: ARRAY[0..5] OF BOOL; + _fKpSettleLeg: ARRAY[0..5] OF LREAL; + _fSetPos: LREAL; + _fActPos: LREAL; + _fLag: LREAL; + _fKpNow: LREAL; + _fKpMin: LREAL := 0.0001; + _fKpMax: LREAL := 2.0; + _fKpRaise: LREAL := 1.5; + _fKpLower: LREAL := 0.9; + _fKpLagNoise: LREAL := 0.02; + _fKpDeltaMin: LREAL := 0.003; + _fKpBounceMin: LREAL := 0.08; + _fKpApproachFrac: LREAL := 0.3; + _fKpReachBand: LREAL := 0.15; + _nKpSettleCycles: INT := 200; + _i, _j, _k: INT; +END_VAR + @@ -5717,9 +6823,89 @@ GroupHandler( ErrorID=> ); + + METHOD PRIVATE _M_GroupHandler : BOOL +VAR_INPUT +END_VAR + + + + + PROGRAM _00_Main +VAR + // + TaskInfo : POINTER TO CmpIecTask.Task_Info2; + TaskHandle: CmpIecTask.RTS_IEC_HANDLE; + Result: CmpIecTask.RTS_IEC_RESULT; + + // group handler for all motion fbs + GroupHandler: FB_GroupHandler; + + // tuning + MoveDistance: LREAL := 5.0; + MoveRelative: ARRAY[0..5] OF MC_MoveRelative; + EstimateDeadTime: ARRAY[0..5] OF SMC_EstimateDeadTime; + TuneStart: ARRAY[0..5] OF BOOL; + TraceStart: ARRAY[0..5] OF BOOL; + TraceStop: ARRAY[0..5] OF BOOL; + SetTuningMoveValues: BOOL:=TRUE; + fCycleTimeMs: LREAL; (* MainTask / SoftMotion bus cycle, ms *) + fMeasuredLagMs: ARRAY[0..5] OF LREAL; + fEstimatedDeadTimeRaw: ARRAY[0..5] OF LREAL; (* unclamped SMC_EstimateDeadTime median *) + fSuggestedDeadTime: ARRAY[0..5] OF LREAL; (* D in MainTask cycles, clamped to (0, 20] *) + nDeadTimeSamples: ARRAY[0..5] OF INT; + bDeadTimeSuggested: ARRAY[0..5] OF BOOL; + UseSuggestedD: ARRAY[0..5] OF BOOL; + sDeadTimeHelp: ARRAY[0..5] OF STRING(255); + fKpPeakLag: ARRAY[0..5] OF LREAL; + fKpCruiseLag: ARRAY[0..5] OF LREAL; + fKpFinalLag: ARRAY[0..5] OF LREAL; + fKpOvershoot: ARRAY[0..5] OF LREAL; + fKpUndershoot: ARRAY[0..5] OF LREAL; + nKpReversals: ARRAY[0..5] OF INT; + nKpVelReversals: ARRAY[0..5] OF INT; + fSuggestedKp: ARRAY[0..5] OF LREAL; + bKpSuggested: ARRAY[0..5] OF BOOL; + UseSuggestedKp: ARRAY[0..5] OF BOOL; + RaiseKp: ARRAY[0..5] OF BOOL; + LowerKp: ARRAY[0..5] OF BOOL; + sKpVerdict: ARRAY[0..5] OF STRING(16); + sKpHelp: ARRAY[0..5] OF STRING(255); + + // homing + ProcessHome: FB_HomingProcessor; + HomingStatusText: STRING(255); + + // jogging + ProcessJog: FB_JogProcessor; + JogStatusText: STRING(255); + ButtonTextIndex: INT:=0; + + // cnc + VisuStruct3DControl_J: VisuStruct3DControl; + TrackPosition: FB_PositionTracker; + + // program processor + ProcessPrograms: FB_ProgramProcessor; + ProcessCommand_ActiveProgram: UINT := 0; + ActiveCommandDetails: STRING(255):=''; + + // controller + Controller: FB_Controller; + + // + EnableRtrig: R_TRIG; + EnableFtrig: F_TRIG; + _i, _j, _k: INT; + BuildTests: BOOL:=FALSE; + FirstScan: BOOL:=TRUE; + +END_VAR + + f495872a-eb99-4e62-a111-ca71535b5152 @@ -5803,6 +6989,31 @@ GroupHandler( + + + + PROGRAM _10_Robot +VAR + // + AR4Inputs: ARRAY [0..31] OF BYTE; + AR4Outputs: ARRAY [0..31] OF BYTE; + + // + rx_heartbeat: BOOL; + rx_en: BOOL; + rx_j1_limit, rx_j2_limit, rx_j3_limit: BOOL; + rx_j4_limit, rx_j5_limit, rx_j6_limit: BOOL; + + // + InitializeDrives: BOOL; + + // + FirstScan: BOOL:=TRUE; + +END_VAR + + + @@ -6089,6 +7300,35 @@ IoConfig_Globals.J5.in.bLimitPos := TRUE; IoConfig_Globals.J6.in.bLimitPos := rx_j6_limit; + + METHOD PRIVATE _M_HandleIO +VAR_INST + // + TxCrc, RxCrc: UINT; + ChecksumMisCount: INT; + + // + HeartbeatOn: TON; + HeartbeatOff: TON; + HeartbeatPt: TIME:=T#1000MS; + + // + AR4OperationalFtrig: F_TRIG; + + // + AllDrivesEnabled: BOOL; + DriveEnable: ARRAY [0..5] OF BOOL; + SetVelocity: ARRAY [0..5] OF INT; + EncPosition: ARRAY [0..5] OF DINT; + bufferIdx: INT; + jointIdx: INT; + + // + DeviceID: BYTE; + RobotDeviceID: BYTE:=1; + +END_VAR + @@ -6104,6 +7344,16 @@ IoConfig_Globals.J6.in.bLimitPos := rx_j6_limit; + + + + METHOD PUBLIC M_Init : BOOL +VAR_INPUT + DefaultParameters: BOOL; +END_VAR + + + @@ -6114,6 +7364,12 @@ END_IF InitializeDrives := TRUE; + + METHOD PUBLIC M_Init : BOOL +VAR_INPUT + DefaultParameters: BOOL; +END_VAR + @@ -6161,6 +7417,23 @@ InitializeDrives := TRUE; + + + + METHOD PRIVATE _M_Init +VAR_INPUT +END_VAR +VAR_STAT + _Step: INT; + _Done: BOOL; + _Success: BOOL; + _SMC_SetPosControlParams: ARRAY[0..5] OF SMC_SetPosControlParams; + _i, _j, _k: INT; +END_VAR + + + + @@ -6347,9 +7620,45 @@ IF _SMC_SetPosControlParams[5].bDone AND NOT _SMC_SetPosControlParams[5].bError END_IF + + METHOD PRIVATE _M_Init +VAR_INPUT +END_VAR +VAR_STAT + _Step: INT; + _Done: BOOL; + _Success: BOOL; + _SMC_SetPosControlParams: ARRAY[0..5] OF SMC_SetPosControlParams; + _i, _j, _k: INT; +END_VAR + + + + + PROGRAM _10_Robot +VAR + // + AR4Inputs: ARRAY [0..31] OF BYTE; + AR4Outputs: ARRAY [0..31] OF BYTE; + + // + rx_heartbeat: BOOL; + rx_en: BOOL; + rx_j1_limit, rx_j2_limit, rx_j3_limit: BOOL; + rx_j4_limit, rx_j5_limit, rx_j6_limit: BOOL; + + // + InitializeDrives: BOOL; + + // + FirstScan: BOOL:=TRUE; + +END_VAR + + 3256c2f0-e8a8-4738-aa1a-395ceff25c60 @@ -6375,6 +7684,73 @@ END_IF + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + + @@ -6402,6 +7778,73 @@ END_IF + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + + @@ -6444,6 +7887,73 @@ END_IF + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + + @@ -6550,6 +8060,73 @@ END_IF + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + + @@ -6632,6 +8209,73 @@ END_IF + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + + @@ -6806,6 +8450,38 @@ _FirstScan := FALSE; + + + + METHOD PRIVATE _M_HandleController : BOOL +VAR_IN_OUT + Controller: FB_Controller; +END_VAR +VAR_INPUT +END_VAR +VAR_STAT + OptionsTimer: TON:=(PT:=T#1S); + OptionsRtrig: R_TRIG; + ShareTimer: TON:=(PT:=T#1S); + ShareRtrig: R_TRIG; + OptionsShareRtrig: R_TRIG; + JogEnabledRtrig: R_TRIG; + JogEnabledFtrig: F_TRIG; + SquareButtonRtrig: R_TRIG; + TriangleButtonRtrig: R_TRIG; + CircleButtonRtrig: R_TRIG; + CrossButtonRtrig: R_TRIG; + R2_Last: USINT; + JoyStickLeftXLast: USINT; + JoyStickLeftYLast: USINT; + JoyStickRightXLast: USINT; + JoyStickRightYLast: USINT; + FactorMin: LREAL:=0.01; +END_VAR + + + + @@ -6910,6 +8586,38 @@ _FirstScan := FALSE; + + + + METHOD PRIVATE _M_HandleController : BOOL +VAR_IN_OUT + Controller: FB_Controller; +END_VAR +VAR_INPUT +END_VAR +VAR_STAT + OptionsTimer: TON:=(PT:=T#1S); + OptionsRtrig: R_TRIG; + ShareTimer: TON:=(PT:=T#1S); + ShareRtrig: R_TRIG; + OptionsShareRtrig: R_TRIG; + JogEnabledRtrig: R_TRIG; + JogEnabledFtrig: F_TRIG; + SquareButtonRtrig: R_TRIG; + TriangleButtonRtrig: R_TRIG; + CircleButtonRtrig: R_TRIG; + CrossButtonRtrig: R_TRIG; + R2_Last: USINT; + JoyStickLeftXLast: USINT; + JoyStickLeftYLast: USINT; + JoyStickRightXLast: USINT; + JoyStickRightYLast: USINT; + FactorMin: LREAL:=0.01; +END_VAR + + + + @@ -7098,6 +8806,34 @@ IF Enable AND_THEN Controller.P_State.Connected THEN END_IF + + METHOD PRIVATE _M_HandleController : BOOL +VAR_IN_OUT + Controller: FB_Controller; +END_VAR +VAR_INPUT +END_VAR +VAR_STAT + OptionsTimer: TON:=(PT:=T#1S); + OptionsRtrig: R_TRIG; + ShareTimer: TON:=(PT:=T#1S); + ShareRtrig: R_TRIG; + OptionsShareRtrig: R_TRIG; + JogEnabledRtrig: R_TRIG; + JogEnabledFtrig: F_TRIG; + SquareButtonRtrig: R_TRIG; + TriangleButtonRtrig: R_TRIG; + CircleButtonRtrig: R_TRIG; + CrossButtonRtrig: R_TRIG; + R2_Last: USINT; + JoyStickLeftXLast: USINT; + JoyStickLeftYLast: USINT; + JoyStickRightXLast: USINT; + JoyStickRightYLast: USINT; + FactorMin: LREAL:=0.01; +END_VAR + + @@ -7123,6 +8859,18 @@ END_IF + + + + METHOD PRIVATE _M_CheckOffsets : BOOL +VAR_INPUT +END_VAR +VAR + _i, _j, _k: INT; +END_VAR + + + @@ -7149,6 +8897,14 @@ END_IF END_IF + + METHOD PRIVATE _M_CheckOffsets : BOOL +VAR_INPUT +END_VAR +VAR + _i, _j, _k: INT; +END_VAR + @@ -7175,6 +8931,12 @@ FOR _i := GVL.TCP_POS_IDX TO GVL.MCS_POS_IDX BY 1 DO END_FOR + + METHOD PUBLIC M_ClearOffsets : BOOL +VAR_INPUT +END_VAR + + @@ -7195,6 +8957,23 @@ END_FOR + + + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + + + @@ -7210,6 +8989,23 @@ END_FOR + + + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + + + @@ -7260,6 +9056,19 @@ _MoveCommandProcessor( Error=> ); + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + @@ -7275,6 +9084,17 @@ _MoveCommandProcessor( + + + + METHOD PUBLIC M_MoveToPose : BOOL +VAR_INPUT + Pose: E_Pose; +END_VAR + + + + @@ -7289,9 +9109,81 @@ ELSE END_IF + + METHOD PUBLIC M_MoveToPose : BOOL +VAR_INPUT + Pose: E_Pose; +END_VAR + + + + + FUNCTION_BLOCK FB_JogProcessor +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR +VAR_INPUT + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + ABC_as_ACS: BOOL; + CoordSystem: SMC_COORD_SYSTEM; + Position: SMC_POS_REF; + Enabled: BOOL; + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + _EnableFtrig: F_TRIG; + + _SequenceMain: INT; + _SequenceSetCoordTrans: INT; + + _SMC_GroupJog2: SMC_GroupJog2; + + _ControllerCenter: USINT:=128; + _ControllerDeadZone: USINT:=40; + + _OffsetExist: ARRAY[0..GVL.MCS_POS_IDX-GVL.TCP_POS_IDX] OF BOOL; + + _MoveToPose: ARRAY[0..GVL.POSE_5_IDX-GVL.POSE_1_IDX] OF BOOL; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_JOG: INT := 0080; + STEP_WAIT_JOG: INT := 0090; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; +END_VAR + + + 9ad0dd5a-e160-4345-8eee-ad9cf9bfb3eb @@ -7352,6 +9244,54 @@ END_IF + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -7359,6 +9299,54 @@ END_IF + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -7376,6 +9364,54 @@ END_IF + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -7472,6 +9508,54 @@ END_IF + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -7514,6 +9598,54 @@ END_IF + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -7704,6 +9836,10 @@ _FirstScan := FALSE; SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -7774,6 +9910,9 @@ ELSE END_IF*) + + METHOD PROTECTED M_Resetting : BOOL + @@ -7789,6 +9928,17 @@ END_IF*) + + + + METHOD PUBLIC M_SetNextCommand : BOOL // returns true if successful +VAR_INPUT + CommandNumber: UINT; +END_VAR + + + + @@ -7801,6 +9951,13 @@ ELSE END_IF + + METHOD PUBLIC M_SetNextCommand : BOOL // returns true if successful +VAR_INPUT + CommandNumber: UINT; +END_VAR + + @@ -7825,6 +9982,10 @@ _SeqClearing := 0; _SeqResetting := 0; + + METHOD PROTECTED M_Idle : BOOL + + @@ -7849,6 +10010,10 @@ SUPER^._UnitMode(sName := 'Command Processor', xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -7873,6 +10038,10 @@ SUPER^._TimeoutTimer.PT := T#0MS; // timeout is ignored if set to 0 SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -7888,6 +10057,16 @@ SUPER^.M_StateComplete(); + + + + METHOD PROTECTED M_Execute : BOOL +VAR + _ErrorDescription: STRING; +END_VAR + + + @@ -8030,6 +10209,12 @@ END_CASE _ProcessorDoneRtrig(clk:=ItfActiveProcessorUnitMode.CurrentState = PACK_ML.State.Idle); + + METHOD PROTECTED M_Execute : BOOL +VAR + _ErrorDescription: STRING; +END_VAR + @@ -8063,6 +10248,10 @@ ELSE END_IF + + METHOD PROTECTED M_Suspending : BOOL + + @@ -8096,6 +10285,10 @@ END_IF _SeqMain := _STEP_WAIT; + + METHOD PROTECTED M_UnSuspending : BOOL + + @@ -8123,6 +10316,10 @@ ELSE END_IF + + METHOD PROTECTED M_Holding : BOOL + + @@ -8156,6 +10353,10 @@ END_IF _SeqMain := _STEP_WAIT; + + METHOD PROTECTED M_Unholding : BOOL + + @@ -8209,6 +10410,9 @@ ELSE END_IF*) + + METHOD PROTECTED M_Aborting : BOOL + @@ -8241,6 +10445,9 @@ ELSE END_IF + + METHOD PROTECTED M_Stopping : BOOL + @@ -8330,6 +10537,9 @@ END_IF + + METHOD PROTECTED M_Clearing : BOOL + @@ -8355,6 +10565,18 @@ END_IF + + + + METHOD PUBLIC M_SetCommands : BOOL +VAR_INPUT + StartingCommand: UINT; + Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; +END_VAR + + + + @@ -8368,6 +10590,14 @@ ELSE END_IF + + METHOD PUBLIC M_SetCommands : BOOL +VAR_INPUT + StartingCommand: UINT; + Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; +END_VAR + + @@ -8380,6 +10610,17 @@ END_IF + + + + METHOD PRIVATE _M_Error +VAR_INPUT + Description: STRING; +END_VAR + + + + @@ -8392,6 +10633,13 @@ END_IF SUPER^.M_Error(Description := CONCAT('Command Processor: ', Description)); + + METHOD PRIVATE _M_Error +VAR_INPUT + Description: STRING; +END_VAR + + @@ -8425,8 +10673,17 @@ END_IF P_CurrentCommandIndex REF= _CurrentCmdIdx; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_CurrentCommandIndex : REFERENCE TO UINT + @@ -8460,11 +10717,66 @@ END_IF P_CurrentCommand REF= _ActiveCommand; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_CurrentCommand : REFERENCE TO DUT_Command + + + + FUNCTION_BLOCK FB_CommandProcessor EXTENDS FB_Module +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; + PrgProcessor: FB_ProgramProcessor; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _ActiveCommand: DUT_Command; + _CurrentCmdIdx: UINT; + _ProcessMoveCommand: FB_MoveCmdProcessor; + _ProcessPauseCommand: FB_PauseCmdProcessor; + //_ProcessInputCommand: InputCommandProcessor; + _ProcessOutputCommand: FB_OutputCmdProcessor; + _ProcessorDoneRtrig: R_TRIG; + _ProcessVisionCommand: REFERENCE TO FB_VisionCmdProcessor; // keep vision in separate task + _ProcessVarSetCommand: FB_VarSetCmdProcessor; + _ProcessCncCommand: FB_CncCmdProcessor; + _ProcessLogicCommand: FB_LogicCmdProcessor; + _ErrorRtrig: ARRAY[0..7] OF R_TRIG; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_CMD: INT := 0010; + _STEP_WAIT: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + 97872514-f094-4f4a-8630-59a989ffd663 @@ -8480,6 +10792,48 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseMoveCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_MoveCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING:=''; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + @@ -8503,6 +10857,48 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseMoveCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_MoveCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING:=''; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + @@ -8515,6 +10911,48 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseMoveCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_MoveCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING:=''; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + @@ -8693,6 +11131,48 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseMoveCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_MoveCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING:=''; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + @@ -8948,6 +11428,46 @@ END_CASE + + + FUNCTION_BLOCK FB_ParseMoveCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_MoveCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING:=''; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + 35e49e9e-292d-48d5-910d-e69db317cc55 @@ -9236,6 +11756,93 @@ END_CASE + + + + PROGRAM _30_Visu +VAR + // alarms + itfAlarmConfiguration : AlarmManager.IAlarmConfiguration; + itfAlarmConfiguration7 : AlarmManager.IAlarmConfiguration7; + iAlarmCfg : INT; + + // + SelectedProgramNumber: INT; + SelectedRecipeRowIndex: INT; + SelectedRecipeRowIndexLast: INT; + RecipeRowSelected: BOOL; + InsertLineAbove: BOOL; + InsertLineBelow: BOOL; + DeleteLine: BOOL; + CopySelectedCommand: BOOL; + CopiedCommandType: DUT_CommandType; + CopiedCommandString: STRING(GVL.COMMAND_LEN); + CopiedCommandComment: STRING; + PasteCommand: BOOL; + JumpRowChanged: BOOL; + ScrollingBegin: BOOL; + ScrollingSingleUp: BOOL; + ScrollingSingleDown: BOOL; + ScrollingPageUp: BOOL; + ScrollingPageDown: BOOL; + ScrollingEnd: BOOL; + + _i,_j,_k: INT; + + SetStoredPositionAsCurrent: BOOL; + SelectedStoredPosition: UINT; + SetVisionRegisterAsCurrent: BOOL; + SelectedVisionRegister: UINT; + SelectedFlag: UINT; + + // + TeachPosition: BOOL; + stTeachPosition: ST_MoveCmd; + + // + MoveCmdParser: FB_ParseMoveCmd; + stMoveCmd: ST_MoveCmd; + MoveCmdVisu: AddMoveCmd_VISU_STRUCT; + + // + OutputCmdParser: FB_ParseOutputCmd; + stOutputCmd: ST_OutputCmd; + OutputCmdVisu: AddOutputCmd_VISU_STRUCT; + + // + PauseCmdParser: FB_ParsePauseCmd; + stPauseCmd: ST_PauseCmd; + PauseCmdVisu: AddPauseCmd_VISU_STRUCT; + + // + VisionCmdParser : FB_ParseVisionCmd; + stVisionCmd : ST_VisionCmd; + VisionCmdVisu: AddVisionCmd_VISU_STRUCT; + + // + VarSetCmdParser : FB_ParseVarSetCmd; + stVarSetCmd : ST_VarSetCmd; + VarSetCmdVisu: AddVarSetCmd_VISU_STRUCT; + + // + CncCmdParser : FB_ParseCncCmd; + stCncCmd : ST_CncCmd; + CncCmdVisu: AddCncCmd_VISU_STRUCT; + + // + LogicCmdParser : FB_ParseLogicCmd; + stLogicCmd : ST_LogicCmd; + LogicCmdVisu: AddLogicCmd_VISU_STRUCT; + + // + CurrentVisu: STRING; + OpenDialog: VU.FbOpenDialogExtended; + +END_VAR + + + + @@ -9424,6 +12031,91 @@ END_IF + + + PROGRAM _30_Visu +VAR + // alarms + itfAlarmConfiguration : AlarmManager.IAlarmConfiguration; + itfAlarmConfiguration7 : AlarmManager.IAlarmConfiguration7; + iAlarmCfg : INT; + + // + SelectedProgramNumber: INT; + SelectedRecipeRowIndex: INT; + SelectedRecipeRowIndexLast: INT; + RecipeRowSelected: BOOL; + InsertLineAbove: BOOL; + InsertLineBelow: BOOL; + DeleteLine: BOOL; + CopySelectedCommand: BOOL; + CopiedCommandType: DUT_CommandType; + CopiedCommandString: STRING(GVL.COMMAND_LEN); + CopiedCommandComment: STRING; + PasteCommand: BOOL; + JumpRowChanged: BOOL; + ScrollingBegin: BOOL; + ScrollingSingleUp: BOOL; + ScrollingSingleDown: BOOL; + ScrollingPageUp: BOOL; + ScrollingPageDown: BOOL; + ScrollingEnd: BOOL; + + _i,_j,_k: INT; + + SetStoredPositionAsCurrent: BOOL; + SelectedStoredPosition: UINT; + SetVisionRegisterAsCurrent: BOOL; + SelectedVisionRegister: UINT; + SelectedFlag: UINT; + + // + TeachPosition: BOOL; + stTeachPosition: ST_MoveCmd; + + // + MoveCmdParser: FB_ParseMoveCmd; + stMoveCmd: ST_MoveCmd; + MoveCmdVisu: AddMoveCmd_VISU_STRUCT; + + // + OutputCmdParser: FB_ParseOutputCmd; + stOutputCmd: ST_OutputCmd; + OutputCmdVisu: AddOutputCmd_VISU_STRUCT; + + // + PauseCmdParser: FB_ParsePauseCmd; + stPauseCmd: ST_PauseCmd; + PauseCmdVisu: AddPauseCmd_VISU_STRUCT; + + // + VisionCmdParser : FB_ParseVisionCmd; + stVisionCmd : ST_VisionCmd; + VisionCmdVisu: AddVisionCmd_VISU_STRUCT; + + // + VarSetCmdParser : FB_ParseVarSetCmd; + stVarSetCmd : ST_VarSetCmd; + VarSetCmdVisu: AddVarSetCmd_VISU_STRUCT; + + // + CncCmdParser : FB_ParseCncCmd; + stCncCmd : ST_CncCmd; + CncCmdVisu: AddCncCmd_VISU_STRUCT; + + // + LogicCmdParser : FB_ParseLogicCmd; + stLogicCmd : ST_LogicCmd; + LogicCmdVisu: AddLogicCmd_VISU_STRUCT; + + // + CurrentVisu: STRING; + OpenDialog: VU.FbOpenDialogExtended; + +END_VAR + + + 9462f316-faa5-42b7-be46-708f3ef2e1f0 @@ -9442,6 +12134,25 @@ END_IF + + + + FUNCTION F_BuildOutputCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_OutputCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _OutTypeDig: STRING(3):='DIG'; + _OutTypePwm: STRING(3):='PWM'; +END_VAR + + + + @@ -9449,6 +12160,25 @@ END_IF + + + + FUNCTION F_BuildOutputCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_OutputCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _OutTypeDig: STRING(3):='DIG'; + _OutTypePwm: STRING(3):='PWM'; +END_VAR + + + + @@ -9475,6 +12205,25 @@ END_IF + + + + FUNCTION F_BuildOutputCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_OutputCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _OutTypeDig: STRING(3):='DIG'; + _OutTypePwm: STRING(3):='PWM'; +END_VAR + + + + @@ -9505,6 +12254,23 @@ F_BuildOutputCmd := _Command; + + + FUNCTION F_BuildOutputCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_OutputCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _OutTypeDig: STRING(3):='DIG'; + _OutTypePwm: STRING(3):='PWM'; +END_VAR + + + e29ffd53-c60c-4780-9cae-795a42c1806f @@ -9520,6 +12286,26 @@ F_BuildOutputCmd := _Command; + + + + FUNCTION_BLOCK FB_ParseOutputCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_OutputCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _OutputType: STRING; +END_VAR + + + + @@ -9537,6 +12323,26 @@ F_BuildOutputCmd := _Command; + + + + FUNCTION_BLOCK FB_ParseOutputCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_OutputCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _OutputType: STRING; +END_VAR + + + + @@ -9554,6 +12360,26 @@ F_BuildOutputCmd := _Command; + + + + FUNCTION_BLOCK FB_ParseOutputCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_OutputCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _OutputType: STRING; +END_VAR + + + + @@ -9579,6 +12405,24 @@ stCommand.OutputValue1 := STRING_TO_LREAL(_CmdParams[2]); + + + FUNCTION_BLOCK FB_ParseOutputCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_OutputCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _OutputType: STRING; +END_VAR + + + b67ef6d4-a509-4504-af22-150225e40cd0 @@ -9597,6 +12441,22 @@ stCommand.OutputValue1 := STRING_TO_LREAL(_CmdParams[2]); + + + + FUNCTION F_BuildPauseCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_PauseCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + @@ -9604,6 +12464,22 @@ stCommand.OutputValue1 := STRING_TO_LREAL(_CmdParams[2]); + + + + FUNCTION F_BuildPauseCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_PauseCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + @@ -9614,6 +12490,22 @@ stCommand.OutputValue1 := STRING_TO_LREAL(_CmdParams[2]); + + + + FUNCTION F_BuildPauseCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_PauseCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + @@ -9629,6 +12521,20 @@ F_BuildPauseCmd := _Command; + + + FUNCTION F_BuildPauseCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_PauseCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + b7a08d1d-f5e6-4f3c-9f3f-733c40c45429 @@ -9644,6 +12550,25 @@ F_BuildPauseCmd := _Command; + + + + FUNCTION_BLOCK FB_ParsePauseCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_PauseCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR + + + + @@ -9661,6 +12586,25 @@ F_BuildPauseCmd := _Command; + + + + FUNCTION_BLOCK FB_ParsePauseCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_PauseCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR + + + + @@ -9673,6 +12617,25 @@ F_BuildPauseCmd := _Command; + + + + FUNCTION_BLOCK FB_ParsePauseCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_PauseCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR + + + + @@ -9689,6 +12652,23 @@ stCommand.PauseTime := STRING_TO_TIME(_CmdParams[0]); + + + FUNCTION_BLOCK FB_ParsePauseCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_PauseCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR + + + 155e4e57-98df-4f34-8414-c9af1793585b @@ -9751,6 +12731,29 @@ stCommand.PauseTime := STRING_TO_TIME(_CmdParams[0]); + + + + PROGRAM _40_Vision +// vision is separated into its own program so that we can +// assign it to its own core! how awesome is that?! +VAR + ProcessVisionCommand: FB_VisionCmdProcessor; + HostName : STRING; + VisionSystemUrl: STRING; + VisionOutputImageUrl: STRING; + VisionSystemIpAddress_Last: STRING(19); + VisionOutputImageScaling: REAL := 1000.0; + VisionImageWidth: INT:=365; // TODO figure out a way to dynamically set this based on the values set in the visu element properties + VisionImageHeight: INT:=255; +END_VAR +VAR CONSTANT + LocalIpAddress: STRING(19):='127.0.0.1'; +END_VAR + + + + @@ -9761,6 +12764,29 @@ stCommand.PauseTime := STRING_TO_TIME(_CmdParams[0]); + + + + PROGRAM _40_Vision +// vision is separated into its own program so that we can +// assign it to its own core! how awesome is that?! +VAR + ProcessVisionCommand: FB_VisionCmdProcessor; + HostName : STRING; + VisionSystemUrl: STRING; + VisionOutputImageUrl: STRING; + VisionSystemIpAddress_Last: STRING(19); + VisionOutputImageScaling: REAL := 1000.0; + VisionImageWidth: INT:=365; // TODO figure out a way to dynamically set this based on the values set in the visu element properties + VisionImageHeight: INT:=255; +END_VAR +VAR CONSTANT + LocalIpAddress: STRING(19):='127.0.0.1'; +END_VAR + + + + @@ -9806,6 +12832,27 @@ ProcessVisionCommand( + + + PROGRAM _40_Vision +// vision is separated into its own program so that we can +// assign it to its own core! how awesome is that?! +VAR + ProcessVisionCommand: FB_VisionCmdProcessor; + HostName : STRING; + VisionSystemUrl: STRING; + VisionOutputImageUrl: STRING; + VisionSystemIpAddress_Last: STRING(19); + VisionOutputImageScaling: REAL := 1000.0; + VisionImageWidth: INT:=365; // TODO figure out a way to dynamically set this based on the values set in the visu element properties + VisionImageHeight: INT:=255; +END_VAR +VAR CONSTANT + LocalIpAddress: STRING(19):='127.0.0.1'; +END_VAR + + + 168c2bce-5a06-487a-a077-28448e10fa0d @@ -9821,6 +12868,45 @@ ProcessVisionCommand( + + + + FUNCTION_BLOCK FB_CncPathPlanner +VAR_IN_OUT + VarList: SMC_VarList; +END_VAR +VAR_INPUT +END_VAR +VAR_OUTPUT + DataOut: POINTER TO SMC_OUTQUEUE; + Busy: BOOL; + Done: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _Filename: STRING := '_cnc/CNC_FromFile.cnc'; + _SMC_NCInterpreter: SMC_NCInterpreter; + _SMC_ReadNCFile2: SMC_ReadNCFile2; + _SMC_CheckVelocities: SMC_CheckVelocities; + _SMC_GEOINFO: ARRAY[0..50] OF SMC_GEOINFO; + _StartPos: SMC_PosInfo; + // ATTENTION: ZYZ is the only orientation convention that was reliable during testing. + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + _ExecuteRtrig: R_TRIG; + _Execute: BOOL; + _ResetRtrig: R_TRIG; + _Reset: BOOL; + _Sequence: INT:=0; + _ErrorRtrig: R_TRIG; +END_VAR +VAR CONSTANT + _BaseCncDirectory: STRING:='_cnc/'; // before update to 3.5.19.40 '/var/opt/codesys/_cnc/' +END_VAR + + + + @@ -9852,6 +12938,45 @@ ProcessVisionCommand( + + + + FUNCTION_BLOCK FB_CncPathPlanner +VAR_IN_OUT + VarList: SMC_VarList; +END_VAR +VAR_INPUT +END_VAR +VAR_OUTPUT + DataOut: POINTER TO SMC_OUTQUEUE; + Busy: BOOL; + Done: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _Filename: STRING := '_cnc/CNC_FromFile.cnc'; + _SMC_NCInterpreter: SMC_NCInterpreter; + _SMC_ReadNCFile2: SMC_ReadNCFile2; + _SMC_CheckVelocities: SMC_CheckVelocities; + _SMC_GEOINFO: ARRAY[0..50] OF SMC_GEOINFO; + _StartPos: SMC_PosInfo; + // ATTENTION: ZYZ is the only orientation convention that was reliable during testing. + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + _ExecuteRtrig: R_TRIG; + _Execute: BOOL; + _ResetRtrig: R_TRIG; + _Reset: BOOL; + _Sequence: INT:=0; + _ErrorRtrig: R_TRIG; +END_VAR +VAR CONSTANT + _BaseCncDirectory: STRING:='_cnc/'; // before update to 3.5.19.40 '/var/opt/codesys/_cnc/' +END_VAR + + + + @@ -9936,6 +13061,45 @@ ProcessVisionCommand( + + + + FUNCTION_BLOCK FB_CncPathPlanner +VAR_IN_OUT + VarList: SMC_VarList; +END_VAR +VAR_INPUT +END_VAR +VAR_OUTPUT + DataOut: POINTER TO SMC_OUTQUEUE; + Busy: BOOL; + Done: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _Filename: STRING := '_cnc/CNC_FromFile.cnc'; + _SMC_NCInterpreter: SMC_NCInterpreter; + _SMC_ReadNCFile2: SMC_ReadNCFile2; + _SMC_CheckVelocities: SMC_CheckVelocities; + _SMC_GEOINFO: ARRAY[0..50] OF SMC_GEOINFO; + _StartPos: SMC_PosInfo; + // ATTENTION: ZYZ is the only orientation convention that was reliable during testing. + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + _ExecuteRtrig: R_TRIG; + _Execute: BOOL; + _ResetRtrig: R_TRIG; + _Reset: BOOL; + _Sequence: INT:=0; + _ErrorRtrig: R_TRIG; +END_VAR +VAR CONSTANT + _BaseCncDirectory: STRING:='_cnc/'; // before update to 3.5.19.40 '/var/opt/codesys/_cnc/' +END_VAR + + + + @@ -9949,6 +13113,45 @@ ProcessVisionCommand( before update to 3.5.19.40 '/var/opt/codesys/_cnc/' + + + + FUNCTION_BLOCK FB_CncPathPlanner +VAR_IN_OUT + VarList: SMC_VarList; +END_VAR +VAR_INPUT +END_VAR +VAR_OUTPUT + DataOut: POINTER TO SMC_OUTQUEUE; + Busy: BOOL; + Done: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _Filename: STRING := '_cnc/CNC_FromFile.cnc'; + _SMC_NCInterpreter: SMC_NCInterpreter; + _SMC_ReadNCFile2: SMC_ReadNCFile2; + _SMC_CheckVelocities: SMC_CheckVelocities; + _SMC_GEOINFO: ARRAY[0..50] OF SMC_GEOINFO; + _StartPos: SMC_PosInfo; + // ATTENTION: ZYZ is the only orientation convention that was reliable during testing. + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + _ExecuteRtrig: R_TRIG; + _Execute: BOOL; + _ResetRtrig: R_TRIG; + _Reset: BOOL; + _Sequence: INT:=0; + _ErrorRtrig: R_TRIG; +END_VAR +VAR CONSTANT + _BaseCncDirectory: STRING:='_cnc/'; // before update to 3.5.19.40 '/var/opt/codesys/_cnc/' +END_VAR + + + + @@ -10092,6 +13295,17 @@ END_IF + + + + METHOD PUBLIC M_Execute : BOOL +VAR_INPUT + Filename: STRING := 'CNC_FromFile.cnc'; +END_VAR + + + + @@ -10101,6 +13315,13 @@ _Execute:=TRUE; Done := FALSE; + + METHOD PUBLIC M_Execute : BOOL +VAR_INPUT + Filename: STRING := 'CNC_FromFile.cnc'; +END_VAR + + @@ -10118,6 +13339,12 @@ Error := FALSE; ErrorDescription := ''; + + METHOD PUBLIC M_Reset : BOOL +VAR_INPUT +END_VAR + + @@ -10133,6 +13360,17 @@ ErrorDescription := ''; + + + + METHOD PUBLIC M_SetStartPosition : BOOL +VAR_INPUT + StartPos: SMC_PosInfo; +END_VAR + + + + @@ -10140,6 +13378,13 @@ ErrorDescription := ''; _StartPos := StartPos; + + METHOD PUBLIC M_SetStartPosition : BOOL +VAR_INPUT + StartPos: SMC_PosInfo; +END_VAR + + @@ -10158,6 +13403,17 @@ ErrorDescription := ''; + + + + METHOD PUBLIC M_SetOriConvention : BOOL +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR + + + + @@ -10166,9 +13422,53 @@ ErrorDescription := ''; GVL.OriConvention := OriConvention; + + METHOD PUBLIC M_SetOriConvention : BOOL +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR + + + + + FUNCTION_BLOCK FB_CncPathPlanner +VAR_IN_OUT + VarList: SMC_VarList; +END_VAR +VAR_INPUT +END_VAR +VAR_OUTPUT + DataOut: POINTER TO SMC_OUTQUEUE; + Busy: BOOL; + Done: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _Filename: STRING := '_cnc/CNC_FromFile.cnc'; + _SMC_NCInterpreter: SMC_NCInterpreter; + _SMC_ReadNCFile2: SMC_ReadNCFile2; + _SMC_CheckVelocities: SMC_CheckVelocities; + _SMC_GEOINFO: ARRAY[0..50] OF SMC_GEOINFO; + _StartPos: SMC_PosInfo; + // ATTENTION: ZYZ is the only orientation convention that was reliable during testing. + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; + _ExecuteRtrig: R_TRIG; + _Execute: BOOL; + _ResetRtrig: R_TRIG; + _Reset: BOOL; + _Sequence: INT:=0; + _ErrorRtrig: R_TRIG; +END_VAR +VAR CONSTANT + _BaseCncDirectory: STRING:='_cnc/'; // before update to 3.5.19.40 '/var/opt/codesys/_cnc/' +END_VAR + + + 845c01d1-16bd-4c5b-8921-4865a7e07fd2 @@ -10187,6 +13487,32 @@ GVL.OriConvention := OriConvention; + + + + FUNCTION F_BuildCncCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_CncCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + + @@ -10194,6 +13520,32 @@ GVL.OriConvention := OriConvention; + + + + FUNCTION F_BuildCncCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_CncCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + + @@ -10276,6 +13628,32 @@ GVL.OriConvention := OriConvention; + + + + FUNCTION F_BuildCncCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_CncCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + + @@ -10335,6 +13713,30 @@ F_BuildCncCmd := _Command; + + + FUNCTION F_BuildCncCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_CncCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + e33aafb8-c7d1-4dab-86cc-41df906bbf07 @@ -10380,6 +13782,42 @@ F_BuildCncCmd := _Command; + + + + FUNCTION_BLOCK FB_PositionTracker +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + J1: AXIS_REF_SM3; + J2: AXIS_REF_SM3; + J3: AXIS_REF_SM3; + J4: AXIS_REF_SM3; + J5: AXIS_REF_SM3; + J6: AXIS_REF_SM3; +END_VAR +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR +VAR_OUTPUT + VisuStruct3DTrack: VisuStruct3DTrack; + Position: SMC_PosInfo; + Arm: SMC_ArticulatedRobot_6DOF_J0_State; + Elbow: SMC_ArticulatedRobot_6DOF_J1_State; + Hand: SMC_ArticulatedRobot_6DOF_J4_State; +END_VAR +VAR + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_Trafof_ArticulatedRobot_6DOF: SMC_Trafof_ArticulatedRobot_6DOF; + _VisuStruct3DPathPoint: ARRAY [0..5000] OF VisuStruct3DPathPoint; + _SMC_PositionTracker: SMC_PositionTracker; + _PositionTrackerClearR_Trig: R_Trig; + _Clear: BOOL:=FALSE; +END_VAR + + + + @@ -10390,6 +13828,42 @@ F_BuildCncCmd := _Command; + + + + FUNCTION_BLOCK FB_PositionTracker +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + J1: AXIS_REF_SM3; + J2: AXIS_REF_SM3; + J3: AXIS_REF_SM3; + J4: AXIS_REF_SM3; + J5: AXIS_REF_SM3; + J6: AXIS_REF_SM3; +END_VAR +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR +VAR_OUTPUT + VisuStruct3DTrack: VisuStruct3DTrack; + Position: SMC_PosInfo; + Arm: SMC_ArticulatedRobot_6DOF_J0_State; + Elbow: SMC_ArticulatedRobot_6DOF_J1_State; + Hand: SMC_ArticulatedRobot_6DOF_J4_State; +END_VAR +VAR + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_Trafof_ArticulatedRobot_6DOF: SMC_Trafof_ArticulatedRobot_6DOF; + _VisuStruct3DPathPoint: ARRAY [0..5000] OF VisuStruct3DPathPoint; + _SMC_PositionTracker: SMC_PositionTracker; + _PositionTrackerClearR_Trig: R_Trig; + _Clear: BOOL:=FALSE; +END_VAR + + + + @@ -10417,6 +13891,42 @@ F_BuildCncCmd := _Command; + + + + FUNCTION_BLOCK FB_PositionTracker +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + J1: AXIS_REF_SM3; + J2: AXIS_REF_SM3; + J3: AXIS_REF_SM3; + J4: AXIS_REF_SM3; + J5: AXIS_REF_SM3; + J6: AXIS_REF_SM3; +END_VAR +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR +VAR_OUTPUT + VisuStruct3DTrack: VisuStruct3DTrack; + Position: SMC_PosInfo; + Arm: SMC_ArticulatedRobot_6DOF_J0_State; + Elbow: SMC_ArticulatedRobot_6DOF_J1_State; + Hand: SMC_ArticulatedRobot_6DOF_J4_State; +END_VAR +VAR + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_Trafof_ArticulatedRobot_6DOF: SMC_Trafof_ArticulatedRobot_6DOF; + _VisuStruct3DPathPoint: ARRAY [0..5000] OF VisuStruct3DPathPoint; + _SMC_PositionTracker: SMC_PositionTracker; + _PositionTrackerClearR_Trig: R_Trig; + _Clear: BOOL:=FALSE; +END_VAR + + + + @@ -10462,6 +13972,42 @@ F_BuildCncCmd := _Command; + + + + FUNCTION_BLOCK FB_PositionTracker +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + J1: AXIS_REF_SM3; + J2: AXIS_REF_SM3; + J3: AXIS_REF_SM3; + J4: AXIS_REF_SM3; + J5: AXIS_REF_SM3; + J6: AXIS_REF_SM3; +END_VAR +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR +VAR_OUTPUT + VisuStruct3DTrack: VisuStruct3DTrack; + Position: SMC_PosInfo; + Arm: SMC_ArticulatedRobot_6DOF_J0_State; + Elbow: SMC_ArticulatedRobot_6DOF_J1_State; + Hand: SMC_ArticulatedRobot_6DOF_J4_State; +END_VAR +VAR + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_Trafof_ArticulatedRobot_6DOF: SMC_Trafof_ArticulatedRobot_6DOF; + _VisuStruct3DPathPoint: ARRAY [0..5000] OF VisuStruct3DPathPoint; + _SMC_PositionTracker: SMC_PositionTracker; + _PositionTrackerClearR_Trig: R_Trig; + _Clear: BOOL:=FALSE; +END_VAR + + + + @@ -10560,9 +14106,49 @@ _Clear := FALSE; _Clear := TRUE; + + METHOD PUBLIC M_Clear +VAR_INPUT +END_VAR + + + + + FUNCTION_BLOCK FB_PositionTracker +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + J1: AXIS_REF_SM3; + J2: AXIS_REF_SM3; + J3: AXIS_REF_SM3; + J4: AXIS_REF_SM3; + J5: AXIS_REF_SM3; + J6: AXIS_REF_SM3; +END_VAR +VAR_INPUT + OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYZ; +END_VAR +VAR_OUTPUT + VisuStruct3DTrack: VisuStruct3DTrack; + Position: SMC_PosInfo; + Arm: SMC_ArticulatedRobot_6DOF_J0_State; + Elbow: SMC_ArticulatedRobot_6DOF_J1_State; + Hand: SMC_ArticulatedRobot_6DOF_J4_State; +END_VAR +VAR + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_Trafof_ArticulatedRobot_6DOF: SMC_Trafof_ArticulatedRobot_6DOF; + _VisuStruct3DPathPoint: ARRAY [0..5000] OF VisuStruct3DPathPoint; + _SMC_PositionTracker: SMC_PositionTracker; + _PositionTrackerClearR_Trig: R_Trig; + _Clear: BOOL:=FALSE; +END_VAR + + + 7701f0fc-a0ed-4db5-acf4-25ec5ce43abb @@ -10647,6 +14233,29 @@ _Clear := FALSE; + + + + METHOD PUBLIC M_CalibrateCamera : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + fCalCheckerSize: REAL:=25.0; //mm + iCalCheckerX: UINT:=6; + iCalCheckerY: UINT:=9; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _CalScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CalibrateCamera.py'; + _CalResultFile: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + + + @@ -10670,6 +14279,29 @@ _Clear := FALSE; + + + + METHOD PUBLIC M_CalibrateCamera : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + fCalCheckerSize: REAL:=25.0; //mm + iCalCheckerX: UINT:=6; + iCalCheckerY: UINT:=9; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _CalScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CalibrateCamera.py'; + _CalResultFile: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + + + @@ -10706,6 +14338,25 @@ ELSE END_IF + + METHOD PUBLIC M_CalibrateCamera : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + fCalCheckerSize: REAL:=25.0; //mm + iCalCheckerX: UINT:=6; + iCalCheckerY: UINT:=9; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _CalScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CalibrateCamera.py'; + _CalResultFile: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + @@ -10743,6 +14394,26 @@ END_IF sec + + + + METHOD PUBLIC M_CaptureImage : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _ImageScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CaptureImage.py'; + _CaptureImageName: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + + + @@ -10766,6 +14437,26 @@ END_IF + + + + METHOD PUBLIC M_CaptureImage : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _ImageScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CaptureImage.py'; + _CaptureImageName: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + + + @@ -10797,6 +14488,22 @@ END_IF + + METHOD PUBLIC M_CaptureImage : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR + _ImageScriptFileName: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/CaptureImage.py'; + _CaptureImageName: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; +END_VAR + + @@ -10894,6 +14601,35 @@ END_IF + + + + METHOD PUBLIC M_LocatePart : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + iMaxPos: UINT:=10; // i + dMaxOverlap: REAL:=0.0; // j + dScore: REAL:=0.8; // k + dToleranceAngle: REAL:=90.0; // l + sTemplateName: STRING:='template.jpg'; + sScriptFilename: STRING:='FastTemplateMatching.py'; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR CONSTANT + //_SCRIPT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/FastTemplateMatching.py'; + _SCRIPT_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/'; + _RESULT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; + _TEMPLATE_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/Templates/'; +END_VAR + + + + + @@ -10901,6 +14637,35 @@ END_IF + + + + METHOD PUBLIC M_LocatePart : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + iMaxPos: UINT:=10; // i + dMaxOverlap: REAL:=0.0; // j + dScore: REAL:=0.8; // k + dToleranceAngle: REAL:=90.0; // l + sTemplateName: STRING:='template.jpg'; + sScriptFilename: STRING:='FastTemplateMatching.py'; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR CONSTANT + //_SCRIPT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/FastTemplateMatching.py'; + _SCRIPT_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/'; + _RESULT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; + _TEMPLATE_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/Templates/'; +END_VAR + + + + + @@ -10930,6 +14695,35 @@ END_IF + + + + METHOD PUBLIC M_LocatePart : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + iMaxPos: UINT:=10; // i + dMaxOverlap: REAL:=0.0; // j + dScore: REAL:=0.8; // k + dToleranceAngle: REAL:=90.0; // l + sTemplateName: STRING:='template.jpg'; + sScriptFilename: STRING:='FastTemplateMatching.py'; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR CONSTANT + //_SCRIPT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/FastTemplateMatching.py'; + _SCRIPT_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/'; + _RESULT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; + _TEMPLATE_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/Templates/'; +END_VAR + + + + + @@ -10972,9 +14766,46 @@ ELSE END_IF + + METHOD PUBLIC M_LocatePart : BOOL +VAR_INPUT + iImageWidth: UINT:=2016; + iImageHeight: UINT:=2000; + uTimeout: UDINT:=60; //sec + iMaxPos: UINT:=10; // i + dMaxOverlap: REAL:=0.0; // j + dScore: REAL:=0.8; // k + dToleranceAngle: REAL:=90.0; // l + sTemplateName: STRING:='template.jpg'; + sScriptFilename: STRING:='FastTemplateMatching.py'; +END_VAR +VAR + _Command : STRING(255); +END_VAR +VAR CONSTANT + //_SCRIPT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/FastTemplateMatching.py'; + _SCRIPT_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/'; + _RESULT_FILE_NAME: STRING:='/var/opt/codesys/PlcLogic/visu/outputimage.jpg'; + _TEMPLATE_DIR_PATH: STRING:='/var/opt/codesys/PlcLogic/Application/Vision/Templates/'; +END_VAR + + + + + + FUNCTION_BLOCK FB_OpenCV EXTENDS FB_PythonServerHandler +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR + + + 6d87a4c9-9357-4e03-b1a0-c731940d5946 @@ -11006,6 +14837,73 @@ END_IF + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + + @@ -11024,6 +14922,73 @@ END_IF + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + + @@ -11066,6 +15031,73 @@ END_IF + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + + @@ -11130,6 +15162,73 @@ END_IF + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + + @@ -11244,6 +15343,73 @@ END_IF + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + + @@ -11398,6 +15564,17 @@ END_IF + + + + METHOD INTERNAL _M_Write : BOOL +VAR_INPUT + Data: STRING(255); +END_VAR + + + + @@ -11419,6 +15596,13 @@ ELSE END_IF + + METHOD INTERNAL _M_Write : BOOL +VAR_INPUT + Data: STRING(255); +END_VAR + + @@ -11439,9 +15623,80 @@ END_IF _ConnectStep := ConnectStep_IDLE; + + METHOD INTERNAL _M_Reconnect : BOOL +VAR_INPUT +END_VAR + + + + + FUNCTION_BLOCK FB_TcpClient +VAR_INPUT + bEnable: BOOL; + strIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR + _Write: BOOL:=FALSE; + _DataToWrite: STRING(255):=''; +END_VAR +VAR_OUTPUT + bBusyWrite: BOOL; + bDoneWrite: BOOL; + bBusyRead: BOOL; + dRecordRead: DINT; + strRead: STRING(255); + byteArrayRead: ARRAY[0..254] OF BYTE; + bConnected: BOOL; +END_VAR + +VAR +{warning disable C0540} + _ipAddress : NBS.IPv4Address; +{warning restore C0540} + _fbTcpClient : NBS.TCP_Client; + _fbTcpRead : NBS.TCP_Read; + _fbTcpWrite : NBS.TCP_Write; + + _ConnectDelayTimer: TON; + + _WriteData: StringByteArray; + _ReadData: StringByteArray; + + _WriteRTRIG: R_TRIG; + _ConnectStep, _ReadStep: INT; + _Read: BOOL; +END_VAR + +VAR CONSTANT + ConnectStep_IDLE: INT:=00; + ConnectStep_DELAY: INT:=10; + ConnectStep_SETUP: INT:=20; + ConnectStep_ENABLE: INT:=30; + ConnectStep_WAIT: INT:=40; + ConnectStep_CONN: INT:=50; +END_VAR + +VAR CONSTANT + WriteStep_IDLE: INT:=00; + WriteStep_DATA: INT:=10; + WriteStep_WRITE: INT:=20; + WriteStep_WAIT: INT:=30; +END_VAR + +VAR CONSTANT + ReadStep_RESET: INT:=00; + ReadStep_IDLE: INT:=10; + ReadStep_ENABLE: INT:=20; + ReadStep_MONITOR: INT:=30; +END_VAR + + + 0c178c71-0d25-4361-b16e-e3833e33b5d0 @@ -11457,6 +15712,32 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseVisionCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VisionCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _CommandType: STRING; + _StrPosition: INT; +END_VAR +VAR CONSTANT + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeAcq: STRING(3):='ACQ'; // legacy alias for CAP + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11474,6 +15755,32 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseVisionCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VisionCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _CommandType: STRING; + _StrPosition: INT; +END_VAR +VAR CONSTANT + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeAcq: STRING(3):='ACQ'; // legacy alias for CAP + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11496,6 +15803,32 @@ END_IF + + + + FUNCTION_BLOCK FB_ParseVisionCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VisionCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _CommandType: STRING; + _StrPosition: INT; +END_VAR +VAR CONSTANT + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeAcq: STRING(3):='ACQ'; // legacy alias for CAP + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11542,6 +15875,32 @@ END_IF locate part + + + + FUNCTION_BLOCK FB_ParseVisionCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VisionCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _CommandType: STRING; + _StrPosition: INT; +END_VAR +VAR CONSTANT + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeAcq: STRING(3):='ACQ'; // legacy alias for CAP + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11633,6 +15992,30 @@ END_IF + + + FUNCTION_BLOCK FB_ParseVisionCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VisionCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _CommandType: STRING; + _StrPosition: INT; +END_VAR +VAR CONSTANT + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeAcq: STRING(3):='ACQ'; // legacy alias for CAP + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + c1f3fe10-7066-4e4d-ae1a-05a0a2c8898a @@ -11651,6 +16034,25 @@ END_IF + + + + FUNCTION F_BuildVisionCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VisionCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11658,6 +16060,25 @@ END_IF + + + + FUNCTION F_BuildVisionCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VisionCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11701,6 +16122,25 @@ END_IF locate part + + + + FUNCTION F_BuildVisionCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VisionCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + + @@ -11772,6 +16212,23 @@ F_BuildVisionCmd := _Command; + + + FUNCTION F_BuildVisionCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VisionCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _CommandTypeCal: STRING(3):='CAL'; // calibrate vision + _CommandTypeCap: STRING(3):='CAP'; // capture image + _CommandTypeLoc: STRING(3):='LOC'; // locate part +END_VAR + + 580bcf70-fae5-407f-8446-aaa0a1365ba4 @@ -11800,6 +16257,40 @@ F_BuildVisionCmd := _Command; + + + + FUNCTION_BLOCK FB_Module EXTENDS FB_PackML IMPLEMENTS ItfModule + +VAR_INPUT // input vars + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR + +VAR_OUTPUT // output vars + ItfUnitMode: PACK_ML.IUnitMode; + Busy: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR + +VAR // standard local vars + _TimeoutTimer: TON:=(PT:=T#0MS); + _Home, _Start: BOOL; + _ModuleFirstScan: BOOL:=TRUE; + _SeqStart, _SeqHome: INT; + _AbortedRtrig: R_Trig; +END_VAR + +VAR CONSTANT // + STEP_IDLE: INT := 0000; + STEP_DONE: INT := 0020; + STEP_RUN: INT := 0030; +END_VAR + + + @@ -11825,6 +16316,40 @@ F_BuildVisionCmd := _Command; + + + + FUNCTION_BLOCK FB_Module EXTENDS FB_PackML IMPLEMENTS ItfModule + +VAR_INPUT // input vars + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR + +VAR_OUTPUT // output vars + ItfUnitMode: PACK_ML.IUnitMode; + Busy: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR + +VAR // standard local vars + _TimeoutTimer: TON:=(PT:=T#0MS); + _Home, _Start: BOOL; + _ModuleFirstScan: BOOL:=TRUE; + _SeqStart, _SeqHome: INT; + _AbortedRtrig: R_Trig; +END_VAR + +VAR CONSTANT // + STEP_IDLE: INT := 0000; + STEP_DONE: INT := 0020; + STEP_RUN: INT := 0030; +END_VAR + + + @@ -11875,6 +16400,40 @@ F_BuildVisionCmd := _Command; + + + + FUNCTION_BLOCK FB_Module EXTENDS FB_PackML IMPLEMENTS ItfModule + +VAR_INPUT // input vars + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR + +VAR_OUTPUT // output vars + ItfUnitMode: PACK_ML.IUnitMode; + Busy: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR + +VAR // standard local vars + _TimeoutTimer: TON:=(PT:=T#0MS); + _Home, _Start: BOOL; + _ModuleFirstScan: BOOL:=TRUE; + _SeqStart, _SeqHome: INT; + _AbortedRtrig: R_Trig; +END_VAR + +VAR CONSTANT // + STEP_IDLE: INT := 0000; + STEP_DONE: INT := 0020; + STEP_RUN: INT := 0030; +END_VAR + + + @@ -11901,6 +16460,40 @@ F_BuildVisionCmd := _Command; + + + + FUNCTION_BLOCK FB_Module EXTENDS FB_PackML IMPLEMENTS ItfModule + +VAR_INPUT // input vars + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR + +VAR_OUTPUT // output vars + ItfUnitMode: PACK_ML.IUnitMode; + Busy: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR + +VAR // standard local vars + _TimeoutTimer: TON:=(PT:=T#0MS); + _Home, _Start: BOOL; + _ModuleFirstScan: BOOL:=TRUE; + _SeqStart, _SeqHome: INT; + _AbortedRtrig: R_Trig; +END_VAR + +VAR CONSTANT // + STEP_IDLE: INT := 0000; + STEP_DONE: INT := 0020; + STEP_RUN: INT := 0030; +END_VAR + + + @@ -11958,6 +16551,12 @@ _ModuleFirstScan:=FALSE; _Start := TRUE; + + METHOD PUBLIC M_Start +VAR_INPUT +END_VAR + + @@ -11969,6 +16568,12 @@ _ModuleFirstScan:=FALSE; _Home:=TRUE; + + METHOD PUBLIC M_Home +VAR_INPUT +END_VAR + + @@ -11984,6 +16589,17 @@ _ModuleFirstScan:=FALSE; + + + + METHOD PROTECTED M_Error : BOOL +VAR_INPUT + Description: STRING; +END_VAR + + + + @@ -12013,6 +16629,13 @@ AlarmManager.AlarmGlobals.g_AlarmHandler.RaiseEvent( Alm_Processors_Alarm_IDs.ID_ProcessorFault); + + METHOD PROTECTED M_Error : BOOL +VAR_INPUT + Description: STRING; +END_VAR + + @@ -12026,6 +16649,12 @@ _SeqStart := 0; _Start:=FALSE; _SeqHome := 0; _Home:=FALSE; + + METHOD PUBLIC M_Abort +VAR_INPUT +END_VAR + + @@ -12037,6 +16666,12 @@ _SeqHome := 0; _Home:=FALSE; _UnitMode.Hold(); + + METHOD PUBLIC M_Hold +VAR_INPUT +END_VAR + + @@ -12048,6 +16683,12 @@ _SeqHome := 0; _Home:=FALSE; _UnitMode.Stop(); + + METHOD PUBLIC M_Stop +VAR_INPUT +END_VAR + + @@ -12099,6 +16740,10 @@ _SeqHome := 0; _Home:=FALSE; END_CASE + + METHOD PRIVATE _M_Start : BOOL + + @@ -12120,6 +16765,12 @@ END_CASE ErrorDescription := ''; + + METHOD PROTECTED M_Reset : BOOL +VAR_INPUT +END_VAR + + @@ -12173,6 +16824,10 @@ ErrorDescription := ''; END_CASE + + METHOD PRIVATE _M_Home : BOOL + + @@ -12206,8 +16861,18 @@ END_CASE PropCurrentState := ItfUnitMode.CurrentState; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropCurrentState : PACK_ML.State + + @@ -12241,8 +16906,18 @@ END_CASE PropBusy := Busy; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropBusy : BOOL + + @@ -12276,8 +16951,18 @@ END_CASE PropError := Error; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropError : BOOL + + @@ -12311,11 +16996,53 @@ END_CASE PropErrDescription := ErrorDescription; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PropErrDescription : STRING + + + + + FUNCTION_BLOCK FB_Module EXTENDS FB_PackML IMPLEMENTS ItfModule + +VAR_INPUT // input vars + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR + +VAR_OUTPUT // output vars + ItfUnitMode: PACK_ML.IUnitMode; + Busy: BOOL; + Error: BOOL; + ErrorDescription: STRING; +END_VAR + +VAR // standard local vars + _TimeoutTimer: TON:=(PT:=T#0MS); + _Home, _Start: BOOL; + _ModuleFirstScan: BOOL:=TRUE; + _SeqStart, _SeqHome: INT; + _AbortedRtrig: R_Trig; +END_VAR + +VAR CONSTANT // + STEP_IDLE: INT := 0000; + STEP_DONE: INT := 0020; + STEP_RUN: INT := 0030; +END_VAR + + 06152fa3-0ee8-42bb-9309-1b5f17657eed @@ -12355,6 +17082,59 @@ END_CASE + + + + FUNCTION_BLOCK FB_VisionCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; + LogicCmdIO: REFERENCE TO ST_LogicCmdIO; + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; +END_VAR +VAR_OUTPUT + VisionStateText: STRING:='READY'; +END_VAR +VAR + _CaptureImage_Output: STRING(255); + _CaptureImage_WorkerUid: STRING; + _LocatePart_Output: STRING(255); + _LocatePart_WorkerUid: STRING; + _RunCalibration_Output: STRING(255); + _RunCalibration_WorkerUid: STRING; + _Vision: FB_OpenCV; + _VisionCommandParser: FB_ParseVisionCmd; + _VisionDoneRtrig: R_TRIG; + _VisionBusyRtrig: R_TRIG; + _VisionResult: STRING(255); + _ResultPosition: INT; + _ResultPosition_CAL: INT; + _ResultPosition_LOC: INT; + _ResultPosition_CAP: INT; + _SpacePosition: INT; + _VisionObjectIndex: UINT; + _VisionRatio: REAL; + _VisionRotation: REAL; + _VisionError: REAL; + _PartsCount: UDINT; + _UnitModeCurrentState: PACK_ML.State; +END_VAR + +VAR CONSTANT + _RESPONSE_CAL: STRING:='res: CAL '; + _RESPONSE_LOC: STRING:='res: LOC '; + _RESPONSE_CAP: STRING:='res: CAP '; + + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_TRIGGER: INT := 0030; + _STEP_WAIT: INT := 0040; + _STEP_ERR: INT := 0050; +END_VAR + + + @@ -12365,6 +17145,59 @@ END_CASE + + + + FUNCTION_BLOCK FB_VisionCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; + LogicCmdIO: REFERENCE TO ST_LogicCmdIO; + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; +END_VAR +VAR_OUTPUT + VisionStateText: STRING:='READY'; +END_VAR +VAR + _CaptureImage_Output: STRING(255); + _CaptureImage_WorkerUid: STRING; + _LocatePart_Output: STRING(255); + _LocatePart_WorkerUid: STRING; + _RunCalibration_Output: STRING(255); + _RunCalibration_WorkerUid: STRING; + _Vision: FB_OpenCV; + _VisionCommandParser: FB_ParseVisionCmd; + _VisionDoneRtrig: R_TRIG; + _VisionBusyRtrig: R_TRIG; + _VisionResult: STRING(255); + _ResultPosition: INT; + _ResultPosition_CAL: INT; + _ResultPosition_LOC: INT; + _ResultPosition_CAP: INT; + _SpacePosition: INT; + _VisionObjectIndex: UINT; + _VisionRatio: REAL; + _VisionRotation: REAL; + _VisionError: REAL; + _PartsCount: UDINT; + _UnitModeCurrentState: PACK_ML.State; +END_VAR + +VAR CONSTANT + _RESPONSE_CAL: STRING:='res: CAL '; + _RESPONSE_LOC: STRING:='res: LOC '; + _RESPONSE_CAP: STRING:='res: CAP '; + + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_TRIGGER: INT := 0030; + _STEP_WAIT: INT := 0040; + _STEP_ERR: INT := 0050; +END_VAR + + + @@ -12477,6 +17310,59 @@ END_CASE + + + + FUNCTION_BLOCK FB_VisionCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; + LogicCmdIO: REFERENCE TO ST_LogicCmdIO; + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; +END_VAR +VAR_OUTPUT + VisionStateText: STRING:='READY'; +END_VAR +VAR + _CaptureImage_Output: STRING(255); + _CaptureImage_WorkerUid: STRING; + _LocatePart_Output: STRING(255); + _LocatePart_WorkerUid: STRING; + _RunCalibration_Output: STRING(255); + _RunCalibration_WorkerUid: STRING; + _Vision: FB_OpenCV; + _VisionCommandParser: FB_ParseVisionCmd; + _VisionDoneRtrig: R_TRIG; + _VisionBusyRtrig: R_TRIG; + _VisionResult: STRING(255); + _ResultPosition: INT; + _ResultPosition_CAL: INT; + _ResultPosition_LOC: INT; + _ResultPosition_CAP: INT; + _SpacePosition: INT; + _VisionObjectIndex: UINT; + _VisionRatio: REAL; + _VisionRotation: REAL; + _VisionError: REAL; + _PartsCount: UDINT; + _UnitModeCurrentState: PACK_ML.State; +END_VAR + +VAR CONSTANT + _RESPONSE_CAL: STRING:='res: CAL '; + _RESPONSE_LOC: STRING:='res: LOC '; + _RESPONSE_CAP: STRING:='res: CAP '; + + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_TRIGGER: INT := 0030; + _STEP_WAIT: INT := 0040; + _STEP_ERR: INT := 0050; +END_VAR + + + @@ -12551,6 +17437,59 @@ END_CASE + + + + FUNCTION_BLOCK FB_VisionCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; + LogicCmdIO: REFERENCE TO ST_LogicCmdIO; + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; +END_VAR +VAR_OUTPUT + VisionStateText: STRING:='READY'; +END_VAR +VAR + _CaptureImage_Output: STRING(255); + _CaptureImage_WorkerUid: STRING; + _LocatePart_Output: STRING(255); + _LocatePart_WorkerUid: STRING; + _RunCalibration_Output: STRING(255); + _RunCalibration_WorkerUid: STRING; + _Vision: FB_OpenCV; + _VisionCommandParser: FB_ParseVisionCmd; + _VisionDoneRtrig: R_TRIG; + _VisionBusyRtrig: R_TRIG; + _VisionResult: STRING(255); + _ResultPosition: INT; + _ResultPosition_CAL: INT; + _ResultPosition_LOC: INT; + _ResultPosition_CAP: INT; + _SpacePosition: INT; + _VisionObjectIndex: UINT; + _VisionRatio: REAL; + _VisionRotation: REAL; + _VisionError: REAL; + _PartsCount: UDINT; + _UnitModeCurrentState: PACK_ML.State; +END_VAR + +VAR CONSTANT + _RESPONSE_CAL: STRING:='res: CAL '; + _RESPONSE_LOC: STRING:='res: LOC '; + _RESPONSE_CAP: STRING:='res: CAP '; + + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_TRIGGER: INT := 0030; + _STEP_WAIT: INT := 0040; + _STEP_ERR: INT := 0050; +END_VAR + + + @@ -12778,6 +17717,10 @@ END_IF xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -12799,6 +17742,10 @@ END_IF SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -12831,6 +17778,10 @@ END_CASE + + METHOD PROTECTED M_Resetting : BOOL + + @@ -12854,6 +17805,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -12877,6 +17832,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -12907,6 +17866,10 @@ END_IF END_CASE + + METHOD PROTECTED M_Aborting : BOOL + + @@ -12923,6 +17886,12 @@ END_CASE _Vision.M_Reconnect(); + + METHOD PUBLIC M_ReconnectVisionSystem : BOOL +VAR_INPUT +END_VAR + + @@ -12956,8 +17925,17 @@ _Vision.M_Reconnect(); P_PartsCount REF= _PartsCount; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_PartsCount : REFERENCE TO UDINT + @@ -12991,11 +17969,71 @@ _Vision.M_Reconnect(); P_VisionSystemConnected REF= _Vision._TcpClient.bConnected; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_VisionSystemConnected : REFERENCE TO BOOL + + + + FUNCTION_BLOCK FB_VisionCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; + LogicCmdIO: REFERENCE TO ST_LogicCmdIO; + VisionSystemIpAddress: STRING(19):='127.0.0.1'; + VisionSystemPort: UINT:=50011; +END_VAR +VAR_OUTPUT + VisionStateText: STRING:='READY'; +END_VAR +VAR + _CaptureImage_Output: STRING(255); + _CaptureImage_WorkerUid: STRING; + _LocatePart_Output: STRING(255); + _LocatePart_WorkerUid: STRING; + _RunCalibration_Output: STRING(255); + _RunCalibration_WorkerUid: STRING; + _Vision: FB_OpenCV; + _VisionCommandParser: FB_ParseVisionCmd; + _VisionDoneRtrig: R_TRIG; + _VisionBusyRtrig: R_TRIG; + _VisionResult: STRING(255); + _ResultPosition: INT; + _ResultPosition_CAL: INT; + _ResultPosition_LOC: INT; + _ResultPosition_CAP: INT; + _SpacePosition: INT; + _VisionObjectIndex: UINT; + _VisionRatio: REAL; + _VisionRotation: REAL; + _VisionError: REAL; + _PartsCount: UDINT; + _UnitModeCurrentState: PACK_ML.State; +END_VAR + +VAR CONSTANT + _RESPONSE_CAL: STRING:='res: CAL '; + _RESPONSE_LOC: STRING:='res: LOC '; + _RESPONSE_CAP: STRING:='res: CAP '; + + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_TRIGGER: INT := 0030; + _STEP_WAIT: INT := 0040; + _STEP_ERR: INT := 0050; +END_VAR + + fe68b725-9761-4240-89f1-03981366ea66 @@ -13011,6 +18049,38 @@ _Vision.M_Reconnect(); + + + + FUNCTION_BLOCK FB_ParseVarSetCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VarSetCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _i: INT; + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -13028,6 +18098,38 @@ _Vision.M_Reconnect(); + + + + FUNCTION_BLOCK FB_ParseVarSetCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VarSetCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _i: INT; + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -13045,6 +18147,38 @@ _Vision.M_Reconnect(); + + + + FUNCTION_BLOCK FB_ParseVarSetCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VarSetCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _i: INT; + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -13127,6 +18261,38 @@ _Vision.M_Reconnect(); + + + + FUNCTION_BLOCK FB_ParseVarSetCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VarSetCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _i: INT; + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -13270,6 +18436,36 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + FUNCTION_BLOCK FB_ParseVarSetCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_VarSetCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _i: INT; + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + 21a45979-23a6-4d05-8c5e-026456e22047 @@ -13336,6 +18532,74 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + + @@ -13348,6 +18612,74 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + + @@ -13355,6 +18687,74 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + + @@ -13447,6 +18847,74 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + + @@ -13601,6 +19069,74 @@ stCommand.Coordinates.C := STRING_TO_LREAL(_CmdParams[_i]); + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + + @@ -14049,6 +19585,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -14080,6 +19620,10 @@ END_CASE {warning restore C0371} + + METHOD PROTECTED M_Resetting : BOOL + + @@ -14115,6 +19659,10 @@ _SequenceSetCoordTrans := 0; SUPER^._SeqMain := 0; + + METHOD PROTECTED M_Idle : BOOL + + @@ -14154,6 +19702,10 @@ END_CASE + + METHOD PROTECTED M_Holding : BOOL + + @@ -14177,6 +19729,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -14209,6 +19765,9 @@ END_CASE {warning restore C0371} + + METHOD PROTECTED M_Aborting : BOOL + @@ -14230,6 +19789,10 @@ END_CASE SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -14273,6 +19836,10 @@ END_CASE SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Unholding : BOOL + + @@ -14295,6 +19862,10 @@ SUPER^.M_StateComplete(); xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -14330,9 +19901,79 @@ _SequenceSetCoordTrans := 0; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Clearing : BOOL + + + + + FUNCTION_BLOCK FB_MoveCmdProcessor EXTENDS FB_Module +VAR_INPUT + Velocity: LREAL:=1000.0; + VelFactor: LREAL:=1.0; + Acceleration: LREAL:=1000.0; + AccFactor: LREAL:=0.5; + Jerk: LREAL:=1000.0; + JerkFactor: LREAL:=0.5; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_OUTPUT + Position: SMC_POS_REF; +END_VAR +VAR + _SequenceSetCoordTrans: INT; + _SequenceMoveCircularAbsolute: INT; + _SequenceMoveCircularRelative: INT; + _SequenceMoveDirectAbsolute: INT; + _SequenceMoveDirectRelative: INT; + _SequenceMoveLinearAbsolute: INT; + _SequenceMoveLinearRelative: INT; + _MC_GroupHalt: MC_GroupHalt; + + _MC_MoveCircularAbsolute: MC_MoveCircularAbsolute; + _MC_MoveCircularRelative: MC_MoveCircularRelative; + _MC_MoveDirectAbsolute: MC_MoveDirectAbsolute; + _MC_MoveDirectRelative: MC_MoveDirectRelative; + _MC_MoveLinearAbsolute: MC_MoveLinearAbsolute; + _MC_MoveLinearRelative: MC_MoveLinearRelative; + + _UnitModeCurrentState: PACK_ML.State; + _MoveCommandParser: FB_ParseMoveCmd; + _PosRef: SMC_POS_REF; + _PosRef2: SMC_POS_REF; + +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0020; + _STEP_GROUP_POWER_ON: INT := 0022; + _STEP_WAIT_POWER_ON: INT := 0024; + _STEP_GROUP_ENABLE: INT := 0030; + _STEP_WAIT_ENABLE: INT := 0035; + _STEP_READ_POSITION: INT := 0040; + _STEP_WAIT_POSITION: INT := 0050; + _STEP_SET_KINEMATICS: INT := 0060; + _STEP_WAIT_KINEMATICS: INT := 0070; + _STEP_SET_COORD_TRANS: INT := 0071; + _STEP_WAIT_COORD_TRANS: INT := 0072; + _STEP_MOVE_TYPE: INT := 0080; + _STEP_WAIT_MOVE: INT := 0090; + _STEP_GROUP_DISABLE: INT := 0100; + _STEP_WAIT_DISABLE: INT := 0110; + _STEP_GROUP_POWER_OFF: INT := 0120; + _STEP_ERR: INT := 9999; +END_VAR + + + 8f4275d6-46b8-4b53-89d9-00cb2bff4683 @@ -14351,6 +19992,31 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_VarSetCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _VarSetCmdParser: FB_ParseVarSetCmd; +END_VAR + + + + @@ -14385,6 +20051,31 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_VarSetCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _VarSetCmdParser: FB_ParseVarSetCmd; +END_VAR + + + + @@ -14397,6 +20088,31 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_VarSetCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _VarSetCmdParser: FB_ParseVarSetCmd; +END_VAR + + + + @@ -14527,6 +20243,10 @@ END_CASE xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -14548,6 +20268,10 @@ END_CASE SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -14571,6 +20295,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -14594,9 +20322,36 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + + + + FUNCTION_BLOCK FB_VarSetCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _VarSetCmdParser: FB_ParseVarSetCmd; +END_VAR + + + 4e6d31f4-1f5e-495c-b2c6-1fabb531ce1d @@ -14615,6 +20370,38 @@ END_IF + + + + FUNCTION_BLOCK FB_PauseCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT + ElapsedTime: TIME; + RemainingTime: TIME; +END_VAR +VAR + _Timer: TON; + _Timer_IN: BOOL; + _Timer_PT: TIME; + _Timer_Q: BOOL; + _Timer_ET: TIME; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParsePauseCmd: FB_ParsePauseCmd; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14627,6 +20414,38 @@ END_IF + + + + FUNCTION_BLOCK FB_PauseCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT + ElapsedTime: TIME; + RemainingTime: TIME; +END_VAR +VAR + _Timer: TON; + _Timer_IN: BOOL; + _Timer_PT: TIME; + _Timer_Q: BOOL; + _Timer_ET: TIME; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParsePauseCmd: FB_ParsePauseCmd; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14664,6 +20483,38 @@ END_IF + + + + FUNCTION_BLOCK FB_PauseCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT + ElapsedTime: TIME; + RemainingTime: TIME; +END_VAR +VAR + _Timer: TON; + _Timer_IN: BOOL; + _Timer_PT: TIME; + _Timer_Q: BOOL; + _Timer_ET: TIME; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParsePauseCmd: FB_ParsePauseCmd; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14706,6 +20557,38 @@ END_IF + + + + FUNCTION_BLOCK FB_PauseCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT + ElapsedTime: TIME; + RemainingTime: TIME; +END_VAR +VAR + _Timer: TON; + _Timer_IN: BOOL; + _Timer_PT: TIME; + _Timer_Q: BOOL; + _Timer_ET: TIME; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParsePauseCmd: FB_ParsePauseCmd; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14777,6 +20660,10 @@ RemainingTime := _Timer_PT - _Timer_ET; xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -14798,6 +20685,10 @@ RemainingTime := _Timer_PT - _Timer_ET; SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -14827,6 +20718,10 @@ SUPER^._UnitMode.Reset(); END_CASE + + METHOD PROTECTED M_Resetting : BOOL + + @@ -14850,6 +20745,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -14873,9 +20772,43 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + + + + FUNCTION_BLOCK FB_PauseCmdProcessor EXTENDS FB_Module +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT + ElapsedTime: TIME; + RemainingTime: TIME; +END_VAR +VAR + _Timer: TON; + _Timer_IN: BOOL; + _Timer_PT: TIME; + _Timer_Q: BOOL; + _Timer_ET: TIME; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParsePauseCmd: FB_ParsePauseCmd; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + 761241d9-a41a-4641-86b9-9b083b6be68b @@ -14899,6 +20832,43 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_OutputCmdProcessor EXTENDS FB_Module +VAR_INPUT + Enable: BOOL; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + Digital: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR + _RunRtrig: R_TRIG; + _SequenceDigital: INT; + _SequencePwm: INT; + + _UnitModeCurrentState: PACK_ML.State; + _OutputCommandParser: FB_ParseOutputCmd; + _OutputType: DUT_OutputType; + _OutputTarget: INT; + _OutputValue1: LREAL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14921,6 +20891,43 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_OutputCmdProcessor EXTENDS FB_Module +VAR_INPUT + Enable: BOOL; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + Digital: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR + _RunRtrig: R_TRIG; + _SequenceDigital: INT; + _SequencePwm: INT; + + _UnitModeCurrentState: PACK_ML.State; + _OutputCommandParser: FB_ParseOutputCmd; + _OutputType: DUT_OutputType; + _OutputTarget: INT; + _OutputValue1: LREAL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -14963,6 +20970,43 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_OutputCmdProcessor EXTENDS FB_Module +VAR_INPUT + Enable: BOOL; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + Digital: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR + _RunRtrig: R_TRIG; + _SequenceDigital: INT; + _SequencePwm: INT; + + _UnitModeCurrentState: PACK_ML.State; + _OutputCommandParser: FB_ParseOutputCmd; + _OutputType: DUT_OutputType; + _OutputTarget: INT; + _OutputValue1: LREAL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -15005,6 +21049,43 @@ SUPER^.M_StateComplete(); + + + + FUNCTION_BLOCK FB_OutputCmdProcessor EXTENDS FB_Module +VAR_INPUT + Enable: BOOL; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + Digital: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR + _RunRtrig: R_TRIG; + _SequenceDigital: INT; + _SequencePwm: INT; + + _UnitModeCurrentState: PACK_ML.State; + _OutputCommandParser: FB_ParseOutputCmd; + _OutputType: DUT_OutputType; + _OutputTarget: INT; + _OutputValue1: LREAL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -15098,6 +21179,10 @@ END_CASE xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -15124,6 +21209,10 @@ END_CASE END_CASE + + METHOD PROTECTED M_Resetting : BOOL + + @@ -15147,6 +21236,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -15170,6 +21263,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -15197,6 +21294,10 @@ SUPER^.M_StateComplete(); END_CASE + + METHOD PROTECTED M_Holding : BOOL + + @@ -15219,6 +21320,10 @@ _SequencePwm := 0; SUPER^._SeqMain := 0; + + METHOD PROTECTED M_Idle : BOOL + + @@ -15244,6 +21349,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Unholding : BOOL + + @@ -15272,6 +21381,9 @@ END_CASE + + METHOD PROTECTED M_Aborting : BOOL + @@ -15295,6 +21407,10 @@ _SequencePwm := 0; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Clearing : BOOL + + @@ -15316,9 +21432,48 @@ SUPER^.M_StateComplete(); SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + + + + FUNCTION_BLOCK FB_OutputCmdProcessor EXTENDS FB_Module +VAR_INPUT + Enable: BOOL; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + Digital: ARRAY [GVL.DIG_OUT_ARR_BEG..GVL.DIG_OUT_ARR_END] OF BOOL; + Pwm: ARRAY [GVL.PWM_OUT_ARR_BEG..GVL.PWM_OUT_ARR_END] OF BYTE; +END_VAR +VAR_OUTPUT +END_VAR +VAR +END_VAR +VAR + _RunRtrig: R_TRIG; + _SequenceDigital: INT; + _SequencePwm: INT; + + _UnitModeCurrentState: PACK_ML.State; + _OutputCommandParser: FB_ParseOutputCmd; + _OutputType: DUT_OutputType; + _OutputTarget: INT; + _OutputValue1: LREAL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_TWO: INT := 0020; + _STEP_ERR: INT := 0030; +END_VAR + + 6372490f-9396-4f98-b458-51631931ad07 @@ -15334,6 +21489,33 @@ SUPER^._UnitMode.Reset(); + + + + {attribute 'reflection'} +FUNCTION_BLOCK FB_PackML +VAR_INPUT +END_VAR +VAR_OUTPUT + IUnitMode: PACK_ML.IUnitMode; +END_VAR +VAR + {attribute 'instance-path'} + {attribute 'noinit'} + instance_path: STRING(255); + _UnitMode: PACK_ML.UnitMode; + _StateTimer: TON; + _PackMLFirstScan: BOOL:=TRUE; + _SeqMain, _SeqAborting, _SeqClearing, _SeqCompleting, _SeqHolding, _SeqResetting, + _SeqStarting, _SeqStopping, _SeqSuspending, _SeqUnholding, _SeqUnSuspending: INT; +END_VAR +VAR CONSTANT + STATE_TIME: TIME := T#0MS; +END_VAR + + + + @@ -15422,6 +21604,33 @@ SUPER^._UnitMode.Reset(); + + + + {attribute 'reflection'} +FUNCTION_BLOCK FB_PackML +VAR_INPUT +END_VAR +VAR_OUTPUT + IUnitMode: PACK_ML.IUnitMode; +END_VAR +VAR + {attribute 'instance-path'} + {attribute 'noinit'} + instance_path: STRING(255); + _UnitMode: PACK_ML.UnitMode; + _StateTimer: TON; + _PackMLFirstScan: BOOL:=TRUE; + _SeqMain, _SeqAborting, _SeqClearing, _SeqCompleting, _SeqHolding, _SeqResetting, + _SeqStarting, _SeqStopping, _SeqSuspending, _SeqUnholding, _SeqUnSuspending: INT; +END_VAR +VAR CONSTANT + STATE_TIME: TIME := T#0MS; +END_VAR + + + + @@ -15432,6 +21641,33 @@ SUPER^._UnitMode.Reset(); + + + + {attribute 'reflection'} +FUNCTION_BLOCK FB_PackML +VAR_INPUT +END_VAR +VAR_OUTPUT + IUnitMode: PACK_ML.IUnitMode; +END_VAR +VAR + {attribute 'instance-path'} + {attribute 'noinit'} + instance_path: STRING(255); + _UnitMode: PACK_ML.UnitMode; + _StateTimer: TON; + _PackMLFirstScan: BOOL:=TRUE; + _SeqMain, _SeqAborting, _SeqClearing, _SeqCompleting, _SeqHolding, _SeqResetting, + _SeqStarting, _SeqStopping, _SeqSuspending, _SeqUnholding, _SeqUnSuspending: INT; +END_VAR +VAR CONSTANT + STATE_TIME: TIME := T#0MS; +END_VAR + + + + @@ -15515,6 +21751,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Aborting : BOOL +VAR_INPUT +END_VAR + + @@ -15540,6 +21782,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Unholding : BOOL +VAR_INPUT +END_VAR + + @@ -15570,6 +21818,12 @@ _SeqUnholding := 0; _SeqUnSuspending := 0; + + METHOD PROTECTED M_Aborted : BOOL +VAR_INPUT +END_VAR + + @@ -15595,6 +21849,12 @@ IF _StateTimer.Q THEN END_IF*) + + METHOD PROTECTED M_Held : BOOL +VAR_INPUT +END_VAR + + @@ -15620,6 +21880,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Completing : BOOL +VAR_INPUT +END_VAR + + @@ -15645,6 +21911,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Stopping : BOOL +VAR_INPUT +END_VAR + + @@ -15670,6 +21942,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Clearing : BOOL +VAR_INPUT +END_VAR + + @@ -15695,6 +21973,12 @@ IF _StateTimer.Q THEN END_IF*) + + METHOD PROTECTED M_Stopped : BOOL +VAR_INPUT +END_VAR + + @@ -15724,6 +22008,12 @@ END_IF*) xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL +VAR_INPUT +END_VAR + + @@ -15749,6 +22039,12 @@ IF _StateTimer.Q THEN END_IF*) + + METHOD PROTECTED M_Complete : BOOL +VAR_INPUT +END_VAR + + @@ -15774,6 +22070,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Resetting : BOOL +VAR_INPUT +END_VAR + + @@ -15799,6 +22101,12 @@ IF _StateTimer.Q THEN END_IF*) + + METHOD PROTECTED M_Suspended : BOOL +VAR_INPUT +END_VAR + + @@ -15819,6 +22127,12 @@ END_IF*) _UnitMode.ActingStateCompleted(); + + METHOD PROTECTED M_StateComplete : BOOL +VAR_INPUT +END_VAR + + @@ -15844,6 +22158,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Suspending : BOOL +VAR_INPUT +END_VAR + + @@ -15869,6 +22189,12 @@ IF _StateTimer.Q THEN END_IF*) + + METHOD PROTECTED M_Idle : BOOL +VAR_INPUT +END_VAR + + @@ -15894,6 +22220,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Starting : BOOL +VAR_INPUT +END_VAR + + @@ -15914,6 +22246,12 @@ END_IF + + METHOD PROTECTED M_Execute : BOOL +VAR_INPUT +END_VAR + + @@ -15939,6 +22277,12 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_UnSuspending : BOOL +VAR_INPUT +END_VAR + + @@ -15964,9 +22308,40 @@ IF _StateTimer.Q THEN END_IF + + METHOD PROTECTED M_Holding : BOOL +VAR_INPUT +END_VAR + + + + + {attribute 'reflection'} +FUNCTION_BLOCK FB_PackML +VAR_INPUT +END_VAR +VAR_OUTPUT + IUnitMode: PACK_ML.IUnitMode; +END_VAR +VAR + {attribute 'instance-path'} + {attribute 'noinit'} + instance_path: STRING(255); + _UnitMode: PACK_ML.UnitMode; + _StateTimer: TON; + _PackMLFirstScan: BOOL:=TRUE; + _SeqMain, _SeqAborting, _SeqClearing, _SeqCompleting, _SeqHolding, _SeqResetting, + _SeqStarting, _SeqStopping, _SeqSuspending, _SeqUnholding, _SeqUnSuspending: INT; +END_VAR +VAR CONSTANT + STATE_TIME: TIME := T#0MS; +END_VAR + + + 6c88eb42-407a-40dd-8e49-bce1d691f0b2 @@ -16017,6 +22392,78 @@ END_IF + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -16059,6 +22506,78 @@ END_IF + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -16173,6 +22692,78 @@ END_IF + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -16287,6 +22878,86 @@ END_IF + + + + + + + + + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -16349,6 +23020,78 @@ END_IF + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -16410,6 +23153,7 @@ CASE SUPER^._SeqMain OF SUPER^._SeqMain := _STEP_ONE; ELSE SUPER^.M_Error(Description:=CONCAT('Command parsing error: ',_CncCmdParser.ErrorDescription)); + SUPER^._SeqMain := _STEP_ERROR; END_IF _STEP_ONE: @@ -16417,6 +23161,9 @@ CASE SUPER^._SeqMain OF // next, please SUPER^._SeqMain := _STEP_DONE; END_IF + + _STEP_ERROR: + // hang out here so we dont spam errors END_CASE @@ -16495,18 +23242,21 @@ _SMC_Interpolator( CASE WORD_TO_INT(_SMC_Interpolator.wM) OF 0: // reset acknowledgment _SMC_Interpolator.bAcknM := FALSE; - - MCODE_INPUT_WAIT_START..MCODE_INPUT_WAIT_END: // wait on input + + // M200 - M215 wait on inputs 0 - 15 + MCODE_INPUT_WAIT_START..MCODE_INPUT_WAIT_END: // TODO should we put a timeout or bypass here? IF CmdIo.Input[WORD_TO_INT(_SMC_Interpolator.wM) - MCODE_INPUT_WAIT] THEN _SMC_Interpolator.bAcknM := TRUE; END_IF - - MCODE_OUTPUT_SET_START..MCODE_OUTPUT_SET_END: // set output + + // M300 - M315 set outputs 0 - 15 + MCODE_OUTPUT_SET_START..MCODE_OUTPUT_SET_END: CmdIo.Output[WORD_TO_INT(_SMC_Interpolator.wM) - MCODE_OUTPUT_SET] := TRUE; _SMC_Interpolator.bAcknM := TRUE; - - MCODE_OUTPUT_CLR_START..MCODE_OUTPUT_CLR_END: // clear output + + // M400 - M415 clear outputs 0 - 15 + MCODE_OUTPUT_CLR_START..MCODE_OUTPUT_CLR_END: CmdIo.Output[WORD_TO_INT(_SMC_Interpolator.wM) - MCODE_OUTPUT_CLR] := FALSE; _SMC_Interpolator.bAcknM := TRUE; @@ -16722,6 +23472,10 @@ END_IF xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -16743,6 +23497,10 @@ END_IF SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -16766,6 +23524,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -16789,6 +23551,10 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -16818,6 +23584,10 @@ SUPER^.M_StateComplete(); END_CASE + + METHOD PROTECTED M_Resetting : BOOL + + @@ -16851,6 +23621,10 @@ END_CASE + + METHOD PROTECTED M_Holding : BOOL + + @@ -16882,6 +23656,10 @@ END_CASE END_CASE + + METHOD PROTECTED M_Unholding : BOOL + + @@ -16903,9 +23681,83 @@ END_CASE _SMC_Interpolator.bExecute := FALSE; + + METHOD PROTECTED M_Idle : BOOL + + + + + FUNCTION_BLOCK FB_CncCmdProcessor EXTENDS FB_Module +VAR_INPUT + GapVelocity: LREAL := 500.0; + AvoidGaps: BOOL := TRUE; + GapAccel: LREAL := 10000.0; + GapJerk: LREAL := 10000000000000000.0; + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _OriConvention: SMC_ORI_CONVENTION := SMC_ORI_CONVENTION.ZYX; + _SMC_TrafoConfig_ArticulatedRobot_6DOF: SMC_TrafoConfig_ArticulatedRobot_6DOF; + _SMC_Trafo_ArticulatedRobot_6DOF: SMC_Trafo_ArticulatedRobot_6DOF; + _SMC_ControlAxisByPos_J1: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J2: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J3: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J4: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J5: SMC_ControlAxisByPos; + _SMC_ControlAxisByPos_J6: SMC_ControlAxisByPos; + _SMC_Interpolator: SMC_Interpolator; + _TrackPosition: FB_PositionTracker; + _PlanPath: FB_CncPathPlanner; + //_PlanPath: REFERENCE TO CncPathPlanner; + _SysLTime, _SysLTimeLast, _CycleTime: LTIME; + _dwCycleTime: DWORD; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; + MCODE_INPUT_WAIT: INT:=200; + MCODE_INPUT_WAIT_START: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_BEG; + MCODE_INPUT_WAIT_END: INT:=MCODE_INPUT_WAIT+GVL.DIG_IN_ARR_END; + MCODE_OUTPUT_SET: INT:=300; + MCODE_OUTPUT_SET_START: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_SET_END: INT:=MCODE_OUTPUT_SET+GVL.DIG_OUT_ARR_END; + MCODE_OUTPUT_CLR: INT:=400; + MCODE_OUTPUT_CLR_START: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_BEG; + MCODE_OUTPUT_CLR_END: INT:=MCODE_OUTPUT_CLR+GVL.DIG_OUT_ARR_END; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ONE: INT := 0020; + _STEP_ERROR: INT := 9999; +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _CncCmdParser: FB_ParseCncCmd; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + 09e229dd-dea4-4418-8521-de497c93f5dc @@ -16921,6 +23773,35 @@ _SMC_Interpolator.bExecute := FALSE; + + + + FUNCTION_BLOCK FB_ParseCncCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_CncCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + @@ -16941,6 +23822,35 @@ _SMC_Interpolator.bExecute := FALSE; + + + + FUNCTION_BLOCK FB_ParseCncCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_CncCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + @@ -16953,6 +23863,35 @@ _SMC_Interpolator.bExecute := FALSE; + + + + FUNCTION_BLOCK FB_ParseCncCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_CncCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + @@ -17027,6 +23966,35 @@ _SMC_Interpolator.bExecute := FALSE; + + + + FUNCTION_BLOCK FB_ParseCncCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_CncCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + + @@ -17110,6 +24078,33 @@ END_IF + + + FUNCTION_BLOCK FB_ParseCncCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_CncCmd; + Error: BOOL:= FALSE; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; +END_VAR +VAR CONSTANT + _AddString: STRING(3):='ADD'; + _XYZString: STRING(3):='XYZ'; + _ZYXString: STRING(3):='ZYX'; + _ZYZString: STRING(3):='ZYZ'; + _LiteralString: STRING(3):='LIT'; + _VariableString: STRING(3):='VAR'; + _StoredPositionsString: STRING(3):='STO'; + _VisionRegistersString: STRING(3):='VIS'; + _FlagsString: STRING(3):='FLG'; +END_VAR + + 4ea6ce2c-d973-415a-9620-8fd34fa576a4 @@ -17141,6 +24136,26 @@ END_IF + + + + FUNCTION F_SplitCmd : ARRAY [0..GVL.COMMAND_LEN] OF STRING +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); + Delimiter: STRING(1):=' '; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); + _DelimPos: INT; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + _SpaceChar: STRING(1):=' '; +END_VAR + + + + @@ -17168,6 +24183,26 @@ END_IF + + + + FUNCTION F_SplitCmd : ARRAY [0..GVL.COMMAND_LEN] OF STRING +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); + Delimiter: STRING(1):=' '; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); + _DelimPos: INT; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + _SpaceChar: STRING(1):=' '; +END_VAR + + + + @@ -17178,6 +24213,26 @@ END_IF + + + + FUNCTION F_SplitCmd : ARRAY [0..GVL.COMMAND_LEN] OF STRING +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); + Delimiter: STRING(1):=' '; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); + _DelimPos: INT; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + _SpaceChar: STRING(1):=' '; +END_VAR + + + + @@ -17217,6 +24272,24 @@ END_WHILE + + + FUNCTION F_SplitCmd : ARRAY [0..GVL.COMMAND_LEN] OF STRING +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); + Delimiter: STRING(1):=' '; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); + _DelimPos: INT; + _i, _j, _k: INT; +END_VAR +VAR CONSTANT + _SpaceChar: STRING(1):=' '; +END_VAR + + + 4ffeb092-e2fe-4508-9822-2d3197400b13 @@ -17235,6 +24308,32 @@ END_WHILE + + + + FUNCTION F_BuildVarSetCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VarSetCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -17242,6 +24341,32 @@ END_WHILE + + + + FUNCTION F_BuildVarSetCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VarSetCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -17324,6 +24449,32 @@ END_WHILE + + + + FUNCTION F_BuildVarSetCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VarSetCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + + @@ -17460,6 +24611,30 @@ F_BuildVarSetCmd := _Command; + + + FUNCTION F_BuildVarSetCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_VarSetCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _OperationTypeN: STRING(1):='N'; + _OperationTypeE: STRING(1):='E'; + _OperationTypeA: STRING(1):='A'; + _OperationTypeS: STRING(1):='S'; + _OperationTypeM: STRING(1):='M'; + _OperationTypeD: STRING(1):='D'; +END_VAR + + + 464f3abe-fbad-44ed-ab93-0358a4edadad @@ -17485,6 +24660,48 @@ F_BuildVarSetCmd := _Command; + + + + FUNCTION_BLOCK FB_LogicCmdProcessor EXTENDS FB_Module +VAR_IN_OUT + PrgProcessor: FB_ProgramProcessor; + CmdProcessor: FB_CommandProcessor; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParseLogicCmd: FB_ParseLogicCmd; + _ThenFunctionProcessed: BOOL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; + _STEP_EVAL_IN: INT := 0100; + _STEP_EVAL_REG: INT := 0110; + _STEP_EVAL_CNT: INT := 0120; + _STEP_PROC_THEN: INT := 0200; + _STEP_PROC_ELSE: INT := 0210; + _STEP_PROC_OUT: INT := 0300; + _STEP_PROC_JMP: INT := 0310; + _STEP_PROC_CNT: INT := 0320; + _STEP_PROC_FLG: INT := 0325; + _STEP_PROC_REG: INT := 0330; + _STEP_EVAL_FLG: INT := 0335; + _STEP_PROC_NOP: INT := 0340; + _STEP_PROC_CAL: INT := 0350; +END_VAR + + + + @@ -17495,6 +24712,48 @@ F_BuildVarSetCmd := _Command; + + + + FUNCTION_BLOCK FB_LogicCmdProcessor EXTENDS FB_Module +VAR_IN_OUT + PrgProcessor: FB_ProgramProcessor; + CmdProcessor: FB_CommandProcessor; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParseLogicCmd: FB_ParseLogicCmd; + _ThenFunctionProcessed: BOOL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; + _STEP_EVAL_IN: INT := 0100; + _STEP_EVAL_REG: INT := 0110; + _STEP_EVAL_CNT: INT := 0120; + _STEP_PROC_THEN: INT := 0200; + _STEP_PROC_ELSE: INT := 0210; + _STEP_PROC_OUT: INT := 0300; + _STEP_PROC_JMP: INT := 0310; + _STEP_PROC_CNT: INT := 0320; + _STEP_PROC_FLG: INT := 0325; + _STEP_PROC_REG: INT := 0330; + _STEP_EVAL_FLG: INT := 0335; + _STEP_PROC_NOP: INT := 0340; + _STEP_PROC_CAL: INT := 0350; +END_VAR + + + + @@ -17512,6 +24771,48 @@ F_BuildVarSetCmd := _Command; + + + + FUNCTION_BLOCK FB_LogicCmdProcessor EXTENDS FB_Module +VAR_IN_OUT + PrgProcessor: FB_ProgramProcessor; + CmdProcessor: FB_CommandProcessor; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParseLogicCmd: FB_ParseLogicCmd; + _ThenFunctionProcessed: BOOL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; + _STEP_EVAL_IN: INT := 0100; + _STEP_EVAL_REG: INT := 0110; + _STEP_EVAL_CNT: INT := 0120; + _STEP_PROC_THEN: INT := 0200; + _STEP_PROC_ELSE: INT := 0210; + _STEP_PROC_OUT: INT := 0300; + _STEP_PROC_JMP: INT := 0310; + _STEP_PROC_CNT: INT := 0320; + _STEP_PROC_FLG: INT := 0325; + _STEP_PROC_REG: INT := 0330; + _STEP_EVAL_FLG: INT := 0335; + _STEP_PROC_NOP: INT := 0340; + _STEP_PROC_CAL: INT := 0350; +END_VAR + + + + @@ -17650,6 +24951,48 @@ F_BuildVarSetCmd := _Command; + + + + FUNCTION_BLOCK FB_LogicCmdProcessor EXTENDS FB_Module +VAR_IN_OUT + PrgProcessor: FB_ProgramProcessor; + CmdProcessor: FB_CommandProcessor; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParseLogicCmd: FB_ParseLogicCmd; + _ThenFunctionProcessed: BOOL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; + _STEP_EVAL_IN: INT := 0100; + _STEP_EVAL_REG: INT := 0110; + _STEP_EVAL_CNT: INT := 0120; + _STEP_PROC_THEN: INT := 0200; + _STEP_PROC_ELSE: INT := 0210; + _STEP_PROC_OUT: INT := 0300; + _STEP_PROC_JMP: INT := 0310; + _STEP_PROC_CNT: INT := 0320; + _STEP_PROC_FLG: INT := 0325; + _STEP_PROC_REG: INT := 0330; + _STEP_EVAL_FLG: INT := 0335; + _STEP_PROC_NOP: INT := 0340; + _STEP_PROC_CAL: INT := 0350; +END_VAR + + + + @@ -18017,6 +25360,10 @@ END_CASE xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -18038,6 +25385,10 @@ END_CASE SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -18061,6 +25412,10 @@ IF SUPER^._SeqMain =_STEP_IDLE THEN END_IF + + METHOD PROTECTED M_Execute : BOOL + + @@ -18084,9 +25439,53 @@ SUPER^._SeqMain := _STEP_COMMAND; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + + + + FUNCTION_BLOCK FB_LogicCmdProcessor EXTENDS FB_Module +VAR_IN_OUT + PrgProcessor: FB_ProgramProcessor; + CmdProcessor: FB_CommandProcessor; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN):=''; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _UnitModeCurrentState: PACK_ML.State; + _ParseLogicCmd: FB_ParseLogicCmd; + _ThenFunctionProcessed: BOOL; +END_VAR +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_COMMAND: INT := 0010; + _STEP_ERR: INT := 0020; + _STEP_EVAL_IN: INT := 0100; + _STEP_EVAL_REG: INT := 0110; + _STEP_EVAL_CNT: INT := 0120; + _STEP_PROC_THEN: INT := 0200; + _STEP_PROC_ELSE: INT := 0210; + _STEP_PROC_OUT: INT := 0300; + _STEP_PROC_JMP: INT := 0310; + _STEP_PROC_CNT: INT := 0320; + _STEP_PROC_FLG: INT := 0325; + _STEP_PROC_REG: INT := 0330; + _STEP_EVAL_FLG: INT := 0335; + _STEP_PROC_NOP: INT := 0340; + _STEP_PROC_CAL: INT := 0350; +END_VAR + + + ef05d0a0-faef-4d26-ad80-b37bf095bfda @@ -18102,6 +25501,23 @@ SUPER^.M_StateComplete(); + + + + FUNCTION F_AddElement +VAR_IN_OUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_INPUT + Delimiter: STRING(1):=' '; // default to space + Element: STRING(GVL.COMMAND_LEN); +END_VAR +VAR +END_VAR + + + + @@ -18120,6 +25536,23 @@ SUPER^.M_StateComplete(); + + + + FUNCTION F_AddElement +VAR_IN_OUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_INPUT + Delimiter: STRING(1):=' '; // default to space + Element: STRING(GVL.COMMAND_LEN); +END_VAR +VAR +END_VAR + + + + @@ -18139,6 +25572,21 @@ Command:=CONCAT(Command, Delimiter); + + + FUNCTION F_AddElement +VAR_IN_OUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_INPUT + Delimiter: STRING(1):=' '; // default to space + Element: STRING(GVL.COMMAND_LEN); +END_VAR +VAR +END_VAR + + + 40f6ab40-9306-42a3-9cf6-d7249218b202 @@ -18157,6 +25605,45 @@ Command:=CONCAT(Command, Delimiter); + + + + FUNCTION F_BuildMoveCmd : STRING(GVL.COMMAND_LEN); +VAR_INPUT + stCommand: ST_MoveCmd; +END_VAR +VAR + _Command : STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + + @@ -18164,6 +25651,45 @@ Command:=CONCAT(Command, Delimiter); + + + + FUNCTION F_BuildMoveCmd : STRING(GVL.COMMAND_LEN); +VAR_INPUT + stCommand: ST_MoveCmd; +END_VAR +VAR + _Command : STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + + @@ -18350,6 +25876,45 @@ Command:=CONCAT(Command, Delimiter); + + + + FUNCTION F_BuildMoveCmd : STRING(GVL.COMMAND_LEN); +VAR_INPUT + stCommand: ST_MoveCmd; +END_VAR +VAR + _Command : STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + + @@ -18485,6 +26050,43 @@ F_BuildMoveCmd := _Command; + + + FUNCTION F_BuildMoveCmd : STRING(GVL.COMMAND_LEN); +VAR_INPUT + stCommand: ST_MoveCmd; +END_VAR +VAR + _Command : STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; + _MoveTypeD: STRING(3):='DIR'; + _MoveTypeL: STRING(3):='LIN'; + _MoveTypeC: STRING(3):='CIR'; + _ChangeTypeA: STRING(3):='ABS'; + _ChangeTypeR: STRING(3):='REL'; + _CoordSystemAcs: STRING(3):='ACS'; + _CoordSystemMcs: STRING(3):='MCS'; + _CoordSystemPc1: STRING(3):='PC1'; + _CoordSystemPc2: STRING(3):='PC2'; + _CoordSystemTcs: STRING(3):='TCS'; + _CoordSystemWcs: STRING(3):='WCS'; + _CoordSystemIcs: STRING(3):='ICS'; + _CoordTypeH: STRING(3):='LIT'; + _CoordTypeV: STRING(3):='VAR'; + _ArrayTypeS: STRING(3):='STO'; + _ArrayTypeV: STRING(3):='VIS'; + _ArrayTypeF: STRING(3):='FLG'; + _CircleModeBor: STRING(3):='BOR'; + _CircleModeCen: STRING(3):='CEN'; + _CircleModeRad: STRING(3):='RAD'; + _PathChoiceClw: STRING(3):='CLW'; + _PathChoiceCcw: STRING(3):='CCW'; +END_VAR + + + 19554b2f-3ca2-4f8d-a4a2-2e3ac3119ec0 @@ -18508,6 +26110,23 @@ F_BuildMoveCmd := _Command; + + + + FUNCTION F_RoundLreal : LREAL +VAR_INPUT + rIn : LREAL; + Digit: INT; +END_VAR + +VAR + d1 : DINT; + r0,r1,r2,Rdigit: LREAL; +END_VAR + + + + @@ -18535,6 +26154,23 @@ F_BuildMoveCmd := _Command; + + + + FUNCTION F_RoundLreal : LREAL +VAR_INPUT + rIn : LREAL; + Digit: INT; +END_VAR + +VAR + d1 : DINT; + r0,r1,r2,Rdigit: LREAL; +END_VAR + + + + @@ -18549,6 +26185,21 @@ F_RoundLreal := r2 / r0; + + + FUNCTION F_RoundLreal : LREAL +VAR_INPUT + rIn : LREAL; + Digit: INT; +END_VAR + +VAR + d1 : DINT; + r0,r1,r2,Rdigit: LREAL; +END_VAR + + + 6e4b5325-49a6-45c7-a436-b44a2066c3ea @@ -18564,6 +26215,26 @@ F_RoundLreal := r2 / r0; + + + + FUNCTION_BLOCK FB_ParseLogicCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_LogicCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _i, _j, _k: INT; +END_VAR + + + + @@ -18581,6 +26252,26 @@ F_RoundLreal := r2 / r0; + + + + FUNCTION_BLOCK FB_ParseLogicCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_LogicCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _i, _j, _k: INT; +END_VAR + + + + @@ -18608,6 +26299,26 @@ F_RoundLreal := r2 / r0; + + + + FUNCTION_BLOCK FB_ParseLogicCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_LogicCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _i, _j, _k: INT; +END_VAR + + + + @@ -18756,6 +26467,24 @@ END_IF + + + FUNCTION_BLOCK FB_ParseLogicCmd +VAR_INPUT + Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR_OUTPUT + stCommand: ST_LogicCmd; + Error: BOOL; + ErrorDescription: STRING; +END_VAR +VAR + _CmdParams: ARRAY [0..GVL.COMMAND_LEN] OF STRING; + _i, _j, _k: INT; +END_VAR + + + 94719e33-3b96-48b6-b30b-137cf4b2830f @@ -18774,6 +26503,23 @@ END_IF + + + + FUNCTION F_BuildLogicCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_LogicCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + + @@ -18781,6 +26527,23 @@ END_IF + + + + FUNCTION F_BuildLogicCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_LogicCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + + @@ -18791,6 +26554,23 @@ END_IF + + + + FUNCTION F_BuildLogicCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_LogicCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + + @@ -18849,6 +26629,21 @@ F_BuildLogicCmd := _Command; + + + FUNCTION F_BuildLogicCmd : STRING(GVL.COMMAND_LEN) +VAR_INPUT + stCommand: ST_LogicCmd; +END_VAR +VAR + _Command: STRING(GVL.COMMAND_LEN); +END_VAR +VAR CONSTANT + _Delimiter: STRING:=' '; +END_VAR + + + c913c794-b56e-4d94-b465-42dec1dfd0be @@ -18877,6 +26672,21 @@ F_BuildLogicCmd := _Command; + + + + FUNCTION F_HomeOffsetCalc : LREAL +VAR_INPUT + CurrentOffset: LREAL; + CurrentPosition: LREAL; + HomeSearchDirection: MC_Direction; +END_VAR +VAR +END_VAR + + + + @@ -18894,6 +26704,19 @@ END_IF + + + FUNCTION F_HomeOffsetCalc : LREAL +VAR_INPUT + CurrentOffset: LREAL; + CurrentPosition: LREAL; + HomeSearchDirection: MC_Direction; +END_VAR +VAR +END_VAR + + + ad8953b8-d17f-41b2-83c9-9901a22a0b46 @@ -18959,6 +26782,50 @@ END_IF + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -18966,6 +26833,50 @@ END_IF + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -18983,6 +26894,50 @@ END_IF + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -19076,6 +27031,50 @@ END_IF + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -19126,6 +27125,50 @@ END_IF + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + + @@ -19233,6 +27276,19 @@ _FirstScan := FALSE; number of the command to start from when called program ends + + + + METHOD PUBLIC M_CallProgram : bool +VAR_INPUT + ProgramNumber: UINT; // program to call + ReturnProgram: UINT; // number of the program to return to when the call program ends + ReturnCommand: UINT; // number of the command to start from when called program ends +END_VAR + + + + @@ -19258,6 +27314,15 @@ END_IF {warning restore C0371} + + METHOD PUBLIC M_CallProgram : bool +VAR_INPUT + ProgramNumber: UINT; // program to call + ReturnProgram: UINT; // number of the program to return to when the call program ends + ReturnCommand: UINT; // number of the command to start from when called program ends +END_VAR + + @@ -19279,6 +27344,10 @@ END_IF SUPER^._UnitMode.Reset(); + + METHOD PROTECTED M_Complete : BOOL + + @@ -19333,6 +27402,9 @@ ELSE END_IF*) + + METHOD PROTECTED M_Resetting : BOOL + @@ -19366,6 +27438,10 @@ _SeqClearing := 0; _SeqResetting := 0; + + METHOD PROTECTED M_Idle : BOOL + + @@ -19390,6 +27466,10 @@ SUPER^._UnitMode(sName := 'Program Processor', xActive := TRUE); + + METHOD PROTECTED M_SetPackML : BOOL + + @@ -19423,6 +27503,10 @@ _SeqMain := _STEP_PRG; SUPER^.M_StateComplete(); + + METHOD PROTECTED M_Starting : BOOL + + @@ -19438,6 +27522,17 @@ SUPER^.M_StateComplete(); + + + + METHOD PROTECTED M_Execute : BOOL +VAR + _ErrorDescription: STRING; +END_VAR + + + + @@ -19541,6 +27636,13 @@ END_CASE {warning restore C0371} + + METHOD PROTECTED M_Execute : BOOL +VAR + _ErrorDescription: STRING; +END_VAR + + @@ -19574,6 +27676,10 @@ ELSE END_IF + + METHOD PROTECTED M_Suspending : BOOL + + @@ -19607,6 +27713,10 @@ END_IF _SeqMain := _STEP_WAIT_IDLE; + + METHOD PROTECTED M_UnSuspending : BOOL + + @@ -19634,6 +27744,10 @@ ELSE END_IF + + METHOD PROTECTED M_Holding : BOOL + + @@ -19667,6 +27781,10 @@ END_IF _SeqMain := _STEP_WAIT_IDLE; + + METHOD PROTECTED M_Unholding : BOOL + + @@ -19706,6 +27824,9 @@ ELSE END_IF*) + + METHOD PROTECTED M_Aborting : BOOL + @@ -19738,6 +27859,9 @@ ELSE END_IF + + METHOD PROTECTED M_Stopping : BOOL + @@ -19827,6 +27951,9 @@ END_IF + + METHOD PROTECTED M_Clearing : BOOL + @@ -19842,6 +27969,17 @@ END_IF + + + + METHOD PUBLIC M_SetProgram : BOOL +VAR_INPUT + ProgramNumber: UINT; +END_VAR + + + + @@ -19854,6 +27992,13 @@ ELSE END_IF + + METHOD PUBLIC M_SetProgram : BOOL +VAR_INPUT + ProgramNumber: UINT; +END_VAR + + @@ -19866,6 +28011,17 @@ END_IF + + + + METHOD PRIVATE _M_Error +VAR_INPUT + Description: STRING; +END_VAR + + + + @@ -19878,6 +28034,13 @@ END_IF SUPER^.M_Error(Description := CONCAT('Program Processor: ', Description)); + + METHOD PRIVATE _M_Error +VAR_INPUT + Description: STRING; +END_VAR + + @@ -19911,8 +28074,17 @@ END_IF P_CurrentProgram REF= _CurrentPrgIdx; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_CurrentProgram : REFERENCE TO UINT + @@ -19946,8 +28118,17 @@ END_IF P_CurrentCommand REF= _ProcessCommands.P_CurrentCommand; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_CurrentCommand : REFERENCE TO DUT_Command + @@ -19981,11 +28162,62 @@ END_IF P_CurrentCommandIndex REF= _ProcessCommands.P_CurrentCommandIndex; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_CurrentCommandIndex : REFERENCE TO UINT + + + + FUNCTION_BLOCK FB_ProgramProcessor EXTENDS FB_Module +VAR_IN_OUT + Programs: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF DUT_Program; + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + CmdIO: ST_LogicCmdIO; +END_VAR +VAR_INPUT + Enable: BOOL; +END_VAR +VAR_OUTPUT + ItfActiveProcessorUnitMode : PACK_ML.IUnitMode; + ItfActiveModule: ItfModule; + StatusText: STRING(255); +END_VAR +VAR + _DummyUnitMode: PACK_ML.UnitMode; + _UnitModeCurrentState: PACK_ML.State; + _Returning: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF BOOL; + _ReturnPrograms: ARRAY [GVL.PROG_ARR_BEG..GVL.PROG_ARR_END] OF UINT; + _ReturnCommands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END + 1] OF UINT; // +1 because we want to be able to tell if calling program was on last command + _CurrentPrgIdx: UINT; + _ProcessCommands: FB_CommandProcessor; + _Commands: ARRAY [GVL.PROG_CMDS_ARR_BEG..GVL.PROG_CMDS_ARR_END] OF DUT_Command; + _ErrorRtrig: R_TRIG; + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + _STEP_DONE: INT := 1000; + _STEP_IDLE: INT := 0000; + _STEP_PRG: INT := 0010; + _STEP_WAIT_EXECUTE: INT := 0020; + _STEP_WAIT_IDLE: INT := 0025; + _STEP_ERR: INT := 0030; +END_VAR + + efd5aca7-63df-4cd7-9f44-51095df5f331 @@ -20186,6 +28418,60 @@ END_IF + + + + FUNCTION_BLOCK FB_Controller EXTENDS FB_PythonServerHandler +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR + Controller: ST_Controller; + ControllerStates: ARRAY [0..254] OF BYTE; + ControllerStatesTemp: ARRAY [0..254] OF BYTE; + ReadStringTemp: STRING(255); + RecordLast: DINT; + ReconnectTimer: TON:=(PT:=T#5S); + + _SetColor: BOOL; + _Red: INT:=0; + _Green: INT:=255; + _Blue: INT:=0; + + _SetMicrophoneState: BOOL; + _MicrophoneState: BOOL; + + _SetPlayerID: BOOL; + _PlayerID: E_ControllerPlayerID; + + _SetBrightness: BOOL; + _Brightness: E_ControllerBrightness; + + _SetMotorIntensity: BOOL; + _Motor: E_ControllerMotor; + _MotorIntensity: USINT; // 0-255 + _MotorIntensityDuration: REAL; // ms + + _SetTriggerMode: BOOL; + _TriggerModeTrigger: E_ControllerTrigger; + _TriggerModeMode: E_ControllerTriggerMode; + + _SetTriggerForce: BOOL; + _TriggerForceTrigger: E_ControllerTrigger; + _TriggerForceParameter: E_ControllerTriggerForceParameter; + _TriggerForceIntensity: USINT; + + _i, _j, _k: INT; + FirstScan: BOOL:=TRUE; +END_VAR +VAR CONSTANT + States: STRING:='states: '; +END_VAR + + + + @@ -20196,6 +28482,60 @@ END_IF + + + + FUNCTION_BLOCK FB_Controller EXTENDS FB_PythonServerHandler +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR + Controller: ST_Controller; + ControllerStates: ARRAY [0..254] OF BYTE; + ControllerStatesTemp: ARRAY [0..254] OF BYTE; + ReadStringTemp: STRING(255); + RecordLast: DINT; + ReconnectTimer: TON:=(PT:=T#5S); + + _SetColor: BOOL; + _Red: INT:=0; + _Green: INT:=255; + _Blue: INT:=0; + + _SetMicrophoneState: BOOL; + _MicrophoneState: BOOL; + + _SetPlayerID: BOOL; + _PlayerID: E_ControllerPlayerID; + + _SetBrightness: BOOL; + _Brightness: E_ControllerBrightness; + + _SetMotorIntensity: BOOL; + _Motor: E_ControllerMotor; + _MotorIntensity: USINT; // 0-255 + _MotorIntensityDuration: REAL; // ms + + _SetTriggerMode: BOOL; + _TriggerModeTrigger: E_ControllerTrigger; + _TriggerModeMode: E_ControllerTriggerMode; + + _SetTriggerForce: BOOL; + _TriggerForceTrigger: E_ControllerTrigger; + _TriggerForceParameter: E_ControllerTriggerForceParameter; + _TriggerForceIntensity: USINT; + + _i, _j, _k: INT; + FirstScan: BOOL:=TRUE; +END_VAR +VAR CONSTANT + States: STRING:='states: '; +END_VAR + + + + @@ -20263,6 +28603,26 @@ FirstScan:=FALSE; + + + + METHOD PRIVATE _M_EvaluateControllerStates : BOOL +VAR_INPUT + States: ARRAY[0..254] OF BYTE; +END_VAR +VAR_STAT + _i, _j, _k: UINT; + _FirstScan: BOOL:=TRUE; + _HeartbeatTimer: TON:=(PT:=T#2S); + _Heartbeat: USINT:=0; + _HeartbeatLast: USINT:=0; +END_VAR +VAR CONSTANT +END_VAR + + + + @@ -20316,6 +28676,26 @@ FirstScan:=FALSE; + + + + METHOD PRIVATE _M_EvaluateControllerStates : BOOL +VAR_INPUT + States: ARRAY[0..254] OF BYTE; +END_VAR +VAR_STAT + _i, _j, _k: UINT; + _FirstScan: BOOL:=TRUE; + _HeartbeatTimer: TON:=(PT:=T#2S); + _Heartbeat: USINT:=0; + _HeartbeatLast: USINT:=0; +END_VAR +VAR CONSTANT +END_VAR + + + + @@ -20428,6 +28808,22 @@ Controller.Battery.Level := MIN((States[53] AND 16#0F) * 10 + 5, 100); // TO _FirstScan := FALSE; + + METHOD PRIVATE _M_EvaluateControllerStates : BOOL +VAR_INPUT + States: ARRAY[0..254] OF BYTE; +END_VAR +VAR_STAT + _i, _j, _k: UINT; + _FirstScan: BOOL:=TRUE; + _HeartbeatTimer: TON:=(PT:=T#2S); + _Heartbeat: USINT:=0; + _HeartbeatLast: USINT:=0; +END_VAR +VAR CONSTANT +END_VAR + + @@ -20462,6 +28858,18 @@ _FirstScan := FALSE; + + + + METHOD PUBLIC M_SetColor : BOOL +VAR_INPUT + Red: INT:=0; + Green: INT:=255; + Blue: INT:=0; +END_VAR + + + @@ -20479,6 +28887,14 @@ ELSE END_IF + + METHOD PUBLIC M_SetColor : BOOL +VAR_INPUT + Red: INT:=0; + Green: INT:=255; + Blue: INT:=0; +END_VAR + @@ -20494,6 +28910,16 @@ END_IF + + + + METHOD PUBLIC M_SetPlayerID : BOOL +VAR_INPUT + PlayerID: E_ControllerPlayerID; +END_VAR + + + @@ -20504,6 +28930,12 @@ _SetPlayerID := TRUE; + + METHOD PUBLIC M_SetPlayerID : BOOL +VAR_INPUT + PlayerID: E_ControllerPlayerID; +END_VAR + @@ -20519,6 +28951,17 @@ _SetPlayerID := TRUE; + + + + METHOD PUBLIC M_SetMicrophoneState : BOOL +VAR_INPUT + State: BOOL; +END_VAR + + + + @@ -20528,6 +28971,13 @@ _MicrophoneState := State; _SetMicrophoneState := TRUE; + + METHOD PUBLIC M_SetMicrophoneState : BOOL +VAR_INPUT + State: BOOL; +END_VAR + + @@ -20543,6 +28993,19 @@ _SetMicrophoneState := TRUE; + + + + METHOD PRIVATE _M_SetColor : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20566,6 +29029,15 @@ _SetMicrophoneState := TRUE; END_IF + + METHOD PRIVATE _M_SetColor : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20581,6 +29053,19 @@ END_IF + + + + METHOD PRIVATE _M_SetMicrophoneState : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20600,6 +29085,15 @@ END_IF END_IF; + + METHOD PRIVATE _M_SetMicrophoneState : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20615,6 +29109,19 @@ END_IF; + + + + METHOD PRIVATE _M_SetPlayerID : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20634,6 +29141,15 @@ END_IF; END_IF + + METHOD PRIVATE _M_SetPlayerID : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20661,6 +29177,12 @@ END_IF END_IF + + METHOD PRIVATE _M_SetBrightness : BOOL +VAR_INPUT +END_VAR + + @@ -20676,6 +29198,17 @@ END_IF + + + + METHOD PUBLIC M_SetBrightness : BOOL +VAR_INPUT + Brightness: E_ControllerBrightness; +END_VAR + + + + @@ -20685,6 +29218,13 @@ _Brightness := Brightness; _SetBrightness := TRUE; + + METHOD PUBLIC M_SetBrightness : BOOL +VAR_INPUT + Brightness: E_ControllerBrightness; +END_VAR + + @@ -20716,6 +29256,19 @@ _SetBrightness := TRUE; s + + + + METHOD PUBLIC M_SetMotorIntensity : BOOL +VAR_INPUT + Motor: E_ControllerMotor; + Intensity: USINT; // 0-255 + Duration: REAL; // s +END_VAR + + + + @@ -20731,6 +29284,15 @@ ELSE END_IF + + METHOD PUBLIC M_SetMotorIntensity : BOOL +VAR_INPUT + Motor: E_ControllerMotor; + Intensity: USINT; // 0-255 + Duration: REAL; // s +END_VAR + + @@ -20746,6 +29308,19 @@ END_IF + + + + METHOD PRIVATE _M_SetMotorIntensity : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20772,6 +29347,15 @@ END_IF END_IF + + METHOD PRIVATE _M_SetMotorIntensity : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20787,6 +29371,19 @@ END_IF + + + + METHOD PRIVATE _M_SetTriggerMode : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20812,6 +29409,15 @@ IF NOT SUPER^._Busy AND _SetTriggerMode THEN END_IF + + METHOD PRIVATE _M_SetTriggerMode : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20832,6 +29438,18 @@ END_IF + + + + METHOD PUBLIC M_SetTriggerMode : BOOL +VAR_INPUT + Trigger: E_ControllerTrigger; + Mode: E_ControllerTriggerMode; +END_VAR + + + + @@ -20842,6 +29460,14 @@ _TriggerModeTrigger := Trigger; _TriggerModeMode := Mode; + + METHOD PUBLIC M_SetTriggerMode : BOOL +VAR_INPUT + Trigger: E_ControllerTrigger; + Mode: E_ControllerTriggerMode; +END_VAR + + @@ -20857,6 +29483,19 @@ _TriggerModeMode := Mode; + + + + METHOD PRIVATE _M_SetTriggerForce : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + + + @@ -20884,6 +29523,15 @@ IF NOT SUPER^._Busy AND _SetTriggerForce THEN END_IF + + METHOD PRIVATE _M_SetTriggerForce : BOOL +VAR_INPUT +END_VAR +VAR + _Command: STRING(255); +END_VAR + + @@ -20912,6 +29560,19 @@ END_IF 0-255 + + + + METHOD PUBLIC M_SetTriggerForce : BOOL +VAR_INPUT + Trigger: E_ControllerTrigger; + Parameter: E_ControllerTriggerForceParameter; + Intensity: USINT; // 0-255 +END_VAR + + + + @@ -20927,6 +29588,15 @@ ELSE END_IF + + METHOD PUBLIC M_SetTriggerForce : BOOL +VAR_INPUT + Trigger: E_ControllerTrigger; + Parameter: E_ControllerTriggerForceParameter; + Intensity: USINT; // 0-255 +END_VAR + + @@ -20960,11 +29630,72 @@ END_IF P_State REF= Controller; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_State : REFERENCE TO ST_Controller + + + + FUNCTION_BLOCK FB_Controller EXTENDS FB_PythonServerHandler +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR + Controller: ST_Controller; + ControllerStates: ARRAY [0..254] OF BYTE; + ControllerStatesTemp: ARRAY [0..254] OF BYTE; + ReadStringTemp: STRING(255); + RecordLast: DINT; + ReconnectTimer: TON:=(PT:=T#5S); + + _SetColor: BOOL; + _Red: INT:=0; + _Green: INT:=255; + _Blue: INT:=0; + + _SetMicrophoneState: BOOL; + _MicrophoneState: BOOL; + + _SetPlayerID: BOOL; + _PlayerID: E_ControllerPlayerID; + + _SetBrightness: BOOL; + _Brightness: E_ControllerBrightness; + + _SetMotorIntensity: BOOL; + _Motor: E_ControllerMotor; + _MotorIntensity: USINT; // 0-255 + _MotorIntensityDuration: REAL; // ms + + _SetTriggerMode: BOOL; + _TriggerModeTrigger: E_ControllerTrigger; + _TriggerModeMode: E_ControllerTriggerMode; + + _SetTriggerForce: BOOL; + _TriggerForceTrigger: E_ControllerTrigger; + _TriggerForceParameter: E_ControllerTriggerForceParameter; + _TriggerForceIntensity: USINT; + + _i, _j, _k: INT; + FirstScan: BOOL:=TRUE; +END_VAR +VAR CONSTANT + States: STRING:='states: '; +END_VAR + + + 6c3bd905-e561-44be-a365-7f9abc521e72 @@ -20991,6 +29722,36 @@ END_IF + + + + FUNCTION_BLOCK FB_PythonServerHandler +VAR_INPUT + sIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _Done: BOOL; + _Busy: BOOL; + _Error: BOOL; + _ErrorDescription: STRING; + _Response: STRING(255); + _WorkerUid: STRING; + _Execute: BOOL; + _Reset: BOOL:=FALSE; + _ResetRtrig: R_TRIG; + _Step: INT; + _Command: STRING(255); + _ReadRecordLast: DINT; + _TcpClient: FB_TcpClient; + _TimeoutTimer: TON:=(PT:=T#120S); +END_VAR + + + + @@ -21073,6 +29834,36 @@ END_IF + + + + FUNCTION_BLOCK FB_PythonServerHandler +VAR_INPUT + sIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _Done: BOOL; + _Busy: BOOL; + _Error: BOOL; + _ErrorDescription: STRING; + _Response: STRING(255); + _WorkerUid: STRING; + _Execute: BOOL; + _Reset: BOOL:=FALSE; + _ResetRtrig: R_TRIG; + _Step: INT; + _Command: STRING(255); + _ReadRecordLast: DINT; + _TcpClient: FB_TcpClient; + _TimeoutTimer: TON:=(PT:=T#120S); +END_VAR + + + + @@ -21170,6 +29961,18 @@ _TcpClient( + + + + METHOD PROTECTED _M_Execute : BOOL +VAR_INPUT + Command: STRING(255):=''; + Timeout: UDINT:=60; +END_VAR + + + + @@ -21184,6 +29987,14 @@ _Command:=Command; _TimeoutTimer.PT := UDINT_TO_TIME(Timeout * 1000); + + METHOD PROTECTED _M_Execute : BOOL +VAR_INPUT + Command: STRING(255):=''; + Timeout: UDINT:=60; +END_VAR + + @@ -21210,6 +30021,12 @@ ELSE END_IF + + METHOD PUBLIC M_Cancel : BOOL +VAR_INPUT +END_VAR + + @@ -21227,6 +30044,12 @@ _Error := FALSE; _ErrorDescription := ''; + + METHOD PUBLIC M_Reset : BOOL +VAR_INPUT +END_VAR + + @@ -21242,6 +30065,12 @@ _ErrorDescription := ''; _TcpClient._M_Reconnect(); + + METHOD PUBLIC M_Reconnect : BOOL +VAR_INPUT +END_VAR + + @@ -21275,8 +30104,17 @@ _ErrorDescription := ''; P_Done := _Done; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_Done : BOOL + @@ -21310,8 +30148,17 @@ _ErrorDescription := ''; P_Busy := _Busy; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_Busy : BOOL + @@ -21345,8 +30192,17 @@ _ErrorDescription := ''; P_Error := _Error; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_Error : BOOL + @@ -21380,8 +30236,17 @@ _ErrorDescription := ''; P_ErrorDescription := _ErrorDescription; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_ErrorDescription : STRING + @@ -21415,8 +30280,17 @@ _ErrorDescription := ''; P_Response := _Response; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_Response : STRING(255) + @@ -21450,8 +30324,17 @@ _ErrorDescription := ''; P_RawReadString REF= _TcpClient.strRead; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_RawReadString : REFERENCE TO STRING(255) + @@ -21490,8 +30373,17 @@ _ErrorDescription := ''; P_RawReadByteArray := _TcpClient.byteArrayRead; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_RawReadByteArray : ARRAY[0..254] OF BYTE + @@ -21525,8 +30417,17 @@ _ErrorDescription := ''; P_RecordNumber := _TcpClient.dRecordRead; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_RecordNumber : DINT + @@ -21560,11 +30461,48 @@ _ErrorDescription := ''; P_Connected REF= _TcpClient.bConnected; + + VAR +END_VAR + + + + {attribute 'monitoring':='variable'} +PROPERTY PUBLIC P_Connected : REFERENCE TO BOOL + + + + FUNCTION_BLOCK FB_PythonServerHandler +VAR_INPUT + sIpAddress: STRING(19):='127.0.0.1'; + uPort: UINT:=50011; +END_VAR +VAR_OUTPUT +END_VAR +VAR + _Done: BOOL; + _Busy: BOOL; + _Error: BOOL; + _ErrorDescription: STRING; + _Response: STRING(255); + _WorkerUid: STRING; + _Execute: BOOL; + _Reset: BOOL:=FALSE; + _ResetRtrig: R_TRIG; + _Step: INT; + _Command: STRING(255); + _ReadRecordLast: DINT; + _TcpClient: FB_TcpClient; + _TimeoutTimer: TON:=(PT:=T#120S); +END_VAR + + + 804277ad-245a-4a3c-a537-920a77a195da @@ -21583,6 +30521,19 @@ _ErrorDescription := ''; + + + + FUNCTION F_DpadState : ST_Dpad +VAR_INPUT + State: USINT; +END_VAR +VAR +END_VAR + + + + @@ -21639,6 +30590,17 @@ END_CASE + + + FUNCTION F_DpadState : ST_Dpad +VAR_INPUT + State: USINT; +END_VAR +VAR +END_VAR + + + c7c6193c-9fb2-4a99-8fe9-b8b80e6ab7d7 @@ -21654,6 +30616,82 @@ END_CASE + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + + @@ -21666,6 +30704,82 @@ END_CASE + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + + @@ -21683,6 +30797,82 @@ END_CASE + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + + @@ -21821,6 +31011,82 @@ END_CASE + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + + @@ -21943,6 +31209,82 @@ END_CASE + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + + @@ -22113,6 +31455,12 @@ CASE _SeqEnableGroup OF END_CASE + + METHOD PRIVATE _M_EnableGroup : BOOL +VAR_INPUT +END_VAR + + @@ -22287,6 +31635,12 @@ CASE _SequenceSetCoordTrans OF END_CASE + + METHOD PRIVATE _M_SetKinematics : BOOL +VAR_INPUT +END_VAR + + @@ -22334,6 +31688,11 @@ CASE _SeqDisableGroup OF END_CASE + + METHOD PRIVATE _M_DisableGroup : BOOL +VAR_INPUT +END_VAR + @@ -22355,6 +31714,12 @@ ELSE END_IF + + METHOD PUBLIC M_EnableGroup : BOOL +VAR_INPUT +END_VAR + + @@ -22400,6 +31765,12 @@ CASE _SeqResetGroup OF END_CASE + + METHOD PRIVATE _M_ResetGroup : BOOL +VAR_INPUT +END_VAR + + @@ -22420,6 +31791,12 @@ END_CASE //END_IF + + METHOD PUBLIC M_DisableGroup : BOOL +VAR_INPUT +END_VAR + + @@ -22435,6 +31812,17 @@ END_CASE + + + + METHOD PUBLIC M_SetKinematics : BOOL +VAR_INPUT + CoordinateSystem: SMC_COORD_SYSTEM; +END_VAR + + + + @@ -22449,6 +31837,13 @@ ELSE END_IF + + METHOD PUBLIC M_SetKinematics : BOOL +VAR_INPUT + CoordinateSystem: SMC_COORD_SYSTEM; +END_VAR + + @@ -22464,6 +31859,12 @@ END_IF _ResetGroup := TRUE; + + METHOD PUBLIC M_ResetGroup : BOOL +VAR_INPUT +END_VAR + + @@ -22497,8 +31898,17 @@ END_IF P_GroupEnabled := _GroupEnabled; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_GroupEnabled : BOOL + @@ -22532,8 +31942,17 @@ END_IF P_KinematicsSet := _KinematicsSet; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_KinematicsSet : BOOL + @@ -22567,11 +31986,94 @@ END_IF P_GroupStatus REF= _DUT_GroupStatus; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_GroupStatus : REFERENCE TO DUT_GroupStatus + + + + FUNCTION_BLOCK FB_GroupHandler +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; +END_VAR +VAR_INPUT + Enable: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; +END_VAR +VAR_OUTPUT + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + // + EnableFtrig: F_TRIG; + + // + _SeqEnableGroup: INT; + _SeqDisableGroup: INT; + _SequenceSetKinematics: INT; + _SequenceSetCoordTrans: INT; + _SeqResetGroup: INT; + + // + _SMC_GroupPower: SMC_GroupPower; + _GroupPower: BOOL; + _MC_GroupEnable: MC_GroupEnable; + _MC_GroupDisable: MC_GroupDisable; + _MC_GroupReset: MC_GroupReset; + _MC_GroupReadActualPosition: MC_GroupReadActualPosition; + _SMC_SetKinConfiguration: SMC_SetKinConfiguration; + + // coordinate transforms + _MC_SetCoordinateTransform: MC_SetCoordinateTransform; + _SMC_GroupSetTool: SMC_GroupSetTool; + _MC_COORD_REF: MC_COORD_REF; + _CoordinateSystem: SMC_COORD_SYSTEM:=SMC_COORD_SYSTEM.ACS; + + _EnableGroup: BOOL; + _DisableGroup: BOOL; + _GroupEnabled: BOOL; + _ResetGroup: BOOL; + _SetKinematics: BOOL; + _SetCoordinates: BOOL; + _KinematicsSet: BOOL; + + _MC_GroupReadStatus: MC_GroupReadStatus; + _DUT_GroupStatus: DUT_GroupStatus; + +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 1000; + STEP_IDLE: INT := 0000; + STEP_GROUP_POWER_ON: INT := 0022; + STEP_WAIT_POWER_ON: INT := 0024; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_READ_POSITION: INT := 0040; + STEP_WAIT_POSITION: INT := 0050; + STEP_SET_KINEMATICS: INT := 0060; + STEP_WAIT_KINEMATICS: INT := 0070; + STEP_SET_COORD_TRANS: INT := 0071; + STEP_WAIT_COORD_TRANS: INT := 0072; + STEP_GROUP_DISABLE: INT := 0100; + STEP_WAIT_DISABLE: INT := 0110; + STEP_GROUP_POWER_OFF: INT := 0120; +END_VAR + + + f6416d9a-a888-4f6b-9b8f-cb306c7639e1 @@ -22595,6 +32097,20 @@ END_IF + + + + FUNCTION F_SetJogButtons : INT +VAR_INPUT + CoordinateSystem: SMC_COORD_SYSTEM; + ABC_as_ACS: BOOL; +END_VAR +VAR +END_VAR + + + + @@ -22639,6 +32155,18 @@ END_CASE + + + FUNCTION F_SetJogButtons : INT +VAR_INPUT + CoordinateSystem: SMC_COORD_SYSTEM; + ABC_as_ACS: BOOL; +END_VAR +VAR +END_VAR + + + 640ac73b-ff1c-4df1-a978-e5b05f9ea455 @@ -22694,6 +32222,87 @@ END_CASE + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + + @@ -22751,6 +32360,87 @@ END_CASE + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + + @@ -22773,6 +32463,87 @@ END_CASE + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + + @@ -22943,6 +32714,87 @@ END_CASE + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + + @@ -23097,6 +32949,87 @@ END_CASE + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + + @@ -23724,6 +33657,12 @@ _MC_SetPosition_J6.Execute:=TRUE; {warning restore C0371} + + METHOD PUBLIC M_SetHome : BOOL +VAR_INPUT +END_VAR + + @@ -23744,6 +33683,12 @@ ELSE END_IF + + METHOD PUBLIC M_StartHoming : BOOL +VAR_INPUT +END_VAR + + @@ -23764,6 +33709,24 @@ END_IF + + + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + + + + @@ -23779,6 +33742,24 @@ END_IF + + + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + + + + @@ -23825,9 +33806,102 @@ _MoveCommandProcessor( Error=> ); + + METHOD PRIVATE _M_HandlePose : BOOL +VAR_IN_OUT + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; +END_VAR +VAR_INPUT +END_VAR +VAR + _MoveCommand: ST_MoveCmd; + _PoseSpeed: LREAL:=20.0; +END_VAR + + + + + FUNCTION_BLOCK FB_HomingProcessor +VAR_IN_OUT + J1, J2, J3, J4, J5, J6: AXIS_REF_SM3; + AxisGroup: AXIS_GROUP_REF_SM3; + GroupHandler: FB_GroupHandler; + Controller: FB_Controller; +END_VAR + +VAR_INPUT + J1_Limit, J2_Limit, J3_Limit, J4_Limit, J5_Limit, J6_Limit: BOOL; + Enable: BOOL; + Reset: BOOL; + StoredPositions: REFERENCE TO ARRAY[GVL.POS_ARR_BEG..GVL.POS_ARR_END] OF DUT_StoredPosition; + VisionRegisters: REFERENCE TO ARRAY[GVL.VIS_ARR_BEG..GVL.VIS_ARR_END] OF DUT_VisionRegister; + Flags: REFERENCE TO ARRAY[GVL.FLG_ARR_BEG..GVL.FLG_ARR_END] OF DUT_Flags; +END_VAR +VAR_OUTPUT + Done: BOOL; + Busy: BOOL; + Error: BOOL; + ErrorID: SMC_ERROR; +END_VAR +VAR + _ExecuteRtrig: R_TRIG; + _ExecuteFtrig: F_TRIG; + _ResetRtrig: R_TRIG; + _ErrorRtrig: R_TRIG; + + _SequenceMain: INT; + _StartHoming: BOOL; + + _SMC_Homing_J1, _SMC_Homing_J2, _SMC_Homing_J3: SMC_Homing; + _SMC_Homing_J4, _SMC_Homing_J5, _SMC_Homing_J6: SMC_Homing; + + _MC_SetPosition_J1, _MC_SetPosition_J2, _MC_SetPosition_J3: MC_SetPosition; + _MC_SetPosition_J4, _MC_SetPosition_J5, _MC_SetPosition_J6: MC_SetPosition; + + _HomingVelocityFast: LREAL:= 15.0; + _HomingVelocitySlow: LREAL:= 10.0; + _HomingVelocitySlowSlow: LREAL:= 1.0; + _HomingAcceleration: LREAL:= 50.0; + _HomingJerk: LREAL:= 100.0; + + _MoveToPose: BOOL; + _MoveCommand: ST_MoveCmd; + _MoveCommandProcessor: FB_MoveCmdProcessor; + + _i, _j, _k: INT; + _FirstScan: BOOL:=TRUE; +END_VAR + +VAR CONSTANT + STEP_DONE: INT := 9999; + STEP_IDLE: INT := 0000; + STEP_GROUP_ENABLE: INT := 0030; + STEP_WAIT_ENABLE: INT := 0035; + STEP_FAST_HOME_G1: INT := 0040; + STEP_WAIT_FAST_HOME_G1: INT := 0045; + STEP_SLOW_HOME_G1: INT := 0050; + STEP_WAIT_SLOW_HOME_G1: INT := 0055; + + STEP_FAST_HOME_G2: INT := 0060; + STEP_WAIT_FAST_HOME_G2: INT := 0065; + STEP_SLOW_HOME_G2: INT := 0070; + STEP_WAIT_SLOW_HOME_G2: INT := 0075; + + STEP_FAST_HOME_G3: INT := 0080; + STEP_WAIT_FAST_HOME_G3: INT := 0085; + STEP_SLOW_HOME_G3: INT := 0090; + STEP_WAIT_SLOW_HOME_G3: INT := 0095; + + STEP_MOVE_TO_POSE: INT := 1000; + STEP_WAIT_MOVE_TO_POSE: INT := 1010; + STEP_WAIT_POSE_DONE: INT := 1020; +END_VAR + + 6c30ff35-bc31-4ed8-ab4a-320ad080dc49 @@ -23856,6 +33930,22 @@ _MoveCommandProcessor( + + + + FUNCTION F_VarSetCmdOperate : LREAL +VAR_INPUT + Operand1: LREAL; + Operation: DUT_VarSetCmd_OperType; + Operand2: LREAL; +END_VAR +VAR + _epsilon : REAL := 0.00000001; +END_VAR + + + + @@ -23866,6 +33956,22 @@ _MoveCommandProcessor( + + + + FUNCTION F_VarSetCmdOperate : LREAL +VAR_INPUT + Operand1: LREAL; + Operation: DUT_VarSetCmd_OperType; + Operand2: LREAL; +END_VAR +VAR + _epsilon : REAL := 0.00000001; +END_VAR + + + + @@ -23897,6 +34003,20 @@ END_CASE + + + FUNCTION F_VarSetCmdOperate : LREAL +VAR_INPUT + Operand1: LREAL; + Operation: DUT_VarSetCmd_OperType; + Operand2: LREAL; +END_VAR +VAR + _epsilon : REAL := 0.00000001; +END_VAR + + + 4a4ec279-6d88-4f3c-a9ff-f801c2546a48 @@ -23924,6 +34044,23 @@ END_CASE + + + + FUNCTION F_Checksum : UINT +VAR_INPUT + data: POINTER TO BYTE; + length: UINT; +END_VAR +VAR + curr_crc: UINT; + sum1, sum2: USINT; + _i, _j, _k: UINT; +END_VAR + + + + @@ -23956,6 +34093,23 @@ END_CASE + + + + FUNCTION F_Checksum : UINT +VAR_INPUT + data: POINTER TO BYTE; + length: UINT; +END_VAR +VAR + curr_crc: UINT; + sum1, sum2: USINT; + _i, _j, _k: UINT; +END_VAR + + + + @@ -23974,6 +34128,21 @@ F_Checksum := SHL(sum2, 8) OR sum1; + + + FUNCTION F_Checksum : UINT +VAR_INPUT + data: POINTER TO BYTE; + length: UINT; +END_VAR +VAR + curr_crc: UINT; + sum1, sum2: USINT; + _i, _j, _k: UINT; +END_VAR + + + 8c4a2130-c24f-42dc-952f-31bdbb96ab6c @@ -24026,6 +34195,23 @@ F_Checksum := SHL(sum2, 8) OR sum1; + + + + PROGRAM _50_Retains +VAR + // + SaveRetain, RestoreRetain: BOOL; + pApplication : POINTER TO CmpApp.APPLICATION; + ResultFind, ResultStore, ResultRestore: UDINT; + + // + FirstScan: BOOL:=TRUE; +END_VAR + + + + @@ -24049,6 +34235,21 @@ FirstScan := FALSE; + + + PROGRAM _50_Retains +VAR + // + SaveRetain, RestoreRetain: BOOL; + pApplication : POINTER TO CmpApp.APPLICATION; + ResultFind, ResultStore, ResultRestore: UDINT; + + // + FirstScan: BOOL:=TRUE; +END_VAR + + + cbf25141-ef0a-49e9-8310-f4845a1e4f3b @@ -24077,6 +34278,24 @@ FirstScan := FALSE; + + + + FUNCTION_BLOCK FB_DigitalOutput +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR + // https://infosys.beckhoff.com/content/1033/tc3_plc_intro/11948825611.html?id=1756449079294237528 + Output AT %Q* : BOOL; + _Output: BOOL; + _FirstScan: BOOL; +END_VAR + + + + @@ -24105,6 +34324,12 @@ _FirstScan := FALSE; _Output := FALSE; + + METHOD PUBLIC Off : BOOL +VAR_INPUT +END_VAR + + @@ -24120,6 +34345,12 @@ _FirstScan := FALSE; _Output := TRUE; + + METHOD PUBLIC On : BOOL +VAR_INPUT +END_VAR + + @@ -24135,6 +34366,12 @@ _FirstScan := FALSE; _Output := NOT _Output; + + METHOD PUBLIC Toggle : BOOL +VAR_INPUT +END_VAR + + @@ -24168,8 +34405,17 @@ _FirstScan := FALSE; P_StateOff := NOT _Output; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_StateOff : BOOL + @@ -24203,11 +34449,36 @@ _FirstScan := FALSE; P_StateOn := _Output; + + VAR +END_VAR + + + + {attribute 'monitoring' := 'variable'} +PROPERTY PUBLIC P_StateOn : BOOL + + + + FUNCTION_BLOCK FB_DigitalOutput +VAR_INPUT +END_VAR +VAR_OUTPUT +END_VAR +VAR + // https://infosys.beckhoff.com/content/1033/tc3_plc_intro/11948825611.html?id=1756449079294237528 + Output AT %Q* : BOOL; + _Output: BOOL; + _FirstScan: BOOL; +END_VAR + + + 9ccb68c3-5dd7-4441-a68d-8f407a5bbf39 @@ -24226,6 +34497,25 @@ _FirstScan := FALSE; + + + + FUNCTION F_ChangeJumpRow : BOOL +VAR_IN_OUT + Command: DUT_Command; +END_VAR +VAR_INPUT + BeginningRow: DINT; + Change: INT; +END_VAR +VAR + _LogicCmdParser : FB_ParseLogicCmd; + _stLogicCmd : ST_LogicCmd; +END_VAR + + + + @@ -24238,6 +34528,25 @@ _FirstScan := FALSE; + + + + FUNCTION F_ChangeJumpRow : BOOL +VAR_IN_OUT + Command: DUT_Command; +END_VAR +VAR_INPUT + BeginningRow: DINT; + Change: INT; +END_VAR +VAR + _LogicCmdParser : FB_ParseLogicCmd; + _stLogicCmd : ST_LogicCmd; +END_VAR + + + + @@ -24250,6 +34559,25 @@ _FirstScan := FALSE; + + + + FUNCTION F_ChangeJumpRow : BOOL +VAR_IN_OUT + Command: DUT_Command; +END_VAR +VAR_INPUT + BeginningRow: DINT; + Change: INT; +END_VAR +VAR + _LogicCmdParser : FB_ParseLogicCmd; + _stLogicCmd : ST_LogicCmd; +END_VAR + + + + @@ -24284,6 +34612,23 @@ END_IF + + + FUNCTION F_ChangeJumpRow : BOOL +VAR_IN_OUT + Command: DUT_Command; +END_VAR +VAR_INPUT + BeginningRow: DINT; + Change: INT; +END_VAR +VAR + _LogicCmdParser : FB_ParseLogicCmd; + _stLogicCmd : ST_LogicCmd; +END_VAR + + + 38b68f93-b03b-4e6d-b291-89cec4400a06 @@ -24332,16 +34677,6 @@ END_IF - - - - - - - - - - @@ -24350,6 +34685,29 @@ END_IF + + + + PROGRAM _20_Io +VAR + // + IoInputs: ARRAY [0..31] OF BYTE; + IoOutputs: ARRAY [0..31] OF BYTE; + + // + rx_heartbeat: BOOL; + rx_en: BOOL; + + // + IoOption: INT:=0; + + // + FirstScan: BOOL:=TRUE; +END_VAR + + + + @@ -24359,22 +34717,25 @@ IF FirstScan THEN // END_IF +// leaving this pragma here for reference and for learning. +// it is not needed and was an attempt to parameterize configuring the IO +// the project define evaluates and could be a super handy technique in the future so I'll leave it here for reference. +// the defines for the project can be found in the Toolbar under Project -> Project Settings... -> Compile options -> Edit project defines... {IF project_defined(IoOption1)} - IoOption := 1; + //IoOption := 1; //_M_MapIoOption1(); {ELSIF project_defined(IoOption2)} - IoOption := 2; + //IoOption := 2; //_M_MapIoOption2(); {ELSE} - IoOption := 0; + //IoOption := 0; {END_IF} -IF IoOption1.Enable THEN - IoOption1Enabled := TRUE; +// detect if the slave is connected and map its IO +IF IoOption1.wState = ETC_SLAVE_STATE.ETC_SLAVE_OPERATIONAL THEN _M_MapIoOption1(); END_IF -IF IoOption2.Enable THEN - IoOption2Enabled := TRUE; +IF IoOption2.wState = ETC_SLAVE_STATE.ETC_SLAVE_OPERATIONAL THEN _M_MapIoOption2(); END_IF @@ -24431,6 +34792,12 @@ EL2809.Output_14 := GVL.CmdIO.Output[14]; EL2809.Output_15 := GVL.CmdIO.Output[15]; + + METHOD PRIVATE _M_MapIoOption1 +VAR_INPUT +END_VAR + + @@ -24548,9 +34915,52 @@ END_IF {endregion} + + METHOD PRIVATE _M_MapIoOption2 +VAR_INST + // + TxCrc, RxCrc: UINT; + ChecksumMisCount: INT; + + // + HeartbeatOn: TON; + HeartbeatOff: TON; + HeartbeatPt: TIME:=T#1000MS; + + // + bufferIdx: INT; + + // + DeviceID: BYTE; + IODeviceID: BYTE:=2; + +END_VAR + + + + + PROGRAM _20_Io +VAR + // + IoInputs: ARRAY [0..31] OF BYTE; + IoOutputs: ARRAY [0..31] OF BYTE; + + // + rx_heartbeat: BOOL; + rx_en: BOOL; + + // + IoOption: INT:=0; + + // + FirstScan: BOOL:=TRUE; +END_VAR + + + c00805d0-cea9-44fc-8a0c-3c0acbcce705 @@ -24569,6 +34979,19 @@ END_IF + + + + FUNCTION F_RadToDeg : LREAL +VAR_INPUT + Radians: LREAL; +END_VAR +VAR +END_VAR + + + + @@ -24577,6 +35000,17 @@ END_IF + + + FUNCTION F_RadToDeg : LREAL +VAR_INPUT + Radians: LREAL; +END_VAR +VAR +END_VAR + + + 5fcdbd79-7ee6-4602-a394-dd4cc360d2d1 @@ -24592,6 +35026,28 @@ END_IF + + + + PROGRAM _60_PathPlanner +VAR + PlanPath: FB_CncPathPlanner; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -24602,6 +35058,28 @@ END_IF + + + + PROGRAM _60_PathPlanner +VAR + PlanPath: FB_CncPathPlanner; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -24654,6 +35132,28 @@ END_IF + + + + PROGRAM _60_PathPlanner +VAR + PlanPath: FB_CncPathPlanner; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + + @@ -24664,6 +35164,26 @@ PlanPath(VarList:= stVarList, DataOut=> ); + + + PROGRAM _60_PathPlanner +VAR + PlanPath: FB_CncPathPlanner; +END_VAR +VAR CONSTANT + wVarCount : WORD := 1; +END_VAR +VAR + lrR1 : LREAL:=30; + + astVar : ARRAY [0..wVarCount] OF SMC_SingleVar := + [(strVarName:='R1', pAdr := ADR(lrR1), eVarType := SMC_VarType.SMC_TYPE_LREAL)]; + + stVarList : SMC_VarList := (wNumberVars := wVarCount, psvVarlist := ADR(astVar)); +END_VAR + + + 25d35170-f0c8-4cbe-9a6a-5ff2fac6e186 @@ -24682,6 +35202,26 @@ PlanPath(VarList:= stVarList, DataOut=> ); + + + + (* Round LREAL to nearest INT (half away from zero via ±0.5 then truncate). + LREAL_TO_INT alone truncates toward zero (27.8->27, -27.8->-27), which + systematically under-drives |Hz| and biases crawl toward stop. + Positive: add 0.5 then LREAL_TO_INT. Negative: subtract 0.5 then LREAL_TO_INT + so both sides round to nearest (e.g. 27.8->28, -27.8->-28). + Used when converting LREAL step rate (Hz) to INT16 for the Teensy PTO. *) + +FUNCTION F_RoundToInt : INT +VAR_INPUT + x : LREAL; +END_VAR +VAR +END_VAR + + + + Round LREAL to nearest INT (half away from zero via ±0.5 then truncate). @@ -24702,6 +35242,24 @@ END_IF + + + (* Round LREAL to nearest INT (half away from zero via ±0.5 then truncate). + LREAL_TO_INT alone truncates toward zero (27.8->27, -27.8->-27), which + systematically under-drives |Hz| and biases crawl toward stop. + Positive: add 0.5 then LREAL_TO_INT. Negative: subtract 0.5 then LREAL_TO_INT + so both sides round to nearest (e.g. 27.8->28, -27.8->-28). + Used when converting LREAL step rate (Hz) to INT16 for the Teensy PTO. *) + +FUNCTION F_RoundToInt : INT +VAR_INPUT + x : LREAL; +END_VAR +VAR +END_VAR + + + 2f55f1a8-e8da-4116-8c0b-e7482fa81b53 @@ -24757,6 +35315,39 @@ END_IF + + + + FUNCTION_BLOCK FB_LicenseStatus IMPLEMENTS CmpEventMgr.ICmpEventCallback +VAR_OUTPUT + eState : CmpMgr.RUNTIME_LICENSE_STATE; + udiSecondsLeft : UDINT; + udiMinutesLeft : UDINT; + tRemaining : TIME; + sState : STRING(32); + sBanner : STRING(80); + xDemo : BOOL; + xLicensed : BOOL; + xShowBanner : BOOL; +END_VAR +VAR + _hEvent : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; + _hCallback : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; + _result : SysTypes.RTS_IEC_RESULT; + _xRegistered : BOOL; + _xTried : BOOL; + _xGotEvent : BOOL; + _udiSecondsAtEvent : UDINT; + _tEvent : TIME; + _tRetry : TIME; + _udiElapsed : UDINT; + _sMin : STRING(11); + _sSec : STRING(11); + _udiSec : UDINT; +END_VAR + + + @@ -24830,6 +35421,39 @@ END_IF + + + + FUNCTION_BLOCK FB_LicenseStatus IMPLEMENTS CmpEventMgr.ICmpEventCallback +VAR_OUTPUT + eState : CmpMgr.RUNTIME_LICENSE_STATE; + udiSecondsLeft : UDINT; + udiMinutesLeft : UDINT; + tRemaining : TIME; + sState : STRING(32); + sBanner : STRING(80); + xDemo : BOOL; + xLicensed : BOOL; + xShowBanner : BOOL; +END_VAR +VAR + _hEvent : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; + _hCallback : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; + _result : SysTypes.RTS_IEC_RESULT; + _xRegistered : BOOL; + _xTried : BOOL; + _xGotEvent : BOOL; + _udiSecondsAtEvent : UDINT; + _tEvent : TIME; + _tRetry : TIME; + _udiElapsed : UDINT; + _sMin : STRING(11); + _sSec : STRING(11); + _udiSec : UDINT; +END_VAR + + + @@ -24863,6 +35487,19 @@ M_BuildBanner(); + + + + METHOD EventCallback : SysTypes.RTS_IEC_RESULT +VAR_INPUT + pEventParam : POINTER TO CmpEventMgr.EventParam; +END_VAR +VAR + pLic : POINTER TO CmpMgr.EVTPARAM_CmpMgr_LicenseState; +END_VAR + + + @@ -24874,6 +35511,19 @@ M_BuildBanner(); + + + + METHOD EventCallback : SysTypes.RTS_IEC_RESULT +VAR_INPUT + pEventParam : POINTER TO CmpEventMgr.EventParam; +END_VAR +VAR + pLic : POINTER TO CmpMgr.EVTPARAM_CmpMgr_LicenseState; +END_VAR + + + @@ -24903,6 +35553,15 @@ END_IF udiSecondsLeft := _udiSecondsAtEvent; + + METHOD EventCallback : SysTypes.RTS_IEC_RESULT +VAR_INPUT + pEventParam : POINTER TO CmpEventMgr.EventParam; +END_VAR +VAR + pLic : POINTER TO CmpMgr.EVTPARAM_CmpMgr_LicenseState; +END_VAR + @@ -24923,6 +35582,17 @@ udiSecondsLeft := _udiSecondsAtEvent; + + + + METHOD FB_Init : BOOL +VAR_INPUT + bInitRetains : BOOL; + bInCopyCode : BOOL; +END_VAR + + + @@ -24933,6 +35603,13 @@ END_IF FB_Init := TRUE; + + METHOD FB_Init : BOOL +VAR_INPUT + bInitRetains : BOOL; + bInCopyCode : BOOL; +END_VAR + @@ -24948,6 +35625,16 @@ FB_Init := TRUE; + + + + METHOD FB_Exit : BOOL +VAR_INPUT + bInCopyCode : BOOL; +END_VAR + + + @@ -24958,6 +35645,12 @@ END_IF FB_Exit := TRUE; + + METHOD FB_Exit : BOOL +VAR_INPUT + bInCopyCode : BOOL; +END_VAR + @@ -24970,6 +35663,16 @@ FB_Exit := TRUE;