AS4 Initial Commit
This commit is contained in:
10
Logical/Axises/ACPPar/Package.pkg
Normal file
10
Logical/Axises/ACPPar/Package.pkg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="DataObject" Language="Apt">gaxwirea</Object>
|
||||
<Object Type="DataObject" Language="Apt">gaxbelta</Object>
|
||||
<Object Type="DataObject" Language="Apt">gaxlanea</Object>
|
||||
<Object Type="DataObject" Language="Apt">gaxbenda</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
7
Logical/Axises/ACPPar/gaxbelta/Apt.dob
Normal file
7
Logical/Axises/ACPPar/gaxbelta/Apt.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxbelta.apt</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
10
Logical/Axises/ACPPar/gaxbelta/gaxbelta.apt
Normal file
10
Logical/Axises/ACPPar/gaxbelta/gaxbelta.apt
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<AcoposParameterTable>
|
||||
<Root Name="Parameters">
|
||||
<Parameter Name="SCALE_ENCOD_INCR" ID="109" Value="1024" Description="Encoder1: Encoder scaling: increments per SCALE_ENCOD_MOTOR_REV motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_MOTREV" ID="64234" Value="1" Description="Stepper motor: Load scaling: Motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_UNITS" ID="64233" Value="1200" Unit="Units" Description="Stepper motor: Load scaling: Units per SM_SCALE_LOAD_MOTREV motor revolutions [1/10 mm]" />
|
||||
<Parameter Name="SM_SCALE_STEP" ID="64232" Value="51200" Description="Stepper motor: Step scaling: Steps per motor revolution" />
|
||||
</Root>
|
||||
</AcoposParameterTable>
|
||||
7
Logical/Axises/ACPPar/gaxbenda/Apt.dob
Normal file
7
Logical/Axises/ACPPar/gaxbenda/Apt.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxbenda.apt</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
10
Logical/Axises/ACPPar/gaxbenda/gaxbenda.apt
Normal file
10
Logical/Axises/ACPPar/gaxbenda/gaxbenda.apt
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<AcoposParameterTable>
|
||||
<Root Name="Parameters">
|
||||
<Parameter Name="SCALE_ENCOD_INCR" ID="109" Value="1024" Description="Encoder1: Encoder scaling: increments per SCALE_ENCOD_MOTOR_REV motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_MOTREV" ID="64234" Value="1" Description="Stepper motor: Load scaling: Motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_UNITS" ID="64233" Value="180" Unit="Units" Description="Stepper motor: Load scaling: Units per SM_SCALE_LOAD_MOTREV motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_STEP" ID="64232" Value="51200" Description="Stepper motor: Step scaling: Steps per motor revolution" />
|
||||
</Root>
|
||||
</AcoposParameterTable>
|
||||
7
Logical/Axises/ACPPar/gaxlanea/Apt.dob
Normal file
7
Logical/Axises/ACPPar/gaxlanea/Apt.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxlanea.apt</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
10
Logical/Axises/ACPPar/gaxlanea/gaxlanea.apt
Normal file
10
Logical/Axises/ACPPar/gaxlanea/gaxlanea.apt
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<AcoposParameterTable>
|
||||
<Root Name="Parameters">
|
||||
<Parameter Name="SCALE_ENCOD_INCR" ID="109" Value="1024" Description="Encoder1: Encoder scaling: increments per SCALE_ENCOD_MOTOR_REV motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_MOTREV" ID="64234" Value="1" Description="Stepper motor: Load scaling: Motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_UNITS" ID="64233" Value="40" Unit="Units" Description="Stepper motor: Load scaling: Units per SM_SCALE_LOAD_MOTREV motor revolutions [1/100mm]" />
|
||||
<Parameter Name="SM_SCALE_STEP" ID="64232" Value="51200" Description="Stepper motor: Step scaling: Steps per motor revolution" />
|
||||
</Root>
|
||||
</AcoposParameterTable>
|
||||
7
Logical/Axises/ACPPar/gaxwirea/Apt.dob
Normal file
7
Logical/Axises/ACPPar/gaxwirea/Apt.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxwirea.apt</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
10
Logical/Axises/ACPPar/gaxwirea/gaxwirea.apt
Normal file
10
Logical/Axises/ACPPar/gaxwirea/gaxwirea.apt
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<AcoposParameterTable>
|
||||
<Root Name="Parameters">
|
||||
<Parameter Name="SCALE_ENCOD_INCR" ID="109" Value="51200" Description="Encoder1: Encoder scaling: increments per SCALE_ENCOD_MOTOR_REV motor revolutions [µSteps]" />
|
||||
<Parameter Name="SM_SCALE_LOAD_MOTREV" ID="64234" Value="1000" Description="Stepper motor: Load scaling: Motor revolutions" />
|
||||
<Parameter Name="SM_SCALE_LOAD_UNITS" ID="64233" Value="314159" Unit="Units" Description="Stepper motor: Load scaling: Units per SM_SCALE_LOAD_MOTREV motor revolutions [10mm]" />
|
||||
<Parameter Name="SM_SCALE_STEP" ID="64232" Value="51200" Description="Stepper motor: Step scaling: Steps per motor revolution" />
|
||||
</Root>
|
||||
</AcoposParameterTable>
|
||||
9
Logical/Axises/Axis1/IEC.prg
Normal file
9
Logical/Axises/Axis1/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axCyclic.ab</File>
|
||||
<File>axInit.ab</File>
|
||||
<File Private="true">ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
84
Logical/Axises/Axis1/ax.var
Normal file
84
Logical/Axises/Axis1/ax.var
Normal file
@@ -0,0 +1,84 @@
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//MC FunctionBlocks*)
|
||||
VAR
|
||||
Axis_MC_ACP_ENCOD_REF : MC_ACP_ENCOD_REF := (0);
|
||||
Axis_MC_ACP_ENCOD_PARAM_REF : MC_ACP_ENCOD_PARAM_REF := (0);
|
||||
Axis_MC_CamIn : MC_CamIn := (0); (*Start CAM coupling with master*)
|
||||
Axis_MC_CamOut : MC_CamOut := (0); (*Stop CAM coupling *)
|
||||
Axis_MC_CamTableSelect : MC_CamTableSelect := (0); (*Select CAM Table*)
|
||||
Axis_MC_GearIn : MC_GearIn := (0); (*Start electronic Gear coupling with master*)
|
||||
Axis_MC_GearInPos : MC_GearInPos := (0); (*Start electronic Gear coupling (Position mode) with master*)
|
||||
Axis_MC_GearOut : MC_GearOut := (0); (*Sop electronic Gear coupling*)
|
||||
Axis_MC_BR_HomeAcpEncoder : MC_BR_HomeAcpEncoder := (0);
|
||||
Axis_MC_BR_InitAxisPar : MC_BR_InitAxisPar := (0);
|
||||
Axis_MC_BR_ReadDriveStatus : MC_BR_ReadDriveStatus := (0);
|
||||
Axis_MC_BR_Simulation : MC_BR_Simulation := (0);
|
||||
Axis_MC_BR_TorqueControl : MC_BR_TorqueControl := (0); (*Continuous Movement with Cyclic Torque*)
|
||||
Axis_MC_BR_VelocityControl : MC_BR_VelocityControl := (0); (*Cyclic Velocity / Torque*)
|
||||
Axis_MC_Home : MC_Home := (0); (*Homing*)
|
||||
Axis_MC_BR_InitModPos : MC_BR_InitModPos := (0); (*Modulo Position*)
|
||||
Axis_MC_MoveAbsolute : MC_MoveAbsolute := (0); (*Absolute Movement*)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop : MC_BR_MoveAbsoluteTriggStop := (0); (*Absolute Movement with Trigger Stop*)
|
||||
Axis_MC_MoveAdditive : MC_MoveAdditive := (0); (*Additive Movement*)
|
||||
Axis_MC_BR_MoveAdditiveTriggStop : MC_BR_MoveAdditiveTriggStop := (0); (*Additive Movement with Trigger Stop*)
|
||||
Axis_MC_MoveVelocity : MC_MoveVelocity := (0); (*Continuous Movement with Cyclic Velocity*)
|
||||
AXis_MC_BR_MoveVelocityTriggStop : MC_BR_MoveVelocityTriggStop := (0); (*Continuous Movement with Cyclic Velocity and Trigger Stop*)
|
||||
Axis_MC_Power : MC_Power := (0);
|
||||
Axis_MC_ReadActualPosition : MC_ReadActualPosition := (0);
|
||||
Axis_MC_ReadActualTorque : MC_ReadActualTorque := (0);
|
||||
Axis_MC_ReadActualVelocity : MC_ReadActualVelocity := (0);
|
||||
Axis_MC_ReadAxisError : MC_ReadAxisError := (0);
|
||||
Axis_MC_ReadStatus : MC_ReadStatus := (0);
|
||||
Axis_MC_Reset : MC_Reset := (0);
|
||||
Axis_MC_SetOverride : MC_SetOverride := (0);
|
||||
Axis_MC_Stop : MC_Stop := (0);
|
||||
END_VAR
|
||||
(*//Further Parameter - Cyclic*)
|
||||
VAR
|
||||
Axis_MC_BR_CyclicRead : MC_BR_CyclicRead := (0); (*Read Further Axis Parameter*)
|
||||
Axis_MC_BR_CyclicWrite : MC_BR_CyclicWrite := (0);
|
||||
END_VAR
|
||||
(*//Further Parameter*)
|
||||
VAR
|
||||
Axis_MC_BR_ReadParID : MC_BR_ReadParID := (0); (*Read Furhter Axis Parameter*)
|
||||
END_VAR
|
||||
(*//ParemeterTrace*)
|
||||
VAR
|
||||
Axis_MC_BR_WriteParID : MC_BR_WriteParID := (0); (*USER_R4_VAR1 used for Trace*)
|
||||
END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Dynamic Vars*)
|
||||
VAR
|
||||
lAxis : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisActPos : REFERENCE TO REAL;
|
||||
lAxisMaster : REFERENCE TO typAxis;
|
||||
lbSimulation : REFERENCE TO BOOL;
|
||||
rUser_Var1 : REFERENCE TO REAL; (*Value for Cyclic transmission to Acopos*)
|
||||
END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Constants*)
|
||||
VAR CONSTANT
|
||||
uiTORQUE_NOT_REACHED : UINT := 0;
|
||||
END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Retain*)
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Local Vars*)
|
||||
VAR
|
||||
bAxisInit : BOOL := FALSE; (*Devel - Init Axis*)
|
||||
bHomeAbs : BOOL := FALSE; (*Devel - Home Absolue Encoder*)
|
||||
bTest : BOOL := FALSE;
|
||||
usCamTableID : USINT;
|
||||
uiRestartDelay : UINT := 2500; (*Wait Cycles after Cold restart*)
|
||||
uiAbsStatus : UINT;
|
||||
uiAxisUserVar1 : UINT := 0;
|
||||
uiMCReadError : UINT := 0; (*Error in MC_Read_Paramaeter*)
|
||||
uiMCWriteError : UINT := 0; (*Error in MC_Write_Paramaeter*)
|
||||
udAxisMasterObj : UDINT;
|
||||
udAxisSlaveObj : UDINT;
|
||||
udAxisObj : UDINT;
|
||||
udEnableTorqueLimit : UDINT := 0;
|
||||
rOldVelocity : REAL := 0.0;
|
||||
rOldTorquelimit : REAL := 0.0; (*//Used to Trigger Sending Value to Axis*)
|
||||
rUser_VarTemp : REAL := 0.0;
|
||||
END_VAR
|
||||
870
Logical/Axises/Axis1/axCyclic.ab
Normal file
870
Logical/Axises/Axis1/axCyclic.ab
Normal file
@@ -0,0 +1,870 @@
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
IF (uiRestartDelay > 0) THEN
|
||||
uiRestartDelay = uiRestartDelay - 1
|
||||
ENDIF
|
||||
|
||||
|
||||
;Devel Axis Initialisation
|
||||
Axis_MC_BR_InitAxisPar.Axis = udAxisObj
|
||||
Axis_MC_BR_InitAxisPar.Execute = bAxisInit
|
||||
Axis_MC_BR_InitAxisPar FUB MC_BR_InitAxisPar ()
|
||||
IF (Axis_MC_BR_InitAxisPar.Done = TRUE) THEN
|
||||
bAxisInit = FALSE
|
||||
ENDIF
|
||||
|
||||
;Devel Absolute Encoder Homing
|
||||
Axis_MC_ACP_ENCOD_REF.Axis = udAxisObj
|
||||
Axis_MC_ACP_ENCOD_REF.Slot = 3
|
||||
|
||||
Axis_MC_ACP_ENCOD_PARAM_REF.HomingMode = mcHOME_ABSOLUTE
|
||||
Axis_MC_ACP_ENCOD_PARAM_REF.Offset = 0
|
||||
Axis_MC_ACP_ENCOD_PARAM_REF.ReadOffset = FALSE
|
||||
|
||||
Axis_MC_BR_HomeAcpEncoder.Execute = bHomeAbs
|
||||
Axis_MC_BR_HomeAcpEncoder.AcpEncoder = Axis_MC_ACP_ENCOD_REF
|
||||
Axis_MC_BR_HomeAcpEncoder.HomingParameters = Axis_MC_ACP_ENCOD_PARAM_REF
|
||||
Axis_MC_BR_HomeAcpEncoder FUB MC_BR_HomeAcpEncoder ()
|
||||
|
||||
IF (Axis_MC_BR_HomeAcpEncoder.Done = TRUE) THEN
|
||||
bHomeAbs = FALSE
|
||||
ENDIF
|
||||
|
||||
|
||||
;get axis information
|
||||
Axis_MC_ReadAxisError.DataAddress = ADR (lAxis.Error.Text)
|
||||
Axis_MC_ReadAxisError.DataLength = SIZEOF (lAxis.Error.Text)
|
||||
Axis_MC_ReadAxisError FUB MC_ReadAxisError ()
|
||||
|
||||
Axis_MC_ReadStatus FUB MC_ReadStatus ()
|
||||
IF (Axis_MC_ReadStatus.Valid = TRUE) THEN
|
||||
lAxis.Status.bDisabled = Axis_MC_ReadStatus.Disabled
|
||||
lAxis.Status.bStandstill = Axis_MC_ReadStatus.StandStill
|
||||
lAxis.Status.bStopping = Axis_MC_ReadStatus.Stopping
|
||||
lAxis.Status.bHoming = Axis_MC_ReadStatus.Homing
|
||||
lAxis.Status.bMotionDiscrete = Axis_MC_ReadStatus.DiscreteMotion
|
||||
lAxis.Status.bMotionContinous = Axis_MC_ReadStatus.ContinuousMotion
|
||||
lAxis.Status.bMotionSynchronized = Axis_MC_ReadStatus.SynchronizedMotion
|
||||
lAxis.Status.bErrorstop = Axis_MC_ReadStatus.Errorstop
|
||||
ENDIF
|
||||
|
||||
|
||||
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus = ADR (lAxis.DriveStatus)
|
||||
Axis_MC_BR_ReadDriveStatus FUB MC_BR_ReadDriveStatus ()
|
||||
|
||||
;Position
|
||||
Axis_MC_ReadActualPosition FUB MC_ReadActualPosition ()
|
||||
IF (Axis_MC_ReadActualPosition.Valid = TRUE) THEN
|
||||
lAxis.rActPosition = Axis_MC_ReadActualPosition.Position
|
||||
lAxisActPos = lAxis.rActPosition
|
||||
ENDIF
|
||||
|
||||
;Velocity
|
||||
Axis_MC_ReadActualVelocity FUB MC_ReadActualVelocity ()
|
||||
IF (Axis_MC_ReadActualVelocity.Valid = TRUE) THEN
|
||||
lAxis.rActVelocity = Axis_MC_ReadActualVelocity.Velocity
|
||||
ENDIF
|
||||
|
||||
;Torque
|
||||
Axis_MC_ReadActualTorque FUB MC_ReadActualTorque ()
|
||||
IF (Axis_MC_ReadActualTorque.Valid = TRUE) THEN
|
||||
lAxis.rActTorque = Axis_MC_ReadActualTorque.Torque
|
||||
ENDIF
|
||||
|
||||
|
||||
;STATE Machine Axis
|
||||
SELECT lAxis.uiStep
|
||||
;Check for general Axis errors
|
||||
WHEN ((Axis_MC_ReadAxisError.AxisErrorID <> 0) AND (Axis_MC_ReadAxisError.Valid = TRUE))
|
||||
NEXT AxSTATE_ERROR_AXIS
|
||||
;power should be off
|
||||
WHEN NOT lAxis.bPower AND((Axis_MC_ReadStatus.Errorstop = 1) AND (Axis_MC_ReadStatus.Valid = TRUE))
|
||||
NEXT AxSTATE_ERROR_RESET
|
||||
|
||||
WHEN NOT lAxis.bPower AND NOT (lbSimulation XOR lAxis.DriveStatus.bSimulation)
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
;==============================================
|
||||
;WAIT
|
||||
STATE AxSTATE_WAIT
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_WAIT")
|
||||
|
||||
WHEN (lAxis.Status.bDisabled = 1) AND (lbSimulation = TRUE) AND (lAxis.DriveStatus.bSimulation = 0)
|
||||
NEXT AxSTATE_SIMULATION_ON
|
||||
|
||||
WHEN (lAxis.Status.bDisabled = 1) AND (lbSimulation = FALSE) AND (lAxis.DriveStatus.bSimulation = 1)
|
||||
NEXT AxSTATE_SIMULATION_OFF
|
||||
|
||||
WHEN (lAxis.bPower = 1)
|
||||
NEXT AxSTATE_POWER_ON
|
||||
|
||||
;reset power
|
||||
Axis_MC_Power.Enable = 0
|
||||
|
||||
;reset all fb execute inputs we use
|
||||
Axis_MC_Home.Execute = 0
|
||||
Axis_MC_BR_Simulation.Execute = 0
|
||||
Axis_MC_Stop.Execute = 0
|
||||
Axis_MC_MoveAbsolute.Execute = 0
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Execute = 0
|
||||
Axis_MC_MoveAdditive.Execute = 0
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Execute = 0
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
Axis_MC_BR_VelocityControl.Enable = 0
|
||||
Axis_MC_BR_TorqueControl.Enable = 0
|
||||
Axis_MC_CamTableSelect.Execute = 0
|
||||
Axis_MC_CamIn.Execute = 0
|
||||
Axis_MC_CamOut.Execute = 0
|
||||
Axis_MC_GearIn.Execute = 0
|
||||
Axis_MC_GearInPos.Execute = 0
|
||||
Axis_MC_GearOut.Execute = 0
|
||||
Axis_MC_ReadAxisError.Acknowledge = 0
|
||||
Axis_MC_Reset.Execute = 0
|
||||
|
||||
;reset user commands
|
||||
lAxis.bStop = 0
|
||||
lAxis.bHome = 0
|
||||
lAxis.Move.bJogPos = 0
|
||||
lAxis.Move.bJogNeg = 0
|
||||
lAxis.Move.bVelocity = 0
|
||||
lAxis.Move.bVelocityControl = 0
|
||||
lAxis.Move.bAbsolute = 0
|
||||
lAxis.Move.bAdditive = 0
|
||||
lAxis.Move.bTorqueControl = 0
|
||||
lAxis.Move.bStartCAMSlave = 0
|
||||
lAxis.Move.bStopCAMSlave = 0
|
||||
lAxis.Move.bStartGearSlave = 0
|
||||
lAxis.Move.bStartGearPosSlave = 0
|
||||
lAxis.Move.bStopGearSlave = 0
|
||||
|
||||
lAxis.Error.uiID = 0
|
||||
|
||||
;==============================================
|
||||
;Simulation On
|
||||
STATE AxSTATE_SIMULATION_ON
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_SIMULATION_ON")
|
||||
|
||||
Axis_MC_BR_Simulation.Execute = 1
|
||||
Axis_MC_BR_Simulation.SimulationCommand = mcMOTOR
|
||||
|
||||
WHEN (Axis_MC_BR_Simulation.Done = 1)
|
||||
Axis_MC_BR_Simulation.Execute = 0
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
WHEN (Axis_MC_BR_Simulation.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_BR_Simulation.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Simulation Off
|
||||
STATE AxSTATE_SIMULATION_OFF
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_SIMULATION_OFF")
|
||||
|
||||
Axis_MC_BR_Simulation.Execute = 1
|
||||
Axis_MC_BR_Simulation.SimulationCommand = mcSIMULATION_OFF
|
||||
|
||||
WHEN (Axis_MC_BR_Simulation.Done = 1)
|
||||
Axis_MC_BR_Simulation.Execute = 0
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
WHEN (Axis_MC_BR_Simulation.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_BR_Simulation.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Power On
|
||||
STATE AxSTATE_POWER_ON
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_POWER_ON")
|
||||
|
||||
Axis_MC_Power.Enable = 1
|
||||
|
||||
WHEN (Axis_MC_Power.Status = 1)
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_Power.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_Power.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Ready, wait for commands
|
||||
STATE AxSTATE_READY
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_READY")
|
||||
|
||||
WHEN lAxis.bHome
|
||||
lAxis.bHome = 0
|
||||
NEXT AxSTATE_HOME
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN lAxis.Move.bJogPos
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_JOG_POSITIVE
|
||||
|
||||
WHEN lAxis.Move.bJogNeg
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_JOG_NEGATIVE
|
||||
|
||||
WHEN lAxis.Move.bAbsolute AND NOT lAxis.Para.bTriggStop
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_MOVE_ABSOLUTE
|
||||
|
||||
WHEN lAxis.Move.bAbsolute AND lAxis.Para.bTriggStop
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_MOVE_ABSOLUTE_TRIGGSTOP
|
||||
|
||||
WHEN lAxis.Move.bAdditive AND NOT lAxis.Para.bTriggStop
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_MOVE_ADDITIVE
|
||||
|
||||
WHEN lAxis.Move.bAdditive AND lAxis.Para.bTriggStop
|
||||
//Movement will stopped when command is resetted
|
||||
NEXT AxSTATE_MOVE_ADDITIVE_TRIGGSTOP
|
||||
|
||||
WHEN lAxis.Move.bVelocity
|
||||
lAxis.Move.bVelocity = 0
|
||||
lAxis.Status.bTorqueLimitReached = FALSE
|
||||
NEXT AxSTATE_MOVE_VELOCITY
|
||||
|
||||
WHEN lAxis.Move.bVelocityControl
|
||||
lAxis.Move.bVelocityControl = 0
|
||||
lAxis.Status.bTorqueLimitReached = FALSE
|
||||
NEXT AxSTATE_MOVE_VELOCITY_CTRL
|
||||
|
||||
WHEN lAxis.Move.bTorqueControl
|
||||
lAxis.Move.bTorqueControl = 0
|
||||
lAxis.Status.bTorqueLimitReached = FALSE
|
||||
NEXT AxSTATE_MOVE_TORQUE_CTRL
|
||||
|
||||
WHEN lAxis.Move.bStopCAMSlave
|
||||
lAxis.Move.bStopCAMSlave = 0
|
||||
NEXT AxSTATE_MOVE_CAM_STOP
|
||||
|
||||
WHEN lAxis.Move.bStartCAMSlave
|
||||
lAxis.Move.bStopCAMSlave = 0
|
||||
NEXT AxSTATE_MOVE_CAM_SELECT
|
||||
|
||||
WHEN lAxis.Move.bStartGearSlave
|
||||
lAxis.Move.bStartGearSlave = 0
|
||||
NEXT AxSTATE_MOVE_GEAR_START
|
||||
|
||||
WHEN lAxis.Move.bStartGearPosSlave
|
||||
lAxis.Move.bStartGearSlave = 0
|
||||
NEXT AxSTATE_MOVE_GEARPOS_START
|
||||
|
||||
WHEN lAxis.Move.bStopGearSlave
|
||||
lAxis.Move.bStopGearSlave = 0
|
||||
NEXT AxSTATE_MOVE_GEAR_STOP
|
||||
|
||||
;==============================================
|
||||
;Drive Home
|
||||
STATE AxSTATE_HOME
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_HOME")
|
||||
|
||||
Axis_MC_Home.Position = lAxis.Para.rHomePosition
|
||||
Axis_MC_Home.HomingMode = mcHOME_DEFAULT ;use Axis-Init Value
|
||||
Axis_MC_Home.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_Home.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN Axis_MC_Home.Done AND (lAxis.Para.udAxisModPosFactor > 0) AND (lAxis.Para.udAxisModPosPeriod > 0)
|
||||
Axis_MC_Home.Execute = 0
|
||||
NEXT AxSTATE_INIT_MOD_POS
|
||||
|
||||
WHEN Axis_MC_Home.Done
|
||||
Axis_MC_Home.Execute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_Home.ErrorID <> 0)
|
||||
Axis_MC_Home.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_Home.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Initialize Modulo Position
|
||||
STATE AxSTATE_INIT_MOD_POS
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_INIT_MOD_POS")
|
||||
|
||||
Axis_MC_BR_InitModPos.Factor = lAxis.Para.udAxisModPosFactor
|
||||
Axis_MC_BR_InitModPos.Period = lAxis.Para.udAxisModPosPeriod
|
||||
Axis_MC_BR_InitModPos.Execute = 1
|
||||
|
||||
WHEN Axis_MC_BR_InitModPos.Done
|
||||
Axis_MC_BR_InitModPos.Execute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_BR_InitModPos.ErrorID <> 0)
|
||||
Axis_MC_BR_InitModPos.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_BR_InitModPos.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Stop Movement
|
||||
STATE AxSTATE_STOP
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_STOP")
|
||||
|
||||
Axis_MC_Stop.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_Stop.Execute = 1
|
||||
|
||||
WHEN Axis_MC_Stop.Done OR lAxis.Status.bStandstill
|
||||
Axis_MC_Stop.Execute = 0
|
||||
lAxis.bStop = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_Stop.ErrorID <> 0)
|
||||
Axis_MC_Stop.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_Stop.ErrorID
|
||||
lAxis.bStop = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Jog Positive
|
||||
STATE AxSTATE_JOG_POSITIVE
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_JOG_POSITIVE")
|
||||
|
||||
Axis_MC_MoveVelocity.Velocity = lAxis.Para.rJogVelocity
|
||||
Axis_MC_MoveVelocity.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_MoveVelocity.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_MoveVelocity.Direction = mcPOSITIVE_DIR
|
||||
Axis_MC_MoveVelocity.Execute = 1
|
||||
|
||||
WHEN NOT lAxis.Move.bJogPos OR lAxis.bStop
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN (Axis_MC_MoveVelocity.ErrorID <> 0)
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveVelocity.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Jog Negative
|
||||
STATE AxSTATE_JOG_NEGATIVE
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_JOG_NEGATIVE")
|
||||
|
||||
Axis_MC_MoveVelocity.Velocity = lAxis.Para.rJogVelocity
|
||||
Axis_MC_MoveVelocity.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_MoveVelocity.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_MoveVelocity.Direction = mcNEGATIVE_DIR
|
||||
Axis_MC_MoveVelocity.Execute = 1
|
||||
|
||||
WHEN NOT lAxis.Move.bJogNeg OR lAxis.bStop
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN (Axis_MC_MoveVelocity.ErrorID <> 0)
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveVelocity.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Absolute
|
||||
STATE AxSTATE_MOVE_ABSOLUTE
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_ABSOLUTE")
|
||||
|
||||
Axis_MC_MoveAbsolute.Position = lAxis.Para.rPosition
|
||||
Axis_MC_MoveAbsolute.Velocity = lAxis.Para.rVelocity
|
||||
Axis_MC_MoveAbsolute.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_MoveAbsolute.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_MoveAbsolute.Direction = lAxis.Para.usDirection //??
|
||||
Axis_MC_MoveAbsolute.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop OR NOT lAxis.Move.bAbsolute
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_MoveAbsolute.Execute = 0
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN (Axis_MC_MoveAbsolute.Done = 1)
|
||||
Axis_MC_MoveAbsolute.Execute = 0
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_MoveAbsolute.ErrorID <> 0)
|
||||
Axis_MC_MoveAbsolute.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveAbsolute.ErrorID
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Absolute
|
||||
STATE AxSTATE_MOVE_ABSOLUTE_TRIGGSTOP
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_ABSOLUTE_TRIGGSTOP")
|
||||
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Position = lAxis.Para.rPosition
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Velocity = lAxis.Para.rVelocity
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Direction = lAxis.Para.usDirection // ?
|
||||
//Triggerinput is configured in Init Up
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerDistance = lAxis.Para.rTriggDistance
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.ForceTriggerDistance = mcOFF // --> force Trigger Dist even if Dest Pos is Exeeded
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop OR NOT lAxis.Move.bAbsolute
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Execute = 0
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN Axis_MC_BR_MoveAbsoluteTriggStop.Done
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Execute = 0
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_BR_MoveAbsoluteTriggStop.ErrorID <> 0)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveAbsolute.ErrorID
|
||||
lAxis.Move.bAbsolute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Additive
|
||||
STATE AxSTATE_MOVE_ADDITIVE
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_ADDITIVE")
|
||||
|
||||
Axis_MC_MoveAdditive.Distance = lAxis.Para.rDistance
|
||||
Axis_MC_MoveAdditive.Velocity = lAxis.Para.rVelocity
|
||||
Axis_MC_MoveAdditive.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_MoveAdditive.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_MoveAdditive.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop OR NOT lAxis.Move.bAdditive
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_MoveAdditive.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN Axis_MC_MoveAdditive.Done
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_MoveAdditive.Execute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_MoveAdditive.ErrorID <> 0)
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_MoveAdditive.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveAdditive.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Additive
|
||||
STATE AxSTATE_MOVE_ADDITIVE_TRIGGSTOP
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_ADDITIVE_TRIGGSTOP")
|
||||
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Distance = lAxis.Para.rDistance
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Velocity = lAxis.Para.rVelocity
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Deceleration = lAxis.Para.rDeceleration
|
||||
//Triggerinput is configured in Init Up
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerDistance = lAxis.Para.rTriggDistance
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.ForceTriggerDistance = mcOFF // --> force Trigger Dist even if Dest Pos is Exeeded
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop OR NOT lAxis.Move.bAdditive
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_MoveAdditive.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN Axis_MC_BR_MoveAdditiveTriggStop.Done
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Execute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
WHEN (Axis_MC_BR_MoveAdditiveTriggStop.ErrorID <> 0)
|
||||
lAxis.Move.bAdditive = 0
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_BR_MoveAdditiveTriggStop.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Velocity
|
||||
STATE AxSTATE_MOVE_VELOCITY
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_VELOCITY")
|
||||
|
||||
Axis_MC_MoveVelocity.Velocity = lAxis.Para.rVelocity
|
||||
Axis_MC_MoveVelocity.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_MoveVelocity.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_MoveVelocity.Direction = lAxis.Para.usDirection
|
||||
Axis_MC_MoveVelocity.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN (Axis_MC_MoveVelocity.ErrorID <> 0)
|
||||
Axis_MC_MoveVelocity.Execute = 0
|
||||
lAxis.Error.uiID = Axis_MC_MoveVelocity.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move Velocity Control (Only POWERLINK)
|
||||
;FixMe just prepared
|
||||
STATE AxSTATE_MOVE_VELOCITY_CTRL
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_VELOCITY_CTRL")
|
||||
|
||||
Axis_MC_BR_VelocityControl.CyclicVelocityCorrection = 0
|
||||
Axis_MC_BR_VelocityControl.CyclicVelocity = lAxis.Para.rVelocity
|
||||
Axis_MC_BR_VelocityControl.CyclicTorque = lAxis.Para.rTorqueLimit
|
||||
Axis_MC_BR_VelocityControl.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_BR_VelocityControl.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_BR_VelocityControl.TorqueMode = mcLIMIT
|
||||
Axis_MC_BR_VelocityControl.Enable = 1
|
||||
|
||||
;==============================================
|
||||
;Move Torque Control
|
||||
STATE AxSTATE_MOVE_TORQUE_CTRL
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_TORQUE_CTRL")
|
||||
|
||||
Axis_MC_BR_TorqueControl.StartSignal = NOT lAxis.bStop
|
||||
Axis_MC_BR_TorqueControl.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_BR_TorqueControl.PosMaxVelocity = lAxis.Para.rVelocity
|
||||
Axis_MC_BR_TorqueControl.NegMaxVelocity = -lAxis.Para.rVelocity
|
||||
Axis_MC_BR_TorqueControl.Mode = mcCHECK_HOMING_OFF
|
||||
;mcV_LIMIT_OFF ;(No Speed Limit)
|
||||
;mcV_LIMIT_CALC ;(No Speed Overrrun)
|
||||
;mcTIME_LIMIT ;(Enable Timelimit)
|
||||
Axis_MC_BR_TorqueControl.TimeLimit = 0
|
||||
Axis_MC_BR_TorqueControl.StartParID = 0 ;Not Used by now
|
||||
Axis_MC_BR_TorqueControl.TorqueRamp = 0 ;Ramp Disabled
|
||||
Axis_MC_BR_TorqueControl.Torque = lAxis.Para.rTorqueLimit
|
||||
;Axis_MC_BR_TorqueControl.TorqueParID = 0 ;Alternativ Torque Source
|
||||
Axis_MC_BR_TorqueControl.Enable = 1
|
||||
|
||||
;Trigger Parameter rewrite
|
||||
Axis_MC_BR_TorqueControl.InitData = (lAxis.Para.rVelocity <> rOldVelocity) OR \
|
||||
(lAxis.Para.rTorqueLimit <> rOldTorquelimit)
|
||||
rOldVelocity = lAxis.Para.rVelocity
|
||||
rOldTorquelimit = lAxis.Para.rTorqueLimit
|
||||
|
||||
lAxis.Status.bTorqueLimitReached = Axis_MC_BR_TorqueControl.InTorque AND \
|
||||
NOT Axis_MC_BR_TorqueControl.AxisLimitActive
|
||||
|
||||
WHEN lAxis.bStop
|
||||
Axis_MC_BR_TorqueControl.Enable = 0
|
||||
lAxis.Status.bTorqueLimitReached = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN (Axis_MC_BR_TorqueControl.ErrorID <> 0)
|
||||
Axis_MC_BR_TorqueControl.Enable = 0
|
||||
lAxis.Status.bTorqueLimitReached = 0
|
||||
lAxis.Error.uiID = Axis_MC_BR_TorqueControl.ErrorID
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move CAM TABLE SELECT
|
||||
STATE AxSTATE_MOVE_CAM_SELECT
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_CAM_SELECT")
|
||||
|
||||
Axis_MC_CamTableSelect.CamTable = lAxis.Para.strCamTable
|
||||
Axis_MC_CamTableSelect.Periodic = mcNON_PERIODIC
|
||||
;mcPEIODIC
|
||||
Axis_MC_CamTableSelect.Execute = 1
|
||||
;wait for select done
|
||||
WHEN Axis_MC_CamTableSelect.Done
|
||||
usCamTableID = Axis_MC_CamTableSelect.CamTableID
|
||||
Axis_MC_CamTableSelect.Execute = 0
|
||||
NEXT AxSTATE_MOVE_CAM_START
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_CamTableSelect.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_CamTableSelect.ErrorID
|
||||
Axis_MC_CamTableSelect.Execute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move CAM START
|
||||
STATE AxSTATE_MOVE_CAM_START
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_CAM_START")
|
||||
|
||||
Axis_MC_CamIn.MasterOffset = 0.0
|
||||
Axis_MC_CamIn.SlaveOffset = 0.0
|
||||
Axis_MC_CamIn.MasterScaling = 1000.0
|
||||
Axis_MC_CamIn.SlaveScaling = 1000.0
|
||||
Axis_MC_CamIn.StartMode = mcRELATIVE
|
||||
;mcABSOLUTE
|
||||
;mcDIRECT
|
||||
Axis_MC_CamIn.CamTableID = usCamTableID
|
||||
Axis_MC_CamIn.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_CamIn.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN lAxis.Move.bStopCAMSlave
|
||||
lAxis.Move.bStopCAMSlave = 0
|
||||
Axis_MC_CamIn.Execute = 0
|
||||
NEXT AxSTATE_MOVE_CAM_STOP
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_CamIn.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_CamIn.ErrorID
|
||||
Axis_MC_CamIn.Execute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move CAM STOP
|
||||
STATE AxSTATE_MOVE_CAM_STOP
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_CAM_STOP")
|
||||
|
||||
Axis_MC_CamOut.Execute = 1
|
||||
|
||||
;check if coupling is stopped
|
||||
WHEN Axis_MC_CamOut.Done
|
||||
Axis_MC_CamOut.Execute = 0
|
||||
NEXT AxSTATE_READY
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_CamOut.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_CamOut.ErrorID
|
||||
Axis_MC_CamOut.Execute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move GEAR START
|
||||
STATE AxSTATE_MOVE_GEAR_START
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_GEAR_START")
|
||||
|
||||
Axis_MC_GearIn.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_GearIn.Deceleration = lAxis.Para.rDeceleration
|
||||
Axis_MC_GearIn.RatioNumerator = lAxis.Para.iGearRatioNumerator
|
||||
Axis_MC_GearIn.RatioDenominator = lAxis.Para.uiGearRatioDenominator
|
||||
Axis_MC_GearIn.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_GearIn.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN lAxis.Move.bStopGearSlave
|
||||
lAxis.Move.bStopGearSlave = 0
|
||||
Axis_MC_GearIn.Execute = 0
|
||||
NEXT AxSTATE_MOVE_GEAR_STOP
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_GearIn.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_GearIn.ErrorID
|
||||
Axis_MC_GearIn.Execute = 0
|
||||
next AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move GEAR POS START
|
||||
STATE AxSTATE_MOVE_GEARPOS_START
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_GEARPOS_START")
|
||||
Axis_MC_GearInPos.Acceleration = lAxis.Para.rAcceleration
|
||||
Axis_MC_GearInPos.RatioNumerator = lAxis.Para.iGearRatioNumerator
|
||||
Axis_MC_GearInPos.RatioDenominator = lAxis.Para.uiGearRatioDenominator
|
||||
Axis_MC_GearInPos.MasterSyncPosition = 0
|
||||
Axis_MC_GearInPos.SlaveSyncPosition = 0
|
||||
Axis_MC_GearInPos.SyncMode = mcSHORTEST_WAY
|
||||
Axis_MC_GearInPos.Execute = 1
|
||||
|
||||
WHEN lAxis.bStop
|
||||
;lAxis.bStop = 0
|
||||
Axis_MC_GearInPos.Execute = 0
|
||||
NEXT AxSTATE_STOP
|
||||
|
||||
WHEN lAxis.Move.bStopGearSlave
|
||||
lAxis.Move.bStopGearSlave = 0
|
||||
Axis_MC_GearInPos.Execute = 0
|
||||
NEXT AxSTATE_MOVE_GEAR_STOP
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_GearInPos.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_GearInPos.ErrorID
|
||||
Axis_MC_GearInPos.Execute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Move CAM STOP
|
||||
STATE AxSTATE_MOVE_GEAR_STOP
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_MOVE_GEAR_STOP")
|
||||
|
||||
Axis_MC_GearOut.Execute = 1
|
||||
|
||||
;check if coupling is stopped
|
||||
WHEN Axis_MC_GearOut.Done
|
||||
Axis_MC_GearOut.Execute = 0
|
||||
next AxSTATE_READY
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_GearOut.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_GearOut.ErrorID
|
||||
Axis_MC_GearOut.Execute = 0
|
||||
next AxSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Error
|
||||
STATE AxSTATE_ERROR
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_ERROR")
|
||||
|
||||
WHEN (lAxis.Error.uiID = 29226)
|
||||
NEXT AxSTATE_ERROR_AXIS
|
||||
|
||||
WHEN lAxis.Error.bAcknowledge AND \\
|
||||
Axis_MC_ReadStatus.Errorstop AND \\
|
||||
Axis_MC_ReadStatus.Valid
|
||||
lAxis.Error.bAcknowledge = 0
|
||||
lAxis.Error.uiID = 0
|
||||
NEXT AxSTATE_ERROR_RESET
|
||||
|
||||
WHEN lAxis.Error.bAcknowledge
|
||||
lAxis.Error.bAcknowledge = 0
|
||||
lAxis.Error.uiID = 0
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
;==============================================
|
||||
;Error Axis
|
||||
STATE AxSTATE_ERROR_AXIS
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_ERROR_AXIS")
|
||||
|
||||
WHEN NOT (Axis_MC_ReadAxisError.Valid = TRUE)
|
||||
NEXT AxSTATE_ERROR_AXIS
|
||||
|
||||
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) THEN
|
||||
lAxis.Error.uiID = Axis_MC_ReadAxisError.AxisErrorID
|
||||
ENDIF
|
||||
|
||||
IF (lAxis.Error.uiID = 1004) AND (uiRestartDelay > 0) THEN
|
||||
lAxis.Error.bAcknowledge = 1
|
||||
ENDIF
|
||||
|
||||
Axis_MC_ReadAxisError.Acknowledge = 0
|
||||
|
||||
IF lAxis.Error.bAcknowledge THEN
|
||||
lAxis.Error.bAcknowledge = 0
|
||||
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) THEN
|
||||
Axis_MC_ReadAxisError.Acknowledge = 1
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
WHEN (Axis_MC_ReadAxisError.AxisErrorCount = 0) AND \\
|
||||
Axis_MC_ReadStatus.Errorstop AND \\
|
||||
Axis_MC_ReadStatus.Valid
|
||||
lAxis.Error.uiID = 0
|
||||
NEXT AxSTATE_ERROR_RESET
|
||||
|
||||
WHEN (Axis_MC_ReadAxisError.AxisErrorCount = 0)
|
||||
lAxis.Error.uiID = 0
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
;==============================================
|
||||
;Reset DONE
|
||||
STATE AxSTATE_ERROR_RESET
|
||||
strcpy (ADR (lAxis.sStep), "AxSTATE_ERROR_RESET")
|
||||
|
||||
Axis_MC_Reset.Execute = 1
|
||||
|
||||
IF Axis_MC_Power.Error THEN
|
||||
Axis_MC_Power.Enable = 0
|
||||
ENDIF
|
||||
|
||||
WHEN Axis_MC_Reset.Done
|
||||
Axis_MC_Reset.Execute = 0
|
||||
NEXT AxSTATE_WAIT
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_Reset.ErrorID <> 0)
|
||||
lAxis.Error.uiID = Axis_MC_Reset.ErrorID
|
||||
Axis_MC_Reset.Execute = 0
|
||||
NEXT AxSTATE_ERROR
|
||||
|
||||
; when ((Axis_MC_ReadAxisError.AxisErrorID = 0) and (Axis_MC_ReadAxisError.Valid = true))
|
||||
; Axis_MC_Reset.Execute = 0
|
||||
; next AxSTATE_WAIT
|
||||
|
||||
ENDSELECT
|
||||
|
||||
|
||||
;--------------------------------------------
|
||||
;Override Velocity and Acceleration
|
||||
Axis_MC_SetOverride.Enable = (lAxis.Para.rOverrideVelocity <> 1.0) OR (lAxis.Para.rOverrideAcceleration <> 1.0)
|
||||
Axis_MC_SetOverride.VelFactor = lAxis.Para.rOverrideVelocity
|
||||
Axis_MC_SetOverride.AccFactor = lAxis.Para.rOverrideAcceleration
|
||||
Axis_MC_SetOverride FUB MC_SetOverride ()
|
||||
|
||||
;--------------------------------------------
|
||||
;Call Function Blocks
|
||||
Axis_MC_Power FUB MC_Power ()
|
||||
Axis_MC_BR_Simulation FUB MC_BR_Simulation ()
|
||||
Axis_MC_Home FUB MC_Home ()
|
||||
Axis_MC_BR_InitModPos FUB MC_BR_InitModPos ()
|
||||
Axis_MC_MoveAbsolute FUB MC_MoveAbsolute ()
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop FUB MC_BR_MoveAbsoluteTriggStop ()
|
||||
Axis_MC_MoveAdditive FUB MC_MoveAdditive ()
|
||||
Axis_MC_BR_MoveAdditiveTriggStop FUB MC_BR_MoveAdditiveTriggStop ()
|
||||
Axis_MC_MoveVelocity FUB MC_MoveVelocity ()
|
||||
AXis_MC_BR_MoveVelocityTriggStop FUB MC_BR_MoveVelocityTriggStop ()
|
||||
Axis_MC_CamTableSelect FUB MC_CamTableSelect()
|
||||
Axis_MC_CamIn FUB MC_CamIn ()
|
||||
Axis_MC_CamOut FUB MC_CamOut ()
|
||||
Axis_MC_GearIn FUB MC_GearIn ()
|
||||
Axis_MC_GearInPos FUB MC_GearInPos ()
|
||||
Axis_MC_GearOut FUB MC_GearOut ()
|
||||
Axis_MC_Stop FUB MC_Stop ()
|
||||
Axis_MC_Reset FUB MC_Reset ()
|
||||
Axis_MC_BR_TorqueControl FUB MC_BR_TorqueControl ()
|
||||
|
||||
|
||||
;--------------------------------------------
|
||||
;Cyclic Parameter Read
|
||||
Axis_MC_BR_CyclicRead.Enable = 0
|
||||
;Axis_MC_BR_CyclicRead.ParID = 4160 ; 4160 User Variable0 I2
|
||||
;Axis_MC_BR_CyclicRead.DataAddress = adr ()
|
||||
;Axis_MC_BR_CyclicRead.DataType = ncPAR_TYP_INT
|
||||
Axis_MC_BR_CyclicRead FUB MC_BR_CyclicRead ()
|
||||
|
||||
|
||||
;---------------------------------------------
|
||||
;Read individual Parameter
|
||||
|
||||
IF Axis_MC_BR_ReadParID.Done THEN
|
||||
ENDIF
|
||||
IF Axis_MC_BR_ReadParID.Error THEN
|
||||
uiMCReadError = Axis_MC_BR_ReadParID.ErrorID
|
||||
ENDIF
|
||||
Axis_MC_BR_ReadParID.Execute = 0
|
||||
Axis_MC_BR_ReadParID.ParID = 4128
|
||||
Axis_MC_BR_ReadParID.DataAddress = ADR (lAxis)
|
||||
Axis_MC_BR_ReadParID.DataType = ncPAR_TYP_REAL
|
||||
Axis_MC_BR_ReadParID FUB MC_BR_ReadParID ()
|
||||
|
||||
|
||||
;--------------------------------------------
|
||||
;Write individual Parameter
|
||||
|
||||
;Write UserParam1 on change
|
||||
(*
|
||||
rUser_Var1 access lAxis.Para.udAdrParamUserVar1
|
||||
if (rUser_VarTemp <> rUser_Var1) and\
|
||||
not Axis_MC_BR_WriteParID.Busy then
|
||||
Axis_MC_BR_WriteParID.Execute = 1
|
||||
rUser_VarTemp = rUser_Var1
|
||||
endif
|
||||
if Axis_MC_BR_WriteParID.Done or Axis_MC_BR_WriteParID.Error then
|
||||
if Axis_MC_BR_WriteParID.Error then
|
||||
uiMCWriteError = Axis_MC_BR_WriteParID.ErrorID
|
||||
endif
|
||||
Axis_MC_BR_WriteParID.Execute = 0
|
||||
endif
|
||||
Axis_MC_BR_WriteParID.ParID = 586 ;USER_R4_VAR1
|
||||
Axis_MC_BR_WriteParID.DataAddress = adr (rUser_VarTemp)
|
||||
Axis_MC_BR_WriteParID.DataType = ncPAR_TYP_REAL
|
||||
Axis_MC_BR_WriteParID fub MC_BR_WriteParID ()
|
||||
*)
|
||||
|
||||
;-----------------------------------------------
|
||||
;Cyclick write of Parameter
|
||||
Axis_MC_BR_CyclicWrite.Enable = FALSE
|
||||
Axis_MC_BR_CyclicWrite.DataAddress = ADR (rUser_VarTemp)
|
||||
Axis_MC_BR_CyclicWrite.DataType = ncPAR_TYP_REAL
|
||||
Axis_MC_BR_CyclicWrite.ParID = 586 ;USER_R4_VAR1
|
||||
Axis_MC_BR_CyclicWrite FUB MC_BR_CyclicWrite ()
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
80
Logical/Axises/Axis1/axInit.ab
Normal file
80
Logical/Axises/Axis1/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[0])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[0])
|
||||
lAxisMaster ACCESS ADR (gAxis[1])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxWire1)
|
||||
;This Axis is always slave (incase of CAM/Gea
|
||||
udAxisMasterObj = ADR (gAxWire1)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Axises/Axis2/IEC.prg
Normal file
9
Logical/Axises/Axis2/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axInit.ab</File>
|
||||
<File Reference="true">\Logical\Axises\Axis1\axCyclic.ab</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axis1\ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Axises/Axis2/axInit.ab
Normal file
80
Logical/Axises/Axis2/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[1])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[1])
|
||||
lAxisMaster ACCESS ADR (gAxis[0])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxWire2)
|
||||
;This Axis is always slave (incase of CAM/Gear)
|
||||
udAxisMasterObj = ADR (gAxWire1)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Axises/Axis3/IEC.prg
Normal file
9
Logical/Axises/Axis3/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axInit.ab</File>
|
||||
<File Reference="true">\Logical\Axises\Axis1\axCyclic.ab</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axis1\ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Axises/Axis3/axInit.ab
Normal file
80
Logical/Axises/Axis3/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[2])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[2])
|
||||
lAxisMaster ACCESS ADR (gAxis[0])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxBelt)
|
||||
;This Axis is always slave (incase of CAM/Gear)
|
||||
udAxisMasterObj = ADR (gAxBelt)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Axises/Axis4/IEC.prg
Normal file
9
Logical/Axises/Axis4/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axInit.ab</File>
|
||||
<File Reference="true">\Logical\Axises\Axis1\axCyclic.ab</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axis1\ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Axises/Axis4/axInit.ab
Normal file
80
Logical/Axises/Axis4/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[3])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[3])
|
||||
lAxisMaster ACCESS ADR (gAxis[0])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxLane)
|
||||
;This Axis is always slave (incase of CAM/Gear)
|
||||
udAxisMasterObj = ADR (gAxLane)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Axises/Axis5/IEC.prg
Normal file
9
Logical/Axises/Axis5/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axInit.ab</File>
|
||||
<File Reference="true">\Logical\Axises\Axis1\axCyclic.ab</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axis1\ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Axises/Axis5/axInit.ab
Normal file
80
Logical/Axises/Axis5/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[4])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[4])
|
||||
lAxisMaster ACCESS ADR (gAxis[0])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxBend1)
|
||||
;This Axis is always slave (incase of CAM/Gear)
|
||||
udAxisMasterObj = ADR (gAxBend1)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Axises/Axis6/IEC.prg
Normal file
9
Logical/Axises/Axis6/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>axInit.ab</File>
|
||||
<File Reference="true">\Logical\Axises\Axis1\axCyclic.ab</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axis1\ax.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Axises/Axis6/axInit.ab
Normal file
80
Logical/Axises/Axis6/axInit.ab
Normal file
@@ -0,0 +1,80 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;Which Axis
|
||||
lAxis ACCESS ADR (gAxis[5])
|
||||
lAxisActPos ACCESS ADR (gAxisActPos[5])
|
||||
lAxisMaster ACCESS ADR (gAxis[0])
|
||||
lbSimulation ACCESS ADR (gFalse)
|
||||
rUser_Var1 ACCESS ADR (grDummy)
|
||||
|
||||
;Configure Trigger for Triggermovements (Absolute/Additive/Velocity)
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.InputSource = ncTRIGGER1 //ncTrigger2
|
||||
AXis_MC_BR_MoveVelocityTriggStop.TriggerInput.Edge = ncP_EDGE //ncN_Edge
|
||||
|
||||
;Access global ACP10 Axis Objects
|
||||
udAxisObj = ADR (gAxBend2)
|
||||
;This Axis is always slave (incase of CAM/Gear)
|
||||
udAxisMasterObj = ADR (gAxBend2)
|
||||
udAxisSlaveObj = udAxisObj
|
||||
|
||||
;Initial Step
|
||||
lAxis.uiStep = AxSTATE_WAIT
|
||||
|
||||
|
||||
;Overhand Axis Obj to FunctionBlocks
|
||||
Axis_MC_BR_ReadDriveStatus.Axis = udAxisObj
|
||||
Axis_MC_BR_Simulation.Axis = udAxisObj
|
||||
Axis_MC_BR_TorqueControl.Axis = udAxisObj
|
||||
Axis_MC_BR_VelocityControl.Axis = udAxisObj
|
||||
Axis_MC_CamIn.Master = udAxisMasterObj
|
||||
Axis_MC_CamIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_CamTableSelect.Master = udAxisMasterObj
|
||||
Axis_MC_CamTableSelect.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearIn.Master = udAxisMasterObj
|
||||
Axis_MC_GearIn.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearInPos.Master = udAxisMasterObj
|
||||
Axis_MC_GearInPos.Slave = udAxisSlaveObj
|
||||
Axis_MC_GearOut.Slave = udAxisSlaveObj
|
||||
Axis_MC_Home.Axis = udAxisObj
|
||||
Axis_MC_BR_InitModPos.Axis = udAxisMasterObj
|
||||
Axis_MC_MoveAbsolute.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAbsoluteTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveAdditive.Axis = udAxisObj
|
||||
Axis_MC_BR_MoveAdditiveTriggStop.Axis = udAxisObj
|
||||
Axis_MC_MoveVelocity.Axis = udAxisObj
|
||||
AXis_MC_BR_MoveVelocityTriggStop.Axis = udAxisObj
|
||||
Axis_MC_Power.Axis = udAxisObj
|
||||
Axis_MC_ReadActualPosition.Axis = udAxisObj
|
||||
Axis_MC_ReadActualVelocity.Axis = udAxisObj
|
||||
Axis_MC_ReadActualTorque.Axis = udAxisObj
|
||||
Axis_MC_ReadAxisError.Axis = udAxisObj
|
||||
Axis_MC_ReadStatus.Axis = udAxisObj
|
||||
Axis_MC_Reset.Axis = udAxisObj
|
||||
Axis_MC_SetOverride.Axis = udAxisObj
|
||||
Axis_MC_Stop.Axis = udAxisObj
|
||||
|
||||
;Parameter
|
||||
Axis_MC_BR_CyclicRead.Axis = udAxisObj
|
||||
Axis_MC_BR_CyclicWrite.Axis = udAxisObj
|
||||
Axis_MC_BR_ReadParID.Axis = udAxisObj
|
||||
Axis_MC_BR_WriteParID.Axis = udAxisObj
|
||||
|
||||
|
||||
strcpy (ADR (Axis_MC_ReadAxisError.DataObjectName), "acp10etxde")
|
||||
|
||||
;Enable Fubs
|
||||
Axis_MC_ReadAxisError.Enable = true
|
||||
Axis_MC_ReadStatus.Enable = true
|
||||
Axis_MC_ReadActualPosition.Enable = true
|
||||
Axis_MC_ReadActualVelocity.Enable = true
|
||||
Axis_MC_ReadActualTorque.Enable = false //Not for Stepper Axises
|
||||
Axis_MC_BR_ReadDriveStatus.Enable = true
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
100
Logical/Axises/GlobalAxis.typ
Normal file
100
Logical/Axises/GlobalAxis.typ
Normal file
@@ -0,0 +1,100 @@
|
||||
|
||||
TYPE
|
||||
typAxis_Move : STRUCT
|
||||
bAbsolute : BOOL; (*Absolute Movement*)
|
||||
bAdditive : BOOL; (*Additive Movement*)
|
||||
bVelocity : BOOL; (*Continuous Movement with Constant Velocity*)
|
||||
bVelocityControl : BOOL; (*Continuous Movement with variable Velocity / Torquelimit ONLY Powerlink*)
|
||||
bTorqueControl : BOOL; (*Continuous Movement with variable Velocity / Torquecontrol*)
|
||||
bJogPos : BOOL; (*Jog Mode*)
|
||||
bJogNeg : BOOL; (*Jog Mode*)
|
||||
bStartCAMSlave : BOOL; (*CAM*)
|
||||
bStopCAMSlave : BOOL; (*CAM*)
|
||||
bStartGearSlave : BOOL; (*Gear Speed*)
|
||||
bStartGearPosSlave : BOOL; (*Gear Position*)
|
||||
bStopGearSlave : BOOL; (*Gear*)
|
||||
END_STRUCT;
|
||||
typAxis_Error : STRUCT
|
||||
uiNcAccess : UINT;
|
||||
uiNcAccessMaster : UINT;
|
||||
bAcknowledge : BOOL;
|
||||
uiID : UINT;
|
||||
Text : ARRAY[0..3]OF STRING[79];
|
||||
END_STRUCT;
|
||||
typAxis_Status : STRUCT (*Status of Axopos*)
|
||||
bDisabled : BOOL;
|
||||
bStandstill : BOOL;
|
||||
bStopping : BOOL;
|
||||
bHoming : BOOL;
|
||||
bMotionDiscrete : BOOL;
|
||||
bMotionContinous : BOOL;
|
||||
bMotionSynchronized : BOOL;
|
||||
bErrorstop : BOOL;
|
||||
bTorqueLimitReached : BOOL; (*Torquelimit from Move.bTorqueControl *)
|
||||
END_STRUCT;
|
||||
typAxis_DriveStatus : STRUCT
|
||||
bSimulation : BOOL; (*Axis Simulation*)
|
||||
bNetworkInit : BOOL;
|
||||
bHomeSwitch : BOOL;
|
||||
bPosHWSwitch : BOOL;
|
||||
bNegHWSwitch : BOOL;
|
||||
bTrigger1 : BOOL;
|
||||
bTrigger2 : BOOL;
|
||||
bDriveEnable : BOOL;
|
||||
bControllerReady : BOOL;
|
||||
bControllerStatus : BOOL;
|
||||
bHomingOk : BOOL;
|
||||
bAxisError : BOOL;
|
||||
bLagWarning : BOOL;
|
||||
END_STRUCT;
|
||||
typAxis_Para : STRUCT
|
||||
bTriggStop : BOOL; (*Use Trigger Stop for Move Absolute/Additive/Velocity*)
|
||||
usDirection : USINT; (*Direction for Move Velocity*)
|
||||
udAxisModPosPeriod : UDINT := 0; (*For Modulo Position - Axis period*)
|
||||
udAxisModPosFactor : UDINT := 0; (*For Modulo Position - Axis Factor*)
|
||||
udAdrParamUserVar1 : UDINT; (*Address: Cyclic to Acopos transmitted Value*)
|
||||
rPosition : REAL; (*Position for Absolute Movement*)
|
||||
rDistance : REAL; (*Distance for Additive Movement*)
|
||||
rTriggDistance : REAL; (*Distance for Trigger Movements (Absolue/Additive/Velocity)*)
|
||||
rVelocity : REAL; (*Velocity for Movements*)
|
||||
rOverrideVelocity : REAL := 1.0; (*Overridevalue for Velicity*)
|
||||
rAcceleration : REAL; (*Acceleration for Movements*)
|
||||
rOverrideAcceleration : REAL := 1.0; (*Overridevalue for Acceleration*)
|
||||
rDeceleration : REAL; (*Deceleration for Movements*)
|
||||
rHomePosition : REAL; (*Homepositoin for Homing*)
|
||||
rJogVelocity : REAL; (*Velocity for Jog*)
|
||||
rTorqueLimit : REAL; (*Torquelimit for TorqueControl*)
|
||||
iGearRatioNumerator : INT := 1; (*CAM/Gear*)
|
||||
uiGearRatioDenominator : UINT := 1; (*CAM/Gear*)
|
||||
strCamTable : STRING[12]; (*CAM*)
|
||||
END_STRUCT;
|
||||
typAxis : STRUCT
|
||||
sStep : STRING[40];
|
||||
uiStep : UINT;
|
||||
bPower : BOOL;
|
||||
bHome : BOOL;
|
||||
bStop : BOOL;
|
||||
rActPosition : REAL; (*Current Position*)
|
||||
rActVelocity : REAL; (*Current Velocity*)
|
||||
rActTorque : REAL; (*Current Torque*)
|
||||
rReachedTorque : REAL; (*Reached Torque After Stop with Torquelimit*)
|
||||
diPositionReachedTorque : DINT; (*Position where Torque was reached*)
|
||||
Move : typAxis_Move;
|
||||
Error : typAxis_Error;
|
||||
Status : typAxis_Status;
|
||||
DriveStatus : typAxis_DriveStatus;
|
||||
Para : typAxis_Para;
|
||||
END_STRUCT;
|
||||
typMultAx_Trace : STRUCT (*MultiaxTrace*)
|
||||
sStep : STRING[25];
|
||||
bStartSave : BOOL; (*Activate Trace*)
|
||||
bLoadConfig : BOOL; (*Load Trace Config*)
|
||||
bStop : USINT; (*Stop Trace*)
|
||||
uiTraceStep : USINT; (*Step of Trace*)
|
||||
uiTraceState : UINT; (*Status of Trace*)
|
||||
uiTraceError : UINT; (*Error of Trace*)
|
||||
Trace_Config : MC_PARTRACECONFIG_REF; (*Configuration of Trase*)
|
||||
Trace_DatObj_Refercence : MC_DATOBJ_REF; (*Parameter for Save the Trace-Config*)
|
||||
Trace_Error_Record : MC_ERRORRECORD_REF; (*Fehlerspeicher*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
61
Logical/Axises/GlobalAxis.var
Normal file
61
Logical/Axises/GlobalAxis.var
Normal file
@@ -0,0 +1,61 @@
|
||||
VAR
|
||||
gAxis : ARRAY[0..7] OF typAxis; (*Axis Datasructure / Controlinterface*)
|
||||
gMAxTrace : typMultAx_Trace; (*Multiaxtrace*)
|
||||
gAxisActPos : ARRAY[0..7] OF REAL;
|
||||
grDummy : REAL; (*Dummy Real to be accessed from Axistasks*)
|
||||
END_VAR
|
||||
(*//ACP/SDC Axobjects*)
|
||||
VAR
|
||||
gAxWire1 : ACP10AXIS_typ;
|
||||
gAxWire2 : ACP10AXIS_typ;
|
||||
gAxWire1_HW : SdcHwCfg_typ := (0);
|
||||
gAxWire1_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxWire1_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxWire1_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxWire1_TrigIf : SdcTrigIf_typ := (0);
|
||||
gAxWire1_MotorStep0 : INT := 0;
|
||||
gAxWire2_HW : SdcHwCfg_typ := (0);
|
||||
gAxWire2_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxWire2_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxWire2_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxWire2_MotorStep0 : INT := 0;
|
||||
gAxLane : ACP10AXIS_typ;
|
||||
gAxBelt : ACP10AXIS_typ;
|
||||
gAxLane_HW : SdcHwCfg_typ := (0);
|
||||
gAxLane_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxLane_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxLane_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxLane_MotorStep0 : INT := 0;
|
||||
gAxBelt_HW : SdcHwCfg_typ := (0);
|
||||
gAxBelt_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxBelt_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxBelt_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxBelt_MotorStep0 : INT := 0;
|
||||
gAxBend1 : ACP10AXIS_typ;
|
||||
gAxBend2 : ACP10AXIS_typ;
|
||||
gAxBend1_HW : SdcHwCfg_typ := (0);
|
||||
gAxBend1_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxBend1_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxBend1_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxBend1_MotorStep0 : INT := 0;
|
||||
gAxBend2_HW : SdcHwCfg_typ := (0);
|
||||
gAxBend2_DrvIf : SdcDrvIf16_typ := (0);
|
||||
gAxBend2_EncIf1 : SdcEncIf16_typ := (0);
|
||||
gAxBend2_DiDoIf : SdcDiDoIf_typ := (0);
|
||||
gAxBend2_MotorStep0 : INT := 0;
|
||||
END_VAR
|
||||
(*Constants*)
|
||||
VAR CONSTANT
|
||||
AxSTATE_WAIT : USINT := 0;
|
||||
END_VAR
|
||||
(*Grillparameter*)
|
||||
VAR RETAIN
|
||||
gbBladePoleUp : ARRAY[1..30] OF BOOL; (*Lamellenzapfen oben*)
|
||||
gusBladesInFrame : ARRAY[1..30] OF USINT; (*Anzahl Lamellen f<>r Rahmen*)
|
||||
gudOverallFramecount : UDINT;
|
||||
gudFramecount : ARRAY[1..30] OF UDINT; (*Z<>hler*)
|
||||
grBladewidth : ARRAY[1..30] OF REAL; (*Spurbreite f<>r Lamelle*)
|
||||
grBladeShiftwidth : ARRAY[1..30] OF REAL; (*Takteweite f<>r Lamelle*)
|
||||
grBladeWeldPos : ARRAY[1..30] OF REAL; (*Grillpos f<>r Lamelle*)
|
||||
grBladeStartPos : ARRAY[1..30] OF REAL; (*Start f<>r Lamelle*)
|
||||
END_VAR
|
||||
90
Logical/Axises/GrillCtrl/GrillCtrl.typ
Normal file
90
Logical/Axises/GrillCtrl/GrillCtrl.typ
Normal file
@@ -0,0 +1,90 @@
|
||||
(**)
|
||||
|
||||
TYPE
|
||||
typ_enBlade :
|
||||
( (*Lamellentyp*)
|
||||
enBlade_None, (*Dummytyp*)
|
||||
enBlade_7789_Z07,
|
||||
enBlade_7789_Z08,
|
||||
enBlade_7789_Z09,
|
||||
enBlade_7789_Z10,
|
||||
enBlade_7617_Z04,
|
||||
enBlade_7617_Z05,
|
||||
enBlade_7618_Z04,
|
||||
enBlade_7618_Z05,
|
||||
enBlade_7619_Z04,
|
||||
enBlade_7619_Z05,
|
||||
enBlade_7620_Z04,
|
||||
enBlade_7620_Z05,
|
||||
enBlade_7733_Z01,
|
||||
enBlade_7733_Z03,
|
||||
enBlade_7734_Z01,
|
||||
enBlade_7734_Z03,
|
||||
enBlade_7735_Z01,
|
||||
enBlade_7735_Z03,
|
||||
enBlade_7736_Z01,
|
||||
enBlade_7736_Z03
|
||||
);
|
||||
typ_enStepWirefeed :
|
||||
( (*Schritte Drahtzuf<75>hrung / Verteiler*)
|
||||
enWireStep_INIT,
|
||||
enWireStep_FEED, (*Draht zuf<75>hren*)
|
||||
enWireStep_BEND_END2, (*Drahtende 2 biegen*)
|
||||
enWireStep_WAIT_BENT_END2, (*warten bis Drahtende 2 gebogen*)
|
||||
enWireStep_WATT_BENDER2_OPEN, (*Drahtende 2 freigegeben*)
|
||||
enWireStep_CUT, (*Draht schneiden*)
|
||||
enWireStep_HOME_CUTTER, (*Cutter zur<75>ck in GS*)
|
||||
enWireStep_BEND_END1, (*Drahtende 1 biegen*)
|
||||
enWireStep_WAIT_BENT_END1, (*warten bis Drahtende 1 gebogen*)
|
||||
enWireStep_WATT_BENDER1_OPEN, (*Drahtende 1 freigeben*)
|
||||
enWireStep_CHANGE_LANE, (*Spurwechsel*)
|
||||
enWireStep_WAIT_WIRE_PICKED, (*Warten bis Draht gegriffen ist*)
|
||||
enWireStep_OPEN_WIREDISTRIBUTOR, (*Drahtverteiler <20>ffnen*)
|
||||
enWireStep_WAIT_WIRE_AWAY, (*Warten bis Draht abgeholt ist*)
|
||||
enWireStep_RETURN_LANE1, (*Auf Spur 1 (ggf.) zur<75>ck*)
|
||||
enWireStep_WAIT_BENDERS_HOMED, (*Warten bis Bieger zur<75>ckgestelt sind*)
|
||||
enWireStep_CLOSE_WIREDISTRIBUTOR, (*Drahtverteiler schlie<69>en*)
|
||||
enWireStep_STOP
|
||||
);
|
||||
typ_enStepWireHandling :
|
||||
( (*Schritte Drahthandlingeinheit*)
|
||||
enWireHandlingStep_INIT,
|
||||
enWireHandlingStep_WAIT_WIRE, (*Auf Draht warten*)
|
||||
enWireHandlingStep_INSERT_HDL, (*Handling in Drahtverteiler einfahren*)
|
||||
enWireHandlingStep_PRESTRETCH, (*Greifer vorspannen*)
|
||||
enWireHandlingStep_PICK_WIRE, (*Draht greifen*)
|
||||
enWireHandlingStep_WAIT_OPEN_D, (*Warten bis Drahtverteiler ge<67>ffnet*)
|
||||
enWireHandlingStep_RETURN_HDL, (*Handling zur<75>ck fahren*)
|
||||
enWireHandlingStep_LIFT_WIRE, (*Draht auffahren*)
|
||||
enWireHandlingStep_WAIT_2ndWIRE, (*Synchronisieren mit Draht 2 bzw. 1*)
|
||||
enWireHandlingStep_HEAT_WIRE, (*Draht vorheizen*)
|
||||
enWireHandlingStep_INSERT_WIRE, (*Draht in Lamelle Einfahren*)
|
||||
enWireHandlingStep_COOL_WIRE, (*Draht abk<62>hlen lassen*)
|
||||
enWireHandlingStep_OPEN_GRIPPER, (*Draht freigeben*)
|
||||
enWireHandlingStep_RETURN_HDL2, (*Handling zur<75>ckfahren*)
|
||||
enWireHandlingStep_SINK_HDL (*Handling absenken*)
|
||||
);
|
||||
typ_enWireState :
|
||||
( (*Zustand Draht in Verteiler*)
|
||||
enWire_NOWIRE, (*Kein Draht im Verteiler*)
|
||||
enWire_FEEDING, (*Drahtzufuhr ist gestartet*)
|
||||
enWire_FEEDED, (*Draht ist zugef<65>hrt*)
|
||||
enWire_END2_BENT1, (*Drahtende 2 ist gebogen f<>r Handling 1*)
|
||||
enWire_END2_BENT2, (*Drahtende 2 ist gebogen f<>r Handling 2*)
|
||||
enWire_CUT1, (*Draht ist Geschnitten f<>r Handling 1*)
|
||||
enWire_CUT2, (*Draht ist Geschnitten f<>r Handling 2*)
|
||||
enWire_BENT1, (*Draht ist fertig gebogen f<>r Handling 1*)
|
||||
enWire_BENT2 (*Draht ist fertig gebogen f<>r Handling 2*)
|
||||
);
|
||||
typ_enStepBelt :
|
||||
( (*Schritte Taktband*)
|
||||
enBeltStep_INIT,
|
||||
enBeltStep_MOVE_TO_LOADPOS, (*Best<73>ckungsposition anfahren*)
|
||||
enBeltStep_ADJUST_LANE, (*Spur einstellen*)
|
||||
enBeltStep_WAIT_LOADED, (*Warten bis Band best<73>ckt*)
|
||||
enBeltStep_MOVE_TO_WELDPOS, (*Schwei<65>positon anfahren*)
|
||||
enBeltStep_WAIT_WELDED, (*Warten bis Schwei<65>vorgang beendet*)
|
||||
enBeltStep_WAIT_ALL_RETURNED, (*Warten bis alles zur<75>ckgestelt ist*)
|
||||
enBeltStep_EJECT_FRAME (*Rahmen auswerfen*)
|
||||
);
|
||||
END_TYPE
|
||||
108
Logical/Axises/GrillCtrl/GrillCtrl.var
Normal file
108
Logical/Axises/GrillCtrl/GrillCtrl.var
Normal file
@@ -0,0 +1,108 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: AxCtrl
|
||||
* File: AxCtrl.var
|
||||
* Author: michi
|
||||
* Created: July 17, 2012
|
||||
********************************************************************
|
||||
* Local variables of program AxCtrl
|
||||
********************************************************************)
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Dynamic Vars*)
|
||||
VAR
|
||||
lAxisWire1 : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisWire2 : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisBelt : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisLane : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisBend1 : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
lAxisBend2 : REFERENCE TO typAxis; (*Axis Datastruct *)
|
||||
END_VAR
|
||||
(*//Local Vars*)
|
||||
VAR
|
||||
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
bWireLane12 : BOOL;
|
||||
bHorStrokeWire1Fw : BOOL;
|
||||
bVerStrokeWire1Fw : BOOL;
|
||||
bHorStrokeWire2Fw : BOOL;
|
||||
bVerStrokeWire2Fw : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
bHomePosWireprocess : BOOL; (*Grundstellung Drahtverarbeitung*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
bBladesUp : BOOL; (*Lamellenzapfen oben*)
|
||||
END_VAR
|
||||
VAR
|
||||
bBender1Pos0 : BOOL; (*Bender 1 is in 0<> Pos*)
|
||||
bBender2Pos0 : BOOL; (*Bender 2 is in 0<> Pos*)
|
||||
usActBladesInFrame : USINT;
|
||||
usErrorReset : USINT;
|
||||
usHideButErrorReset : USINT;
|
||||
usStateBtLoadWire : USINT; (*Status Button Drahtzufuhr starten*)
|
||||
usStateBtBeltLoaded : USINT; (*Status Button Taktband geladen*)
|
||||
usStateBtWireHeated : USINT; (*Status Button Draht aufgeheizt*)
|
||||
usStateBtWireWelded : USINT; (*Status Button Draht gegrillt*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
udTimePreheat : UDINT := 8; (*Vorheizzeit [s]*)
|
||||
udTimeWeld : UDINT := 4; (*Schwei<65>zeit [s]*)
|
||||
udTimeCool : UDINT := 9; (*Abk<62>hlzeit [s]*)
|
||||
END_VAR
|
||||
VAR
|
||||
udStartTime : UDINT;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
udTimeLastCycle : UDINT;
|
||||
END_VAR
|
||||
VAR
|
||||
udActualFramecount : REFERENCE TO UDINT;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
enBladetype : typ_enBlade; (*Lamellentyp*)
|
||||
END_VAR
|
||||
VAR
|
||||
enLastBladetype : typ_enBlade; (*Letzer Lamellentyp*)
|
||||
enStepWirefeed : typ_enStepWirefeed; (*Schritte Drahtzuf<75>hrung / Verteiler*)
|
||||
enStepWirehandling1 : typ_enStepWireHandling; (*Schritte Drahthandling 1*)
|
||||
enStepWirehandling2 : typ_enStepWireHandling; (*Schritte Drahthandling 2*)
|
||||
enStepBelt : typ_enStepBelt; (*Schritte Taktband*)
|
||||
enStateWire : typ_enWireState; (*Drahtstatus*)
|
||||
END_VAR
|
||||
(*//Positions Bender*)
|
||||
VAR
|
||||
rBender1Pos0 : REAL := 19.0; (*Bender 1 0<> Infeedpos*)
|
||||
rBender1Pos90 : REAL := 123.0; (*Bender 1 90<39> Bendpos Lane1*)
|
||||
rBender1Pos270 : REAL := -78.0; (*Bender 1 270<37> Bendpos Lane2*)
|
||||
rBender2Pos0 : REAL := -33.0; (*Bender 2 0<> Infeedpos*)
|
||||
rBender2Pos90 : REAL := -131.0; (*Bender 2 90<39> Bendpos Lane1*)
|
||||
rBender2Pos270 : REAL := 70.0; (*Bender 2 270<37> Bendpos Lane2*)
|
||||
rBenderOpenAngle : REAL := 1.0; (*Bender Angle for Open after Bending*)
|
||||
rBenderOpenAngle2 : REAL := 3.0; (*Bender Angle for Open after Bending*)
|
||||
rBeltVelocityEmpty : REAL := 1250.0; (*Taktband leerfahrt (1500)*)
|
||||
rBeltVelocityLoaded : REAL := 1000.0; (*Taktband leerfahrt (1500)*)
|
||||
rBeltVelocityShift : REAL := 250.0; (*Taktband Takten*)
|
||||
rCurrent : REAL := 19.5; (*Strom zum Grillen*)
|
||||
rCurrentFactor : REAL;
|
||||
rVoltage : REAL := 8.0; (*Strom zum Grillen*)
|
||||
rVoltageFactor : REAL;
|
||||
lrActualWeldpos : REFERENCE TO REAL;
|
||||
END_VAR
|
||||
(*//FUBs*)
|
||||
VAR
|
||||
TON_StoreWeldpos : TON; (*Schwei<65>pos Speichern*)
|
||||
TON_WireCutterClosed : TON; (*Drahtschneider geschlossen verz<72>gert*)
|
||||
TOF_WireCutterClosed : TOF;
|
||||
TON_Wiregrippers1Closed : TON; (*Drahtgreifer Draht 1 geschlossen verz<72>gert*)
|
||||
TOF_Wiregrippers1Closed : TOF; (*Drahtgreifer Draht 1 geschlossen verz<72>gert*)
|
||||
TON_Wiregrippers2Closed : TON; (*Drahtgreifer Draht 2 geschlossen verz<72>gert*)
|
||||
TOF_Wiregrippers2Closed : TOF; (*Drahtgreifer Draht 1 geschlossen verz<72>gert*)
|
||||
TON_Gripper1Prestreched : TON; (*Draht 1 Vorgespannt*)
|
||||
TON_Gripper2Prestreched : TON; (*Draht 2 Vorgespannt*)
|
||||
TON_WaitShiftBelt : TON; (*Warten Best<73>cken Lamelle*)
|
||||
TON_WireHeated : TON; (*Draht vorgeheizt*)
|
||||
TON_WireWelded : TON; (*Draht Verschwei<65>t*)
|
||||
TON_WireCooled : TON; (*Draht 1 Abgek<65>hlt*)
|
||||
END_VAR
|
||||
875
Logical/Axises/GrillCtrl/GrillCtrlCyclic.st
Normal file
875
Logical/Axises/GrillCtrl/GrillCtrlCyclic.st
Normal file
@@ -0,0 +1,875 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Gear Coupling Axis2 is Slave from Axis 1
|
||||
lAxisWire2.Para.iGearRatioNumerator := -1;
|
||||
lAxisWire2.Para.uiGearRatioDenominator := 1;
|
||||
//Pransfer Values to Axis2
|
||||
lAxisWire2.Para.rAcceleration := lAxisWire1.Para.rAcceleration;
|
||||
lAxisWire2.Para.rDeceleration := lAxisWire1.Para.rDeceleration;
|
||||
|
||||
//Power Up Axises
|
||||
lAxisWire1.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisWire2.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisBelt.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisLane.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisBelt.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisBend1.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
lAxisBend2.bPower := (gMachine.enMode <> enMACH_OFFLINE);
|
||||
//Home
|
||||
lAxisWire1.bHome := NOT lAxisWire1.DriveStatus.bHomingOk AND ((gMachine.enMode = enMACH_ONLINE) OR (gMachine.enMode = enMACH_JOG));
|
||||
lAxisWire2.bHome := NOT lAxisWire2.DriveStatus.bHomingOk AND ((gMachine.enMode = enMACH_ONLINE) OR (gMachine.enMode = enMACH_JOG));
|
||||
lAxisBelt.bHome := NOT lAxisBelt.DriveStatus.bHomingOk AND ((gMachine.enMode = enMACH_ONLINE) OR (gMachine.enMode = enMACH_JOG));
|
||||
|
||||
//Couple Axis 2 of wirefeed
|
||||
IF lAxisWire1.DriveStatus.bHomingOk AND lAxisWire2.DriveStatus.bHomingOk THEN
|
||||
lAxisWire2.Move.bStartGearSlave := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
TON_WireCutterClosed (IN := gbOuCutWire,
|
||||
PT := t#400ms);
|
||||
TOF_WireCutterClosed (IN := gbOuCutWire,
|
||||
PT := t#400ms);
|
||||
|
||||
TON_Wiregrippers1Closed (IN := gbOuCloseWireGrippers1,
|
||||
PT := t#400ms);
|
||||
TOF_Wiregrippers1Closed (IN := gbOuCloseWireGrippers1,
|
||||
PT := t#400ms);
|
||||
|
||||
TON_Wiregrippers2Closed (IN := gbOuCloseWireGrippers2,
|
||||
PT := t#400ms);
|
||||
TOF_Wiregrippers2Closed (IN := gbOuCloseWireGrippers2,
|
||||
PT := t#400ms);
|
||||
|
||||
TON_Gripper1Prestreched (IN := gbOuStretchWire1,
|
||||
PT := t#1s);
|
||||
TON_Gripper2Prestreched (IN := gbOuStretchWire2,
|
||||
PT := t#1s);
|
||||
|
||||
TON_WaitShiftBelt (IN := ((enStepBelt = enBeltStep_WAIT_LOADED) AND NOT lAxisBelt.Move.bAdditive),
|
||||
PT := t#900ms);
|
||||
TON_WireHeated (IN := (enStepWirehandling1 = enWireHandlingStep_HEAT_WIRE) AND (gMachine.enMode = enMACH_AUTOMATIC),
|
||||
PT := UDINT_TO_TIME (udTimePreheat * 1000));
|
||||
TON_WireWelded (IN := (enStepWirehandling1 = enWireHandlingStep_INSERT_WIRE),
|
||||
PT := UDINT_TO_TIME (udTimeWeld * 1000));
|
||||
TON_WireCooled (IN := (enStepWirehandling1 = enWireHandlingStep_COOL_WIRE),
|
||||
PT := UDINT_TO_TIME (udTimeCool * 1000));
|
||||
|
||||
|
||||
//Common States
|
||||
bBender1Pos0 := (lAxisBend1.rActPosition = rBender1Pos0);
|
||||
bBender2Pos0 := (lAxisBend2.rActPosition = rBender2Pos0);
|
||||
bHomePosWireprocess := bBender1Pos0 AND bBender2Pos0 AND NOT gbOuReleaseWire AND gbInWireDistributorClosed AND gbInWireDistributorLane1;
|
||||
|
||||
|
||||
TON_StoreWeldpos.IN := gManualCommands.bStoreWeldPosition;
|
||||
TON_StoreWeldpos.PT := t#3s;
|
||||
TON_StoreWeldpos ();
|
||||
//Jog Mode
|
||||
//==========================================================================================
|
||||
IF gMachine.enMode = enMACH_JOG THEN
|
||||
//Uncritical Movements
|
||||
IF EDGEPOS (gManualCommands.bToggleWireClutch) THEN
|
||||
gbOuReleaseWire := NOT gbOuReleaseWire;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bToggleSetStrokeWireCutter) THEN
|
||||
gbOuSetStrokeWireCutter := NOT gbOuSetStrokeWireCutter;
|
||||
END_IF
|
||||
gbOuCutWire := gManualCommands.bCutWire;
|
||||
|
||||
IF EDGEPOS (gManualCommands.bHomeBelt) THEN
|
||||
lAxisBelt.bHome := TRUE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bBeltFwd) THEN
|
||||
lAxisBelt.Para.rDistance := - grBladeShiftwidth[enBladetype];
|
||||
lAxisBelt.Move.bAdditive := TRUE;
|
||||
END_IF
|
||||
IF gManualCommands.bBeltJogFwdCont THEN
|
||||
lAxisBelt.Para.rJogVelocity := 1500;
|
||||
ELSE
|
||||
lAxisBelt.Para.rJogVelocity := 100;
|
||||
END_IF
|
||||
lAxisBelt.Move.bJogNeg := gManualCommands.bBeltJogFwd OR gManualCommands.bBeltJogFwdCont;
|
||||
lAxisBelt.Move.bJogPos := gManualCommands.bBeltJogBwd;
|
||||
|
||||
IF EDGEPOS (gManualCommands.bBelt1stPos) THEN
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
lAxisBelt.Para.rPosition := grBladeWeldPos[enBladetype];
|
||||
lAxisBelt.Move.bAbsolute:= TRUE;
|
||||
END_IF
|
||||
//Critical Movements
|
||||
IF EDGEPOS (gManualCommands.bFeedWire) AND gbInWireDistributorLane1 THEN
|
||||
lAxisWire1.Move.bAdditive := TRUE;
|
||||
END_IF
|
||||
IF gbInWireDistributorLane2 THEN
|
||||
IF EDGEPOS (gManualCommands.bJogWireFwd) THEN
|
||||
lAxisWire1.Move.bJogPos := NOT lAxisWire1.Move.bJogPos;
|
||||
END_IF
|
||||
ELSE
|
||||
lAxisWire1.Move.bJogPos := gManualCommands.bJogWireFwd AND (gbInWireDistributorLane1 OR gbInWireDistributorLane2) AND NOT gbInWireFeeded AND NOT gbOuCutWire;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bHomeLane) THEN
|
||||
lAxisLane.bHome := TRUE;
|
||||
END_IF
|
||||
lAxisLane.Move.bJogPos := gManualCommands.bCloseLane;
|
||||
lAxisLane.Move.bJogNeg := gManualCommands.bOpenLane;
|
||||
|
||||
|
||||
IF EDGEPOS (gManualCommands.bToggleLane) THEN
|
||||
bWireLane12 := NOT bWireLane12;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bToggleWireDistributorOpCl) THEN
|
||||
gbOuWireDistirbutorOpen := NOT gbOuWireDistirbutorOpen;
|
||||
END_IF
|
||||
|
||||
//Bender 1
|
||||
IF EDGEPOS (gManualCommands.bBend1Home) AND gbInWireDistributorOpen THEN
|
||||
lAxisBend1.bHome := TRUE;
|
||||
END_IF
|
||||
lAxisBend1.Move.bJogPos := gManualCommands.bBend1JogFwd;
|
||||
lAxisBend1.Move.bJogNeg := gManualCommands.bBend1JogBwd;
|
||||
IF EDGEPOS (gManualCommands.bBend1Pos0) AND lAxisBend1.Status.bStandstill THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos0;
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bBend1Pos90) AND lAxisBend1.Status.bStandstill THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos90;
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bBend1Pos270) AND lAxisBend1.Status.bStandstill THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos270;
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
|
||||
//Bender 2
|
||||
IF EDGEPOS (gManualCommands.bBend2Home) AND gbInWireDistributorOpen THEN
|
||||
lAxisBend2.bHome := TRUE;
|
||||
END_IF
|
||||
lAxisBend2.Move.bJogPos := gManualCommands.bBend2JogFwd;
|
||||
lAxisBend2.Move.bJogNeg := gManualCommands.bBend2JogBwd;
|
||||
|
||||
IF EDGEPOS (gManualCommands.bBend2Pos0) AND lAxisBend2.Status.bStandstill THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos0;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bBend2Pos90) AND lAxisBend2.Status.bStandstill THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos90;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bBend2Pos270) AND lAxisBend2.Status.bStandstill THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos270;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
END_IF
|
||||
|
||||
//Wire 1
|
||||
IF EDGEPOS (gManualCommands.bWireToggleSetStroke) THEN
|
||||
bBladesUp := NOT bBladesUp;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1VertStrokeUp) AND gbInHorStrokeBwWire1 THEN
|
||||
bVerStrokeWire1Fw := TRUE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1VertStrokeDown) AND gbInHorStrokeBwWire1 THEN
|
||||
bVerStrokeWire1Fw := FALSE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1HorStrokeFw) AND ((gbInVertStrokeBwWire1 AND NOT gbOuStretchWire1) OR gbInVertStrokeFwWire1) THEN
|
||||
bHorStrokeWire1Fw := TRUE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1HorStrokeBw) AND (gbInVertStrokeBwWire1 OR gbInVertStrokeFwWire1) THEN
|
||||
bHorStrokeWire1Fw := FALSE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1ToggleStretcher) THEN
|
||||
gbOuStretchWire1 := NOT gbOuStretchWire1;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire1ToggleGripper) THEN
|
||||
gbOuCloseWireGrippers1 := NOT gbOuCloseWireGrippers1;
|
||||
END_IF
|
||||
|
||||
//Wire2
|
||||
IF EDGEPOS (gManualCommands.bWire2VertStrokeUp) AND gbInHorStrokeBwWire2 THEN
|
||||
bVerStrokeWire2Fw := TRUE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire2VertStrokeDown) AND gbInHorStrokeBwWire2 THEN
|
||||
bVerStrokeWire2Fw := FALSE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire2HorStrokeFw) AND ((gbInVertStrokeBwWire2 AND NOT gbOuStretchWire2) OR gbInVertStrokeFwWire2) THEN
|
||||
bHorStrokeWire2Fw := TRUE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire2HorStrokeBw) AND (gbInVertStrokeBwWire2 OR gbInVertStrokeFwWire2) THEN
|
||||
bHorStrokeWire2Fw := FALSE;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire2ToggleStretcher) THEN
|
||||
gbOuStretchWire2 := NOT gbOuStretchWire2;
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gManualCommands.bWire2ToggleGripper) THEN
|
||||
gbOuCloseWireGrippers2 := NOT gbOuCloseWireGrippers2;
|
||||
END_IF
|
||||
|
||||
//Param
|
||||
IF EDGEPOS (TON_StoreWeldpos.Q) THEN
|
||||
grBladeWeldPos[enBladetype] := lAxisBelt.rActPosition;
|
||||
END_IF
|
||||
ELSE
|
||||
gManualCommands.bBeltJogFwdCont := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//(Semi) - Automaticmode
|
||||
//==========================================================================================
|
||||
IF (gMachine.enMode = enMACH_MANUAL) OR (gMachine.enMode = enMACH_AUTOMATIC) THEN
|
||||
bEnableNextStep := EDGEPOS (gManualCommands.bNextManStep) OR (gMachine.enMode = enMACH_AUTOMATIC) ;
|
||||
//Wirefeed
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepWirefeed OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enWireStep_INIT:
|
||||
gbOuWireDistirbutorOpen := FALSE;
|
||||
IF bHomePosWireprocess AND (enBladetype <> enBlade_None) THEN
|
||||
enStepWirefeed := enWireStep_FEED;
|
||||
enStateWire := enWire_FEEDING;
|
||||
lAxisWire1.Move.bAdditive := TRUE;
|
||||
END_IF
|
||||
|
||||
//Feed Wire
|
||||
//---------------------------
|
||||
enWireStep_FEED:
|
||||
IF gbInWireFeeded THEN
|
||||
lAxisWire1.bStop := TRUE;
|
||||
enStateWire := enWire_FEEDED;
|
||||
END_IF
|
||||
IF gbInWireFeeded AND lAxisWire1.Status.bStandstill THEN
|
||||
enStepWirefeed := enWireStep_BEND_END2;
|
||||
END_IF
|
||||
|
||||
//Bend Wire End 2 (wait for Handling)
|
||||
//---------------------------
|
||||
enWireStep_BEND_END2:
|
||||
//Decide Destination for Wire
|
||||
IF (enStepWirehandling2 = enWireHandlingStep_WAIT_WIRE) AND (gbInVertStrokeBwWire1 OR gbInVertStrokeBwWire1) THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos270 ;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
enStepWirefeed := enWireStep_WAIT_BENT_END2;
|
||||
ELSIF (enStepWirehandling1 = enWireHandlingStep_WAIT_WIRE) THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos90 ;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
enStepWirefeed := enWireStep_WAIT_BENT_END2;
|
||||
END_IF
|
||||
//Also prepare WireCutter (Wait for Handling 2 is down
|
||||
gbOuSetStrokeWireCutter := gbInVertStrokeBwWire1;
|
||||
|
||||
//Wait Wire End 2 is Bent
|
||||
//---------------------------
|
||||
enWireStep_WAIT_BENT_END2:
|
||||
IF lAxisBend2.Status.bStandstill AND NOT lAxisBend2.Move.bAbsolute THEN
|
||||
//Decide Destination for Wire
|
||||
IF (lAxisBend2.Para.rPosition = rBender2Pos90) THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos90 + rBenderOpenAngle2;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
enStateWire := enWire_END2_BENT1;
|
||||
ELSIF (lAxisBend2.Para.rPosition = rBender2Pos270) THEN
|
||||
lAxisBend2.Para.rPosition := rBender2Pos270 - rBenderOpenAngle2;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
enStateWire := enWire_END2_BENT2;
|
||||
END_IF
|
||||
enStepWirefeed := enWireStep_WATT_BENDER2_OPEN;
|
||||
END_IF
|
||||
|
||||
//Wire End 2 Open
|
||||
//---------------------------
|
||||
enWireStep_WATT_BENDER2_OPEN:
|
||||
IF lAxisBend2.Status.bStandstill AND NOT lAxisBend2.Move.bAbsolute THEN
|
||||
enStepWirefeed := enWireStep_CUT;
|
||||
END_IF
|
||||
|
||||
//Cut Wire
|
||||
//---------------------------
|
||||
enWireStep_CUT:
|
||||
IF gbInSetStrokeCutterFw THEN
|
||||
gbOuCutWire := TRUE;
|
||||
END_IF
|
||||
|
||||
IF TON_WireCutterClosed.Q THEN
|
||||
gbOuCutWire := FALSE;
|
||||
enStepWirefeed := enWireStep_HOME_CUTTER;
|
||||
IF (enStateWire = enWire_END2_BENT1) THEN
|
||||
enStateWire := enWire_CUT1;
|
||||
ELSIF (enStateWire = enWire_END2_BENT2) THEN
|
||||
enStateWire := enWire_CUT2;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Home Cutter
|
||||
//---------------------------
|
||||
enWireStep_HOME_CUTTER:
|
||||
gbOuSetStrokeWireCutter := FALSE;
|
||||
IF gbInSetStrokeCutterBw THEN
|
||||
enStepWirefeed := enWireStep_BEND_END1;
|
||||
END_IF
|
||||
|
||||
//Bend Wire End 1
|
||||
//---------------------------
|
||||
enWireStep_BEND_END1:
|
||||
enStepWirefeed := enWireStep_INIT;
|
||||
//Decide Destination for Wire
|
||||
IF (enStateWire = enWire_CUT1) THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos90;
|
||||
ELSIF (enStateWire = enWire_CUT2) THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos270;
|
||||
END_IF
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
enStepWirefeed := enWireStep_WAIT_BENT_END1;
|
||||
|
||||
//Wait Wire End 1 is Bent
|
||||
//---------------------------
|
||||
enWireStep_WAIT_BENT_END1:
|
||||
IF lAxisBend1.Status.bStandstill AND NOT lAxisBend1.Move.bAbsolute THEN
|
||||
//Decide Destination for Wire
|
||||
IF (lAxisBend1.Para.rPosition = rBender1Pos90) THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos90 - rBenderOpenAngle;
|
||||
enStateWire := enWire_BENT1;
|
||||
ELSIF (lAxisBend1.Para.rPosition = rBender1Pos270) THEN
|
||||
lAxisBend1.Para.rPosition := rBender1Pos270 + rBenderOpenAngle;
|
||||
enStateWire := enWire_BENT2;
|
||||
END_IF
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
enStepWirefeed := enWireStep_WATT_BENDER1_OPEN;
|
||||
END_IF
|
||||
|
||||
//Bender 1 Open
|
||||
//---------------------------
|
||||
enWireStep_WATT_BENDER1_OPEN:
|
||||
IF lAxisBend1.Status.bStandstill AND NOT lAxisBend1.Move.bAbsolute THEN
|
||||
enStepWirefeed := enWireStep_CHANGE_LANE;
|
||||
END_IF
|
||||
|
||||
//Ggf. Spur wechseln
|
||||
//---------------------------
|
||||
enWireStep_CHANGE_LANE:
|
||||
bWireLane12 := (enStateWire = enWire_BENT2);
|
||||
IF (gbInWireDistributorLane1 AND (enStateWire = enWire_BENT1)) OR
|
||||
(gbInWireDistributorLane2 AND (enStateWire = enWire_BENT2)) THEN
|
||||
enStepWirefeed := enWireStep_WAIT_WIRE_PICKED;
|
||||
END_IF
|
||||
|
||||
//Warten bis Draht gegriffen
|
||||
//---------------------------
|
||||
enWireStep_WAIT_WIRE_PICKED:
|
||||
IF (gbInWireDistributorLane1 AND (enStepWirehandling1 = enWireHandlingStep_WAIT_OPEN_D)) OR
|
||||
(gbInWireDistributorLane2 AND (enStepWirehandling2 = enWireHandlingStep_WAIT_OPEN_D)) THEN
|
||||
enStepWirefeed := enWireStep_OPEN_WIREDISTRIBUTOR;
|
||||
END_IF
|
||||
|
||||
//Drahtverteiler <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enWireStep_OPEN_WIREDISTRIBUTOR:
|
||||
gbOuWireDistirbutorOpen := TRUE;
|
||||
IF gbInWireDistributorOpen THEN
|
||||
enStepWirefeed := enWireStep_WAIT_WIRE_AWAY;
|
||||
END_IF
|
||||
|
||||
//Warten bis Draht abgeholt
|
||||
//---------------------------
|
||||
enWireStep_WAIT_WIRE_AWAY:
|
||||
IF (gbInWireDistributorLane1 AND gbInHorStrokeBwWire1) OR
|
||||
(gbInWireDistributorLane2 AND gbInHorStrokeBwWire2) THEN
|
||||
enStepWirefeed := enWireStep_RETURN_LANE1;
|
||||
END_IF
|
||||
|
||||
//GGf auf Spur 1 zur<EFBFBD>ckfahren
|
||||
//---------------------------
|
||||
enWireStep_RETURN_LANE1:
|
||||
bWireLane12 := FALSE;
|
||||
IF gbInWireDistributorLane1 THEN
|
||||
enStepWirefeed := enWireStep_WAIT_BENDERS_HOMED;
|
||||
lAxisBend1.Para.rPosition := rBender1Pos0;
|
||||
lAxisBend1.Move.bAbsolute := TRUE;
|
||||
lAxisBend2.Para.rPosition := rBender2Pos0;
|
||||
lAxisBend2.Move.bAbsolute := TRUE;
|
||||
enStateWire := enWire_NOWIRE;
|
||||
END_IF
|
||||
|
||||
//Bieger zur<EFBFBD>ckstellen
|
||||
//---------------------------
|
||||
enWireStep_WAIT_BENDERS_HOMED:
|
||||
IF (lAxisBend1.Para.rPosition = rBender1Pos0) AND (lAxisBend2.Para.rPosition = rBender2Pos0) THEN
|
||||
enStepWirefeed := enWireStep_CLOSE_WIREDISTRIBUTOR;
|
||||
END_IF
|
||||
|
||||
//Close Wiredistributor
|
||||
//---------------------------
|
||||
enWireStep_CLOSE_WIREDISTRIBUTOR:
|
||||
gbOuWireDistirbutorOpen := FALSE;
|
||||
IF gbInWireDistributorClosed THEN
|
||||
enStepWirefeed := enWireStep_INIT;
|
||||
END_IF
|
||||
|
||||
//Stop
|
||||
//---------------------------
|
||||
enWireStep_STOP:
|
||||
|
||||
ELSE
|
||||
END_CASE;
|
||||
|
||||
//Wirehandling 1
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepWirehandling1 OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enWireStep_INIT:
|
||||
bHorStrokeWire1Fw := FALSE;
|
||||
gbOuStretchWire1 := FALSE;
|
||||
gbOuCloseWireGrippers1 := FALSE;
|
||||
IF gbInHorStrokeBwWire1 THEN
|
||||
bVerStrokeWire1Fw := FALSE;
|
||||
END_IF
|
||||
IF NOT gbOuCloseWireGrippers1 AND gbInVertStrokeBwWire1 AND gbInHorStrokeBwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_WAIT_WIRE;
|
||||
END_IF
|
||||
|
||||
//Wait for Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_WIRE:
|
||||
gbOuStretchWire1 := FALSE;
|
||||
IF gbInWireDistributorLane1 AND (enStateWire = enWire_BENT1) AND
|
||||
(enStepWirefeed = enWireStep_WAIT_WIRE_PICKED) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_INSERT_HDL;
|
||||
END_IF
|
||||
|
||||
//Insert Hadling
|
||||
//---------------------------
|
||||
enWireHandlingStep_INSERT_HDL:
|
||||
bHorStrokeWire1Fw := TRUE;
|
||||
IF gbInHorStrokeFwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_PRESTRETCH;
|
||||
END_IF
|
||||
|
||||
//Prestrech Gripper
|
||||
//---------------------------
|
||||
enWireHandlingStep_PRESTRETCH:
|
||||
gbOuStretchWire1 := TRUE;
|
||||
IF TON_Gripper1Prestreched.Q THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_PICK_WIRE;
|
||||
END_IF
|
||||
|
||||
//Pick Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_PICK_WIRE:
|
||||
gbOuCloseWireGrippers1 := TRUE;
|
||||
IF TON_Wiregrippers1Closed.Q THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_WAIT_OPEN_D;
|
||||
gbOuStretchWire1 := FALSE;
|
||||
END_IF
|
||||
|
||||
//Wait for Distributor opended
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_OPEN_D:
|
||||
IF (enStepWirefeed = enWireStep_WAIT_WIRE_AWAY) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_RETURN_HDL;
|
||||
END_IF
|
||||
|
||||
//Return Handling from Wiredistributor
|
||||
//---------------------------
|
||||
enWireHandlingStep_RETURN_HDL:
|
||||
bHorStrokeWire1Fw := FALSE;
|
||||
IF gbInHorStrokeBwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_LIFT_WIRE;
|
||||
END_IF
|
||||
|
||||
//Lift Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_LIFT_WIRE:
|
||||
bVerStrokeWire1Fw := TRUE;
|
||||
IF gbInVertStrokeFwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_WAIT_2ndWIRE;
|
||||
END_IF
|
||||
|
||||
//Wait for 2nd Wire finished
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_2ndWIRE:
|
||||
IF (enStepWirehandling2 = enWireHandlingStep_WAIT_2ndWIRE) AND
|
||||
((enStepBelt = enBeltStep_MOVE_TO_WELDPOS) OR (enStepBelt = enBeltStep_WAIT_WELDED)) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_HEAT_WIRE;
|
||||
enStepWirehandling2 := enWireHandlingStep_HEAT_WIRE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bCancelPocess) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
END_IF
|
||||
|
||||
//Heat Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_HEAT_WIRE:
|
||||
//IF EDGEPOS (gManualCommands.bWireHeated) THEN
|
||||
IF TON_WireHeated.Q AND (enStepBelt = enBeltStep_WAIT_WELDED) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_INSERT_WIRE;
|
||||
enStepWirehandling2 := enWireHandlingStep_INSERT_WIRE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bCancelPocess) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
enStepWirehandling2 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
END_IF
|
||||
|
||||
//Insert Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_INSERT_WIRE:
|
||||
bHorStrokeWire1Fw := TRUE;
|
||||
IF TON_WireWelded.Q THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_COOL_WIRE;
|
||||
END_IF
|
||||
IF EDGEPOS (gManualCommands.bCancelPocess) THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
enStepWirehandling2 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
END_IF
|
||||
|
||||
//Cool Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_COOL_WIRE:
|
||||
IF TON_WireCooled.Q THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
enStepWirehandling2 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
END_IF
|
||||
|
||||
//Open Grippers
|
||||
//---------------------------
|
||||
enWireHandlingStep_OPEN_GRIPPER:
|
||||
gbOuCloseWireGrippers1 := FALSE;
|
||||
IF NOT TOF_Wiregrippers1Closed.Q THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_RETURN_HDL2;
|
||||
END_IF
|
||||
|
||||
//Return Handling from Wiredistributor
|
||||
//---------------------------
|
||||
enWireHandlingStep_RETURN_HDL2:
|
||||
bHorStrokeWire1Fw := FALSE;
|
||||
IF gbInHorStrokeBwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_SINK_HDL;
|
||||
END_IF
|
||||
|
||||
//Move Down
|
||||
//---------------------------
|
||||
enWireHandlingStep_SINK_HDL:
|
||||
bVerStrokeWire1Fw := FALSE;
|
||||
IF gbInVertStrokeBwWire1 THEN
|
||||
enStepWirehandling1 := enWireHandlingStep_INIT;
|
||||
END_IF
|
||||
|
||||
END_CASE;
|
||||
|
||||
//Wirehandling 2
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepWirehandling2 OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enWireStep_INIT:
|
||||
//Return Valves
|
||||
bHorStrokeWire2Fw := FALSE;
|
||||
gbOuStretchWire2 := FALSE;
|
||||
gbOuCloseWireGrippers2 := FALSE;
|
||||
IF gbInHorStrokeBwWire2 THEN
|
||||
bVerStrokeWire2Fw := FALSE;
|
||||
END_IF
|
||||
IF NOT gbOuCloseWireGrippers2 AND gbInVertStrokeBwWire2 AND gbInHorStrokeBwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_WAIT_WIRE;
|
||||
END_IF
|
||||
|
||||
//Wait for Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_WIRE:
|
||||
gbOuStretchWire2 := FALSE;
|
||||
IF gbInWireDistributorLane2 AND (enStateWire = enWire_BENT2) AND
|
||||
(enStepWirefeed = enWireStep_WAIT_WIRE_PICKED) THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_INSERT_HDL;
|
||||
END_IF
|
||||
|
||||
//Insert Hadling
|
||||
//---------------------------
|
||||
enWireHandlingStep_INSERT_HDL:
|
||||
bHorStrokeWire2Fw := TRUE;
|
||||
IF gbInHorStrokeFwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_PRESTRETCH;
|
||||
END_IF
|
||||
|
||||
//Prestrech Gripper
|
||||
//---------------------------
|
||||
enWireHandlingStep_PRESTRETCH:
|
||||
gbOuStretchWire2 := TRUE;
|
||||
IF TON_Gripper2Prestreched.Q THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_PICK_WIRE;
|
||||
END_IF
|
||||
|
||||
//Pick Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_PICK_WIRE:
|
||||
gbOuCloseWireGrippers2 := TRUE;
|
||||
IF TON_Wiregrippers2Closed.Q THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_WAIT_OPEN_D;
|
||||
gbOuStretchWire2 := FALSE;
|
||||
END_IF
|
||||
|
||||
//Wait for Distributor opended
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_OPEN_D:
|
||||
IF (enStepWirefeed = enWireStep_WAIT_WIRE_AWAY) THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_RETURN_HDL;
|
||||
END_IF
|
||||
|
||||
//Return Handling from Wiredistributor
|
||||
//---------------------------
|
||||
enWireHandlingStep_RETURN_HDL:
|
||||
bHorStrokeWire2Fw := FALSE;
|
||||
IF gbInHorStrokeBwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_LIFT_WIRE;
|
||||
END_IF
|
||||
|
||||
//Lift Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_LIFT_WIRE:
|
||||
bVerStrokeWire2Fw := TRUE;
|
||||
IF gbInVertStrokeFwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_WAIT_2ndWIRE;
|
||||
END_IF
|
||||
|
||||
//Wait for 2nd Wire finished
|
||||
//---------------------------
|
||||
enWireHandlingStep_WAIT_2ndWIRE:
|
||||
IF EDGEPOS (gManualCommands.bCancelPocess) THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_OPEN_GRIPPER;
|
||||
END_IF
|
||||
|
||||
//Heat Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_HEAT_WIRE:
|
||||
|
||||
|
||||
//Insert Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_INSERT_WIRE:
|
||||
bHorStrokeWire2Fw := TRUE;
|
||||
IF (enStepWirehandling1 = enWireHandlingStep_COOL_WIRE) THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_COOL_WIRE;
|
||||
END_IF
|
||||
|
||||
//Cool Wire
|
||||
//---------------------------
|
||||
enWireHandlingStep_COOL_WIRE:
|
||||
|
||||
//Open Grippers
|
||||
//---------------------------
|
||||
enWireHandlingStep_OPEN_GRIPPER:
|
||||
gbOuCloseWireGrippers2 := FALSE;
|
||||
IF NOT TOF_Wiregrippers2Closed.Q THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_RETURN_HDL2;
|
||||
END_IF
|
||||
|
||||
//Return Handling from Wiredistributor
|
||||
//---------------------------
|
||||
enWireHandlingStep_RETURN_HDL2:
|
||||
bHorStrokeWire2Fw := FALSE;
|
||||
IF gbInHorStrokeBwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_SINK_HDL;
|
||||
END_IF
|
||||
|
||||
//Move Down
|
||||
//---------------------------
|
||||
enWireHandlingStep_SINK_HDL:
|
||||
bVerStrokeWire2Fw := FALSE;
|
||||
IF gbInVertStrokeBwWire2 THEN
|
||||
enStepWirehandling2 := enWireHandlingStep_INIT;
|
||||
END_IF
|
||||
|
||||
END_CASE;
|
||||
|
||||
|
||||
//ShiftBelt
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepBelt OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enBeltStep_INIT:
|
||||
IF (enBladetype <> enBlade_None) THEN
|
||||
lAxisLane.Para.rPosition := grBladewidth[enBladetype];
|
||||
IF (lAxisLane.Para.rPosition > -10) THEN
|
||||
lAxisLane.Para.rPosition := grBladewidth[enBlade_7789_Z07];
|
||||
END_IF;
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityEmpty;
|
||||
lAxisLane.Move.bAbsolute:= TRUE;
|
||||
enStepBelt := enBeltStep_ADJUST_LANE;
|
||||
END_IF
|
||||
|
||||
//Adjust Lane
|
||||
//---------------------------
|
||||
enBeltStep_ADJUST_LANE:
|
||||
IF NOT lAxisLane.Move.bAbsolute THEN
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
lAxisBelt.Para.rPosition := grBladeStartPos[enBladetype];
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityEmpty;
|
||||
lAxisBelt.Move.bAbsolute:= TRUE;
|
||||
enStepBelt := enBeltStep_MOVE_TO_LOADPOS;
|
||||
enLastBladetype := enBladetype;
|
||||
usActBladesInFrame := 1;
|
||||
END_IF
|
||||
|
||||
//Move to Loadpos
|
||||
//---------------------------
|
||||
enBeltStep_MOVE_TO_LOADPOS:
|
||||
IF NOT lAxisBelt.Move.bAbsolute THEN
|
||||
udTimeLastCycle := gudUnixTimeUTC - udStartTime;
|
||||
udStartTime := gudUnixTimeUTC;
|
||||
enStepBelt := enBeltStep_WAIT_LOADED;
|
||||
END_IF
|
||||
|
||||
//Wait Belt Loaded
|
||||
//---------------------------
|
||||
enBeltStep_WAIT_LOADED:
|
||||
//FixMe not with Robot !!!!
|
||||
IF (enBladetype <> enLastBladetype) THEN
|
||||
udActualFramecount ACCESS ADR (gudFramecount[enBladetype]);
|
||||
lrActualWeldpos ACCESS ADR (grBladeWeldPos[enBladetype]);
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
lAxisLane.Para.rPosition := grBladewidth[enBladetype];
|
||||
lAxisLane.Move.bAbsolute:= TRUE;
|
||||
enStepBelt := enBeltStep_ADJUST_LANE;
|
||||
END_IF
|
||||
bBladesUp := gbBladePoleUp[enBladetype];
|
||||
|
||||
IF TON_WaitShiftBelt.Q AND (usActBladesInFrame <= gusBladesInFrame[enBladetype]) THEN
|
||||
usActBladesInFrame := usActBladesInFrame + 1;
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityShift;
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
lAxisBelt.Para.rDistance := - grBladeShiftwidth[enBladetype];
|
||||
lAxisBelt.Move.bAdditive := TRUE;
|
||||
END_IF
|
||||
IF (EDGEPOS (gManualCommands.bFrameLoaded) OR EDGEPOS (gbInBladeLoaded)) AND (usActBladesInFrame > gusBladesInFrame[enBladetype]) THEN
|
||||
enStepBelt := enBeltStep_MOVE_TO_WELDPOS;
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityLoaded;
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
lAxisBelt.Para.rPosition := grBladeWeldPos[enBladetype];
|
||||
lAxisBelt.Move.bAbsolute:= TRUE;
|
||||
END_IF
|
||||
|
||||
//Move to Loadpos
|
||||
//---------------------------
|
||||
enBeltStep_MOVE_TO_WELDPOS:
|
||||
IF NOT lAxisBelt.Move.bAbsolute THEN
|
||||
enStepBelt := enBeltStep_WAIT_WELDED;
|
||||
END_IF
|
||||
|
||||
//Wait for Wire Welded
|
||||
//---------------------------
|
||||
enBeltStep_WAIT_WELDED:
|
||||
IF (enStepWirehandling1 = enWireHandlingStep_RETURN_HDL2) THEN
|
||||
enStepBelt := enBeltStep_WAIT_ALL_RETURNED;
|
||||
END_IF
|
||||
|
||||
//Insert Hadling
|
||||
//---------------------------
|
||||
enBeltStep_WAIT_ALL_RETURNED:
|
||||
IF (gbInHorStrokeBwWire1 OR gbInVertStrokeBwWire1) AND
|
||||
(gbInHorStrokeBwWire2 OR gbInVertStrokeBwWire2) THEN
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityEmpty;
|
||||
lAxisBelt.Para.rDistance := -5000;
|
||||
lAxisBelt.Move.bAdditive := TRUE;
|
||||
enStepBelt := enBeltStep_EJECT_FRAME;
|
||||
END_IF
|
||||
|
||||
//EJECT FRAME
|
||||
//---------------------------
|
||||
enBeltStep_EJECT_FRAME:
|
||||
IF NOT lAxisBelt.Move.bAdditive AND lAxisBelt.Status.bStandstill THEN
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityEmpty;
|
||||
lAxisBelt.Para.usDirection := mcNEGATIVE_DIR;
|
||||
gudFramecount[enBladetype] := gudFramecount[enBladetype] + 1;
|
||||
gudOverallFramecount := gudOverallFramecount + 1;
|
||||
gBBCLog.udProdID := gudUnixTimeUTC;
|
||||
gBBCLog.udProdNr := enBladetype;
|
||||
gBBCLog.udCount := gusBladesInFrame[enBladetype];
|
||||
gBBCLog.udType := 2; //Sparerib
|
||||
gBBCLog.udLotNr := 99; //LK Nr
|
||||
gBBCLog.bLog := TRUE;
|
||||
enStepBelt := enBeltStep_INIT;
|
||||
END_IF
|
||||
|
||||
END_CASE;
|
||||
END_IF;
|
||||
|
||||
|
||||
|
||||
|
||||
IF (enStepBelt = enBeltStep_EJECT_FRAME) THEN
|
||||
giOuPulseDurationPWM1 := -22500;
|
||||
giOuPulseDurationPWM2 := -22500;
|
||||
ELSE
|
||||
giOuPulseDurationPWM1 := 0;
|
||||
giOuPulseDurationPWM2 := 0;
|
||||
END_IF
|
||||
|
||||
//Control Valves with 2 Hs
|
||||
gbOuHorStrokeFwWire1 := bHorStrokeWire1Fw;
|
||||
gbOuHorStrokeBwWire1 := NOT bHorStrokeWire1Fw;
|
||||
gbOuVertStrokeFwWire1 := bVerStrokeWire1Fw;
|
||||
gbOuVertStrokeBwWire1 := NOT bVerStrokeWire1Fw;
|
||||
gbOuHorStrokeFwWire2 := bHorStrokeWire2Fw;
|
||||
gbOuHorStrokeBwWire2 := NOT bHorStrokeWire2Fw;
|
||||
gbOuVertStrokeFwWire2 := bVerStrokeWire2Fw;
|
||||
gbOuVertStrokeBwWire2 := NOT bVerStrokeWire2Fw;
|
||||
|
||||
gbOuWireDistributorLane1 := NOT bWireLane12;
|
||||
gbOuWireDistributorLane2 := bWireLane12;
|
||||
|
||||
gbOuSetStrokeBwWire1 := bBladesUp;
|
||||
gbOuSetStrokeFwWire1 := NOT bBladesUp;
|
||||
gbOuSetStrokeBwWire2 := bBladesUp;
|
||||
gbOuSetStrokeFwWire2 := NOT bBladesUp;
|
||||
|
||||
//Visu Buttons
|
||||
usStateBtBeltLoaded := BOOL_TO_USINT (enStepBelt <> enBeltStep_WAIT_LOADED);
|
||||
usStateBtLoadWire := BOOL_TO_USINT (enStepWirefeed <> enWireStep_INIT);
|
||||
usStateBtWireHeated := BOOL_TO_USINT (enStepWirehandling1 <> enWireHandlingStep_HEAT_WIRE);
|
||||
usStateBtWireWelded := BOOL_TO_USINT (enStepWirehandling1 <> enWireHandlingStep_INSERT_WIRE);
|
||||
//Hide Button for Error Reset
|
||||
usHideButErrorReset := (lAxisWire1.Error.uiID = 0) AND
|
||||
(lAxisWire2.Error.uiID = 0) AND
|
||||
(lAxisBend1.Error.uiID = 0) AND
|
||||
(lAxisBend2.Error.uiID = 0) AND
|
||||
(lAxisLane.Error.uiID = 0) AND
|
||||
(lAxisBelt.Error.uiID = 0);
|
||||
|
||||
giOuWireheatCurrent := REAL_TO_INT (rCurrent * rCurrentFactor);
|
||||
giOuWireheatVoltage := REAL_TO_INT (rVoltage * rVoltageFactor);
|
||||
IF (giOuWireheatCurrent > 16383) THEN
|
||||
giOuWireheatCurrent := 16383;
|
||||
END_IF
|
||||
IF (giOuWireheatVoltage > 16383) THEN
|
||||
giOuWireheatVoltage := 16383;
|
||||
END_IF
|
||||
gbOuWireheatOn1 := (((enStepWirehandling1 = enWireHandlingStep_HEAT_WIRE) AND (enStepWirehandling2 = enWireHandlingStep_HEAT_WIRE)) OR
|
||||
(enStepWirehandling1 = enWireHandlingStep_INSERT_WIRE)) AND
|
||||
((gMachine.enMode = enMACH_AUTOMATIC) OR (gMachine.enMode = enMACH_MANUAL));
|
||||
|
||||
gbOuSmokeFanOn := ((enStepWirehandling1 = enWireHandlingStep_INSERT_WIRE) OR (enStepWirehandling2 = enWireHandlingStep_INSERT_WIRE) OR
|
||||
(enStepWirehandling1 = enWireHandlingStep_COOL_WIRE) OR (enStepWirehandling2 = enWireHandlingStep_COOL_WIRE)) AND
|
||||
((gMachine.enMode = enMACH_AUTOMATIC) OR (gMachine.enMode = enMACH_MANUAL));
|
||||
|
||||
IF EDGEPOS (usErrorReset = 1) THEN
|
||||
lAxisWire1.Error.bAcknowledge := (lAxisWire1.Error.uiID > 0);
|
||||
lAxisWire2.Error.bAcknowledge := (lAxisWire2.Error.uiID > 0);
|
||||
lAxisBend1.Error.bAcknowledge := (lAxisBend1.Error.uiID > 0);
|
||||
lAxisBend2.Error.bAcknowledge := (lAxisBend2.Error.uiID > 0);
|
||||
lAxisLane.Error.bAcknowledge := (lAxisLane.Error.uiID > 0);
|
||||
lAxisBelt.Error.bAcknowledge := (lAxisBelt.Error.uiID > 0);
|
||||
usErrorReset := 0;
|
||||
END_IF
|
||||
END_PROGRAM
|
||||
79
Logical/Axises/GrillCtrl/GrillCtrllInit.st
Normal file
79
Logical/Axises/GrillCtrl/GrillCtrllInit.st
Normal file
@@ -0,0 +1,79 @@
|
||||
PROGRAM _INIT
|
||||
lAxisWire1 ACCESS ADR (gAxis[0]);
|
||||
lAxisWire2 ACCESS ADR (gAxis[1]);
|
||||
lAxisBelt ACCESS ADR (gAxis[2]);
|
||||
lAxisLane ACCESS ADR (gAxis[3]);
|
||||
lAxisBend1 ACCESS ADR (gAxis[4]);
|
||||
lAxisBend2 ACCESS ADR (gAxis[5]);
|
||||
|
||||
|
||||
//Prepare Trace (later from Dataobject)
|
||||
strcpy (ADR (gMAxTrace.Trace_Config.DatObj.Device), ADR ("logfiles"));
|
||||
strcpy (ADR (gMAxTrace.Trace_Config.DatObj.Name), ADR ("ParTrace"));
|
||||
gMAxTrace.Trace_Config.DatObj.Type := mcFILE + mcADD_DATE_TIME;
|
||||
|
||||
//Setup Trace
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[0].Axis := ADR (gAxWire1);
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[0].ParID := ACP10PAR_PCTRL_V_SET;
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[1].Axis := ADR (gAxWire2);
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[1].ParID := ACP10PAR_PCTRL_V_SET;
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[2].Axis := ADR (gAxWire1);
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[2].ParID := ACP10PAR_PCTRL_S_ACT;
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[3].Axis := ADR (gAxWire2);
|
||||
gMAxTrace.Trace_Config.ParTrace.Parameter[3].ParID := ACP10PAR_PCTRL_S_ACT ; //ACP10PAR_PCTRL_S_ACT
|
||||
gMAxTrace.Trace_Config.ParTrace.Trigger.Axis := ADR (gAxWire1);
|
||||
gMAxTrace.Trace_Config.ParTrace.Trigger.ParID := ACP10PAR_PCTRL_V_SET;
|
||||
gMAxTrace.Trace_Config.ParTrace.Trigger.Event:= mcOUT_WINDOW;
|
||||
gMAxTrace.Trace_Config.ParTrace.Trigger.Threshold := 1;
|
||||
gMAxTrace.Trace_Config.ParTrace.Trigger.Window := 1;
|
||||
gMAxTrace.Trace_Config.ParTrace.Type := mcMULTI_AXIS_TRACE;
|
||||
gMAxTrace.Trace_Config.ParTrace.TracingTime := 60;
|
||||
gMAxTrace.Trace_Config.ParTrace.SamplingTime := 0.08;
|
||||
gMAxTrace.Trace_Config.ParTrace.Delay := 0.0;
|
||||
gMAxTrace.Trace_Config.ParTrace.NetTriggerDelay := 0;
|
||||
|
||||
udStartTime := gudUnixTimeUTC;
|
||||
|
||||
//Parameter
|
||||
rCurrentFactor := 368;
|
||||
rCurrent := 19.5;
|
||||
rVoltageFactor := 975;
|
||||
rVoltage := 8;
|
||||
lAxisWire1.Para.rVelocity := 80;
|
||||
lAxisWire1.Para.rAcceleration := 500;
|
||||
lAxisWire1.Para.rDeceleration := 50000;
|
||||
lAxisWire1.Para.rPosition := 100;
|
||||
lAxisWire1.Para.rDistance := 340;
|
||||
lAxisWire1.Para.rJogVelocity := 40;
|
||||
|
||||
lAxisLane.Para.rVelocity := 150;
|
||||
lAxisLane.Para.rAcceleration := 250;
|
||||
lAxisLane.Para.rDeceleration := 250;
|
||||
lAxisLane.Para.rJogVelocity := 100;
|
||||
|
||||
lAxisBelt.Para.rVelocity := rBeltVelocityEmpty;
|
||||
lAxisBelt.Para.rJogVelocity := 1500;
|
||||
lAxisBelt.Para.rAcceleration := 20000; //30000
|
||||
lAxisBelt.Para.rDeceleration := 20000; //30000
|
||||
lAxisBelt.Para.rDistance := -160;
|
||||
lAxisBelt.Para.udAxisModPosPeriod := 16200;
|
||||
lAxisBelt.Para.udAxisModPosFactor := 1;
|
||||
|
||||
lAxisBend1.Para.rVelocity := 300;
|
||||
lAxisBend1.Para.rJogVelocity := 100;
|
||||
lAxisBend1.Para.rAcceleration := 5000;
|
||||
lAxisBend1.Para.rDeceleration := 5000;
|
||||
|
||||
lAxisBend2.Para.rVelocity := 300;
|
||||
lAxisBend2.Para.rJogVelocity := 100;
|
||||
lAxisBend2.Para.rAcceleration := 5000;
|
||||
lAxisBend2.Para.rDeceleration := 5000;
|
||||
|
||||
//BladeSetup
|
||||
|
||||
IF enBladetype = enBlade_None THEN
|
||||
enBladetype := enBlade_7789_Z07;
|
||||
END_IF
|
||||
udActualFramecount ACCESS ADR (gudFramecount[enBladetype]);
|
||||
lrActualWeldpos ACCESS ADR (grBladeWeldPos[enBladetype]);
|
||||
END_PROGRAM
|
||||
10
Logical/Axises/GrillCtrl/IEC.prg
Normal file
10
Logical/Axises/GrillCtrl/IEC.prg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">GrillCtrlCyclic.st</File>
|
||||
<File>GrillCtrllInit.st</File>
|
||||
<File Description="Local data types" Private="true">GrillCtrl.typ</File>
|
||||
<File Description="Local variables" Private="true">GrillCtrl.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
161
Logical/Axises/GrillValues.txt
Normal file
161
Logical/Axises/GrillValues.txt
Normal file
@@ -0,0 +1,161 @@
|
||||
//7789_Z07 swapped
|
||||
gbBladePoleUp[enBlade_7789_Z07] := TRUE;
|
||||
gusBladesInFrame[enBlade_7789_Z07] := 19;
|
||||
grBladewidth[enBlade_7789_Z07] := -410;
|
||||
grBladeShiftwidth[enBlade_7789_Z07] := 150;
|
||||
grBladeStartPos[enBlade_7789_Z07] := 5550;
|
||||
grBladeWeldPos[enBlade_7789_Z07] := 15995; //16038;
|
||||
|
||||
//7789_Z08 swapped
|
||||
gbBladePoleUp[enBlade_7789_Z08] := FALSE;
|
||||
gusBladesInFrame[enBlade_7789_Z08] := 19;
|
||||
grBladewidth[enBlade_7789_Z08] := -410;
|
||||
grBladeShiftwidth[enBlade_7789_Z08] := 150;
|
||||
grBladeStartPos[enBlade_7789_Z08] := 5550;
|
||||
grBladeWeldPos[enBlade_7789_Z08] := 15988; // 16015;// 16053; //16028;
|
||||
|
||||
//7789_Z09 swapped
|
||||
gbBladePoleUp[enBlade_7789_Z09] := TRUE;
|
||||
gusBladesInFrame[enBlade_7789_Z09] := 19;
|
||||
grBladewidth[enBlade_7789_Z09] := -410;
|
||||
grBladeShiftwidth[enBlade_7789_Z09] := 150;
|
||||
grBladeStartPos[enBlade_7789_Z09] := 5550;
|
||||
grBladeWeldPos[enBlade_7789_Z09] := 16029; //16038;
|
||||
|
||||
//7789_Z10 swapped
|
||||
gbBladePoleUp[enBlade_7789_Z10] := FALSE;
|
||||
gusBladesInFrame[enBlade_7789_Z10] := 19;
|
||||
grBladewidth[enBlade_7789_Z10] := -410;
|
||||
grBladeShiftwidth[enBlade_7789_Z10] := 150;
|
||||
grBladeStartPos[enBlade_7789_Z10] := 5550;
|
||||
grBladeWeldPos[enBlade_7789_Z10] := 16028;
|
||||
|
||||
//7617_Z04 swapped
|
||||
gbBladePoleUp[enBlade_7617_Z04] := TRUE;
|
||||
gusBladesInFrame[enBlade_7617_Z04] := 17;
|
||||
grBladewidth[enBlade_7617_Z04] := -720;
|
||||
grBladeShiftwidth[enBlade_7617_Z04] := 165;
|
||||
grBladeStartPos[enBlade_7617_Z04] := 2255;
|
||||
grBladeWeldPos[enBlade_7617_Z04] := 12750; //12759;
|
||||
|
||||
//7617_Z05 swapped
|
||||
gbBladePoleUp[enBlade_7617_Z05] := FALSE;
|
||||
gusBladesInFrame[enBlade_7617_Z05] := 17;
|
||||
grBladewidth[enBlade_7617_Z05] := -580;
|
||||
grBladeShiftwidth[enBlade_7617_Z05] := 165;
|
||||
grBladeStartPos[enBlade_7617_Z05] := 2255;
|
||||
grBladeWeldPos[enBlade_7617_Z05] := 12735;
|
||||
|
||||
//7618_Z04 swapped
|
||||
gbBladePoleUp[enBlade_7618_Z04] := FALSE;
|
||||
gusBladesInFrame[enBlade_7618_Z04] := 17;
|
||||
grBladewidth[enBlade_7618_Z04] := -330;
|
||||
grBladeShiftwidth[enBlade_7618_Z04] := 165;
|
||||
grBladeStartPos[enBlade_7618_Z04] := 2255;
|
||||
grBladeWeldPos[enBlade_7618_Z04] := 12754; //12735;
|
||||
|
||||
//7618_Z05 swapped
|
||||
gbBladePoleUp[enBlade_7618_Z05] := TRUE;
|
||||
gusBladesInFrame[enBlade_7618_Z05] := 17;
|
||||
grBladewidth[enBlade_7618_Z05] := -195;
|
||||
grBladeShiftwidth[enBlade_7618_Z05] := 165;
|
||||
grBladeStartPos[enBlade_7618_Z05] := 2255;
|
||||
grBladeWeldPos[enBlade_7618_Z05] := 12880.0;
|
||||
|
||||
//7619_Z04 swapped
|
||||
gbBladePoleUp[enBlade_7619_Z04] := FALSE;
|
||||
gusBladesInFrame[enBlade_7619_Z04] := 17;
|
||||
grBladewidth[enBlade_7619_Z04] := -314;
|
||||
grBladeShiftwidth[enBlade_7619_Z04] := 165;
|
||||
grBladeStartPos[enBlade_7619_Z04] := 2255;
|
||||
grBladeWeldPos[enBlade_7619_Z04] := 12870; //12818; // 12758.0; //12724;
|
||||
|
||||
//7619_Z05 swapped
|
||||
gbBladePoleUp[enBlade_7619_Z05] := TRUE;
|
||||
gusBladesInFrame[enBlade_7619_Z05] := 17;
|
||||
grBladewidth[enBlade_7619_Z05] := -195;
|
||||
grBladeShiftwidth[enBlade_7619_Z05] := 165;
|
||||
grBladeStartPos[enBlade_7619_Z05] := 2255;
|
||||
grBladeWeldPos[enBlade_7619_Z05] := 12740.0;
|
||||
|
||||
//7620_Z04 swapped
|
||||
gbBladePoleUp[enBlade_7620_Z04] := TRUE;
|
||||
gusBladesInFrame[enBlade_7620_Z04] := 17;
|
||||
grBladewidth[enBlade_7620_Z04] := -720;
|
||||
grBladeShiftwidth[enBlade_7620_Z04] := 165;
|
||||
grBladeStartPos[enBlade_7620_Z04] := 2255;
|
||||
grBladeWeldPos[enBlade_7620_Z04] := 12802; // 12730;
|
||||
|
||||
//7620_Z05 swapped
|
||||
gbBladePoleUp[enBlade_7620_Z05] := FALSE;
|
||||
gusBladesInFrame[enBlade_7620_Z05] := 17;
|
||||
grBladewidth[enBlade_7620_Z05] := -580;
|
||||
grBladeShiftwidth[enBlade_7620_Z05] := 165;
|
||||
grBladeStartPos[enBlade_7620_Z05] := 2255;
|
||||
grBladeWeldPos[enBlade_7620_Z05] := 12872; // 12776.0; //12735;
|
||||
|
||||
|
||||
//7733_Z01 swapped
|
||||
gbBladePoleUp[enBlade_7733_Z01] := FALSE;
|
||||
gusBladesInFrame[enBlade_7733_Z01] := 19;
|
||||
grBladewidth[enBlade_7733_Z01] := -650;
|
||||
grBladeShiftwidth[enBlade_7733_Z01] := 150;
|
||||
grBladeStartPos[enBlade_7733_Z01] := 5550;
|
||||
grBladeWeldPos[enBlade_7733_Z01] := 16054;
|
||||
|
||||
//7733_Z03 swapped with 7736_Z03
|
||||
gbBladePoleUp[enBlade_7733_Z03] := FALSE;
|
||||
gusBladesInFrame[enBlade_7733_Z03] := 19;
|
||||
grBladewidth[enBlade_7733_Z03] := -480;
|
||||
grBladeShiftwidth[enBlade_7733_Z03] := 150;
|
||||
grBladeStartPos[enBlade_7733_Z03] := 5550;
|
||||
grBladeWeldPos[enBlade_7733_Z03] := 16007; //16031;
|
||||
|
||||
//7734_Z01 swapped with 35_Z01
|
||||
gbBladePoleUp[enBlade_7734_Z01] := FALSE; //TRUE;
|
||||
gusBladesInFrame[enBlade_7734_Z01] := 16;
|
||||
grBladewidth[enBlade_7734_Z01] := -555;
|
||||
grBladeShiftwidth[enBlade_7734_Z01] := 180;// 195; //180;
|
||||
grBladeStartPos[enBlade_7734_Z01] := 15000; //11676; //15000;
|
||||
grBladeWeldPos[enBlade_7734_Z01] := 9595; //6376.0; //6404; //9595;
|
||||
|
||||
//7734_Z03 swapped with 35_Z03
|
||||
gbBladePoleUp[enBlade_7734_Z03] := FALSE;
|
||||
gusBladesInFrame[enBlade_7734_Z03] := 17;
|
||||
grBladewidth[enBlade_7734_Z03] := -304;
|
||||
grBladeShiftwidth[enBlade_7734_Z03] := 165;
|
||||
grBladeStartPos[enBlade_7734_Z03] := 2255;
|
||||
grBladeWeldPos[enBlade_7734_Z03] := 12723; //12735; //12767; //12794;
|
||||
|
||||
//7735_Z01 (swappted wicht 34_z01)
|
||||
gbBladePoleUp[enBlade_7735_Z01] := TRUE; //FALSE;
|
||||
gusBladesInFrame[enBlade_7735_Z01] := 16;
|
||||
grBladewidth[enBlade_7735_Z01] := -555;
|
||||
grBladeShiftwidth[enBlade_7735_Z01] := 194; //180;
|
||||
grBladeStartPos[enBlade_7735_Z01] := 11676; //15000;
|
||||
grBladeWeldPos[enBlade_7735_Z01] := 6376.0; //9595;
|
||||
|
||||
//7735_Z03 swapped 7734_Z03
|
||||
gbBladePoleUp[enBlade_7735_Z03] := TRUE;
|
||||
gusBladesInFrame[enBlade_7735_Z03] := 17;
|
||||
grBladewidth[enBlade_7735_Z03] := -304;
|
||||
grBladeShiftwidth[enBlade_7735_Z03] := 165;
|
||||
grBladeStartPos[enBlade_7735_Z03] := 2255;
|
||||
grBladeWeldPos[enBlade_7735_Z03] := 12888;// 12740; //12794;
|
||||
|
||||
//7736_Z01
|
||||
gbBladePoleUp[enBlade_7736_Z01] := TRUE;
|
||||
gusBladesInFrame[enBlade_7736_Z01] := 19;
|
||||
grBladewidth[enBlade_7736_Z01] := -650;
|
||||
grBladeShiftwidth[enBlade_7736_Z01] := 150;
|
||||
grBladeStartPos[enBlade_7736_Z01] := 5550;
|
||||
grBladeWeldPos[enBlade_7736_Z01] := 16054;
|
||||
|
||||
//7736_Z03 swapped with 7733_Z03
|
||||
gbBladePoleUp[enBlade_7736_Z03] := TRUE;
|
||||
gusBladesInFrame[enBlade_7736_Z03] := 19;
|
||||
grBladewidth[enBlade_7736_Z03] := -480;
|
||||
grBladeShiftwidth[enBlade_7736_Z03] := 150;
|
||||
grBladeStartPos[enBlade_7736_Z03] := 5550;
|
||||
grBladeWeldPos[enBlade_7736_Z03] := 16021; //16047;
|
||||
|
||||
11
Logical/Axises/Init/Package.pkg
Normal file
11
Logical/Axises/Init/Package.pkg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="DataObject" Language="Ax">gaxwirei</Object>
|
||||
<Object Type="DataObject" Language="Ax">gaxbelti</Object>
|
||||
<Object Type="DataObject" Language="Ax">gaxlanei</Object>
|
||||
<Object Type="DataObject" Language="Ax">gaxbend1i</Object>
|
||||
<Object Type="DataObject" Language="Ax">gaxbend2i</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
7
Logical/Axises/Init/gaxbelti/Ax.dob
Normal file
7
Logical/Axises/Init/gaxbelti/Ax.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxbelti.ax</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
170
Logical/Axises/Init/gaxbelti/gaxbelti.ax
Normal file
170
Logical/Axises/Init/gaxbelti/gaxbelti.ax
Normal file
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.0.14.206?>
|
||||
<InitParameter Version="2.34.1" NcSwId="acp10">
|
||||
<Group ID="ACP10AXIS_typ">
|
||||
<Group ID="dig_in">
|
||||
<Group ID="level">
|
||||
<Parameter ID="reference" Value="ncACTIV_HI" />
|
||||
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger1" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger2" Value="ncACTIV_HI" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="encoder_if">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="count_dir" Value="ncSTANDARD" />
|
||||
<Group ID="scaling">
|
||||
<Group ID="load">
|
||||
<Parameter ID="units" Value="1200" Description="Units at the load [1/10 mm]" />
|
||||
<Parameter ID="rev_motor" Value="1" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="limit">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
<Parameter ID="t_jolt" Value="0" />
|
||||
<Parameter ID="t_in_pos" Value="0" />
|
||||
<Parameter ID="pos_sw_end" Value="2000000000" />
|
||||
<Parameter ID="neg_sw_end" Value="-2000000000" />
|
||||
<Parameter ID="ds_warning" Value="1000.0" />
|
||||
<Parameter ID="ds_stop" Value="2000.0" />
|
||||
<Parameter ID="a_stop" Value="1.0e30" />
|
||||
<Parameter ID="dv_stop" Value="0" />
|
||||
<Parameter ID="dv_stop_mode" Value="ncOFF" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="controller">
|
||||
<Parameter ID="mode" Value="ncPOSITION" />
|
||||
<Group ID="position">
|
||||
<Parameter ID="kv" Value="50" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_predict" Value="0.020000" />
|
||||
<Parameter ID="t_total" Value="0.020000" />
|
||||
<Parameter ID="p_max" Value="10000" />
|
||||
<Parameter ID="i_max" Value="0" />
|
||||
</Group>
|
||||
<Group ID="speed">
|
||||
<Parameter ID="kv" Value="2.0" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_filter" Value="0.0" />
|
||||
<Group ID="isq_filter1">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter2">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter3">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="uf">
|
||||
<Parameter ID="type" Value="ncLINEAR" />
|
||||
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
|
||||
<Parameter ID="u0" Value="0" />
|
||||
<Parameter ID="un" Value="0" />
|
||||
<Parameter ID="fn" Value="50.0" />
|
||||
<Parameter ID="k_f_slip" Value="0" />
|
||||
</Group>
|
||||
<Group ID="ff">
|
||||
<Parameter ID="torque_load" Value="0.0" />
|
||||
<Parameter ID="torque_pos" Value="0.0" />
|
||||
<Parameter ID="torque_neg" Value="0.0" />
|
||||
<Parameter ID="kv_torque" Value="0.0" />
|
||||
<Parameter ID="inertia" Value="0.0" />
|
||||
<Parameter ID="t_filter_a" Value="0.0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="move">
|
||||
<Group ID="stop">
|
||||
<Group ID="parameter[0]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[1]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[2]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[3]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="quickstop">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
<Group ID="drive_error">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="homing">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="s" Value="0" />
|
||||
<Parameter ID="v_switch" Value="1000.0" />
|
||||
<Parameter ID="v_trigger" Value="500" />
|
||||
<Parameter ID="a" Value="50000" />
|
||||
<Parameter ID="mode" Value="ncABS_SWITCH" />
|
||||
<Parameter ID="edge_sw" Value="ncNEGATIVE" />
|
||||
<Parameter ID="start_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="trigg_dir" Value="ncNEGATIVE" />
|
||||
<Parameter ID="ref_pulse" Value="ncOFF" />
|
||||
<Parameter ID="fix_dir" Value="ncOFF" />
|
||||
<Parameter ID="tr_s_block" Value="0" />
|
||||
<Parameter ID="torque_lim" Value="0" />
|
||||
<Parameter ID="ds_block" Value="0" />
|
||||
<Parameter ID="ds_stop" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="basis">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="message">
|
||||
<Group ID="text">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="format" Value="ncBREAK" />
|
||||
<Parameter ID="columns" Value="80" />
|
||||
<Parameter ID="data_modul" Value="acp10etxde" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</InitParameter>
|
||||
7
Logical/Axises/Init/gaxbend1i/Ax.dob
Normal file
7
Logical/Axises/Init/gaxbend1i/Ax.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxbend1i.ax</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
166
Logical/Axises/Init/gaxbend1i/gaxbend1i.ax
Normal file
166
Logical/Axises/Init/gaxbend1i/gaxbend1i.ax
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<InitParameter Version="2.34.1" NcSwId="acp10">
|
||||
<Group ID="ACP10AXIS_typ" Description="">
|
||||
<Group ID="dig_in">
|
||||
<Group ID="level">
|
||||
<Parameter ID="reference" Value="ncACTIV_HI" />
|
||||
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger1" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger2" Value="ncACTIV_HI" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="encoder_if">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="count_dir" Value="ncSTANDARD" />
|
||||
<Group ID="scaling">
|
||||
<Group ID="load">
|
||||
<Parameter ID="units" Value="180" />
|
||||
<Parameter ID="rev_motor" Value="1" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="limit">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
<Parameter ID="t_jolt" Value="0" />
|
||||
<Parameter ID="t_in_pos" Value="0" />
|
||||
<Parameter ID="pos_sw_end" Value="2000000000" />
|
||||
<Parameter ID="neg_sw_end" Value="-2000000000" />
|
||||
<Parameter ID="ds_warning" Value="500" />
|
||||
<Parameter ID="ds_stop" Value="1000" />
|
||||
<Parameter ID="a_stop" Value="1.0e30" />
|
||||
<Parameter ID="dv_stop" Value="0" />
|
||||
<Parameter ID="dv_stop_mode" Value="ncOFF" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="controller">
|
||||
<Parameter ID="mode" Value="ncPOSITION" />
|
||||
<Group ID="position">
|
||||
<Parameter ID="kv" Value="50" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_predict" Value="0.020000" />
|
||||
<Parameter ID="t_total" Value="0.020000" />
|
||||
<Parameter ID="p_max" Value="10000" />
|
||||
<Parameter ID="i_max" Value="0" />
|
||||
</Group>
|
||||
<Group ID="speed">
|
||||
<Parameter ID="kv" Value="2.0" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_filter" Value="0.0" />
|
||||
<Group ID="isq_filter1">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter2">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter3">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="uf">
|
||||
<Parameter ID="type" Value="ncLINEAR" />
|
||||
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
|
||||
<Parameter ID="u0" Value="0" />
|
||||
<Parameter ID="un" Value="0" />
|
||||
<Parameter ID="fn" Value="50.0" />
|
||||
<Parameter ID="k_f_slip" Value="0" />
|
||||
</Group>
|
||||
<Group ID="ff">
|
||||
<Parameter ID="torque_load" Value="0.0" />
|
||||
<Parameter ID="torque_pos" Value="0.0" />
|
||||
<Parameter ID="torque_neg" Value="0.0" />
|
||||
<Parameter ID="kv_torque" Value="0.0" />
|
||||
<Parameter ID="inertia" Value="0.0" />
|
||||
<Parameter ID="t_filter_a" Value="0.0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="move">
|
||||
<Group ID="stop">
|
||||
<Group ID="parameter[0]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[1]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[2]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[3]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="quickstop">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
<Group ID="drive_error">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="homing">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="s" Value="0" />
|
||||
<Parameter ID="v_switch" Value="350.0" />
|
||||
<Parameter ID="v_trigger" Value="100.0" />
|
||||
<Parameter ID="a" Value="50000" />
|
||||
<Parameter ID="mode" Value="ncABS_SWITCH" />
|
||||
<Parameter ID="edge_sw" Value="ncNEGATIVE" />
|
||||
<Parameter ID="start_dir" Value="ncNEGATIVE" />
|
||||
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="ref_pulse" Value="ncOFF" />
|
||||
<Parameter ID="tr_s_block" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="basis">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="message">
|
||||
<Group ID="text">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="format" Value="ncBREAK" />
|
||||
<Parameter ID="columns" Value="80" />
|
||||
<Parameter ID="data_modul" Value="acp10etxde" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</InitParameter>
|
||||
7
Logical/Axises/Init/gaxbend2i/Ax.dob
Normal file
7
Logical/Axises/Init/gaxbend2i/Ax.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxbend2i.ax</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
166
Logical/Axises/Init/gaxbend2i/gaxbend2i.ax
Normal file
166
Logical/Axises/Init/gaxbend2i/gaxbend2i.ax
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<InitParameter Version="2.34.1" NcSwId="acp10">
|
||||
<Group ID="ACP10AXIS_typ" Description="">
|
||||
<Group ID="dig_in">
|
||||
<Group ID="level">
|
||||
<Parameter ID="reference" Value="ncACTIV_HI" />
|
||||
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger1" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger2" Value="ncACTIV_HI" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="encoder_if">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="count_dir" Value="ncSTANDARD" />
|
||||
<Group ID="scaling">
|
||||
<Group ID="load">
|
||||
<Parameter ID="units" Value="180" />
|
||||
<Parameter ID="rev_motor" Value="1" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="limit">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
<Parameter ID="t_jolt" Value="0" />
|
||||
<Parameter ID="t_in_pos" Value="0" />
|
||||
<Parameter ID="pos_sw_end" Value="2000000000" />
|
||||
<Parameter ID="neg_sw_end" Value="-2000000000" />
|
||||
<Parameter ID="ds_warning" Value="500" />
|
||||
<Parameter ID="ds_stop" Value="1000" />
|
||||
<Parameter ID="a_stop" Value="1.0e30" />
|
||||
<Parameter ID="dv_stop" Value="0" />
|
||||
<Parameter ID="dv_stop_mode" Value="ncOFF" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="controller">
|
||||
<Parameter ID="mode" Value="ncPOSITION" />
|
||||
<Group ID="position">
|
||||
<Parameter ID="kv" Value="50" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_predict" Value="0.020000" />
|
||||
<Parameter ID="t_total" Value="0.020000" />
|
||||
<Parameter ID="p_max" Value="10000" />
|
||||
<Parameter ID="i_max" Value="0" />
|
||||
</Group>
|
||||
<Group ID="speed">
|
||||
<Parameter ID="kv" Value="2.0" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_filter" Value="0.0" />
|
||||
<Group ID="isq_filter1">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter2">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter3">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="uf">
|
||||
<Parameter ID="type" Value="ncLINEAR" />
|
||||
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
|
||||
<Parameter ID="u0" Value="0" />
|
||||
<Parameter ID="un" Value="0" />
|
||||
<Parameter ID="fn" Value="50.0" />
|
||||
<Parameter ID="k_f_slip" Value="0" />
|
||||
</Group>
|
||||
<Group ID="ff">
|
||||
<Parameter ID="torque_load" Value="0.0" />
|
||||
<Parameter ID="torque_pos" Value="0.0" />
|
||||
<Parameter ID="torque_neg" Value="0.0" />
|
||||
<Parameter ID="kv_torque" Value="0.0" />
|
||||
<Parameter ID="inertia" Value="0.0" />
|
||||
<Parameter ID="t_filter_a" Value="0.0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="move">
|
||||
<Group ID="stop">
|
||||
<Group ID="parameter[0]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[1]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[2]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[3]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="quickstop">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
<Group ID="drive_error">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="homing">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="s" Value="0" />
|
||||
<Parameter ID="v_switch" Value="350.0" />
|
||||
<Parameter ID="v_trigger" Value="100.0" />
|
||||
<Parameter ID="a" Value="50000" />
|
||||
<Parameter ID="mode" Value="ncABS_SWITCH" />
|
||||
<Parameter ID="edge_sw" Value="ncNEGATIVE" />
|
||||
<Parameter ID="start_dir" Value="ncNEGATIVE" />
|
||||
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="ref_pulse" Value="ncOFF" />
|
||||
<Parameter ID="tr_s_block" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="basis">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="message">
|
||||
<Group ID="text">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="format" Value="ncBREAK" />
|
||||
<Parameter ID="columns" Value="80" />
|
||||
<Parameter ID="data_modul" Value="acp10etxde" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</InitParameter>
|
||||
7
Logical/Axises/Init/gaxlanei/Ax.dob
Normal file
7
Logical/Axises/Init/gaxlanei/Ax.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxlanei.ax</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
166
Logical/Axises/Init/gaxlanei/gaxlanei.ax
Normal file
166
Logical/Axises/Init/gaxlanei/gaxlanei.ax
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<InitParameter Version="2.34.1" NcSwId="acp10">
|
||||
<Group ID="ACP10AXIS_typ" Description="">
|
||||
<Group ID="dig_in">
|
||||
<Group ID="level">
|
||||
<Parameter ID="reference" Value="ncACTIV_HI" />
|
||||
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger1" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger2" Value="ncACTIV_HI" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="encoder_if">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="count_dir" Value="ncSTANDARD" />
|
||||
<Group ID="scaling">
|
||||
<Group ID="load">
|
||||
<Parameter ID="units" Value="40" />
|
||||
<Parameter ID="rev_motor" Value="1" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="limit">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
<Parameter ID="t_jolt" Value="0" />
|
||||
<Parameter ID="t_in_pos" Value="0" />
|
||||
<Parameter ID="pos_sw_end" Value="0" />
|
||||
<Parameter ID="neg_sw_end" Value="-755" />
|
||||
<Parameter ID="ds_warning" Value="500" />
|
||||
<Parameter ID="ds_stop" Value="1000" />
|
||||
<Parameter ID="a_stop" Value="1.0e30" />
|
||||
<Parameter ID="dv_stop" Value="0" />
|
||||
<Parameter ID="dv_stop_mode" Value="ncOFF" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="controller">
|
||||
<Parameter ID="mode" Value="ncPOSITION" />
|
||||
<Group ID="position">
|
||||
<Parameter ID="kv" Value="50" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_predict" Value="0.020000" />
|
||||
<Parameter ID="t_total" Value="0.020000" />
|
||||
<Parameter ID="p_max" Value="10000" />
|
||||
<Parameter ID="i_max" Value="0" />
|
||||
</Group>
|
||||
<Group ID="speed">
|
||||
<Parameter ID="kv" Value="2.0" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_filter" Value="0.0" />
|
||||
<Group ID="isq_filter1">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter2">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter3">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="uf">
|
||||
<Parameter ID="type" Value="ncLINEAR" />
|
||||
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
|
||||
<Parameter ID="u0" Value="0" />
|
||||
<Parameter ID="un" Value="0" />
|
||||
<Parameter ID="fn" Value="50.0" />
|
||||
<Parameter ID="k_f_slip" Value="0" />
|
||||
</Group>
|
||||
<Group ID="ff">
|
||||
<Parameter ID="torque_load" Value="0.0" />
|
||||
<Parameter ID="torque_pos" Value="0.0" />
|
||||
<Parameter ID="torque_neg" Value="0.0" />
|
||||
<Parameter ID="kv_torque" Value="0.0" />
|
||||
<Parameter ID="inertia" Value="0.0" />
|
||||
<Parameter ID="t_filter_a" Value="0.0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="move">
|
||||
<Group ID="stop">
|
||||
<Group ID="parameter[0]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[1]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[2]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[3]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="quickstop">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
<Group ID="drive_error">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="homing">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="s" Value="0" />
|
||||
<Parameter ID="v_switch" Value="25.0" />
|
||||
<Parameter ID="v_trigger" Value="10.0" />
|
||||
<Parameter ID="a" Value="50000" />
|
||||
<Parameter ID="mode" Value="ncABS_SWITCH" />
|
||||
<Parameter ID="edge_sw" Value="ncPOSITIVE" />
|
||||
<Parameter ID="start_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="trigg_dir" Value="ncNEGATIVE" />
|
||||
<Parameter ID="ref_pulse" Value="ncOFF" />
|
||||
<Parameter ID="tr_s_block" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="basis">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="message">
|
||||
<Group ID="text">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="format" Value="ncBREAK" />
|
||||
<Parameter ID="columns" Value="80" />
|
||||
<Parameter ID="data_modul" Value="acp10etxde" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</InitParameter>
|
||||
7
Logical/Axises/Init/gaxwirei/Ax.dob
Normal file
7
Logical/Axises/Init/gaxwirei/Ax.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>gaxwirei.ax</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
166
Logical/Axises/Init/gaxwirei/gaxwirei.ax
Normal file
166
Logical/Axises/Init/gaxwirei/gaxwirei.ax
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<InitParameter Version="2.34.1" NcSwId="acp10">
|
||||
<Group ID="ACP10AXIS_typ" Description="">
|
||||
<Group ID="dig_in">
|
||||
<Group ID="level">
|
||||
<Parameter ID="reference" Value="ncACTIV_HI" />
|
||||
<Parameter ID="pos_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="neg_hw_end" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger1" Value="ncACTIV_HI" />
|
||||
<Parameter ID="trigger2" Value="ncACTIV_HI" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="encoder_if">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="count_dir" Value="ncSTANDARD" />
|
||||
<Group ID="scaling">
|
||||
<Group ID="load">
|
||||
<Parameter ID="units" Value="314159" />
|
||||
<Parameter ID="rev_motor" Value="1000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="limit">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
<Parameter ID="t_jolt" Value="0" />
|
||||
<Parameter ID="t_in_pos" Value="0" />
|
||||
<Parameter ID="pos_sw_end" Value="2000000000" />
|
||||
<Parameter ID="neg_sw_end" Value="-2000000000" />
|
||||
<Parameter ID="ds_warning" Value="500" />
|
||||
<Parameter ID="ds_stop" Value="1000" />
|
||||
<Parameter ID="a_stop" Value="1.0e30" />
|
||||
<Parameter ID="dv_stop" Value="0" />
|
||||
<Parameter ID="dv_stop_mode" Value="ncOFF" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="controller">
|
||||
<Parameter ID="mode" Value="ncPOSITION" />
|
||||
<Group ID="position">
|
||||
<Parameter ID="kv" Value="50" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_predict" Value="0.020000" />
|
||||
<Parameter ID="t_total" Value="0.020000" />
|
||||
<Parameter ID="p_max" Value="10000" />
|
||||
<Parameter ID="i_max" Value="0" />
|
||||
</Group>
|
||||
<Group ID="speed">
|
||||
<Parameter ID="kv" Value="2.0" />
|
||||
<Parameter ID="tn" Value="0" />
|
||||
<Parameter ID="t_filter" Value="0.0" />
|
||||
<Group ID="isq_filter1">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter2">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
<Group ID="isq_filter3">
|
||||
<Parameter ID="type" Value="ncOFF" />
|
||||
<Parameter ID="a0" Value="0.0" />
|
||||
<Parameter ID="a1" Value="0.0" />
|
||||
<Parameter ID="b0" Value="0.0" />
|
||||
<Parameter ID="b1" Value="0.0" />
|
||||
<Parameter ID="b2" Value="0.0" />
|
||||
<Parameter ID="c0_par_id" Value="0" />
|
||||
<Parameter ID="c1_par_id" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="uf">
|
||||
<Parameter ID="type" Value="ncLINEAR" />
|
||||
<Parameter ID="auto_config" Value="ncMOTOR_PAR" />
|
||||
<Parameter ID="u0" Value="0" />
|
||||
<Parameter ID="un" Value="0" />
|
||||
<Parameter ID="fn" Value="50.0" />
|
||||
<Parameter ID="k_f_slip" Value="0" />
|
||||
</Group>
|
||||
<Group ID="ff">
|
||||
<Parameter ID="torque_load" Value="0.0" />
|
||||
<Parameter ID="torque_pos" Value="0.0" />
|
||||
<Parameter ID="torque_neg" Value="0.0" />
|
||||
<Parameter ID="kv_torque" Value="0.0" />
|
||||
<Parameter ID="inertia" Value="0.0" />
|
||||
<Parameter ID="t_filter_a" Value="0.0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="move">
|
||||
<Group ID="stop">
|
||||
<Group ID="parameter[0]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[1]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[2]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="parameter[3]">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
<Parameter ID="controller" Value="ncON" />
|
||||
</Group>
|
||||
<Group ID="quickstop">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
<Group ID="drive_error">
|
||||
<Parameter ID="decel_ramp" Value="ncA_LIMIT" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="homing">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="s" Value="0" />
|
||||
<Parameter ID="v_switch" Value="5000" />
|
||||
<Parameter ID="v_trigger" Value="500" />
|
||||
<Parameter ID="a" Value="50000" />
|
||||
<Parameter ID="mode" Value="ncDIRECT" />
|
||||
<Parameter ID="edge_sw" Value="ncPOSITIVE" />
|
||||
<Parameter ID="start_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="trigg_dir" Value="ncPOSITIVE" />
|
||||
<Parameter ID="ref_pulse" Value="ncOFF" />
|
||||
<Parameter ID="tr_s_block" Value="0" />
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="basis">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="v_pos" Value="10000" />
|
||||
<Parameter ID="v_neg" Value="10000" />
|
||||
<Parameter ID="a1_pos" Value="50000" />
|
||||
<Parameter ID="a2_pos" Value="50000" />
|
||||
<Parameter ID="a1_neg" Value="50000" />
|
||||
<Parameter ID="a2_neg" Value="50000" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
<Group ID="message">
|
||||
<Group ID="text">
|
||||
<Group ID="parameter">
|
||||
<Parameter ID="format" Value="ncBREAK" />
|
||||
<Parameter ID="columns" Value="80" />
|
||||
<Parameter ID="data_modul" Value="acp10etxde" />
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</InitParameter>
|
||||
9
Logical/Axises/MAxTrace/IEC.prg
Normal file
9
Logical/Axises/MAxTrace/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Cyclic code">MAxTraceCyclic.ab</File>
|
||||
<File Description="Initialization code">MAxTraceInit.ab</File>
|
||||
<File Description="Local variables" Private="true">MAxTrace.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
11
Logical/Axises/MAxTrace/MAxTrace.var
Normal file
11
Logical/Axises/MAxTrace/MAxTrace.var
Normal file
@@ -0,0 +1,11 @@
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//MC FunctionBlocks*)
|
||||
VAR
|
||||
Axis_MC_BR_ParTrace : MC_BR_ParTrace := (0); (*Parameter Trace*)
|
||||
Axis_MC_BR_ReadParTraceStatus : MC_BR_ReadParTraceStatus := (0); (*Parameter Trace Status*)
|
||||
END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Dynamic Vars*)
|
||||
VAR
|
||||
lMAxTrace : REFERENCE TO typMultAx_Trace; (*Axis Datastruct *)
|
||||
END_VAR
|
||||
107
Logical/Axises/MAxTrace/MAxTraceCyclic.ab
Normal file
107
Logical/Axises/MAxTrace/MAxTraceCyclic.ab
Normal file
@@ -0,0 +1,107 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: MAxTrace
|
||||
* File: MAxTraceCyclic.ab
|
||||
* Author: michi
|
||||
* Created: July 18, 2012
|
||||
********************************************************************
|
||||
* Implementation of program MAxTrace
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
;STATE Machine Trace
|
||||
SELECT lMAxTrace.uiTraceStep
|
||||
;==============================================
|
||||
;READY
|
||||
STATE AxTraceSTATE_READY
|
||||
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_READY")
|
||||
|
||||
WHEN (lMAxTrace.bLoadConfig = 1)
|
||||
lMAxTrace.bLoadConfig = 0
|
||||
NEXT AxTraceSTATE_LOAD_CONFIG
|
||||
|
||||
WHEN (lMAxTrace.bStartSave = 1)
|
||||
lMAxTrace.bStartSave = 0
|
||||
NEXT AxTraceSTATE_START_SAVE
|
||||
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
//Axis_MC_BR_ParTraceConfig.Execute = 0
|
||||
Axis_MC_BR_ReadParTraceStatus.Enable = 0
|
||||
|
||||
;==============================================
|
||||
;Load Trace Config
|
||||
STATE AxTraceSTATE_LOAD_CONFIG
|
||||
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_LOAD_CONFIG")
|
||||
//Axis_MC_BR_ParTraceConfig.Command = mcLoad
|
||||
//Axis_MC_BR_ParTraceConfig.AdrTraceConfig = adr (lMAxTrace.Trace_DatObj_Refercence)
|
||||
//Axis_MC_BR_ParTraceConfig.Execute = 1
|
||||
|
||||
;check if loading is finished
|
||||
//when (Axis_MC_BR_ParTrace.Done)
|
||||
// Axis_MC_BR_ParTraceConfig.Execute = 0
|
||||
//next AxTraceSTATE_READY
|
||||
|
||||
;check for error occured
|
||||
//when (Axis_MC_BR_ParTraceConfig.Error)
|
||||
// Axis_MC_BR_ParTraceConfig.Execute = 0
|
||||
// Axis_MC_BR_ParTraceConfig.ErrorRecord
|
||||
//next AxTraceSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Start and Save Trace
|
||||
STATE AxTraceSTATE_START_SAVE
|
||||
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_START_SAVE")
|
||||
Axis_MC_BR_ParTrace.Configuration = lMAxTrace.Trace_Config
|
||||
Axis_MC_BR_ParTrace.Command = mcSTART + mcSAVE
|
||||
Axis_MC_BR_ParTrace.Execute = 1
|
||||
|
||||
;check if Trace is finished
|
||||
WHEN (Axis_MC_BR_ParTrace.Done)
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
NEXT AxTraceSTATE_READY
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_BR_ParTrace.Error)
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
lMAxTrace.uiTraceError = Axis_MC_BR_ParTrace.ErrorID
|
||||
lMAxTrace.Trace_Error_Record = Axis_MC_BR_ParTrace.ErrorRecord
|
||||
NEXT AxTraceSTATE_ERROR
|
||||
|
||||
WHEN (lMAxTrace.bStop = 1)
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
lMAxTrace.bStop = 0
|
||||
NEXT AxTraceSTATE_STOP
|
||||
|
||||
;==============================================
|
||||
;Stop Trace
|
||||
STATE AxTraceSTATE_STOP
|
||||
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_STOP")
|
||||
Axis_MC_BR_ParTrace.Command = mcSTOP
|
||||
Axis_MC_BR_ParTrace.Execute = 1
|
||||
|
||||
;check if Trace is finished
|
||||
WHEN (Axis_MC_BR_ParTrace.Done)
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
NEXT AxTraceSTATE_READY
|
||||
|
||||
;check for error occured
|
||||
WHEN (Axis_MC_BR_ParTrace.Error)
|
||||
Axis_MC_BR_ParTrace.Execute = 0
|
||||
;Axis_MC_BR_ParTrace.ErrorRecord
|
||||
NEXT AxTraceSTATE_ERROR
|
||||
|
||||
;==============================================
|
||||
;Error
|
||||
STATE AxTraceSTATE_ERROR
|
||||
strcpy (ADR (lMAxTrace.sStep), "AxTraceSTATE_ERROR")
|
||||
WHEN (1 = 1)
|
||||
NEXT AxTraceSTATE_READY
|
||||
|
||||
ENDSELECT
|
||||
|
||||
Axis_MC_BR_ParTrace FUB MC_BR_ParTrace ()
|
||||
//Axis_MC_BR_ParTraceConfig fub MC_BR_ParTraceConfig ()
|
||||
Axis_MC_BR_ReadParTraceStatus FUB MC_BR_ReadParTraceStatus ()
|
||||
|
||||
END_PROGRAM
|
||||
17
Logical/Axises/MAxTrace/MAxTraceInit.ab
Normal file
17
Logical/Axises/MAxTrace/MAxTraceInit.ab
Normal file
@@ -0,0 +1,17 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: MAxTrace
|
||||
* File: MAxTraceInit.ab
|
||||
* Author: michi
|
||||
* Created: July 18, 2012
|
||||
********************************************************************
|
||||
* Implementation of program MAxTrace
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _INIT
|
||||
|
||||
lMAxTrace ACCESS ADR (gMAxTrace);
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
22
Logical/Axises/Package.pkg
Normal file
22
Logical/Axises/Package.pkg
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.0.14.207?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Package data types">GlobalAxis.typ</Object>
|
||||
<Object Type="File" Description="Package variables">GlobalAxis.var</Object>
|
||||
<Object Type="Program" Language="IEC">ncsdcctrl</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Controller">GrillCtrl</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Multi Axis Trace">MAxTrace</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Wire Axis1">Axis1</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Wire Axis2">Axis2</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Belt Axis">Axis3</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Lane Axis">Axis4</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Bend1 Axis">Axis5</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Bend2 Axis">Axis6</Object>
|
||||
<Object Type="Package">Init</Object>
|
||||
<Object Type="Package">ACPPar</Object>
|
||||
<Object Type="DataObject" Language="Ett">acp10etxen</Object>
|
||||
<Object Type="DataObject" Language="Ett">acp10etxde</Object>
|
||||
<Object Type="File">GrillValues.txt</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
7
Logical/Axises/acp10etxde/Ett.dob
Normal file
7
Logical/Axises/acp10etxde/Ett.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>acp10etxde.ett</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
3843
Logical/Axises/acp10etxde/acp10etxde.ett
Normal file
3843
Logical/Axises/acp10etxde/acp10etxde.ett
Normal file
File diff suppressed because it is too large
Load Diff
7
Logical/Axises/acp10etxen/Ett.dob
Normal file
7
Logical/Axises/acp10etxen/Ett.dob
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
|
||||
<Files>
|
||||
<File>acp10etxen.ett</File>
|
||||
</Files>
|
||||
</DataObject>
|
||||
3843
Logical/Axises/acp10etxen/acp10etxen.ett
Normal file
3843
Logical/Axises/acp10etxen/acp10etxen.ett
Normal file
File diff suppressed because it is too large
Load Diff
8
Logical/Axises/ncsdcctrl/IEC.prg
Normal file
8
Logical/Axises/ncsdcctrl/IEC.prg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.21 SP03?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>ncsdcctrl.st</File>
|
||||
<File Private="true">ncsdcctrl.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
185
Logical/Axises/ncsdcctrl/ncsdcctrl.st
Normal file
185
Logical/Axises/ncsdcctrl/ncsdcctrl.st
Normal file
@@ -0,0 +1,185 @@
|
||||
PROGRAM _INIT
|
||||
|
||||
//gAxWire1
|
||||
//=========================================================
|
||||
gAxWire1_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxWire1_HW.EncIf1_Name), ADR ('gAxWire1_EncIf1'));
|
||||
gAxWire1_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxWire1_HW.DrvIf_Name), ADR( 'gAxWire1_DrvIf'));
|
||||
gAxWire1_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxWire1_HW.DiDoIf_Name), ADR ('gAxWire1_DiDoIf'));
|
||||
//gAxWire1_HW.TrigIf1_Typ := ncSDC_TRIGDIGin;
|
||||
//strcpy (ADR (gAxWire1_HW.TrigIf1_Name), ADR ('gAxWire1_TrigIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxWire1.size := gAxWire1.size;
|
||||
|
||||
gAxWire1_EncIf1.iLifeCnt := gAxWire1_EncIf1.iLifeCnt;
|
||||
|
||||
//gAxWire1_TrigIfDin400.iTriggerInput := gAxWire1_TrigIfDin.iTriggerInput;
|
||||
gAxWire1_TrigIf.iLifeCnt := gAxWire1_TrigIf.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxWire1_oSetPosOld := gAxWire1_DrvIf.oSetPos;
|
||||
|
||||
//gAxWire2
|
||||
//=========================================================
|
||||
gAxWire2_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxWire2_HW.EncIf1_Name), ADR ('gAxWire2_EncIf1'));
|
||||
gAxWire2_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxWire2_HW.DrvIf_Name), ADR ('gAxWire2_DrvIf'));
|
||||
gAxWire2_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxWire2_HW.DiDoIf_Name), ADR ('gAxWire2_DiDoIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxWire2.size := gAxWire2.size;
|
||||
|
||||
gAxWire2_EncIf1.iLifeCnt := gAxWire2_EncIf1.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxWire2_oSetPosOld := gAxWire2_DrvIf.oSetPos;
|
||||
(* ### END gAxWire2 ### *)
|
||||
|
||||
(* ### BEGIN gAxLane ### *)
|
||||
(* initialize variables *)
|
||||
gAxLane_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxLane_HW.EncIf1_Name), ADR ('gAxLane_EncIf1'));
|
||||
gAxLane_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxLane_HW.DrvIf_Name), ADR ('gAxLane_DrvIf'));
|
||||
gAxLane_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxLane_HW.DiDoIf_Name), ADR ('gAxLane_DiDoIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxLane.size := gAxLane.size;
|
||||
|
||||
gAxLane_EncIf1.iLifeCnt := gAxLane_EncIf1.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxLane_oSetPosOld := gAxLane_DrvIf.oSetPos;
|
||||
|
||||
//gAxBelt
|
||||
//=========================================================
|
||||
gAxBelt_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxBelt_HW.EncIf1_Name), ADR ('gAxBelt_EncIf1'));
|
||||
gAxBelt_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxBelt_HW.DrvIf_Name), ADR ('gAxBelt_DrvIf'));
|
||||
gAxBelt_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxBelt_HW.DiDoIf_Name), ADR ('gAxBelt_DiDoIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxBelt.size := gAxBelt.size;
|
||||
|
||||
gAxBelt_EncIf1.iLifeCnt := gAxBelt_EncIf1.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxBelt_oSetPosOld := gAxBelt_DrvIf.oSetPos;
|
||||
|
||||
//gAxBend1
|
||||
//=========================================================
|
||||
gAxBend1_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxBend1_HW.EncIf1_Name), ADR ('gAxBend1_EncIf1'));
|
||||
gAxBend1_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxBend1_HW.DrvIf_Name), ADR ('gAxBend1_DrvIf'));
|
||||
gAxBend1_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxBend1_HW.DiDoIf_Name), ADR ('gAxBend1_DiDoIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxBend1.size := gAxBend1.size;
|
||||
|
||||
gAxBend1_EncIf1.iLifeCnt := gAxBend1_EncIf1.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxBend1_oSetPosOld := gAxBend1_DrvIf.oSetPos;
|
||||
|
||||
|
||||
//gAxBend2
|
||||
//=========================================================
|
||||
gAxBend2_HW.EncIf1_Typ := ncSDC_ENC16;
|
||||
strcpy (ADR (gAxBend2_HW.EncIf1_Name), ADR ('gAxBend2_EncIf1'));
|
||||
gAxBend2_HW.DrvIf_Typ := ncSDC_DRVSM16;
|
||||
strcpy (ADR (gAxBend2_HW.DrvIf_Name), ADR ('gAxBend2_DrvIf'));
|
||||
gAxBend2_HW.DiDoIf_Typ := ncSDC_DIDO;
|
||||
strcpy (ADR (gAxBend2_HW.DiDoIf_Name), ADR ('gAxBend2_DiDoIf'));
|
||||
|
||||
(* force variable offset generation *)
|
||||
gAxBend2.size := gAxBend2.size;
|
||||
|
||||
gAxBend2_EncIf1.iLifeCnt := gAxBend2_EncIf1.iLifeCnt;
|
||||
|
||||
(* initialize old-value for delta step calculation *)
|
||||
gAxBend2_oSetPosOld := gAxBend2_DrvIf.oSetPos;
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
//gAxWire1
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxWire1_DiDoIf.iLifeCntReference := gAxWire1_DiDoIf.iLifeCntReference + 1;
|
||||
gAxWire1_DiDoIf.iLifeCntNegHwEnd := gAxWire1_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxWire1_DiDoIf.iLifeCntPosHwEnd := gAxWire1_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
gAxWire1_TrigIf.iLifeCnt := gAxWire1_TrigIf.iLifeCnt + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxWire1_MotorStep0 := gAxWire1_DrvIf.oSetPos - gAxWire1_oSetPosOld; (* overflow save delta calculation *)
|
||||
gAxWire1_oSetPosOld := gAxWire1_DrvIf.oSetPos;
|
||||
|
||||
//gAxWire1
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxWire2_DiDoIf.iLifeCntReference := gAxWire2_DiDoIf.iLifeCntReference + 1;
|
||||
gAxWire2_DiDoIf.iLifeCntNegHwEnd := gAxWire2_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxWire2_DiDoIf.iLifeCntPosHwEnd := gAxWire2_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxWire2_MotorStep0 := gAxWire2_DrvIf.oSetPos - gAxWire2_oSetPosOld; (* overflow save delta calculation *)
|
||||
gAxWire2_oSetPosOld := gAxWire2_DrvIf.oSetPos;
|
||||
|
||||
//gAxLane
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxLane_DiDoIf.iLifeCntReference := gAxLane_DiDoIf.iLifeCntReference + 1;
|
||||
gAxLane_DiDoIf.iLifeCntNegHwEnd := gAxLane_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxLane_DiDoIf.iLifeCntPosHwEnd := gAxLane_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxLane_MotorStep0 := gAxLane_DrvIf.oSetPos - gAxLane_oSetPosOld; (* overflow save delta calculation *)
|
||||
gAxLane_oSetPosOld := gAxLane_DrvIf.oSetPos;
|
||||
|
||||
//gAxBelt
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxBelt_DiDoIf.iLifeCntReference := gAxBelt_DiDoIf.iLifeCntReference + 1;
|
||||
gAxBelt_DiDoIf.iLifeCntNegHwEnd := gAxBelt_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxBelt_DiDoIf.iLifeCntPosHwEnd := gAxBelt_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxBelt_MotorStep0 := gAxBelt_DrvIf.oSetPos - gAxBelt_oSetPosOld; (* overflow save delta calculation *)
|
||||
gAxBelt_oSetPosOld := gAxBelt_DrvIf.oSetPos;
|
||||
|
||||
//gAxBend1
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxBend1_DiDoIf.iLifeCntReference := gAxBend1_DiDoIf.iLifeCntReference + 1;
|
||||
gAxBend1_DiDoIf.iLifeCntNegHwEnd := gAxBend1_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxBend1_DiDoIf.iLifeCntPosHwEnd := gAxBend1_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxBend1_MotorStep0 := gAxBend1_DrvIf.oSetPos - gAxBend1_oSetPosOld; (* overflow save delta calculation *)
|
||||
|
||||
(* old value for delta step generation *)
|
||||
gAxBend1_oSetPosOld := gAxBend1_DrvIf.oSetPos;
|
||||
|
||||
//gAxBend2
|
||||
//=========================================================
|
||||
(* life counter emulation of digital inputs *)
|
||||
gAxBend2_DiDoIf.iLifeCntReference := gAxBend2_DiDoIf.iLifeCntReference + 1;
|
||||
gAxBend2_DiDoIf.iLifeCntNegHwEnd := gAxBend2_DiDoIf.iLifeCntNegHwEnd + 1;
|
||||
gAxBend2_DiDoIf.iLifeCntPosHwEnd := gAxBend2_DiDoIf.iLifeCntPosHwEnd + 1;
|
||||
|
||||
(* default function model of ACOPOSmicro: convert absolute steps to delta steps *)
|
||||
gAxBend2_MotorStep0 := gAxBend2_DrvIf.oSetPos - gAxBend2_oSetPosOld; (* overflow save delta calculation *)
|
||||
gAxBend2_oSetPosOld := gAxBend2_DrvIf.oSetPos;
|
||||
|
||||
END_PROGRAM
|
||||
12
Logical/Axises/ncsdcctrl/ncsdcctrl.var
Normal file
12
Logical/Axises/ncsdcctrl/ncsdcctrl.var
Normal file
@@ -0,0 +1,12 @@
|
||||
VAR
|
||||
gAxWire1_oSetPosOld : INT := 0;
|
||||
gAxWire2_oSetPosOld : INT := 0;
|
||||
gAxLane_oSetPosOld : INT := 0;
|
||||
gAxBelt_oSetPosOld : INT := 0;
|
||||
gAxBend1_oSetPosOld : INT := 0;
|
||||
gAxBend2_oSetPosOld : INT := 0;
|
||||
|
||||
|
||||
gAxis01_oSetPosOld : INT := 0;
|
||||
|
||||
|
||||
8
Logical/Common/Global.typ
Normal file
8
Logical/Common/Global.typ
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
TYPE
|
||||
typAlarm : STRUCT
|
||||
Alarm : ARRAY[0..127]OF BOOL;
|
||||
Ack : ARRAY[0..127]OF BOOL;
|
||||
Bypass : ARRAY[0..127]OF BOOL;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
14
Logical/Common/GlobalComon.var
Normal file
14
Logical/Common/GlobalComon.var
Normal file
@@ -0,0 +1,14 @@
|
||||
VAR
|
||||
bBlink0_1 : BOOL;
|
||||
bBlink0_5 : BOOL;
|
||||
bBlink1_0 : BOOL;
|
||||
bBlink2_0 : BOOL;
|
||||
bBlink5_0 : BOOL;
|
||||
bBlink10_0 : BOOL;
|
||||
bBlink20_0 : BOOL;
|
||||
gdtActTime : DATE_AND_TIME; (*Current Date and Time*)
|
||||
gDTSActTimeUTC : DTStructure := (0); (*Current Date and Time as DTS (ms) UTC !!!*)
|
||||
gudUnixTimeUTC : UDINT; (*Current Date and Time as Unixts UTC !!!*)
|
||||
gOuNull : BOOL; (*DUMMY for Output*)
|
||||
gAOuNull : INT; (*DUMMY for Output*)
|
||||
END_VAR
|
||||
10
Logical/Common/GlobalConstants.var
Normal file
10
Logical/Common/GlobalConstants.var
Normal file
@@ -0,0 +1,10 @@
|
||||
(*// Constants*)
|
||||
VAR CONSTANT
|
||||
gAInNull : INT := 0; (*O FOR Analog Input*)
|
||||
gTrue : BOOL := TRUE; (*Konstant TRUE*)
|
||||
gFalse : BOOL := FALSE; (*Konstant False*)
|
||||
gInNull : BOOL := FALSE; (*FALSE FOR Input *)
|
||||
giAIVoltageOverflow : INT := 16#7FFF; (* Analog Input Voltage Mode,Overflow *)
|
||||
giAIVoltageUnderflow : INT := -32767; (* Analog Input Voltage Underflow *)
|
||||
grAIVoltageOverflow : REAL := 32767.0; (*Analog Input Voltage Mode,Overflow *)
|
||||
END_VAR
|
||||
11
Logical/Common/Package.pkg
Normal file
11
Logical/Common/Package.pkg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File">Global.typ</Object>
|
||||
<Object Type="File" Description="Local variables">GlobalComon.var</Object>
|
||||
<Object Type="File" Description="Local variables">GlobalConstants.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Actual Date_And_Time">get_dt</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Blinker 0,1 -0,5s">blinker</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
9
Logical/Common/blinker/IEC.prg
Normal file
9
Logical/Common/blinker/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.22 SP04?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Local variables" Private="true">blinker.var</File>
|
||||
<File Description="Initialization code">blinkerInit.ab</File>
|
||||
<File Description="Cyclic code">blinkerCyclic.ab</File>
|
||||
</Files>
|
||||
</Program>
|
||||
13
Logical/Common/blinker/blinker.var
Normal file
13
Logical/Common/blinker/blinker.var
Normal file
@@ -0,0 +1,13 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinker.var
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Local variables of program blinker
|
||||
********************************************************************)
|
||||
VAR
|
||||
iCount : USINT;
|
||||
END_VAR
|
||||
30
Logical/Common/blinker/blinkerCyclic.ab
Normal file
30
Logical/Common/blinker/blinkerCyclic.ab
Normal file
@@ -0,0 +1,30 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinkerCyclic.ab
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Implementation of program blinker
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
(* cyclic program *)
|
||||
;Has to be taskclass 10ms
|
||||
bBlink0_1 = not bBlink0_1
|
||||
inc (iCount)
|
||||
if ((iCount mod 5) = 0) then
|
||||
bBlink0_5 = not bBlink0_5
|
||||
endif
|
||||
if ((iCount mod 10) = 0) then
|
||||
bBlink1_0 = not bBlink1_0
|
||||
endif
|
||||
if ((iCount mod 20) = 0) then
|
||||
bBlink2_0 = not bBlink2_0
|
||||
endif
|
||||
if ((iCount mod 50) = 0) then
|
||||
bBlink5_0 = not bBlink5_0
|
||||
iCount = 0
|
||||
endif
|
||||
END_PROGRAM
|
||||
16
Logical/Common/blinker/blinkerInit.ab
Normal file
16
Logical/Common/blinker/blinkerInit.ab
Normal file
@@ -0,0 +1,16 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinkerInit.ab
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Implementation of program blinker
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _INIT
|
||||
iCount = 0
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Common/get_dt/IEC.prg
Normal file
9
Logical/Common/get_dt/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Private="true">get_dt.var</File>
|
||||
<File>get_dtCyclic.ab</File>
|
||||
<File>get_dtInit.ab</File>
|
||||
</Files>
|
||||
</Program>
|
||||
13
Logical/Common/get_dt/get_dt.var
Normal file
13
Logical/Common/get_dt/get_dt.var
Normal file
@@ -0,0 +1,13 @@
|
||||
VAR
|
||||
lDTGetTime : DTGetTime;
|
||||
lUtcDTStructureGetTime : UtcDTStructureGetTime;
|
||||
END_VAR
|
||||
(*For unixtimestamp conversion*)
|
||||
VAR CONSTANT
|
||||
uiDaysToMonthStart : ARRAY[0..11] OF UINT := [0,31,59,90,120,151,181,212,243,273,304,334];
|
||||
END_VAR
|
||||
VAR
|
||||
udYears : UDINT;
|
||||
udSwitchYears : UDINT;
|
||||
udUnixTime : UDINT;
|
||||
END_VAR
|
||||
28
Logical/Common/get_dt/get_dtCyclic.ab
Normal file
28
Logical/Common/get_dt/get_dtCyclic.ab
Normal file
@@ -0,0 +1,28 @@
|
||||
PROGRAM _CYCLIC
|
||||
//Retrieve actual Date and Time in different Formats
|
||||
//as Date and Time
|
||||
lDTGetTime.enable = true
|
||||
lDTGetTime FUB DTGetTime()
|
||||
gdtActTime = lDTGetTime.DT1
|
||||
|
||||
//as Datetime Structure
|
||||
lUtcDTStructureGetTime.enable = TRUE
|
||||
lUtcDTStructureGetTime.pDTStructure = ADR (gDTSActTimeUTC)
|
||||
lUtcDTStructureGetTime FUB UtcDTStructureGetTime ()
|
||||
|
||||
//as Unix Timestamp
|
||||
udYears = gDTSActTimeUTC.year - 1970
|
||||
udSwitchYears = ((gDTSActTimeUTC.year - 1) - 1968) / 4\
|
||||
- ((gDTSActTimeUTC.year - 1) - 1900) / 100\
|
||||
+ ((gDTSActTimeUTC.year - 1) - 1600) / 400
|
||||
|
||||
udUnixTime = gDTSActTimeUTC.second + UDINT (60) * gDTSActTimeUTC.minute + UDINT (3600) * gDTSActTimeUTC.hour + \
|
||||
(uiDaysToMonthStart[gDTSActTimeUTC.month - 1] + gDTSActTimeUTC.day -1 + udYears * 365 + udSwitchYears) * 86400
|
||||
|
||||
IF (gDTSActTimeUTC.month > 2) AND (gDTSActTimeUTC.year MOD 4 = 0) AND ((gDTSActTimeUTC.year MOD 100 <> 0) OR (gDTSActTimeUTC.year MOD 400 = 0)) THEN
|
||||
udUnixTime = udUnixTime + 86400
|
||||
ENDIF
|
||||
gudUnixTimeUTC = udUnixTime
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
5
Logical/Common/get_dt/get_dtInit.ab
Normal file
5
Logical/Common/get_dt/get_dtInit.ab
Normal file
@@ -0,0 +1,5 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
;tSEtSntpClient_0.enalbe = true
|
||||
END_PROGRAM
|
||||
|
||||
144
Logical/Communication/BarcodeRdr/BarcodeRdr.st
Normal file
144
Logical/Communication/BarcodeRdr/BarcodeRdr.st
Normal file
@@ -0,0 +1,144 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- Bernecker + Rainer
|
||||
********************************************************************
|
||||
* Program: BarcodeRdr
|
||||
* File: BarcodeRdr.st
|
||||
* Author: Bernecker + Rainer
|
||||
* Created: September 15, 2009
|
||||
********************************************************************
|
||||
* Descirption: Reads data from a USB barcode reader
|
||||
********************************************************************)
|
||||
|
||||
|
||||
(********************************************************************
|
||||
* INIT UP
|
||||
********************************************************************)
|
||||
PROGRAM _INIT
|
||||
|
||||
usbAttachDetachCount := 0;
|
||||
usbNodeIx := 0;
|
||||
enStep := enUSBRDRStep_INIT;
|
||||
END_PROGRAM
|
||||
|
||||
|
||||
(********************************************************************
|
||||
* CYCLIC TASK
|
||||
********************************************************************)
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
CASE enStep OF
|
||||
enUSBRDRStep_INIT:
|
||||
enStep := enUSBRDRStep_USB_GETNODELIST;
|
||||
|
||||
enUSBRDRStep_USB_GETNODELIST: (* STEP: Find all plugged USB devices *)
|
||||
UsbNodeListGetFub (enable := TRUE,
|
||||
pBuffer := ADR (usbNodeList),
|
||||
bufferSize := SIZEOF (usbNodeList),
|
||||
filterInterfaceClass := 0,
|
||||
filterInterfaceSubClass := 0);
|
||||
|
||||
IF UsbNodeListGetFub.status = ERR_OK AND UsbNodeListGetFub.listNodes <> 0 THEN
|
||||
(* USB device attach or detach *)
|
||||
enStep := enUSBRDRStep_USB_SEARCHDEVICE;
|
||||
usbNodeIx := 0;
|
||||
usbAttachDetachCount := UsbNodeListGetFub.attachDetachCount;
|
||||
ELSIF UsbNodeListGetFub.status = asusbERR_BUFSIZE OR UsbNodeListGetFub.status = asusbERR_NULLPOINTER THEN
|
||||
(* Error handling *)
|
||||
END_IF
|
||||
|
||||
|
||||
enUSBRDRStep_USB_SEARCHDEVICE: (* STEP: Search USB barcode reader device *)
|
||||
sizeUsbNode := SIZEOF (usbDevice);
|
||||
UsbNodeGetFub (enable := TRUE,
|
||||
nodeId := usbNodeList[usbNodeIx],
|
||||
pBuffer := ADR (usbDevice),
|
||||
bufferSize := SIZEOF (usbDevice));
|
||||
|
||||
IF UsbNodeGetFub.status = ERR_OK THEN
|
||||
(* USB reader? *)
|
||||
IF usbDevice.vendorId = VENDOR_ID_CS650 AND usbDevice.productId = PRODUCT_ID_CS650 THEN
|
||||
(* USB reader found *)
|
||||
strcpy (ADR (StringDevice), ADR (usbDevice.ifName));
|
||||
usbNodeId := usbNodeList[usbNodeIx];
|
||||
enStep := enUSBRDRStep_USB_DVDEVOPEN;
|
||||
ELSE
|
||||
usbNodeIx := usbNodeIx + 1;
|
||||
IF usbNodeIx >= UsbNodeListGetFub.allNodes THEN
|
||||
(* USB device not found *)
|
||||
enStep := enUSBRDRStep_USB_GETNODELIST;
|
||||
END_IF
|
||||
END_IF
|
||||
ELSIF UsbNodeGetFub.status = asusbERR_USB_NOTFOUND THEN
|
||||
(* USB device not found *)
|
||||
enStep := enUSBRDRStep_USB_GETNODELIST;
|
||||
ELSIF UsbNodeGetFub.status = asusbERR_BUFSIZE OR UsbNodeGetFub.status = asusbERR_NULLPOINTER THEN
|
||||
(* Error handling *)
|
||||
END_IF
|
||||
|
||||
|
||||
enUSBRDRStep_USB_DVDEVOPEN: (* STEP: Open device *)
|
||||
(* Initialize open structure *)
|
||||
FrameXOpenFub (enable := TRUE,
|
||||
device := ADR (StringDevice),
|
||||
mode := 0,
|
||||
config := 0);
|
||||
|
||||
IF FrameXOpenFub.status = ERR_OK THEN
|
||||
enStep := enUSBRDRStep_READ;
|
||||
END_IF
|
||||
|
||||
|
||||
enUSBRDRStep_READ: (* STEP: Read data from buffer *)
|
||||
(* Initialize read structure *)
|
||||
FrameReadFub (enable := TRUE,
|
||||
ident := FrameXOpenFub.ident);
|
||||
|
||||
IF FrameReadFub.status = 0 THEN (* check status *)
|
||||
IF readIx < SIZEOF (ReadData) THEN
|
||||
(* Copy read data into array *)
|
||||
memcpy (ADR (ReadData[readIx]), FrameReadFub.buffer, FrameReadFub.buflng);
|
||||
memcpy (ADR (ReadData2[readIx]), FrameReadFub.buffer, FrameReadFub.buflng);
|
||||
readIx := readIx + UINT_TO_USINT (FrameReadFub.buflng);
|
||||
(* Start frame translation if Return key received *)
|
||||
IF ReadData[readIx-1] = 16#A8 THEN
|
||||
enStep := enUSBRDRStep_DECODE;
|
||||
END_IF
|
||||
END_IF
|
||||
(* Initialize release buffer structure *)
|
||||
FrameReleaseBufferFub (enable := TRUE,
|
||||
ident := FrameXOpenFub.ident,
|
||||
buffer := FrameReadFub.buffer,
|
||||
buflng := FrameReadFub.buflng);
|
||||
END_IF
|
||||
|
||||
|
||||
enUSBRDRStep_DECODE: (* STEP: Translate USB HID to ASCII characters *)
|
||||
udCodeNr := 0;
|
||||
memset (ADR (AsciiData), 0, SIZEOF (AsciiData));
|
||||
j := 0;
|
||||
|
||||
(* Filter KeyUp codes and invalid data *)
|
||||
FOR i := 0 TO readIx - 2 DO
|
||||
IF ReadData[i] + 16#80 = ReadData[i+1] THEN
|
||||
AsciiData[j] := ReadData[i];
|
||||
j := j + 1;
|
||||
END_IF
|
||||
END_FOR
|
||||
|
||||
(* Translate to ASCII *)
|
||||
FOR i := 0 TO j - 1 DO
|
||||
(* Check that data is within valid LUT range *)
|
||||
IF AsciiData[i] <= 16#30 AND AsciiData[i] <= 16#39 THEN
|
||||
AsciiData[i] := ASCII_LUT[AsciiData[i]];
|
||||
udCodeNr := udCodeNr * 10 + USINT_TO_UDINT (AsciiData[i] - 16#30);
|
||||
END_IF
|
||||
END_FOR
|
||||
|
||||
(* Clear raw data buffer *)
|
||||
memset (ADR (ReadData), 0, SIZEOF (ReadData));
|
||||
readIx := 0;
|
||||
enStep := enUSBRDRStep_READ;
|
||||
|
||||
END_CASE
|
||||
|
||||
END_PROGRAM
|
||||
12
Logical/Communication/BarcodeRdr/BarcodeRdr.typ
Normal file
12
Logical/Communication/BarcodeRdr/BarcodeRdr.typ
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
TYPE
|
||||
typ_enStepUSBRDR :
|
||||
( (*Schritte USB Leser*)
|
||||
enUSBRDRStep_INIT, (*Init -> Search Reader*)
|
||||
enUSBRDRStep_USB_GETNODELIST, (*Get USB Devices*)
|
||||
enUSBRDRStep_USB_SEARCHDEVICE, (*Search Reader in Devices*)
|
||||
enUSBRDRStep_USB_DVDEVOPEN, (*Open Reader*)
|
||||
enUSBRDRStep_READ, (*READ from Reader*)
|
||||
enUSBRDRStep_DECODE
|
||||
);
|
||||
END_TYPE
|
||||
41
Logical/Communication/BarcodeRdr/BarcodeRdr.var
Normal file
41
Logical/Communication/BarcodeRdr/BarcodeRdr.var
Normal file
@@ -0,0 +1,41 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- Bernecker + Rainer
|
||||
********************************************************************
|
||||
* Program: BarcodeRdr
|
||||
* File: BarcodeRdr.var
|
||||
* Author: Bernecker + Rainer
|
||||
* Created: September 15, 2009
|
||||
********************************************************************
|
||||
* Local variables of program BarcodeRdr
|
||||
********************************************************************)
|
||||
VAR
|
||||
readIx : USINT;
|
||||
sizeUsbNode : USINT;
|
||||
usbNodeIx : USINT;
|
||||
enStep : typ_enStepUSBRDR; (*Step variable*)
|
||||
i : UINT; (*Loop counter*)
|
||||
j : UINT; (*Loop counter*)
|
||||
usbAttachDetachCount : UDINT;
|
||||
usbNodeId : UDINT;
|
||||
udCodeNr : UDINT;
|
||||
AsciiData : ARRAY[0..255] OF USINT; (*Translated (ASCII) data*)
|
||||
ReadData : ARRAY[0..255] OF USINT; (*Raw data*)
|
||||
ReadData2 : ARRAY[0..255] OF USINT; (*Raw data*)
|
||||
StringDevice : ARRAY[0..29] OF STRING[80]; (*Logical device path*)
|
||||
usbNodeList : ARRAY[0..31] OF UDINT;
|
||||
FrameReadFub : FRM_read;
|
||||
FrameReleaseBufferFub : FRM_rbuf;
|
||||
FrameXOpenFub : FRM_xopen;
|
||||
UsbNodeGetFub : UsbNodeGet;
|
||||
UsbNodeListGetFub : UsbNodeListGet;
|
||||
usbDevice : usbNode_typ;
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
ASCII_ENDINDEX : USINT := 39; (*Last index of ASCII LUT*)
|
||||
ASCII_STARTINDEX : USINT := 4; (*Start index of ASCII LUT*)
|
||||
ASCII_LUT : ARRAY[ASCII_STARTINDEX..ASCII_ENDINDEX] OF USINT := [65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,49,50,51,52,53,54,55,56,57,48]; (*Lookup Table USB HID to ASCII*)
|
||||
PRODUCT_ID_DATALOGICREADER : UINT := 16#8706; (*USB Product ID*)
|
||||
VENDOR_ID_DATALOGICREADER : UINT := 16#1529; (*USB Vendor ID*)
|
||||
PRODUCT_ID_CS650 : UINT := 16#008C; (*USB Product ID*)
|
||||
VENDOR_ID_CS650 : UINT := 16#0809; (*USB Vendor ID*)
|
||||
END_VAR
|
||||
9
Logical/Communication/BarcodeRdr/IEC.prg
Normal file
9
Logical/Communication/BarcodeRdr/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">BarcodeRdr.st</File>
|
||||
<File Description="Local data types" Private="true">BarcodeRdr.typ</File>
|
||||
<File Description="Local variables" Private="true">BarcodeRdr.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
11
Logical/Communication/Package.pkg
Normal file
11
Logical/Communication/Package.pkg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="Program" Language="IEC" Description="Collectd Client">collectd</Object>
|
||||
<Object Type="Program" Language="IEC" Description="13 Mhz Transponder B&R">RFID_USB</Object>
|
||||
<Object Type="Program" Language="IEC">BarcodeRdr</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Sick RFID Reader">RFID</Object>
|
||||
<Object Type="Program" Language="IEC" Description="S7 ABB Roboter">S7ABB</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
43
Logical/Communication/RFID/ASCtoUDINT.st
Normal file
43
Logical/Communication/RFID/ASCtoUDINT.st
Normal file
@@ -0,0 +1,43 @@
|
||||
FUNCTION ASCtoUDINT
|
||||
ASCtoUDINT := 0;
|
||||
udNextAdr := udInNextAdr;
|
||||
FOR usi:=0 TO 7 BY 1 DO
|
||||
memcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
48:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 0;
|
||||
49:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 1;
|
||||
50:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 2;
|
||||
51:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 3;
|
||||
52:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 4;
|
||||
53:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 5;
|
||||
54:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 6;
|
||||
55:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 7;
|
||||
56:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 8;
|
||||
57:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 9;
|
||||
65:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 10;
|
||||
66:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 11;
|
||||
67:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 12;
|
||||
68:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 13;
|
||||
69:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 14;
|
||||
70:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 15;
|
||||
ELSE
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 16#f;
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/RFID/IEC.prg
Normal file
12
Logical/Communication/RFID/IEC.prg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Private="true">RFID.var</File>
|
||||
<File Description="Local data types" Private="true">RFID.typ</File>
|
||||
<File>RFIDCyclic.st</File>
|
||||
<File>RFIDInit.st</File>
|
||||
<File Private="true">RFID.fun</File>
|
||||
<File Description="Convert ASCII Value to UDINT">ASCtoUDINT.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
11
Logical/Communication/RFID/RFID.fun
Normal file
11
Logical/Communication/RFID/RFID.fun
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
usi : USINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/RFID/RFID.typ
Normal file
12
Logical/Communication/RFID/RFID.typ
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
TYPE
|
||||
Steps_enum :
|
||||
( (*Steps of RFID Statemachine*)
|
||||
enSTEP_INIT,
|
||||
enSTEP_OPEN,
|
||||
enSTEP_OPENED,
|
||||
enSTEP_CONNECTED,
|
||||
enSTEP_CLOSE,
|
||||
enSTEP_CLOSED
|
||||
);
|
||||
END_TYPE
|
||||
41
Logical/Communication/RFID/RFID.var
Normal file
41
Logical/Communication/RFID/RFID.var
Normal file
@@ -0,0 +1,41 @@
|
||||
(*FUB Instances*)
|
||||
VAR
|
||||
FUB_TcpOpen : TcpOpen;
|
||||
FUB_TcpClient : TcpClient;
|
||||
FUB_TcpClose : TcpClose;
|
||||
FUB_TcpRecv : TcpRecv;
|
||||
FUB_TcpSend : TcpSend;
|
||||
END_VAR
|
||||
(*//Local VArs*)
|
||||
VAR
|
||||
bAllowData : BOOL;
|
||||
bSend : BOOL;
|
||||
bGateEnable : BOOL;
|
||||
usi : USINT := 0;
|
||||
usTemp : USINT := 0;
|
||||
usCodes : USINT := 0;
|
||||
usTelegramNr : USINT;
|
||||
uiProdNr : UINT;
|
||||
udTagID : UDINT;
|
||||
udRackID : UDINT;
|
||||
udProdID : UDINT;
|
||||
udClosePortID : UDINT;
|
||||
udClientID : UDINT;
|
||||
udSocketID : UDINT;
|
||||
strServerIP : STRING[20];
|
||||
strBindIP : STRING[20];
|
||||
strRecvBufferChar : STRING[2];
|
||||
strCharCmp : STRING[2];
|
||||
strRecvBuffer : STRING[120];
|
||||
strRecvBufferSave : STRING[120];
|
||||
strSendBuffer : STRING[120];
|
||||
enState : Steps_enum;
|
||||
END_VAR
|
||||
(*//ASCII Constants*)
|
||||
VAR CONSTANT
|
||||
usSTX : USINT := 2; (*ASCII STX*)
|
||||
usETX : USINT := 3; (*ASCII ETX*)
|
||||
usCR : USINT := 13; (*ASCII CR*)
|
||||
strStartRead : STRING[15] := 'sMN mTCgateon';
|
||||
strStopRead : STRING[16] := 'sMN mTCgateoff';
|
||||
END_VAR
|
||||
132
Logical/Communication/RFID/RFIDCyclic.st
Normal file
132
Logical/Communication/RFID/RFIDCyclic.st
Normal file
@@ -0,0 +1,132 @@
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
IF enState = enSTEP_INIT THEN
|
||||
enState := enSTEP_OPEN;
|
||||
END_IF
|
||||
|
||||
//Open listener Socket
|
||||
FUB_TcpOpen.enable := (enState = enSTEP_OPEN);
|
||||
FUB_TcpOpen ();
|
||||
|
||||
|
||||
IF FUB_TcpOpen.status = 0 THEN
|
||||
udSocketID := FUB_TcpOpen.ident;
|
||||
enState := enSTEP_OPENED;
|
||||
ELSIF FUB_TcpOpen.status = tcpERR_ALREADY_EXIST THEN
|
||||
udClosePortID := FUB_TcpOpen.ident;
|
||||
enState := enSTEP_CLOSE;
|
||||
ELSIF FUB_TcpOpen.status = tcpERR_NOMORE_IDENTS THEN
|
||||
udClosePortID := 1; //Close Port 1
|
||||
enState := enSTEP_CLOSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//connect to server
|
||||
FUB_TcpClient.enable := (enState = enSTEP_OPENED);
|
||||
FUB_TcpClient.ident := udSocketID;
|
||||
FUB_TcpClient ();
|
||||
|
||||
|
||||
IF FUB_TcpClient.status = 0 THEN
|
||||
//New Connection on Socket
|
||||
enState := enSTEP_CONNECTED;
|
||||
udClientID := udSocketID;
|
||||
ELSIF FUB_TcpClient.status = tcpERR_INVALID THEN
|
||||
udClosePortID := udSocketID;
|
||||
enState := enSTEP_CLOSE;
|
||||
ELSIF FUB_TcpClient.status = tcpERR_ALREADY_CONNECTED THEN
|
||||
udClosePortID := udSocketID;
|
||||
enState := enSTEP_CLOSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Close listener Socket //Or Reset All
|
||||
FUB_TcpClose.enable := (enState = enSTEP_CLOSE);
|
||||
FUB_TcpClose.ident := udClosePortID;
|
||||
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
|
||||
FUB_TcpClose ();
|
||||
|
||||
IF (FUB_TcpClose.status = 0) OR
|
||||
(FUB_TcpClose.status = tcpERR_INVALID_IDENT) THEN
|
||||
enState := enSTEP_CLOSED;
|
||||
END_IF
|
||||
|
||||
|
||||
//Receive Data an Client Connections
|
||||
FUB_TcpRecv.enable := (enState = enSTEP_CONNECTED);
|
||||
FUB_TcpRecv.ident := udClientID;
|
||||
FUB_TcpRecv.pData := ADR (strRecvBuffer);
|
||||
FUB_TcpRecv.datamax := 120;
|
||||
FUB_TcpRecv.flags := 0;
|
||||
FUB_TcpRecv ();
|
||||
|
||||
|
||||
IF (FUB_TcpRecv.recvlen > 0) AND bAllowData THEN
|
||||
// strcpy (ADR (strRecvBuffer), ADR (''));
|
||||
memcpy (ADR (usi), ADR (strRecvBuffer), 1);
|
||||
IF (FUB_TcpRecv.recvlen >= 29) THEN
|
||||
IF memcmp (ADR (strRecvBuffer), ADR (usSTX), 1) = 0 THEN
|
||||
//New Telegram
|
||||
memcpy (ADR (usTelegramNr), ADR (strRecvBuffer) + 1, 1);
|
||||
memcpy (ADR (usCodes), ADR (strRecvBuffer) + 2, 1);
|
||||
IF memcmp (ADR (strRecvBuffer) + 3, ADR (usCR), 1) = 0 THEN
|
||||
//Code Start
|
||||
//strcpy (ADR (strRecvBufferSave), ADR (strRecvBuffer));
|
||||
udTagID := ASCtoUDINT (ADR (strRecvBuffer) + 12);
|
||||
IF memcmp (ADR (strRecvBuffer) + 20, ADR ('RACK'), 4) = 0 THEN
|
||||
udRackID := udTagID;
|
||||
udProdID := 0;
|
||||
uiProdNr := 0;
|
||||
ELSIF memcmp (ADR (strRecvBuffer) + 20, ADR ('PROD'), 4) = 0 THEN
|
||||
udRackID := 0;
|
||||
memcpy (ADR (udProdID), ADR (strRecvBuffer) + 24, 4);
|
||||
memcpy (ADR (uiProdNr), ADR (strRecvBuffer) + 28, 2);
|
||||
END_IF
|
||||
END_IF
|
||||
END_IF
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
|
||||
IF EDGEPOS (bGateEnable) THEN
|
||||
memcpy (ADR (strSendBuffer), ADR (usSTX), 1);
|
||||
memcpy (ADR (strSendBuffer) + 1, ADR (strStartRead), 13);
|
||||
memcpy (ADR (strSendBuffer), ADR (usETX), 1);
|
||||
FUB_TcpSend.datalen := 15;
|
||||
bSend := TRUE;
|
||||
ELSIF EDGENEG (bGateEnable) THEN
|
||||
memcpy (ADR (strSendBuffer), ADR (usSTX), 1);
|
||||
memcpy (ADR (strSendBuffer) + 1, ADR (strStopRead), 13);
|
||||
memcpy (ADR (strSendBuffer), ADR (usETX), 1);
|
||||
FUB_TcpSend.datalen := 16;
|
||||
bSend := TRUE;
|
||||
END_IF
|
||||
|
||||
//Send Data on Client Connections
|
||||
IF (enState = enSTEP_CONNECTED) THEN
|
||||
FUB_TcpSend.enable := bSend;
|
||||
FUB_TcpSend.pData := ADR (strSendBuffer);
|
||||
FUB_TcpSend.ident := udClientID;
|
||||
FUB_TcpSend.flags := 0;
|
||||
FUB_TcpSend ();
|
||||
|
||||
IF FUB_TcpSend.status = 0 THEN
|
||||
bSend := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_PROGRAM
|
||||
|
||||
|
||||
|
||||
PROGRAM _EXIT
|
||||
FUB_TcpClose.enable := TRUE;
|
||||
FUB_TcpClose.ident := udClosePortID;
|
||||
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
|
||||
WHILE TRUE DO
|
||||
FUB_TcpClose ();
|
||||
IF (FUB_TcpClose.status <> ERR_FUB_BUSY) THEN
|
||||
EXIT;
|
||||
END_IF
|
||||
END_WHILE
|
||||
|
||||
END_PROGRAM
|
||||
16
Logical/Communication/RFID/RFIDInit.st
Normal file
16
Logical/Communication/RFID/RFIDInit.st
Normal file
@@ -0,0 +1,16 @@
|
||||
PROGRAM _INIT
|
||||
strcpy (ADR (strServerIP), ADR ('192.168.100.61'));
|
||||
strcpy (ADR (strBindIP), ADR ('192.168.100.68'));
|
||||
|
||||
FUB_TcpOpen.pIfAddr := ADR (strBindIP);
|
||||
FUB_TcpOpen.port := 0;
|
||||
FUB_TcpOpen.options := tcpOPT_REUSEADDR;
|
||||
|
||||
FUB_TcpClient.portserv := 2112;
|
||||
FUB_TcpClient.pServer := ADR (strServerIP);
|
||||
|
||||
enState := enSTEP_INIT;
|
||||
bAllowData := TRUE;
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
52
Logical/Communication/RFID_USB/ASCtoUDINT.st
Normal file
52
Logical/Communication/RFID_USB/ASCtoUDINT.st
Normal file
@@ -0,0 +1,52 @@
|
||||
FUNCTION ASCtoUDINT
|
||||
ASCtoUDINT := 0;
|
||||
udNextAdr := udInNextAdr;
|
||||
IF bInReverse THEN
|
||||
sStart := 7;
|
||||
sEnd := 0;
|
||||
sStep := -1;
|
||||
ELSE
|
||||
sStart := 0;
|
||||
sEnd := 7;
|
||||
sStep := 1;
|
||||
END_IF
|
||||
FOR usi := sStart TO sEnd BY sStep DO
|
||||
memcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
48:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 0;
|
||||
49:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 1;
|
||||
50:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 2;
|
||||
51:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 3;
|
||||
52:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 4;
|
||||
53:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 5;
|
||||
54:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 6;
|
||||
55:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 7;
|
||||
56:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 8;
|
||||
57:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 9;
|
||||
65:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 10;
|
||||
66:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 11;
|
||||
67:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 12;
|
||||
68:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 13;
|
||||
69:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 14;
|
||||
70:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 15;
|
||||
ELSE
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 16#f;
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/RFID_USB/IEC.prg
Normal file
12
Logical/Communication/RFID_USB/IEC.prg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">RFID_USB.st</File>
|
||||
<File Description="Local variables" Private="true">RFID_USB.var</File>
|
||||
<File Description="Local data types" Private="true">RFID_USB.typ</File>
|
||||
<File Private="true">RFID_USB.fun</File>
|
||||
<File Description="Convert ASCII Value to UDINT">ASCtoUDINT.st</File>
|
||||
<File Description="Convert UDINT Value to ASCII">UDINTtoASC.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
28
Logical/Communication/RFID_USB/RFID_USB.fun
Normal file
28
Logical/Communication/RFID_USB/RFID_USB.fun
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
bInReverse : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
usi : SINT;
|
||||
sStart : SINT;
|
||||
sEnd : SINT;
|
||||
sStep : SINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION UDINTtoASC : UDINT (*Convert UDINT Value to ASCII*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
udInValue : UDINT;
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
udValue : UDINT;
|
||||
usi : USINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
331
Logical/Communication/RFID_USB/RFID_USB.st
Normal file
331
Logical/Communication/RFID_USB/RFID_USB.st
Normal file
@@ -0,0 +1,331 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: RFID_USB
|
||||
* File: RFID_USB.st
|
||||
* Author: michi
|
||||
* Created: December 04, 2012
|
||||
********************************************************************
|
||||
* Implementation of program RFID_USB
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _INIT
|
||||
udAttachDetachCount := 0;
|
||||
usNodeIx := 0;
|
||||
enStep := enRFIDStep_INIT;
|
||||
END_PROGRAM
|
||||
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
CASE enStep OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enRFIDStep_INIT:
|
||||
FUB_FrameRead.enable := 0;
|
||||
FUB_FrameReleaseBuffer.enable := 0;
|
||||
FUB_FrameWrite.enable := 0;
|
||||
FUB_FrameXOpen.enable := 0;
|
||||
FUB_UsbNodeGet.enable := 0;
|
||||
FUB_UsbNodeListGet.enable := 0;
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
|
||||
//Get USB Nodelsit
|
||||
//---------------------------
|
||||
enRFIDStep_USB_GETNODELIST:
|
||||
FUB_UsbNodeListGet.enable := 1;
|
||||
FUB_UsbNodeListGet.pBuffer := ADR (udNodeList);
|
||||
FUB_UsbNodeListGet.bufferSize := SIZEOF (udNodeList);
|
||||
FUB_UsbNodeListGet.filterInterfaceClass := 0;
|
||||
FUB_UsbNodeListGet.filterInterfaceSubClass := 0;
|
||||
|
||||
IF (FUB_UsbNodeListGet.status = ERR_OK) AND (FUB_UsbNodeListGet.listNodes > 0) THEN
|
||||
// USB Device Attach or detach
|
||||
FUB_UsbNodeListGet.enable := 0;
|
||||
usNodeIx := 0;
|
||||
udAttachDetachCount := FUB_UsbNodeListGet.attachDetachCount;
|
||||
enStep := enRFIDStep_USB_SEARCHDEVICE;
|
||||
END_IF
|
||||
//else if (UsbNodeListGetFub.status == asusbERR_BUFSIZE || UsbNodeListGetFub.status == asusbERR_NULLPOINTER)
|
||||
|
||||
//Serch Reader in USB Devices
|
||||
//---------------------------
|
||||
enRFIDStep_USB_SEARCHDEVICE:
|
||||
FUB_UsbNodeGet.enable := 1;
|
||||
FUB_UsbNodeGet.nodeId := udNodeList[usNodeIx];
|
||||
FUB_UsbNodeGet.pBuffer := ADR (usbDevice);
|
||||
FUB_UsbNodeGet.bufferSize := SIZEOF (usbDevice);
|
||||
|
||||
IF (FUB_UsbNodeGet.status = ERR_OK ) THEN
|
||||
FUB_UsbNodeGet.enable := 0;
|
||||
// USB FTDI Transponder
|
||||
IF (usbDevice.vendorId = TRANSPONDER_FTDI_VENDOR_ID) AND
|
||||
(usbDevice.productId = TRANSPONDER_FTDI_PRODUCT_ID) AND
|
||||
(usbDevice.bcdDevice = TRANSPONDER_FTDI_BCD) THEN
|
||||
// USB FTDI Transponder found
|
||||
strcpy (ADR (strDevice), ADR (usbDevice.ifName));
|
||||
udNodeId := udNodeList[usNodeIx];
|
||||
enStep := enRFIDStep_USB_DVDEVOPEN;
|
||||
ELSE
|
||||
usNodeIx := usNodeIx + 1;
|
||||
IF (usNodeIx >= FUB_UsbNodeListGet.allNodes) THEN
|
||||
// USB Device not found
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
END_IF
|
||||
END_IF
|
||||
ELSIF (FUB_UsbNodeGet.status = asusbERR_USB_NOTFOUND) THEN
|
||||
// USB Device NOT found
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
END_IF
|
||||
//ELSE IF (FUB_UsbNodeGet.status == asusbERR_BUFSIZE || FUB_UsbNodeGet.status == asusbERR_NULLPOINTER)
|
||||
|
||||
//Open Reader Devicer
|
||||
//---------------------------
|
||||
enRFIDStep_USB_DVDEVOPEN:
|
||||
// initialize open structure */
|
||||
FUB_FrameXOpen.device := ADR (strDevice);
|
||||
FUB_FrameXOpen.mode := 0;
|
||||
FUB_FrameXOpen.config := 0;
|
||||
FUB_FrameXOpen.enable := 1;
|
||||
|
||||
IF (FUB_FrameXOpen.status = frmERR_OK) THEN
|
||||
FUB_FrameWrite.ident := FUB_FrameXOpen.ident;
|
||||
FUB_FrameRead.ident := FUB_FrameXOpen.ident;
|
||||
FUB_FrameReleaseBuffer.ident := FUB_FrameXOpen.ident;
|
||||
FUB_FrameXOpen.enable := 0;
|
||||
enStep := enRFIDStep_INIT_READER;
|
||||
END_IF
|
||||
|
||||
//Get USB Nodelist
|
||||
//---------------------------
|
||||
enRFIDStep_INIT_READER:
|
||||
// Register Write:
|
||||
// 5V operation, RF output active, full power; ISO 15693, low bit rate, 6.62 kbps, one subcarrier, 1 out OF 4
|
||||
//
|
||||
// 10 00 21 01 00
|
||||
// | | | | |
|
||||
// | | | | Value Register 0x01
|
||||
// | | | ISO Control Register (0x01)
|
||||
// | | Value Register 0x00
|
||||
// | Chip Status Control Register (0x00)
|
||||
// Register Write Cmd
|
||||
|
||||
// Set Protocol, 1 out OF 4, full power, low bit rate */
|
||||
strcpy (ADR (strWriteData), ADR ('1000210100'));
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0C'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
|
||||
|
||||
//IDLE
|
||||
//---------------------------
|
||||
enRFIDStep_IDLE:
|
||||
|
||||
CASE enCmd OF
|
||||
enRFIDCMD_NONE:
|
||||
IF gTransponder.enTransponderCmd = enTransponderREAD_Data THEN
|
||||
usBlockNr := 0;
|
||||
gTransponder.enTransponderCmd := enTransponderREAD_Data_Wait;
|
||||
enCmd := enRFIDCMD_READ_SBLOCK;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderREAD_Data2 THEN
|
||||
usBlockNr := 1;
|
||||
enCmd := enRFIDCMD_READ_SBLOCK;
|
||||
gTransponder.enTransponderCmd := enTransponderREAD_Data2_Wait;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderWRITE_Data THEN
|
||||
usBlockNr := 0;
|
||||
udWriteData := gTransponder.udProdID;
|
||||
gTransponder.enTransponderCmd := enTransponderWRITE_Data_Wait;
|
||||
enCmd := enRFIDCMD_READ_SBLOCK;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderWRITE_Data2 THEN
|
||||
usBlockNr := 1;
|
||||
udWriteData := gTransponder.udProdNr;
|
||||
gTransponder.enTransponderCmd := enTransponderWRITE_Data2_Wait;
|
||||
enCmd := enRFIDCMD_READ_SBLOCK;
|
||||
END_IF
|
||||
|
||||
enRFIDCMD_READ_INVENTORY:
|
||||
// Inventory
|
||||
// 14 04 01 00
|
||||
// | | | |
|
||||
// | | | Mask Length
|
||||
// | | Anticollision Cmd
|
||||
// | Flags (Inventory flag = 1, HDR = 0)
|
||||
// Inventory request
|
||||
// inventory 16 slot
|
||||
strcpy (ADR (strWriteData), ADR ('14040100'));
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0B'));
|
||||
uiReadAnswer := 16; // 16 slot answer
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SYSINFO:
|
||||
// Read System Info
|
||||
// 18 00 2B
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
strcpy (ADR (strWriteData), ADR ('18002B'));
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0A'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SBLOCK:
|
||||
// Read Single Block
|
||||
// 18 02 20
|
||||
// | | |
|
||||
// | | Read Single Block Cmd
|
||||
// | Flags (Option = 1, HDR = 0)
|
||||
// Request Cmd
|
||||
//
|
||||
// Option = 1: Return block security status
|
||||
strcpy (ADR (strWriteData), ADR ('184020')); // read block #1
|
||||
uiLength := itoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
strcat (ADR (strWriteData), ADR ('0'));
|
||||
END_IF
|
||||
strcat (ADR (strWriteData), ADR (strTemp));
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0B'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
|
||||
enRFIDCMD_WRITE_SBLOCK:
|
||||
// Write Single Block
|
||||
// 18 00 21
|
||||
// | | |
|
||||
// | | Write Single Block Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
strcpy (ADR (strWriteData), ADR ('180021')); // write block #1 (Data = 0x12345678)
|
||||
uiLength := itoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
strcat (ADR (strWriteData), ADR ('0'));
|
||||
END_IF
|
||||
UDINTtoASC (ADR (strWriteData) + 8, udWriteData);
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0F'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_AFI:
|
||||
// Write AFI
|
||||
// 18 00 30
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
strcpy (ADR (strWriteData), ADR ('18002730')); // write AFI (0x30 = Identification)
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0B'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_DFSID:
|
||||
// Write DSFID
|
||||
// 18 00 29
|
||||
// | | |
|
||||
// | | Write DSFID Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
strcpy (ADR (strWriteData), ADR ('18002918')); // write DSFID 0x18
|
||||
strcpy (ADR (strWriteDatalen), ADR ('0B'));
|
||||
uiReadAnswer := 1;
|
||||
enStep := enRFIDStep_WRITE;
|
||||
|
||||
END_CASE
|
||||
|
||||
//WRITE
|
||||
//---------------------------
|
||||
enRFIDStep_WRITE:
|
||||
// initialize write structure */
|
||||
//Frame Start
|
||||
strcpy (ADR (strWriteTelegram), ADR ('01'));
|
||||
//Length
|
||||
strcat (ADR (strWriteTelegram), ADR (strWriteDatalen));
|
||||
//Const 00 + Start of Payload
|
||||
strcat (ADR (strWriteTelegram), ADR ('000304'));
|
||||
strcat (ADR (strWriteTelegram), ADR (strWriteData));
|
||||
//Frame End
|
||||
strcat (ADR (strWriteTelegram), ADR ('0000'));
|
||||
FUB_FrameWrite.buffer := ADR (strWriteTelegram);
|
||||
FUB_FrameWrite.buflng := strlen (ADR (strWriteTelegram));
|
||||
FUB_FrameWrite.enable := 1;
|
||||
IF (FUB_FrameWrite.status = frmERR_OK) THEN
|
||||
enStep := enRFIDStep_READ;
|
||||
FUB_FrameWrite.enable := 0;
|
||||
uiReadCount := 0;
|
||||
END_IF
|
||||
|
||||
//READ
|
||||
//---------------------------
|
||||
enRFIDStep_READ:
|
||||
// initialize read structure
|
||||
FUB_FrameRead.enable := 1;
|
||||
pReadBuffer := FUB_FrameRead.buffer; // get adress OF read buffer */
|
||||
uiReadBufferLength := FUB_FrameRead.buflng; // get length OF read buffer */
|
||||
|
||||
IF (FUB_FrameRead.status = frmERR_OK) THEN
|
||||
udTemp := 0;
|
||||
memset (ADR (strReadData), 0, SIZEOF (strReadData));
|
||||
memcpy (ADR (strReadData), pReadBuffer, uiReadBufferLength); // copy read data into array */
|
||||
IF (uiReadBufferLength > 7) THEN
|
||||
strcpy (ADR (strReadTag), ADR (strReadData)); // copy read data into Tag array */
|
||||
END_IF
|
||||
IF (uiReadBufferLength = 16) THEN
|
||||
udTemp := ASCtoUDINT (ADR (strReadData) + 5, FALSE);
|
||||
END_IF
|
||||
IF (uiReadBufferLength =23) THEN
|
||||
//TagID Slot
|
||||
udTemp := ASCtoUDINT (ADR (strReadData) + 2, TRUE);
|
||||
udTemp2 := ASCtoUDINT (ADR (strReadData) + 2, FALSE);
|
||||
END_IF
|
||||
|
||||
// initialize release buffer structure */
|
||||
FUB_FrameReleaseBuffer.enable := 1;
|
||||
FUB_FrameReleaseBuffer.buffer := pReadBuffer;
|
||||
FUB_FrameReleaseBuffer.buflng := uiReadBufferLength;
|
||||
FUB_FrameReleaseBuffer ();
|
||||
|
||||
uiReadCount := uiReadCount + 1;
|
||||
IF gTransponder.enTransponderCmd = enTransponderREAD_Data_Wait THEN
|
||||
gTransponder.udProdIDRdBack := udTemp;
|
||||
gTransponder.enTransponderCmd := enTransponderREAD_Data2;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderREAD_Data2_Wait THEN
|
||||
gTransponder.udProdNrRdBack := udTemp;
|
||||
gTransponder.enTransponderCmd := enTransponderIDLE;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderWRITE_Data_Wait THEN
|
||||
gTransponder.enTransponderCmd := enTransponderWRITE_Data2;
|
||||
ELSIF gTransponder.enTransponderCmd = enTransponderWRITE_Data2_Wait THEN
|
||||
gTransponder.enTransponderCmd := enTransponderREAD_Data;
|
||||
ELSIF udTemp > 0 THEN
|
||||
gTransponder.udTagID := udTemp;
|
||||
END_IF
|
||||
IF (uiReadCount = uiReadAnswer) THEN
|
||||
FUB_FrameRead.enable := 0;
|
||||
enStep := enRFIDStep_IDLE;
|
||||
enCmd := enRFIDCMD_NONE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
TON_Read.IN := (enStep = enRFIDStep_IDLE) AND (enCmd = enRFIDCMD_NONE) AND (gTransponder.enTransponderCmd = enTransponderIDLE);
|
||||
TON_Read.PT := t#1s;
|
||||
TON_Read ();
|
||||
IF TON_Read.Q THEN
|
||||
enCmd := enRFIDCMD_READ_INVENTORY;
|
||||
END_IF
|
||||
//Call FUBs
|
||||
FUB_FrameRead ();
|
||||
FUB_FrameWrite ();
|
||||
FUB_FrameXOpen ();
|
||||
FUB_UsbNodeGet ();
|
||||
FUB_UsbNodeListGet ();
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _EXIT
|
||||
|
||||
|
||||
(* TODO : Add your code here *)
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
24
Logical/Communication/RFID_USB/RFID_USB.typ
Normal file
24
Logical/Communication/RFID_USB/RFID_USB.typ
Normal file
@@ -0,0 +1,24 @@
|
||||
|
||||
TYPE
|
||||
typ_enStepRFID :
|
||||
( (*Schritte RFID Leser*)
|
||||
enRFIDStep_INIT, (*Init -> Search Reader*)
|
||||
enRFIDStep_USB_GETNODELIST, (*Get USB Devices*)
|
||||
enRFIDStep_USB_SEARCHDEVICE, (*Search Reader in Devices*)
|
||||
enRFIDStep_USB_DVDEVOPEN, (*Open Reader*)
|
||||
enRFIDStep_INIT_READER, (*Initialize Reader*)
|
||||
enRFIDStep_IDLE, (*Wait for commands*)
|
||||
enRFIDStep_READ, (*READ from Reader*)
|
||||
enRFIDStep_WRITE (*WRITE to Reader*)
|
||||
);
|
||||
typ_enCmdRFID :
|
||||
(
|
||||
enRFIDCMD_NONE,
|
||||
enRFIDCMD_READ_INVENTORY,
|
||||
enRFIDCMD_READ_SYSINFO,
|
||||
enRFIDCMD_READ_SBLOCK,
|
||||
enRFIDCMD_WRITE_SBLOCK,
|
||||
enRFIDCMD_WRITE_AFI,
|
||||
enRFIDCMD_WRITE_DFSID
|
||||
);
|
||||
END_TYPE
|
||||
48
Logical/Communication/RFID_USB/RFID_USB.var
Normal file
48
Logical/Communication/RFID_USB/RFID_USB.var
Normal file
@@ -0,0 +1,48 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: RFID_USB
|
||||
* File: RFID_USB.var
|
||||
* Author: michi
|
||||
* Created: December 04, 2012
|
||||
********************************************************************
|
||||
* Local variables of program RFID_USB
|
||||
********************************************************************)
|
||||
VAR
|
||||
sizeUsbNode : USINT;
|
||||
usNodeIx : USINT;
|
||||
usBlockNr : USINT;
|
||||
uiReadAnswer : UINT;
|
||||
uiReadBufferLength : UINT;
|
||||
uiReadCount : UINT;
|
||||
uiLength : UINT;
|
||||
udAttachDetachCount : UDINT;
|
||||
udNodeId : UDINT;
|
||||
udNodeList : ARRAY[0..31] OF UDINT;
|
||||
pReadBuffer : UDINT;
|
||||
udTemp : UDINT;
|
||||
udTemp2 : UDINT;
|
||||
udWriteData : UDINT;
|
||||
strReadData : STRING[80];
|
||||
strReadTag : STRING[80];
|
||||
strDevice : STRING[20];
|
||||
strWriteData : STRING[80];
|
||||
strWriteDatalen : STRING[2];
|
||||
strWriteTelegram : STRING[80];
|
||||
strTemp : STRING[2];
|
||||
enStep : typ_enStepRFID;
|
||||
enCmd : typ_enCmdRFID;
|
||||
usbDevice : usbNode_typ;
|
||||
FUB_FrameRead : FRM_read;
|
||||
FUB_FrameReleaseBuffer : FRM_rbuf;
|
||||
FUB_FrameWrite : FRM_write;
|
||||
FUB_FrameXOpen : FRM_xopen;
|
||||
FUB_UsbNodeGet : UsbNodeGet;
|
||||
FUB_UsbNodeListGet : UsbNodeListGet;
|
||||
TON_Read : TON;
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
TRANSPONDER_FTDI_VENDOR_ID : UINT := 16#0403;
|
||||
TRANSPONDER_FTDI_PRODUCT_ID : UINT := 16#6001;
|
||||
TRANSPONDER_FTDI_BCD : UINT := 16#0600;
|
||||
END_VAR
|
||||
44
Logical/Communication/RFID_USB/UDINTtoASC.st
Normal file
44
Logical/Communication/RFID_USB/UDINTtoASC.st
Normal file
@@ -0,0 +1,44 @@
|
||||
FUNCTION UDINTtoASC
|
||||
UDINTtoASC := udNextAdr + 8;
|
||||
udNextAdr := udInNextAdr;
|
||||
udValue := udInValue;
|
||||
FOR usi:=7 TO 0 BY -1 DO
|
||||
usChar := UDINT_TO_USINT (udValue MOD 16);
|
||||
usChar := UDINT_TO_USINT (udValue / 16);
|
||||
memcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
0:
|
||||
memcpy (udNextAdr + usi, ADR ('0'), 1);
|
||||
1:
|
||||
memcpy (udNextAdr + usi, ADR ('1'), 1);
|
||||
2:
|
||||
memcpy (udNextAdr + usi, ADR ('2'), 1);
|
||||
3:
|
||||
memcpy (udNextAdr + usi, ADR ('3'), 1);
|
||||
4:
|
||||
memcpy (udNextAdr + usi, ADR ('4'), 1);
|
||||
5:
|
||||
memcpy (udNextAdr + usi, ADR ('5'), 1);
|
||||
6:
|
||||
memcpy (udNextAdr + usi, ADR ('6'), 1);
|
||||
7:
|
||||
memcpy (udNextAdr + usi, ADR ('7'), 1);
|
||||
8:
|
||||
memcpy (udNextAdr + usi, ADR ('8'), 1);
|
||||
9:
|
||||
memcpy (udNextAdr + usi, ADR ('9'), 1);
|
||||
10:
|
||||
memcpy (udNextAdr + usi, ADR ('A'), 1);
|
||||
11:
|
||||
memcpy (udNextAdr + usi, ADR ('B'), 1);
|
||||
12:
|
||||
memcpy (udNextAdr + usi, ADR ('C'), 1);
|
||||
13:
|
||||
memcpy (udNextAdr + usi, ADR ('D'), 1);
|
||||
14:
|
||||
memcpy (udNextAdr + usi, ADR ('E'), 1);
|
||||
15:
|
||||
memcpy (udNextAdr + usi, ADR ('F'), 1);
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
43
Logical/Communication/S7ABB/ASCtoUDINT.st
Normal file
43
Logical/Communication/S7ABB/ASCtoUDINT.st
Normal file
@@ -0,0 +1,43 @@
|
||||
FUNCTION ASCtoUDINT
|
||||
ASCtoUDINT := 0;
|
||||
udNextAdr := udInNextAdr;
|
||||
FOR usi:=0 TO 7 BY 1 DO
|
||||
memcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
48:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 0;
|
||||
49:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 1;
|
||||
50:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 2;
|
||||
51:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 3;
|
||||
52:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 4;
|
||||
53:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 5;
|
||||
54:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 6;
|
||||
55:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 7;
|
||||
56:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 8;
|
||||
57:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 9;
|
||||
65:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 10;
|
||||
66:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 11;
|
||||
67:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 12;
|
||||
68:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 13;
|
||||
69:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 14;
|
||||
70:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 15;
|
||||
ELSE
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 16#f;
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/S7ABB/IEC.prg
Normal file
12
Logical/Communication/S7ABB/IEC.prg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Private="true">S7ABB.var</File>
|
||||
<File Description="Local data types" Private="true">S7ABB.typ</File>
|
||||
<File>S7ABBCyclic.st</File>
|
||||
<File>S7ABBInit.st</File>
|
||||
<File Private="true">S7ABB.fun</File>
|
||||
<File Description="Convert ASCII Value to UDINT">ASCtoUDINT.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
11
Logical/Communication/S7ABB/S7ABB.fun
Normal file
11
Logical/Communication/S7ABB/S7ABB.fun
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
usi : USINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/S7ABB/S7ABB.typ
Normal file
12
Logical/Communication/S7ABB/S7ABB.typ
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
TYPE
|
||||
Steps_enum :
|
||||
( (*Steps of RFID Statemachine*)
|
||||
enSTEP_INIT,
|
||||
enSTEP_OPEN,
|
||||
enSTEP_OPENED,
|
||||
enSTEP_CONNECTED,
|
||||
enSTEP_CLOSE,
|
||||
enSTEP_CLOSED
|
||||
);
|
||||
END_TYPE
|
||||
32
Logical/Communication/S7ABB/S7ABB.var
Normal file
32
Logical/Communication/S7ABB/S7ABB.var
Normal file
@@ -0,0 +1,32 @@
|
||||
(*FUB Instances*)
|
||||
VAR
|
||||
FUB_TcpOpen : TcpOpen;
|
||||
FUB_TcpServ : TcpServer;
|
||||
FUB_TcpClose : TcpClose;
|
||||
FUB_TcpRecv : TcpRecv;
|
||||
FUB_TcpSend : TcpSend;
|
||||
TON_Lifebeat : TON;
|
||||
END_VAR
|
||||
(*//Local VArs*)
|
||||
VAR
|
||||
bAllowData : BOOL;
|
||||
bSend : BOOL;
|
||||
bGateEnable : BOOL;
|
||||
usi : USINT := 0;
|
||||
usTemp : USINT := 0;
|
||||
usCodes : USINT := 0;
|
||||
usLifecount : USINT;
|
||||
usTelegramNr : USINT;
|
||||
uiProdNr : UINT;
|
||||
udClosePortID : UDINT;
|
||||
udClientID : UDINT;
|
||||
udSocketID : UDINT;
|
||||
strServerIP : STRING[20];
|
||||
strClientIP : STRING[20];
|
||||
strBindIP : STRING[20];
|
||||
strRecvBufferChar : STRING[2];
|
||||
strCharCmp : STRING[2];
|
||||
strRecvBuffer : STRING[120];
|
||||
strRecvBufferSave : STRING[120];
|
||||
enState : Steps_enum;
|
||||
END_VAR
|
||||
121
Logical/Communication/S7ABB/S7ABBCyclic.st
Normal file
121
Logical/Communication/S7ABB/S7ABBCyclic.st
Normal file
@@ -0,0 +1,121 @@
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
IF enState = enSTEP_INIT THEN
|
||||
enState := enSTEP_OPEN;
|
||||
END_IF
|
||||
|
||||
//Open listener Socket
|
||||
FUB_TcpOpen.enable := (enState = enSTEP_OPEN);
|
||||
FUB_TcpOpen ();
|
||||
|
||||
|
||||
IF FUB_TcpOpen.status = 0 THEN
|
||||
udSocketID := FUB_TcpOpen.ident;
|
||||
FUB_TcpServ.ident := udSocketID;
|
||||
enState := enSTEP_OPENED;
|
||||
ELSIF FUB_TcpOpen.status = tcpERR_ALREADY_EXIST THEN
|
||||
udClosePortID := FUB_TcpOpen.ident;
|
||||
enState := enSTEP_CLOSE;
|
||||
ELSIF FUB_TcpOpen.status = tcpERR_NOMORE_IDENTS THEN
|
||||
udClosePortID := 1; //Close Port 1
|
||||
enState := enSTEP_CLOSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//connect to server
|
||||
FUB_TcpServ.enable:= (enState > enSTEP_OPEN);
|
||||
FUB_TcpServ.backlog := 1;
|
||||
FUB_TcpServ ();
|
||||
|
||||
|
||||
IF FUB_TcpServ.status = 0 THEN
|
||||
IF (enState = enSTEP_CONNECTED) THEN
|
||||
udClosePortID := FUB_TcpOpen.ident;
|
||||
enState := enSTEP_CLOSE;
|
||||
udClientID := 0;
|
||||
END_IF
|
||||
|
||||
//New Connection on Socket
|
||||
enState := enSTEP_CONNECTED;
|
||||
udClientID := FUB_TcpServ.identclnt;
|
||||
END_IF
|
||||
|
||||
|
||||
//Close listener Socket //Or Reset All
|
||||
FUB_TcpClose.enable := (enState = enSTEP_CLOSE);
|
||||
FUB_TcpClose.ident := udClosePortID;
|
||||
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
|
||||
FUB_TcpClose ();
|
||||
|
||||
IF (FUB_TcpClose.status = 0) OR
|
||||
(FUB_TcpClose.status = tcpERR_INVALID_IDENT) THEN
|
||||
IF (udClientID = 0) THEN
|
||||
enState := enSTEP_OPENED;
|
||||
ELSE
|
||||
enState := enSTEP_CONNECTED;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
|
||||
//Receive Data an Client Connections
|
||||
FUB_TcpRecv.enable := (enState = enSTEP_CONNECTED);
|
||||
FUB_TcpRecv.ident := udClientID;
|
||||
FUB_TcpRecv.pData := ADR (strRecvBuffer);
|
||||
FUB_TcpRecv.datamax := 120;
|
||||
FUB_TcpRecv.flags := 0;
|
||||
FUB_TcpRecv ();
|
||||
|
||||
|
||||
IF (FUB_TcpRecv.recvlen = 2) AND (FUB_TcpRecv.status = 0) THEN
|
||||
memcpy (ADR (uiProdNr), ADR (strRecvBuffer), 2);
|
||||
gABBLog.udProdNr := UINT_TO_UDINT (N_TO_HUINT (uiProdNr));
|
||||
gABBLog.udProdID := gudUnixTimeUTC;
|
||||
gABBLog.bLog := TRUE;
|
||||
END_IF
|
||||
|
||||
TON_Lifebeat.IN := NOT bSend AND (enState = enSTEP_CONNECTED);
|
||||
TON_Lifebeat.PT := t#5s;
|
||||
TON_Lifebeat ();
|
||||
|
||||
IF TON_Lifebeat.Q THEN
|
||||
bSend := TRUE;
|
||||
END_IF
|
||||
|
||||
//Send Data on Client Connections
|
||||
IF (enState = enSTEP_CONNECTED) THEN
|
||||
FUB_TcpSend.enable := bSend;
|
||||
FUB_TcpSend.pData := ADR (usLifecount);
|
||||
FUB_TcpSend.datalen := 1;
|
||||
FUB_TcpSend.ident := udClientID;
|
||||
FUB_TcpSend.flags := 0;
|
||||
FUB_TcpSend ();
|
||||
|
||||
IF FUB_TcpSend.status = 0 THEN
|
||||
usLifecount := usLifecount + 1;
|
||||
bSend := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_PROGRAM
|
||||
|
||||
|
||||
|
||||
PROGRAM _EXIT
|
||||
FUB_TcpClose.enable := TRUE;
|
||||
FUB_TcpClose.ident := udSocketID;
|
||||
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
|
||||
WHILE TRUE DO
|
||||
FUB_TcpClose ();
|
||||
IF (FUB_TcpClose.status <> ERR_FUB_BUSY) THEN
|
||||
EXIT;
|
||||
END_IF
|
||||
END_WHILE
|
||||
FUB_TcpClose.enable := TRUE;
|
||||
FUB_TcpClose.ident := udClientID;
|
||||
FUB_TcpClose.how := (tcpSHUT_RD OR tcpSHUT_WR);
|
||||
WHILE TRUE DO
|
||||
FUB_TcpClose ();
|
||||
IF (FUB_TcpClose.status <> ERR_FUB_BUSY) THEN
|
||||
EXIT;
|
||||
END_IF
|
||||
END_WHILE
|
||||
END_PROGRAM
|
||||
14
Logical/Communication/S7ABB/S7ABBInit.st
Normal file
14
Logical/Communication/S7ABB/S7ABBInit.st
Normal file
@@ -0,0 +1,14 @@
|
||||
PROGRAM _INIT
|
||||
strcpy (ADR (strBindIP), ADR ('192.168.100.54'));
|
||||
|
||||
FUB_TcpOpen.pIfAddr := ADR (strBindIP);
|
||||
FUB_TcpOpen.port := 8000;
|
||||
FUB_TcpOpen.options := tcpOPT_REUSEADDR;
|
||||
|
||||
FUB_TcpServ.pIpAddr := ADR (strClientIP);
|
||||
|
||||
enState := enSTEP_INIT;
|
||||
bAllowData := TRUE;
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
6
Logical/Communication/collectd/AppendDINT.st
Normal file
6
Logical/Communication/collectd/AppendDINT.st
Normal file
@@ -0,0 +1,6 @@
|
||||
(* Append String to Bytestream (with 2Byte Len and 0 Termination) *)
|
||||
FUNCTION AppendDINT
|
||||
ldData := H_TO_NDINT (dInDINT);
|
||||
ludNextAdr := memcpy (udInNextAdr, ADR (ludNull), 4);
|
||||
AppendDINT := memcpy (ludNextAdr, ADR (ldData), 4);
|
||||
END_FUNCTION
|
||||
6
Logical/Communication/collectd/AppendINT.st
Normal file
6
Logical/Communication/collectd/AppendINT.st
Normal file
@@ -0,0 +1,6 @@
|
||||
(* Append Int to Bytestream *)
|
||||
FUNCTION AppendINT
|
||||
liData := H_TO_NINT (iInINT);
|
||||
ludNextAdr := memcpy (udInNextAdr, ADR (ludNull), 6);
|
||||
AppendINT := memcpy (ludNextAdr, ADR (liData), 2);
|
||||
END_FUNCTION
|
||||
5
Logical/Communication/collectd/AppendLREAL.st
Normal file
5
Logical/Communication/collectd/AppendLREAL.st
Normal file
@@ -0,0 +1,5 @@
|
||||
(* Append String to Bytestream (with 2Byte Len and 0 Termination) *)
|
||||
FUNCTION AppendLREAL
|
||||
ldrData := drInLREAL;
|
||||
AppendLREAL := memcpy (udInNextAdr, ADR (ldrData), 8);
|
||||
END_FUNCTION
|
||||
9
Logical/Communication/collectd/AppendStr.st
Normal file
9
Logical/Communication/collectd/AppendStr.st
Normal file
@@ -0,0 +1,9 @@
|
||||
(* Append String to Bytestream (with 2Byte Len and 0 Termination) *)
|
||||
FUNCTION AppendStr
|
||||
//Append NULL Byte also
|
||||
luiStrlen := strlen (ADR (pstrInString)) + 1;
|
||||
luiPartlen := H_TO_NUINT (luiStrlen + 4);
|
||||
//Lenghtindicator 2 Byte Partidentifier, 2 Byte Len, Strlen)
|
||||
ludNextAdr := memcpy (udInNextAdr, ADR (luiPartlen), 2);
|
||||
AppendStr := memcpy (ludNextAdr, ADR (pstrInString), luiStrlen);
|
||||
END_FUNCTION
|
||||
6
Logical/Communication/collectd/AppendUINT.st
Normal file
6
Logical/Communication/collectd/AppendUINT.st
Normal file
@@ -0,0 +1,6 @@
|
||||
(* Append Int to Bytestream *)
|
||||
FUNCTION AppendUINT
|
||||
luiData := H_TO_NUINT (uiInUINT);
|
||||
ludNextAdr := memcpy (udInNextAdr, ADR (ludNull), 6);
|
||||
AppendUINT := memcpy (ludNextAdr, ADR (luiData), 2);
|
||||
END_FUNCTION
|
||||
15
Logical/Communication/collectd/IEC.prg
Normal file
15
Logical/Communication/collectd/IEC.prg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.90.23 SP05?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">collectd.st</File>
|
||||
<File Description="Local data types" Private="true">collectd.typ</File>
|
||||
<File Description="Local variables" Private="true">collectd.var</File>
|
||||
<File Private="true">collectd.fun</File>
|
||||
<File Description="Append String to Bytestream (with 2Byte Len and 0 Termination)">AppendStr.st</File>
|
||||
<File Description="Append Int to Bytestream (with 2Byte Len)">AppendINT.st</File>
|
||||
<File Description="Append Unsigned Int to Bytestream (with 2Byte Len)">AppendUINT.st</File>
|
||||
<File Description="Append Int to Bytestream (with 2Byte Len and 0 Termination)">AppendDINT.st</File>
|
||||
<File Description="Append Int to Bytestream (with 2Byte Len and 0 Termination)">AppendLREAL.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
59
Logical/Communication/collectd/collectd.fun
Normal file
59
Logical/Communication/collectd/collectd.fun
Normal file
@@ -0,0 +1,59 @@
|
||||
(*Decode String for Collectd*)
|
||||
|
||||
FUNCTION AppendStr : UDINT (*Append String to Bytestream (with 2Byte Len and 0 Termination)*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
pstrInString : REFERENCE TO STRING[80]; (*Address of String to Append*)
|
||||
END_VAR
|
||||
VAR
|
||||
luiStrlen : UINT;
|
||||
luiPartlen : UINT;
|
||||
ludNextAdr : UDINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION AppendINT : UDINT (*Append Integer to Bytestream (with 2Byte Len)*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
iInINT : INT; (*Address of Int to Append*)
|
||||
END_VAR
|
||||
VAR
|
||||
liData : INT; (*Data*)
|
||||
ludNextAdr : UDINT;
|
||||
ludNull : UDINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION AppendUINT : UDINT (*Append Integer to Bytestream (with 2Byte Len)*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
uiInUINT : UINT; (*Address of Int to Append*)
|
||||
END_VAR
|
||||
VAR
|
||||
luiData : UINT; (*Data*)
|
||||
ludNextAdr : UDINT;
|
||||
ludNull : UDINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION AppendDINT : UDINT (*Append Integer to Bytestream (with 2Byte Len)*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
dInDINT : DINT; (*Address of Int to Append*)
|
||||
END_VAR
|
||||
VAR
|
||||
ldData : DINT; (*Data*)
|
||||
ludNextAdr : UDINT;
|
||||
ludNull : UDINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION AppendLREAL : UDINT (*Append Integer to Bytestream (with 2Byte Len)*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
drInLREAL : LREAL; (*Address of Int to Append*)
|
||||
END_VAR
|
||||
VAR
|
||||
ldrData : LREAL;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
1277
Logical/Communication/collectd/collectd.st
Normal file
1277
Logical/Communication/collectd/collectd.st
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user