Workbackup Robot 1 i.O. Beta

This commit is contained in:
Michael Rest
2015-07-12 10:18:16 +02:00
parent 1f6241214d
commit d99b8e5c44
218 changed files with 7357 additions and 6145 deletions

View File

@@ -5,8 +5,6 @@
<Object Type="DataObject" Language="Apt" Description="Acp Parameter for Grinder 1 Motor (SEW)">gAxGrnd1a</Object>
<Object Type="DataObject" Language="Apt">gAxR1G2a</Object>
<Object Type="DataObject" Language="Apt">gAxR2G2a</Object>
<Object Type="DataObject" Language="Apt" Description="Tablet1">gAxR1T1a</Object>
<Object Type="DataObject" Language="Apt" Description="Tablet2">gAxR1T2a</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter for Office Motor (24V)">motor_office</Object>
<Object Type="DataObject" Language="Apt" Description="Acp Parameter for motor simulation">motor_sim</Object>
</Objects>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<?AutomationStudio Version=?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="PCTRL_S_ACT_PARID" ID="230" Value="PCTRL_S_SET" />
<Parameter Name="PCTRL_S_ACT_PARID" ID="230" Value="1" />
<Parameter Name="SERVO_V_MAX_OUTPUT" ID="64201" Value="546116,666666667" />
</Root>
</AcoposParameterTable>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>gAxR1T1a.apt</File>
</Files>
</DataObject>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="PCTRL_S_ACT_PARID" ID="230" Value="PCTRL_S_SET" />
<Parameter Name="SERVO_V_MAX_OUTPUT" ID="64201" Value="546116,666666667" />
</Root>
</AcoposParameterTable>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>gAxR1T2a.apt</File>
</Files>
</DataObject>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=?>
<AcoposParameterTable>
<Root Name="Parameters">
<Parameter Name="PCTRL_S_ACT_PARID" ID="230" Value="PCTRL_S_SET" />
<Parameter Name="SERVO_V_MAX_OUTPUT" ID="64201" Value="546116,666666667" />
</Root>
</AcoposParameterTable>

View File

@@ -1,36 +0,0 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//MC FunctionBlocks*)
VAR
Axis_MC_BR_ReadDriveStatus : MC_BR_ReadDriveStatus := (0);
Axis_MC_BR_Powermeter : MC_BR_PowerMeter := (0);
Axis_MC_Power : MC_Power := (0);
Axis_MC_ReadStatus : MC_ReadStatus := (0);
Axis_MC_ReadAxisError : MC_ReadAxisError := (0);
Axis_MC_BR_ReadAxisError : MC_BR_ReadAxisError := (0);
Axis_MC_Reset : MC_Reset := (0);
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lPS : REFERENCE TO typPS; (*Axis Datastruct *)
lbSimulation : REFERENCE TO BOOL;
enStep : enPSStep;
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Constants*)
(*//-----------------------------------------------------------------------------------------------------*)
(*//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*)
udAxisObj : UDINT;
END_VAR

View File

@@ -1,201 +0,0 @@
PROGRAM _CYCLIC
IF (uiRestartDelay > 0) THEN
uiRestartDelay := uiRestartDelay - 1;
END_IF
Axis_MC_ReadStatus ();
IF Axis_MC_ReadStatus.Valid THEN
lPS.AxisState.bDisabled := Axis_MC_ReadStatus.Disabled;
lPS.AxisState.bStandstill := Axis_MC_ReadStatus.StandStill;
lPS.AxisState.bStopping := Axis_MC_ReadStatus.Stopping;
lPS.AxisState.bHoming := Axis_MC_ReadStatus.Homing;
lPS.AxisState.bMotionDiscrete := Axis_MC_ReadStatus.DiscreteMotion;
lPS.AxisState.bMotionContinous := Axis_MC_ReadStatus.ContinuousMotion;
lPS.AxisState.bMotionSynchronized := Axis_MC_ReadStatus.SynchronizedMotion;
lPS.AxisState.bErrorstop := Axis_MC_ReadStatus.Errorstop;
END_IF
Axis_MC_BR_ReadDriveStatus ();
Axis_MC_BR_ReadAxisError ();
//enMachine Axis
//Check for general Axis errors
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) AND Axis_MC_ReadAxisError.Valid THEN
lPS.enStep := enPSSTATE_ERROR_AXIS;
//power should be off
ELSIF NOT lPS.Command.bPower AND Axis_MC_ReadStatus.Errorstop AND Axis_MC_ReadStatus.Valid THEN
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF NOT lPS.Command.bPower AND NOT (lbSimulation XOR lPS.DriveStatus.bSimulation) THEN
lPS.enStep := enPSSTATE_WAIT;
END_IF
CASE lPS.enStep OF
//==============================================
//WAIT
enPSSTATE_WAIT:
//reset power
Axis_MC_Power.Enable := 0;
Axis_MC_BR_Powermeter.Enable := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_READY;
//==============================================
//Ready, wait for commands
enPSSTATE_READY:
IF lPS.Command.bPower AND NOT Axis_MC_Power.Status THEN
lPS.enStep := enPSSTATE_POWER_ON;
ELSIF Axis_MC_Power.Status AND NOT lPS.Command.bPower THEN
Axis_MC_Power.Enable := 1;
ELSIF lPS.Command.bStartPowerMeter THEN
lPS.enStep := enPSSTATE_POWERMETER_START;
ELSIF lPS.Command.bStopPowerMeter THEN
lPS.enStep := enPSSTATE_POWERMETER_STOP;
ELSIF lPS.Command.bRestartInterval THEN
Axis_MC_BR_Powermeter.RestartInterval := FALSE;
lPS.enStep := enPSSTATE_RESTART_INTERVAL;
END_IF
//==============================================
//Power On
enPSSTATE_POWER_ON:
Axis_MC_Power.Enable := 1;
IF Axis_MC_Power.Status THEN
lPS.enStep := enPSSTATE_READY;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lPS.Error.uiID := Axis_MC_Power.ErrorID;
lPS.enStep := enPSSTATE_ERROR;
END_IF
//==============================================
//Start Powermeter
enPSSTATE_POWERMETER_START:
Axis_MC_BR_Powermeter.Enable := TRUE;
Axis_MC_BR_Powermeter.Mode := mcONLY_PSM;
Axis_MC_BR_Powermeter.IntervalTime := lPS.Parameter.uiIntervalTime;
lPS.Command.bStartPowerMeter := FALSE;
IF Axis_MC_BR_Powermeter.Valid THEN
lPS.enStep := enPSSTATE_READY;
END_IF
IF Axis_MC_BR_Powermeter.Error THEN
Axis_MC_BR_Powermeter.Enable := FALSE;
lPS.Error.uiID := Axis_MC_BR_Powermeter.ErrorID;
lPS.enStep := enPSSTATE_ERROR;
END_IF
//==============================================
//Stop Powermeter
enPSSTATE_POWERMETER_STOP:
Axis_MC_BR_Powermeter.Enable := FALSE;
lPS.Command.bStopPowerMeter := FALSE;
IF NOT Axis_MC_BR_Powermeter.Valid THEN
lPS.enStep := enPSSTATE_READY;
END_IF
//==============================================
//Restart Powermeter Interval
enPSSTATE_RESTART_INTERVAL:
lPS.Command.bRestartInterval := FALSE;
Axis_MC_BR_Powermeter.RestartInterval := TRUE;
lPS.enStep := enPSSTATE_READY;
//==============================================
//Error
enPSSTATE_ERROR:
IF lPS.Error.bAcknowledge AND Axis_MC_ReadStatus.Errorstop AND Axis_MC_ReadStatus.Valid THEN
lPS.Error.bAcknowledge := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF lPS.Error.bAcknowledge THEN
lPS.Error.bAcknowledge := 0;
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_WAIT;
END_IF
//==============================================
//Error Axis
enPSSTATE_ERROR_AXIS:
IF NOT Axis_MC_ReadAxisError.Valid THEN
lPS.enStep := enPSSTATE_ERROR_AXIS;
ELSIF (Axis_MC_ReadAxisError.AxisErrorID <> 0) AND (Axis_MC_ReadAxisError.AxisErrorID > 0) THEN
lPS.Error.uiID := Axis_MC_ReadAxisError.AxisErrorID;
END_IF
//IF (lPS.Error.uiID = 1004) AND (uiRestartDelay > 0) THEN
// lPS.Error.bAcknowledge := 1;
//END_IF
Axis_MC_ReadAxisError.Acknowledge := 0;
IF lPS.Error.bAcknowledge THEN
lPS.Error.bAcknowledge := 0;
IF (Axis_MC_ReadAxisError.AxisErrorID <> 0) THEN
Axis_MC_ReadAxisError.Acknowledge := 1;
END_IF
END_IF
IF (Axis_MC_ReadAxisError.AxisErrorCount = 0) AND
Axis_MC_ReadStatus.Errorstop AND
Axis_MC_ReadStatus.Valid THEN
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_ERROR_RESET;
ELSIF (Axis_MC_ReadAxisError.AxisErrorCount = 0) THEN
lPS.Error.uiID := 0;
lPS.enStep := enPSSTATE_WAIT;
END_IF
//==============================================
//Reset DONE
enPSSTATE_ERROR_RESET:
Axis_MC_Reset.Execute := 1;
IF Axis_MC_Power.Error THEN
Axis_MC_Power.Enable := 0;
END_IF
IF Axis_MC_Reset.Done THEN
Axis_MC_Reset.Execute := 0;
lPS.enStep := enPSSTATE_WAIT;
ELSIF (Axis_MC_Reset.ErrorID <> 0) THEN
lPS.Error.uiID := Axis_MC_Reset.ErrorID;
Axis_MC_Reset.Execute := 0;
lPS.enStep := enPSSTATE_ERROR;
END_IF
END_CASE
//--------------------------------------------
//Call Function Blocks
Axis_MC_Power ();
Axis_MC_Reset ();
(**********************MC_BR_POWERMETER *****************************)
Axis_MC_BR_Powermeter ();
IF Axis_MC_BR_Powermeter.Valid THEN
lPS.Status.mcPowerData.IntervalDuration := Axis_MC_BR_Powermeter.PowerData.IntervalDuration;
lPS.Status.mcPowerData.AverageActivePower := Axis_MC_BR_Powermeter.PowerData.AverageActivePower;
lPS.Status.mcPowerData.AverageReactivePower := Axis_MC_BR_Powermeter.PowerData.AverageReactivePower;
lPS.Status.mcPowerData.MaximumActivePower := Axis_MC_BR_Powermeter.PowerData.MaximumActivePower;
lPS.Status.mcPowerData.MinimalActivePower := Axis_MC_BR_Powermeter.PowerData.MinimalActivePower;
lPS.Status.mcPowerData.ConsumedEnergy := Axis_MC_BR_Powermeter.PowerData.ConsumedEnergy;
lPS.Status.mcPowerData.RegeneratedEnergy := Axis_MC_BR_Powermeter.PowerData.RegeneratedEnergy;
lPS.Status.mcPowerData.EnergyBalance := Axis_MC_BR_Powermeter.PowerData.EnergyBalance;
IF (lPS.Status.mcPowerData.IntervalNumber <> Axis_MC_BR_Powermeter.PowerData.IntervalNumber) THEN
//New Interval
grConsumedEnergy := grConsumedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
grRegeneratedEnergy := grRegeneratedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
lPS.Energy.rConsumedEnergy := lPS.Energy.rConsumedEnergy + lPS.Status.mcPowerData.ConsumedEnergy;
lPS.Energy.rRegeneratedEnergy := lPS.Energy.rRegeneratedEnergy + lPS.Status.mcPowerData.RegeneratedEnergy;
END_IF
lPS.Status.mcPowerData.IntervalNumber := Axis_MC_BR_Powermeter.PowerData.IntervalNumber;
END_IF
END_PROGRAM

View File

@@ -1,40 +0,0 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lPS ACCESS ADR (gPS);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
//Access global ACP10 Axis Objects
udAxisObj := ADR (gAxPS);
//Initial Step
lPS.enStep := enPSSTATE_READY;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lPS.DriveStatus);
Axis_MC_BR_Powermeter.Axis := udAxisObj;
Axis_MC_Power.Axis := udAxisObj;
Axis_MC_ReadStatus.Axis := udAxisObj;
Axis_MC_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lPS.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lPS.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lPS.Error.Text[0]);
Axis_MC_Reset.Axis := udAxisObj;
//Enable Fubs
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisPSlInit.st</File>
<File Description="Cyclic code">AxisPSlCyclic.st</File>
<File Description="Local variables" Private="true">AxisPS.var</File>
</Files>
</Program>

View File

@@ -1,91 +0,0 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//MC FunctionBlocks*)
VAR
Axis_MC_BR_AxisErrorCollector : MC_BR_AxisErrorCollector;
Axis_MC_ACP_ENCOD_REF : MC_ACP_ENCOD_REF := (0);
Axis_MC_ACP_ENCOD_PARAM_REF : MC_ACP_ENCOD_PARAM_REF := (0);
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); (*Stop electronic Gear coupling*)
Axis_MC_BR_BrakeControl : MC_BR_BrakeControl := (0);
Axis_MC_BR_GetErrorText : MC_BR_GetErrorText := (0);
Axis_MC_BR_HomeAcpEncoder : MC_BR_HomeAcpEncoder := (0);
Axis_MC_BR_InitAxisPar : MC_BR_InitAxisPar := (0);
Axis_MC_BR_JogVelocity : MC_BR_JogVelocity := (0);
Axis_MC_BR_JogLimitPosition : MC_BR_JogLimitPosition := (0);
Axis_MC_BR_JogTargetPosition : MC_BR_JogTargetPosition := (0);
Axis_MC_BR_ReadDriveStatus : MC_BR_ReadDriveStatus := (0);
Axis_MC_BR_Simulation : MC_BR_Simulation := (0);
Axis_MC_BR_SetHardwareInputs : MC_BR_SetHardwareInputs := (0); (*Set HW-Inputs (Limits for Axises)*)
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_Halt : MC_Halt := (0); (*Halt*)
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_BR_ReadAxisError : MC_BR_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*)
bDisableCommands : BOOL := FALSE;
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;
TON_HomingOk : TON;
END_VAR

View File

@@ -1,712 +0,0 @@
PROGRAM _CYCLIC
IF (uiRestartDelay > 0) THEN
uiRestartDelay := uiRestartDelay - 1;
END_IF
//Devel Axis Initialisation
Axis_MC_BR_InitAxisPar.Axis := udAxisObj;
Axis_MC_BR_InitAxisPar.Execute := bAxisInit;
Axis_MC_BR_InitAxisPar ();
IF Axis_MC_BR_InitAxisPar.Done THEN
bAxisInit := FALSE;
END_IF
//Devel Absolute Encoder Homing
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 ();
IF Axis_MC_BR_HomeAcpEncoder.Done THEN
bHomeAbs := FALSE;
END_IF
//Set Hardware inputs
//Direct map IO
Axis_MC_BR_SetHardwareInputs.Enable := lAxis.Para.bSetHWInputs;
Axis_MC_BR_SetHardwareInputs ();
//get axis information
Axis_MC_BR_AxisErrorCollector ();
(***********************CHECK FOR ERRORS**************************)
IF (lAxis.enStep < enAxSTATE_STOP_AFTER_ERROR) THEN
IF (Axis_MC_BR_AxisErrorCollector.Errorstop) THEN
lAxis.enStep := enAxSTATE_ERROR;
ELSIF (Axis_MC_BR_AxisErrorCollector.FunctionBlockError) OR
(Axis_MC_BR_AxisErrorCollector.AxisError) OR
(Axis_MC_BR_AxisErrorCollector.AxisWarning) THEN
lAxis.enStep := enAxSTATE_STOP_AFTER_ERROR;
END_IF
END_IF
Axis_MC_BR_ReadAxisError ();
Axis_MC_ReadStatus ();
IF Axis_MC_ReadStatus.Valid 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;
END_IF
Axis_MC_BR_ReadDriveStatus ();
TON_HomingOk.IN := lAxis.DriveStatus.bHomingOk AND NOT lAxis.Status.bHoming;
IF EDGEPOS (lAxis.bHome) THEN
TON_HomingOk.IN := FALSE;
END_IF
TON_HomingOk.PT := t#50ms;
TON_HomingOk ();
lAxis.Status.bHomingOkDelayed := TON_HomingOk.Q;
//Position
Axis_MC_ReadActualPosition ();
IF Axis_MC_ReadActualPosition.Valid THEN
lAxis.rActPosition := Axis_MC_ReadActualPosition.Position;
lAxisActPos := lAxis.rActPosition;
END_IF
//Velocity
Axis_MC_ReadActualVelocity ();
IF Axis_MC_ReadActualVelocity.Valid THEN
lAxis.rActVelocity := Axis_MC_ReadActualVelocity.Velocity;
END_IF
//Torque
IF lbSimulation OR lAxis.DriveStatus.bSimulation OR lAxis.bVAxis THEN
Axis_MC_ReadActualTorque.Enable := FALSE; //Disable for Simulation (not Possible)
END_IF
Axis_MC_ReadActualTorque ();
IF Axis_MC_ReadActualTorque.Valid THEN
lAxis.rActTorque := Axis_MC_ReadActualTorque.Torque;
END_IF
//Power OFF
IF NOT lAxis.bPower AND lAxis.DriveStatus.bControllerStatus THEN
lAxis.enStep := enAxSTATE_POWER_OFF;
END_IF
CASE lAxis.enStep OF
//==============================================
//WAIT
enAxSTATE_WAIT:
//IF lAxis.Status.bDisabled AND lbSimulation AND NOT lAxis.DriveStatus.bSimulation THEN
// lAxis.enStep := enAxSTATE_SIMULATION_ON;
//ELSIF lAxis.Status.bDisabled AND NOT lbSimulation AND lAxis.DriveStatus.bSimulation THEN
// lAxis.enStep := enAxSTATE_SIMULATION_OFF;
IF lAxis.bPower THEN
lAxis.enStep := enAxSTATE_POWER_ON;
ELSE
bDisableCommands := TRUE;
END_IF
//==============================================
//Simulation On
enAxSTATE_SIMULATION_ON:
Axis_MC_BR_Simulation.Execute := 1;
Axis_MC_BR_Simulation.SimulationCommand := mcMOTOR;
IF Axis_MC_BR_Simulation.Done THEN
Axis_MC_BR_Simulation.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_BR_Simulation.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Simulation Off
enAxSTATE_SIMULATION_OFF;
Axis_MC_BR_Simulation.Execute := 1;
Axis_MC_BR_Simulation.SimulationCommand := mcSIMULATION_OFF;
IF Axis_MC_BR_Simulation.Done THEN
Axis_MC_BR_Simulation.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_BR_Simulation.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Power On
enAxSTATE_POWER_ON:
Axis_MC_Power.Enable := TRUE;
IF Axis_MC_Power.Status THEN
lAxis.enStep := enAxSTATE_READY;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Power Off
enAxSTATE_POWER_OFF:
Axis_MC_Power.Enable := FALSE;
IF Axis_MC_Power.Status THEN
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_Power.ErrorID <> 0) THEN
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Ready, wait for commands
enAxSTATE_READY:
IF lAxis.bStop THEN
lAxis.bStop := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.bHome THEN
lAxis.enStep := enAxSTATE_HOME;
ELSIF lAxis.Move.bBraketest THEN
lAxis.Move.bBraketest := 0;
lAxis.enStep := enAxSTATE_BRAKE_TEST;
ELSIF lAxis.Move.bJogPos OR lAxis.Move.bJogNeg THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_JOG;
ELSIF lAxis.Move.bAbsolute AND NOT lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ABSOLUTE;
ELSIF lAxis.Move.bAbsolute AND lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ABSOLUTE_TRIGSTP;
ELSIF lAxis.Move.bAdditive AND NOT lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ADDITIVE;
ELSIF lAxis.Move.bAdditive AND lAxis.Para.bTriggStop THEN
//Movement will stopped when command is resetted
lAxis.enStep := enAxSTATE_MOVE_ADDITIVE_TRIGSTP;
ELSIF lAxis.Move.bVelocity THEN
lAxis.Move.bVelocity := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_VELOCITY;
ELSIF lAxis.Move.bVelocityControl THEN
lAxis.Move.bVelocityControl := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_VELOCITY_CTRL;
ELSIF lAxis.Move.bTorqueControl THEN
lAxis.Move.bTorqueControl := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_MOVE_TORQUE_CTRL;
ELSIF lAxis.Move.bStartGearSlave THEN
lAxis.Move.bStartGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_START;
ELSIF lAxis.Move.bStartGearPosSlave THEN
lAxis.Move.bStartGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEARPOS_START;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Drive Home
enAxSTATE_HOME:
Axis_MC_Home.Position := lAxis.Para.rHomePosition;
Axis_MC_Home.HomingMode := lAxis.Para.usHomeingMode;
Axis_MC_Home.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
lAxis.bHome := 0;
ELSIF Axis_MC_Home.Done AND (lAxis.Para.udAxisModPosFactor > 0) AND (lAxis.Para.udAxisModPosPeriod > 0) THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_INIT_MOD_POS;
lAxis.bHome := 0;
ELSIF Axis_MC_Home.Done THEN
Axis_MC_Home.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
lAxis.bHome := 0;
END_IF
//==============================================
//Test Brake
enAxSTATE_BRAKE_TEST:
Axis_MC_BR_BrakeControl.Command := mcBRAKE_TEST_START;
Axis_MC_BR_BrakeControl.Configuration.BrakeTest.PositionLimit := lAxis.Para.rBraketestPosLimit;
Axis_MC_BR_BrakeControl.Configuration.BrakeTest.TestTorque := lAxis.Para.rBraketestTorque;
Axis_MC_BR_BrakeControl.Execute := 1;
IF lAxis.bStop THEN
Axis_MC_BR_BrakeControl.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_Home.Done THEN
Axis_MC_BR_BrakeControl.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Initialize Modulo Position
enAxSTATE_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;
IF Axis_MC_BR_InitModPos.Done THEN
Axis_MC_BR_InitModPos.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Stop Movement (as long as Stop Command is set)
enAxSTATE_STOP:
Axis_MC_Stop.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_Stop.Execute := 1;
IF Axis_MC_Stop.Done AND NOT lAxis.bStop THEN
Axis_MC_Stop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
IF (Axis_MC_Stop.Error OR Axis_MC_Stop.CommandAborted) AND NOT lAxis.bStop THEN
Axis_MC_Stop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Jog Positive
enAxSTATE_JOG:
Axis_MC_BR_JogVelocity.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogVelocity.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogVelocity.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogVelocity.JogPositive := lAxis.Move.bJogPos;
Axis_MC_BR_JogVelocity.JogNegative := lAxis.Move.bJogNeg;
Axis_MC_BR_JogVelocity.Enable := (lAxis.Para.JogMode = enAxJOG);
Axis_MC_BR_JogLimitPosition.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogLimitPosition.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogLimitPosition.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogLimitPosition.JogPositive := lAxis.Move.bJogPos;
Axis_MC_BR_JogLimitPosition.JogNegative := lAxis.Move.bJogNeg;
Axis_MC_BR_JogLimitPosition.FirstPosition := lAxis.Para.rJogLimitLow;
Axis_MC_BR_JogLimitPosition.LastPosition := lAxis.Para.rJogLimitHigh;
Axis_MC_BR_JogLimitPosition.Enable := (lAxis.Para.JogMode = enAxJOG_Limits);
Axis_MC_BR_JogTargetPosition.Acceleration := lAxis.Para.rAcceleration;
Axis_MC_BR_JogTargetPosition.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_BR_JogTargetPosition.Velocity := lAxis.Para.rJogVelocity;
Axis_MC_BR_JogTargetPosition.TargetPosition:= lAxis.Para.rPosition;
Axis_MC_BR_JogTargetPosition.JogToTarget := lAxis.Move.bJogPos OR lAxis.Move.bJogNeg;
Axis_MC_BR_JogTargetPosition.JogPositive := FALSE;
Axis_MC_BR_JogTargetPosition.JogNegative := FALSE;
Axis_MC_BR_JogTargetPosition.Enable := (lAxis.Para.JogMode = enAxJOG_Target);
IF (NOT lAxis.Move.bJogPos AND NOT lAxis.Move.bJogNeg) OR lAxis.bStop THEN
Axis_MC_BR_JogVelocity.Enable := 0;
Axis_MC_BR_JogLimitPosition.Enable := 0;
Axis_MC_BR_JogTargetPosition.Enable := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move Absolute
enAxSTATE_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; //Interesting on Periodic Axises
Axis_MC_MoveAbsolute.Execute := 1;
IF lAxis.bStop OR NOT lAxis.Move.bAbsolute THEN
;lAxis.bStop := 0;
Axis_MC_MoveAbsolute.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_MoveAbsolute.Done THEN
Axis_MC_MoveAbsolute.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Absolute (Stopp with Trigger
enAxSTATE_MOVE_ABSOLUTE_TRIGSTP:
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; //Interesting on Periodic Axises
//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;
IF lAxis.bStop OR NOT lAxis.Move.bAbsolute THEN
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_BR_MoveAbsoluteTriggStop.Done THEN
Axis_MC_BR_MoveAbsoluteTriggStop.Execute := 0;
lAxis.Move.bAbsolute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Additive
enAxSTATE_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;
IF lAxis.bStop OR NOT lAxis.Move.bAdditive THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_MoveAdditive.Done THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Additive
enAxSTATE_MOVE_ADDITIVE_TRIGSTP:
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;
IF lAxis.bStop OR NOT lAxis.Move.bAdditive THEN
lAxis.Move.bAdditive := 0;
Axis_MC_MoveAdditive.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF Axis_MC_BR_MoveAdditiveTriggStop.Done THEN
lAxis.Move.bAdditive := 0;
Axis_MC_BR_MoveAdditiveTriggStop.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Move Velocity
enAxSTATE_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;
IF lAxis.bStop THEN
Axis_MC_MoveVelocity.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move Velocity Control (Only POWERLINK)
//FixMe just prepared
enAxSTATE_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
enAxSTATE_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; //Alternative 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;
IF lAxis.bStop THEN
Axis_MC_BR_TorqueControl.Enable := 0;
lAxis.Status.bTorqueLimitReached := 0;
lAxis.enStep := enAxSTATE_STOP;
END_IF
//==============================================
//Move GEAR START
enAxSTATE_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;
IF Axis_MC_GearIn.InGear THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
ELSIF lAxis.bStop THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Move GEAR POS START
enAxSTATE_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 := lAxis.Para.rGearMasterSyncPos;
Axis_MC_GearInPos.SlaveSyncPosition := lAxis.Para.rGearSlaveSyncPos;
Axis_MC_GearInPos.Velocity := lAxis.Para.rGearSyncVelocity;
Axis_MC_GearInPos.Acceleration := lAxis.Para.rGearSyncAcceleration;
Axis_MC_GearInPos.SyncMode := mcSHORTEST_WAY;
Axis_MC_GearInPos.Execute := 1;
IF Axis_MC_GearInPos.InSync THEN
Axis_MC_GearIn.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
ELSIF lAxis.bStop THEN
Axis_MC_GearInPos.Execute := 0;
lAxis.enStep := enAxSTATE_STOP;
ELSIF lAxis.Move.bStopGearSlave THEN
lAxis.Move.bStopGearSlave := 0;
Axis_MC_GearInPos.Execute := 0;
lAxis.enStep := enAxSTATE_MOVE_GEAR_STOP;
END_IF
//==============================================
//Move GEAR STOP
enAxSTATE_MOVE_GEAR_STOP:
Axis_MC_GearOut.Execute := 1;
IF Axis_MC_GearOut.Done THEN
Axis_MC_GearOut.Execute := 0;
lAxis.enStep := enAxSTATE_READY;
END_IF
//==============================================
//Stop after an Error
enAxSTATE_STOP_AFTER_ERROR:
IF (lAxis.Status.bMotionContinous) OR
(lAxis.Status.bMotionDiscrete) OR
(lAxis.Status.bMotionSynchronized) OR
(lAxis.Status.bHoming) THEN
Axis_MC_Stop.Deceleration := lAxis.Para.rDeceleration;
Axis_MC_Stop.Execute := TRUE;
IF Axis_MC_Stop.Done OR Axis_MC_Stop.Error THEN
Axis_MC_Stop.Execute := FALSE;
lAxis.enStep := enAxSTATE_ERROR;
END_IF
ELSE
lAxis.enStep := enAxSTATE_ERROR;
END_IF
//==============================================
//Error
enAxSTATE_ERROR:
bDisableCommands := TRUE;
IF Axis_MC_BR_ReadAxisError.Valid THEN
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number <> 0) THEN
lAxis.Error.uiID := Axis_MC_BR_ReadAxisError.ErrorRecord.Number;
END_IF
IF lAxis.Error.bAcknowledge THEN
lAxis.Error.bAcknowledge := FALSE;
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number <> 0) THEN
Axis_MC_BR_ReadAxisError.Acknowledge:=TRUE;
END_IF
lAxis.enStep := enAxSTATE_ERROR_CHECK;
END_IF
END_IF
//==============================================
//Error Axis
enAxSTATE_ERROR_CHECK:
IF (Axis_MC_BR_ReadAxisError.Valid) THEN
IF (Axis_MC_BR_ReadAxisError.ErrorRecord.Number = 0) THEN
lAxis.Error.uiID := 0;
(* reset axis state IF the axis is in state ErrorStop *)
IF lAxis.Status.bErrorstop AND Axis_MC_ReadStatus.Valid THEN
lAxis.enStep := enAxSTATE_ERROR_RESET;
ELSE
lAxis.enStep := enAxSTATE_WAIT;
END_IF
ELSE
lAxis.enStep := enAxSTATE_ERROR;
END_IF
Axis_MC_BR_ReadAxisError.Acknowledge := FALSE;
END_IF
//==============================================
//Reset DONE
enAxSTATE_ERROR_RESET:
Axis_MC_Reset.Execute := 1;
IF Axis_MC_Power.Error THEN
Axis_MC_Power.Enable := 0;
END_IF
IF Axis_MC_Reset.Done THEN
Axis_MC_Reset.Execute := 0;
lAxis.enStep := enAxSTATE_WAIT;
ELSIF (Axis_MC_Reset.ErrorID <> 0) THEN
lAxis.Error.uiID := Axis_MC_Reset.ErrorID;
Axis_MC_Reset.Execute := 0;
lAxis.enStep := enAxSTATE_ERROR;
END_IF
END_CASE
IF bDisableCommands THEN
//reset power
Axis_MC_Power.Enable := 0;
//reset all fb execute inputs we use
Axis_MC_Home.Execute := 0;
Axis_MC_BR_BrakeControl.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_GearIn.Execute := 0;
Axis_MC_GearInPos.Execute := 0;
Axis_MC_GearOut.Execute := 0;
Axis_MC_Reset.Execute := 0;
//reset user commands
lAxis.bStop := 0;
lAxis.bHome := 0;
lAxis.Move.bBraketest := 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.bStartGearSlave := 0;
lAxis.Move.bStartGearPosSlave := 0;
lAxis.Move.bStopGearSlave := 0;
bDisableCommands := FALSE;
END_IF
//--------------------------------------------
//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 ();
//--------------------------------------------
//Call Function Blocks
Axis_MC_Power ();
Axis_MC_BR_Simulation ();
Axis_MC_Home ();
Axis_MC_BR_BrakeControl ();
Axis_MC_BR_InitModPos();
Axis_MC_BR_JogVelocity ();
Axis_MC_BR_JogLimitPosition ();
Axis_MC_BR_JogTargetPosition ();
Axis_MC_MoveAbsolute ();
Axis_MC_BR_MoveAbsoluteTriggStop();
Axis_MC_MoveAdditive ();
Axis_MC_BR_MoveAdditiveTriggStop ();
Axis_MC_MoveVelocity ();
AXis_MC_BR_MoveVelocityTriggStop ();
Axis_MC_GearIn ();
Axis_MC_GearInPos ();
Axis_MC_GearOut ();
Axis_MC_Stop ();
Axis_MC_Reset ();
Axis_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 ();
//---------------------------------------------
//Read individual Parameter
IF Axis_MC_BR_ReadParID.Done THEN
END_IF
IF Axis_MC_BR_ReadParID.Error THEN
uiMCReadError := Axis_MC_BR_ReadParID.ErrorID;
END_IF
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 ();
//--------------------------------------------
//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
END_IF
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
END_IF
Axis_MC_BR_WriteParID.Execute := 0;
END_IF
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 := 0;
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 ();
END_PROGRAM

View File

@@ -1,90 +0,0 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[0]);
lAxisActPos ACCESS ADR (gAxisActPos[0]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := TRUE;
//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 (gvAxShaftMaster);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
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_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
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;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit.st</File>
<File Description="Cyclic code">AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true">Axisctrl.var</File>
</Files>
</Program>

View File

@@ -1,92 +0,0 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[1]);
lAxisActPos ACCESS ADR (gAxisActPos[1]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//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 (gAxShaft1);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gvAxShaftMaster);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
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_Halt.Axis := udAxisObj;
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_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
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;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInit1.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -1,92 +0,0 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[5]);
lAxisActPos ACCESS ADR (gAxisActPos[5]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//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 (gAxExtra1);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gAxExtra1);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
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_Halt.Axis := udAxisObj;
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_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
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;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInitExtra1.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -1,92 +0,0 @@
PROGRAM _INIT
(* init program *)
//Which Axis
lAxis ACCESS ADR (gAxis[6]);
lAxisActPos ACCESS ADR (gAxisActPos[6]);
lAxisMaster ACCESS ADR (gAxis[0]);
lbSimulation ACCESS ADR (gMachine.bAxisSimulation);
rUser_Var1 ACCESS ADR (grDummy);
lAxis.bVAxis := FALSE;
//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 (gAxExtra2);
//This Axis is always slave (in case OF CAM/Gear)
udAxisMasterObj := ADR (gAxExtra2);
udAxisSlaveObj := udAxisObj;
//Initial Step
lAxis.enStep := enAxSTATE_WAIT;
//Overhand Axis Obj to FunctionBlocks
Axis_MC_BR_AxisErrorCollector.Axis := udAxisObj;
Axis_MC_BR_BrakeControl.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.Axis := udAxisObj;
Axis_MC_BR_ReadDriveStatus.AdrDriveStatus := ADR (lAxis.DriveStatus);
Axis_MC_BR_JogVelocity.Axis := udAxisObj;
Axis_MC_BR_JogLimitPosition.Axis := udAxisObj;
Axis_MC_BR_JogTargetPosition.Axis := udAxisObj;
Axis_MC_BR_Simulation.Axis := udAxisObj;
Axis_MC_BR_SetHardwareInputs.Axis := udAxisObj;
Axis_MC_BR_TorqueControl.Axis := udAxisObj;
Axis_MC_BR_VelocityControl.Axis := udAxisObj;
Axis_MC_ACP_ENCOD_REF.Axis := udAxisObj;
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_Halt.Axis := udAxisObj;
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_BR_ReadAxisError.Axis := udAxisObj;
Axis_MC_BR_ReadAxisError.Mode := mcTEXT;
Axis_MC_BR_ReadAxisError.Configuration.DataAddress := ADR (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataLength := SIZEOF (lAxis.Error.Text);
Axis_MC_BR_ReadAxisError.Configuration.DataObjectName := 'acp10etxde';
Axis_MC_BR_ReadAxisError.Configuration.Format := mcWRAP + mcNULL;
Axis_MC_BR_ReadAxisError.Configuration.LineLength := SIZEOF (lAxis.Error.Text[0]);
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;
//Enable Fubs
Axis_MC_BR_AxisErrorCollector.Enable := TRUE;
Axis_MC_BR_ReadAxisError.Enable := TRUE;
Axis_MC_ReadStatus.Enable := TRUE;
Axis_MC_ReadActualPosition.Enable := TRUE;
Axis_MC_ReadActualVelocity.Enable := TRUE;
Axis_MC_ReadActualTorque.Enable := TRUE; //Not for Stepper Axises
Axis_MC_BR_ReadDriveStatus.Enable := TRUE;
END_PROGRAM

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Initialization code">AxisctrlInitExtra2.st</File>
<File Reference="true">\Logical\Axises\Axisctrl\AxisctrlCyclic.st</File>
<File Description="Local variables" Private="true" Reference="true">\Logical\Axises\Axisctrl\Axisctrl.var</File>
</Files>
</Program>

View File

@@ -1,29 +1,18 @@
VAR
gPS : typPS;
gAxis : ARRAY[0..6] OF typAxis; (*Axis Datasructure / Controlinterface*)
gMAxTrace : typMultAx_Trace; (*Multiaxtrace*)
gAxisActPos : ARRAY[0..6] OF REAL;
grDummy : REAL; (*Dummy Real to be accessed from Axistasks*)
gToolalarms : typAlarm; (*Werkzeugalarme*)
END_VAR
(*//ACP/SDC Axobjects*)
VAR
gAxPS : ACP10AXIS_typ;
gvAxShaftMaster : ACP10VAXIS_typ;
gAxShaft1 : ACP10AXIS_typ;
gAxShaft2 : ACP10AXIS_typ;
gAxShaft3 : ACP10AXIS_typ;
gAxShaft4 : ACP10AXIS_typ;
gAxExtra1 : ACP10AXIS_typ;
gAxExtra2 : ACP10AXIS_typ;
gCmdTightenBelt1Rob1 : BOOL; (*Spannen Band 1 Roboter 1*)
gCmdTightenBelt2Rob1 : BOOL; (*Spannen Band 2 Roboter 1*)
gCmdTightenBelt1Rob2 : BOOL; (*Spannen Band 1 Roboter 1*)
gCmdTightenBelt2Rob2 : BOOL; (*Spannen Band 2 Roboter 2*)
gCmdHoldDoorClosedRob1 : BOOL; (*Zuhaltung Roboter 1*)
gCmdHoldDoorClosedRob2 : BOOL; (*Zuhaltung Roboter 1*)
END_VAR
(*//-----------------------------------------------------------------------------------------------------*)
(*//Retain*)
(*Constants*)
(*//-----------------------------------------------------------------------------------------------------*)
VAR RETAIN
grConsumedEnergy : REAL;
grRegeneratedEnergy : REAL;
grAxisABSOffShaft : ARRAY[1..4] OF REAL; (*Absolute Offsets*)
grPressPosHome : REAL := 200.0; (*Presse Grundstellung Ein/Ausfahren allg*)
giSpeedGrinder1 : INT := 800; (*[rpm] Bandschleifer*)
giSpeedGrinder2 : INT := 800; (*[rpm] Bandschleifer*)
END_VAR
(*Constants*)

View File

@@ -41,4 +41,19 @@ TYPE
enTool2StepHome_WAIT_START_HOME, (*Auf Startbefehl warten f<>r Grundstellung*)
enTool2StepHome_HOMEPOS (*Grundstellung*)
);
typ_enPrograms :
( (*Teile / Programme*)
enROB_PRG_BEL := 10, (*Vimercati BEL*)
enROB_PRG_CBF := 11, (*Preh Centerstack*)
enROB_PRG_FKA := 12, (*Preh Fondklima*)
enROB_PRG_FFG := 13, (*DRS Fondfrischluft*)
enROB_PRG_FoKo := 14, (*Magna FoKo*)
enROB_PRG_MAL := 15, (*Magna MAL*)
enROB_PRG_SPR := 16, (*Alps Sport Rechts*)
enROB_PRG_SPL := 17, (*Alps Sport Links*)
enROB_PRG_LUR := 18, (*Alps Luxus Rechts*)
enROB_PRG_LUL := 19, (*Alps Luxus Links*)
enROB_PRG_BAR := 18, (*Alps Basis Rechts*)
enROB_PRG_BAL := 19 (*Alps Basis Links*)
);
END_TYPE

View File

@@ -6,6 +6,11 @@ VAR
gTool1Interface : typ_ToolInterface; (*Interface zu Werkzeug 1*)
gTool2Interface : typ_ToolInterface; (*Interface zu werkzeug 2*)
END_VAR
(*Remanent*)
VAR
genActivePrgRob1 : typ_enPrograms; (*Actives Programm Roboter 1*)
genActivePrgRob2 : typ_enPrograms; (*Actives Programm Roboter 1*)
END_VAR
(*Permanent*)
VAR RETAIN
gusSelectedTool : USINT; (*Angew<65>hltes Werkzeug*)

View File

@@ -0,0 +1,271 @@
PROGRAM _CYCLIC
IF EDGEPOS (bBlink0_1) THEN
udSteptime := udSteptime + 492;
udCycletime := udCycletime + 492;
END_IF
//States //FixME
lMachine.bMachineHOME := lABBRobot.In.bWZChangePart;
IF lMachine.bMachineHOME THEN
lMachine.bRequestHoming := FALSE;
END_IF
TON_SafetyOk.IN := lbSafetyOk;
TON_SafetyOk.PT := t#250ms;
TON_SafetyOk ();
bSafetyOk := TON_SafetyOk.Q;
IF NOT bSafetyOk THEN
lABBRobot.Out.bSwitchMotorOn := FALSE;
END_IF
//Move Conditions
MoveConditions.bEnableNegSlay1 := (lMachine.bSetupMode OR (lMachine.enMode = enMACH_JOG)) AND lbGateIsOpen;
MoveConditions.bEnablePosSlay1 := (lMachine.bSetupMode OR (lMachine.enMode = enMACH_JOG)) AND lbGateIsOpen;
MoveConditions.bEnableNegSlay2 := (lMachine.bSetupMode OR (lMachine.enMode = enMACH_JOG)) AND lbGateIsOpen;
MoveConditions.bEnablePosSlay2 := (lMachine.bSetupMode OR (lMachine.enMode = enMACH_JOG)) AND lbGateIsOpen;
//Safety Door
MoveConditions.bEnableCloseGate := (lbToolslay1IsIn OR lbToolslay1IsOut) AND
(lbToolslay2IsIn OR lbToolslay2IsOut);
//Status Control vor Visual Component Controls
StatusVCControls.usJogPosSlay1 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosSlay1), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG)), VC_HIDE_BITPOS);
StatusVCControls.usJogNegSlay1 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegSlay1), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG)), VC_HIDE_BITPOS);
StatusVCControls.usJogPosSlay2 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnablePosSlay2), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG)), VC_HIDE_BITPOS);
StatusVCControls.usJogNegSlay2 := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableNegSlay2), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG)), VC_HIDE_BITPOS);
//gbCmdCloseDoorToolslay1
StatusVCControls.usCloseGate := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableCloseGate), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG) OR lbGateIsOpen), VC_HIDE_BITPOS);
StatusVCControls.usOpenGate := SHL (BOOL_TO_USINT (NOT MoveConditions.bEnableOpenGate), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG) OR lbGateIsClosed), VC_HIDE_BITPOS);
StatusVCControls.usOpenGate := SHL (BOOL_TO_USINT (FALSE), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (lMachine.enMode <> enMACH_AUTOMATIC), VC_HIDE_BITPOS);
//Belt Tightgening
StatusVCControls.usTightenBeltGrinder1 := SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG) OR lbTightenBelt1), VC_HIDE_BITPOS);
StatusVCControls.usReleaseBeltGrinder1 := SHL (BOOL_TO_USINT ((lMachine.enMode <> enMACH_JOG) OR NOT lbTightenBelt1), VC_HIDE_BITPOS);
//Reset Manual Commands
IF (lMachine.enMode <> enMACH_JOG) THEN
ManualCommands.bStartGrinder1 := FALSE;
END_IF
//Jog Mode
//==========================================================================================
IF lMachine.enMode = enMACH_JOG THEN
//Clear Commands
//Uncritical Movements
IF ManualCommands.bTightenBeltGrinder1 THEN
lbTightenBelt1 := TRUE;
ELSIF ManualCommands.bReleaseBeltGrinder1 THEN
lbTightenBelt1 := FALSE;
END_IF
//Homing Mode
//==========================================================================================
ELSIF (lMachine.enMode = enMACH_HOMEPOS) THEN
//Home Robot
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CASE enStepHoming OF
//Init
//---------------------------
enHomingStep_INIT:
lABBRobot.Out.usProgNr := ROB_PRG_IDLE;
bTransitionCondition := TRUE; // NOT lMachine.bRequestHoming AND bMachineIsInHomepos
IF bTransitionCondition THEN
enStepHoming := enHomingStep_WAIT_START;
udSteptime := 0;
END_IF
//Wait for Start
//---------------------------
enHomingStep_WAIT_START:
udCycletime := 0;
bTransitionCondition := EDGEPOS (lbStartKey1 OR lbStartKey2);
IF bTransitionCondition THEN
enStepHoming := enHomingStep_WAIT_MOTORS_ON;
udSteptime := 0;
END_IF
//Wait Motors On
//---------------------------
enHomingStep_WAIT_MOTORS_ON:
IF NOT lABBRobot.In.bEStop AND NOT lABBRobot.In.bMotorsOn THEN
lABBRobot.Out.bSwitchMotorOn := TRUE;
lABBRobot.Out.bStart := TRUE;
END_IF
IF lABBRobot.In.bMotorsOn THEN
lABBRobot.Out.bSwitchMotorOn := FALSE;
lABBRobot.Out.bStart := FALSE;
enStepHoming := enHomingStep_WAIT_IN_CYCLE;
udSteptime := 0;
END_IF
//Wait for Robot in Cycle
//---------------------------
enHomingStep_WAIT_IN_CYCLE:
IF NOT lABBRobot.In.bProgramRun THEN
lABBRobot.Out.bStartAtMain := TRUE;
END_IF
IF lABBRobot.In.bProgramRun THEN
lABBRobot.Out.bStartAtMain := FALSE;
enStepHoming := enHomingStep_START_HOME;
udSteptime := 0;
END_IF
//Start Grind
//---------------------------
enHomingStep_START_HOME:
lABBRobot.Out.usProgNr := ROB_PRG_HOME;
IF lABBRobot.In.usStatus = lABBRobot.Out.usProgNr THEN
enStepHoming := enHomingStep_WAIT_FINISHED;
lABBRobot.Out.usProgNr := ROB_PRG_IDLE;
udSteptime := 0;
END_IF
//Wait for Robot finished Grinding
//---------------------------
enHomingStep_WAIT_FINISHED:
IF lABBRobot.In.usStatus = lABBRobot.Out.usProgNr THEN
enStepHoming := enHomingStep_INIT;
udSteptime := 0;
END_IF
END_CASE;
//Automatic Mode
//==========================================================================================
ELSIF (lMachine.enMode = enMACH_AUTOMATIC) THEN
IF (enStepAuto = enAutoStep_WAIT_START) AND EDGEPOS (gbInStartKey1Rob1 OR gbInStartKey2Rob1) AND NOT gbInKeyReleasePart THEN
enTool1State := enTool_Loaded;
END_IF
IF gbInKeyReleasePart THEN
enTool1State := enTool_Empty;
END_IF
IF (enStepAuto = enAutoStep_WAIT_START) THEN
lenActivePrg := enProgramSelection;
END_IF
//Robot Automatic
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CASE enStepAuto OF
//Init
//---------------------------
enAutoStep_INIT:
lABBRobot.Out.usProgNr := ROB_PRG_IDLE;
bTransitionCondition := lABBRobot.In.bWZChangePart; // NOT lMachine.bRequestHoming AND bMachineIsInHomepos
IF NOT lABBRobot.In.bWZChangePart THEN
lMachine.bRequestHoming := TRUE;
END_IF
IF bTransitionCondition THEN
enStepAuto := enAutoStep_WAIT_START;
udSteptime := 0;
END_IF
//Wait for Start
//---------------------------
enAutoStep_WAIT_START:
udCycletime := 0;
bTransitionCondition := (udSteptime > 500) AND lABBRobot.In.bWZChangePart AND bSafetyOk AND
(((enTool1State = enTool_Loaded)) OR ((enTool2State = enTool_Loaded)));
IF bTransitionCondition THEN
enStepAuto := enAutoStep_WAIT_MOTORS_ON;
udSteptime := 0;
END_IF
//Wait Motors On
//---------------------------
enAutoStep_WAIT_MOTORS_ON:
IF NOT lABBRobot.In.bEStop AND NOT lABBRobot.In.bMotorsOn THEN
lABBRobot.Out.bSwitchMotorOn := TRUE;
END_IF
IF lABBRobot.In.bMotorsOn THEN
lABBRobot.Out.bSwitchMotorOn := FALSE;
enStepAuto := enAutoStep_WAIT_IN_CYCLE;
udSteptime := 0;
END_IF
//Wait for Robot in Cycle
//---------------------------
enAutoStep_WAIT_IN_CYCLE:
IF NOT lABBRobot.In.bProgramRun THEN
lABBRobot.Out.bStartAtMain := TRUE;
lABBRobot.Out.bStart := TRUE;
END_IF
IF lABBRobot.In.bProgramRun THEN
lABBRobot.Out.bStartAtMain := FALSE;
lABBRobot.Out.bStart := FALSE;
enStepAuto := enAutoStep_START_GRIND;
udSteptime := 0;
END_IF
//Start Grind
//---------------------------
enAutoStep_START_GRIND:
lABBRobot.Out.usProgNr := DINT_TO_USINT (lenActivePrg);
IF lABBRobot.In.usStatus = lABBRobot.Out.usProgNr THEN
enStepAuto := enAutoStep_WAIT_FINISHED;
lABBRobot.Out.usProgNr := ROB_PRG_IDLE;
udSteptime := 0;
END_IF
//Wait for Robot finished Grinding
//---------------------------
enAutoStep_WAIT_FINISHED:
IF lABBRobot.In.usStatus = lABBRobot.Out.usProgNr THEN
enStepAuto := enAutoStep_INIT;
udSteptime := 0;
enTool1State := enTool_TobeUnload;
END_IF
END_CASE;
END_IF;
gbEnableNextStepBtn := bTransitionCondition AND (lMachine.enMode = enMACH_MANUAL);
//Set Output Commands
lbHoldDoorClosed := (enStepAuto <> enAutoStep_WAIT_START);
//Start Grinder 1
IF (gABBRobot1.In.bGrinder1On OR ManualCommands.bStartGrinder1) AND lMachine.bMachineON THEN
liSetSpeedGrinder1 := giSpeedGrinder1;
ELSE
liSetSpeedGrinder1 := 0;
END_IF;
//Steptime Control
//Motors On
lMachineAlarms.Alarm[100] := ((enStepHoming = enHomingStep_WAIT_MOTORS_ON) OR (enStepAuto = enAutoStep_WAIT_MOTORS_ON))
AND (udSteptime > 15000);
//Prg Run
lMachineAlarms.Alarm[101] := ((enStepHoming = enHomingStep_WAIT_IN_CYCLE) OR (enStepAuto = enAutoStep_WAIT_IN_CYCLE))
AND (udSteptime > 15000);
END_PROGRAM

View File

@@ -0,0 +1,64 @@
(**)
TYPE
typ_enStepAuto :
( (*Schrittkette*)
enAutoStep_INIT := 0, (*Grundstellung pr<70>fen*)
enAutoStep_WAIT_START, (*Auf Start warten (Geladenes Teil / Schutztzor geschlossen)*)
enAutoStep_WAIT_MOTORS_ON, (*Pr<50>fen ob Roboter Motoren EIN*)
enAutoStep_WAIT_IN_CYCLE, (*Pr<50>fen ob Roboter im Zyklus*)
enAutoStep_START_GRIND, (*Programm <20>bergeben *)
enAutoStep_WAIT_FINISHED (*Warten bis Geschliffen*)
);
typ_enStepHoming :
( (*Grundstellungsfahrt*)
enHomingStep_INIT := 0, (*Auf Start warten*)
enHomingStep_WAIT_START, (*Auf Startbefehl warten*)
enHomingStep_WAIT_MOTORS_ON, (*Pr<50>fen ob Roboter Motoren EIN*)
enHomingStep_WAIT_IN_CYCLE, (*Referenzwerte Laden*)
enHomingStep_START_HOME, (*Programm Grundstellung starten*)
enHomingStep_WAIT_FINISHED (*Warten bis Grundstellung erreicht*)
);
typ_enToolState :
( (*Werkzeugstatus*)
enTool_Empty,
enTool_Loaded,
enTool_TobeUnload
);
typStatusPressVCControls : STRUCT (*Controlbytes f<>r Visu*)
usJogNegSlay1 : USINT;
usJogPosSlay1 : USINT;
usJogNegSlay2 : USINT;
usJogPosSlay2 : USINT;
usCloseGate : USINT; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
usOpenGate : USINT; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
usTightenBeltGrinder1 : USINT;
usReleaseBeltGrinder1 : USINT;
usTightenBeltGrinder2 : USINT;
usReleaseBeltGrinder2 : USINT;
usPrgSelection : USINT;
END_STRUCT;
typManualCommnands : STRUCT (*Kommandos f<>r Hand / Automatikbetrieb*)
bNextManStep : BOOL; (*N<>chster Schritt (Semi) Automatic*)
bJogNegSlay1 : BOOL;
bJogPosSlay1 : BOOL;
bJogNegSlay2 : BOOL;
bJogPosSlay2 : BOOL;
bCloseGate : BOOL; (*Schutztor bei Werkzeugschlitten Schlie<69>en*)
bOpenGate : BOOL; (*Schutztor bei Werkzeugschlitten <20>ffnen*)
bStartGrinder1 : BOOL; (*Schleifmaschine 1 Starten*)
bStartGrinder2 : BOOL; (*Schleifmaschine 2 Starten*)
bTightenBeltGrinder1 : BOOL; (*Schleifmaschine 1 Band Freigeben*)
bReleaseBeltGrinder1 : BOOL; (*Schleifmaschine 1 Band Freigeben*)
bTightenBeltGrinder2 : BOOL; (*Schleifmaschine 1 Band Freigeben*)
bReleaseBeltGrinder2 : BOOL; (*Schleifmaschine 1 Band Freigeben*)
END_STRUCT;
typMoveConditions : STRUCT (*Bewegungsfreigaben*)
bEnableNegSlay1 : BOOL;
bEnablePosSlay1 : BOOL;
bEnablePosSlay2 : BOOL;
bEnableNegSlay2 : BOOL;
bEnableCloseGate : BOOL; (*Schutztor bei Werkzeugschlitten Schlie<69>en*)
bEnableOpenGate : BOOL; (*Schutztor bei Werkzeugschlitten <20>ffnen*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,58 @@
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lMachine : REFERENCE TO typMachine;
lbSafetyOk : REFERENCE TO BOOL;
lbGateIsOpen : REFERENCE TO BOOL;
lbGateIsClosed : REFERENCE TO BOOL;
lbToolslay1IsOut : REFERENCE TO BOOL;
lbToolslay1IsIn : REFERENCE TO BOOL;
lbToolslay2IsOut : REFERENCE TO BOOL;
lbToolslay2IsIn : REFERENCE TO BOOL;
lbTightenBelt1 : REFERENCE TO BOOL;
lbTightenBelt2 : REFERENCE TO BOOL;
lbHoldDoorClosed : REFERENCE TO BOOL;
lbStartKey1 : REFERENCE TO BOOL;
lbStartKey2 : REFERENCE TO BOOL;
liSetSpeedGrinder1 : REFERENCE TO INT;
liSetSpeedGrinder2 : REFERENCE TO INT;
lABBRobot : REFERENCE TO TypABBInterface;
lMachineAlarms : REFERENCE TO typAlarm; (*Maschinenalarme*)
lenActivePrg : REFERENCE TO typ_enPrograms;
END_VAR
(*//Constants*)
VAR CONSTANT
ROB_PRG_IDLE : USINT := 0;
ROB_PRG_HOME : USINT := 1;
END_VAR
(*//Local Vars*)
VAR
bTransitionCondition : BOOL;
bSafetyOk : BOOL;
bSafetyOkToolSlay1 : BOOL;
bSafetyOkFP : BOOL;
bHomeMaster : BOOL := FALSE;
bStop : BOOL;
bHalt : BOOL;
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
usi : USINT;
usErrorReset : USINT;
udSteptime : UDINT; (*0.1s*)
udCycletime : UDINT := 0; (*ms*)
udCycletimeLast : UDINT := 0; (*ms*)
StatusVCControls : typStatusPressVCControls;
ManualCommands : typManualCommnands; (*Kommandos Betriebsart Hand*)
MoveConditions : typMoveConditions;
enProgramSelection : typ_enPrograms; (*Programmvorwahl*)
enTool1State : typ_enToolState := 0;
enTool2State : typ_enToolState := 0;
enStepAuto : typ_enStepAuto; (*Schrittkette Automatik*)
enStepHoming : typ_enStepHoming; (*Schrittkette Grundstellung*)
lPressParamActTool1 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
lPressParamActTool2 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
END_VAR
(*//FUBS*)
VAR
TON_SafetyOk : TON;
FUB_AsArLogWrite : AsArLogWrite;
END_VAR

View File

@@ -0,0 +1,20 @@
PROGRAM _INIT
lMachine ACCESS ADR (gMachine1);
lbSafetyOk ACCESS ADR (gbSPLCInWorkzoneOkRob1);
lbGateIsClosed ACCESS ADR (gbSInGateClosedRob1);
lbGateIsOpen ACCESS ADR (gbInGateIsOpenRob1);
lbToolslay1IsIn ACCESS ADR (gbInToolSlay1InRob1);
lbToolslay1IsOut ACCESS ADR (gbInToolSlay1OutRob1);
lbToolslay2IsIn ACCESS ADR (gbInToolSlay2InRob1);
lbToolslay2IsOut ACCESS ADR (gbInToolSlay1OutRob1);
lbTightenBelt1 ACCESS ADR (gCmdTightenBelt1Rob1);
lbTightenBelt2 ACCESS ADR (gCmdTightenBelt2Rob1);
lbHoldDoorClosed ACCESS ADR (gbCmdCloseDoorRobot1);
lbStartKey1 ACCESS ADR (gbInStartKey1Rob1);
lbStartKey2 ACCESS ADR (gbInStartKey2Rob1);
lenActivePrg ACCESS ADR (genActivePrgRob1);
liSetSpeedGrinder1 ACCESS ADR (gAxR1G1.Out.iLFR_Setpointspeed);
// liSetSpeedGrinder2 ACCESS ADR (gAxR1G2.
lMachineAlarms ACCESS ADR (gMachineAlarms1);
lABBRobot ACCESS ADR (gABBRobot1);
END_PROGRAM

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">GrindCtrl.st</File>
<File Description="InitCode">GrindCtrlInit.st</File>
<File Description="Local data types" Private="true">GrindCtrl.typ</File>
<File Description="Local variables" Private="true">GrindCtrl.var</File>
<File Private="true">PressCtrl.fun</File>
<File Description="Zylinderüberwachung">FUB_CylinderCheck.st</File>
</Files>
</Program>

View File

@@ -1,13 +1,4 @@
FUNCTION HomeAxis : BOOL (*Home an Absoulte Encoder Axis*)
VAR_INPUT
InAxis : REFERENCE TO typAxis; (*Achsreferenz*)
rInPermanentOffset : REFERENCE TO REAL; (*Referenz auf permanenten Offset*)
rInOffset : REAL;
enInStep : REFERENCE TO typ_enHome; (*Step*)
END_VAR
END_FUNCTION
FUNCTION_BLOCK FUB_CylinderCheck (*Zylinderüberwachung*)
VAR_INPUT
bInOutputCylinderFw : BOOL; (*Ausgang Zylinder Ausfahren*)

View File

@@ -5,7 +5,5 @@
<Object Type="DataObject" Language="Ax" Description="Acp Init for Grinder 1 Motor (SEW)">gAxGrnd1i</Object>
<Object Type="DataObject" Language="Ax">gAxR1G2i</Object>
<Object Type="DataObject" Language="Ax">gAxR2G2i</Object>
<Object Type="DataObject" Language="Ax" Description="Tablet1">gAxR1T1i</Object>
<Object Type="DataObject" Language="Ax" Description="Tablet2">gAxR1T2i</Object>
</Objects>
</Package>

View File

@@ -17,7 +17,7 @@
<Group ID="scaling">
<Group ID="load">
<Parameter ID="units" Value="1000" />
<Parameter ID="rev_motor" Value="1" />
<Parameter ID="rev_motor" />
</Group>
</Group>
</Group>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>gAxR1T1i.ax</File>
</Files>
</DataObject>

View File

@@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<InitParameter Version="2.48.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_LO" />
<Parameter ID="neg_hw_end" Value="ncACTIV_LO" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_LO + ncQUICKSTOP" />
</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="1000" />
<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.006" />
<Parameter ID="t_total" Value="0.006" />
<Parameter ID="p_max" Value="1.0e30" />
<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="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="5000" />
<Parameter ID="v_neg" Value="5000" />
<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>

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<DataObject xmlns="http://br-automation.co.at/AS/DataObject">
<Files>
<File>gAxR1T2i.ax</File>
</Files>
</DataObject>

View File

@@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<InitParameter Version="2.48.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_LO" />
<Parameter ID="neg_hw_end" Value="ncACTIV_LO" />
<Parameter ID="trigger1" Value="ncACTIV_HI" />
<Parameter ID="trigger2" Value="ncACTIV_LO + ncQUICKSTOP" />
</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="1000" />
<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.006" />
<Parameter ID="t_total" Value="0.006" />
<Parameter ID="p_max" Value="1.0e30" />
<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="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="5000" />
<Parameter ID="v_neg" Value="5000" />
<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>

View File

@@ -6,16 +6,10 @@
<Object Type="File" Description="Werkzeugdatentypen">GlobalTool.typ</Object>
<Object Type="File" Description="Package variables">GlobalAxis.var</Object>
<Object Type="File" Description="Package variables">GlobalTool.var</Object>
<Object Type="Program" Language="IEC" Description="Lifecounters of SDC Axises">ncsdcctrl</Object>
<Object Type="Program" Language="IEC" Description="Controller">PressCtrl</Object>
<Object Type="Program" Language="IEC" Description="Controller">GrindCtrl</Object>
<Object Type="Program" Language="IEC" Description="Werkzeugselektor">ToolCtrl</Object>
<Object Type="Program" Language="IEC" Description="Toolparameter">ToolParam</Object>
<Object Type="Program" Language="IEC" Description="Shift/Overallcounter">PartCount</Object>
<Object Type="Program" Language="IEC" Description="Ctrl PowerSupply">AxisPS</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl (Master)">Axisctrl</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Shaft 1">Axisctrl1</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Tool 1">AxisctrlExtra1</Object>
<Object Type="Program" Language="IEC" Description="AxisCtrl Tool 2">AxisctrlExtra2</Object>
<Object Type="Package">Init</Object>
<Object Type="Package">ACPPar</Object>
<Object Type="DataObject" Language="Ett">acp10etxde</Object>

View File

@@ -1,46 +0,0 @@
FUNCTION HomeAxis
IF (enInStep = enHomeOffsetPerm) THEN
//Home with permanent Stored Offset
//---------------------------
InAxis.Para.rHomePosition := rInPermanentOffset;
InAxis.bHome := TRUE;
enInStep := enHomeOffsetPermDone;
ELSIF (enInStep = enHomeOffsetPermDone) THEN
//Home with permanent Stored Offset
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeIdle;
END_IF
ELSIF (enInStep = enHomeOffset0) THEN
//Home with Stored 0
//---------------------------
InAxis.Para.rHomePosition := 0.0;
InAxis.bHome := TRUE;
enInStep := enHomeOffset0Done;
ELSIF (enInStep = enHomeOffset0Done) THEN
//Home with Stored 0
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeStorePos;
END_IF
ELSIF (enInStep = enHomeOffset0NoStore) THEN
//Home with Stored 0
//---------------------------
InAxis.Para.rHomePosition := 0.0;
InAxis.bHome := TRUE;
enInStep := enHomeOffset0DoneNoStore;
ELSIF (enInStep = enHomeOffset0DoneNoStore) THEN
//Home with Stored 0
//---------------------------
IF InAxis.Status.bHomingOkDelayed AND NOT InAxis.bHome THEN
enInStep := enHomeIdle;
END_IF
ELSIF (enInStep = enHomeStorePos) THEN
//Store Axis Position
//---------------------------
rInPermanentOffset := - InAxis.rActPosition + rInOffset;
ERRxwarning (50001, 0 , ADR ('Permanenter Geberoffset einer Spindel wurde ver<65>ndert'));
enInStep := enHomeOffsetPerm;
END_IF
END_FUNCTION

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">PressCtrl.st</File>
<File Description="InitCode">PressCtrlInit.st</File>
<File Description="Local data types" Private="true">PressCtrl.typ</File>
<File Description="Local variables" Private="true">PressCtrl.var</File>
<File Description="Home an Absoulte Encoder Axis">HomeAxis.st</File>
<File Private="true">PressCtrl.fun</File>
<File Description="Zylinderüberwachung">FUB_CylinderCheck.st</File>
</Files>
</Program>

File diff suppressed because it is too large Load Diff

View File

@@ -1,165 +0,0 @@
(**)
TYPE
typ_enStepPress :
( (*Absolutoffset einstellen*)
enPressStep_INIT := 0, (*Grundstellung pr<70>fen*)
enPressStep_WAIT_START, (*Auf Startbefehl warten (mit Teil)*)
enPressStep_WAIT_AX_SINGLE, (*Warten bis Achsen Unsync und Bereit*)
enPressStep_REF_PRESS, (*Referenzwerte Laden*)
enPressStep_LEVEL_PRESS, (*Presse ggf. Ausniviellieren*)
enPressStep_LEVEL_WAIT, (*Presse ggf. Ausniviellieren*)
enPressStep_START_GEAR, (*Getriebe Starten*)
enPressStep_MOVE_HOME_LVL, (*Presse auffahren*)
enPressStep_MOVE_HOME_LVL_WAIT, (*Presse aufgefahren*)
enPressStep_SELECT_TOOL, (*Werkzeug ausw<73>hlen*)
enPressStep_TOOL1_OPENDOOR := 10, (*Werkzeug 1 Schutzt<7A>r <20>ffnen*)
enPressStep_TOOL1_IN, (*Werkzeug 1 einfahren*)
enPressStep_TOOL1_IN_WAIT, (*Werkzeug 1 einfahren warten bis eingefahren*)
enPressStep_PRESS_MOUNTPOS1, (*Presse auf Montageposition Wzg 1 fahren*)
enPressStep_PRESS_MOUNTPOS1_WAIT, (*Presse auf Montageposition Wzg 1 fahren*)
enPressStep_PRESS_PRESSPOS1, (*Presse auf Pressposition Wzg 1 fahren*)
enPressStep_PRESS_PRESSPOS1_WAIT, (*Presse auf Pressposition Wzg 1 fahren*)
enPressStep_WAIT_PRESSED1, (*Ruhezeit Wzg 1*)
enPressStep_PRESS_HOMEPOS1, (*Presse auf Ruheposition fahren*)
enPressStep_PRESS_HOMEPOS1_WAIT, (*Presse auf Ruheposition fahren*)
enPressStep_TOOL1_OUT, (*Werkzeug 1 ausfahren*)
enPressStep_TOOL1_OUT_WAIT, (*Werkzeug 2 ausgefahren*)
enPressStep_TOOL1_CLOSEDOOR, (*Werkzeug 1 Schutzt<7A>r schlie<69>en*)
enPressStep_TOOL2_OPENDOOR := 30, (*Werkzeug 1 Schutzt<7A>r <20>ffnen*)
enPressStep_TOOL2_IN, (*Werkzeug 2 einfahren*)
enPressStep_TOOL2_IN_WAIT, (*Werkzeug 2 einfahren warten bis eingefahren*)
enPressStep_PRESS_MOUNTPOS2, (*Presse auf Montageposition Wzg 2 fahren*)
enPressStep_PRESS_MOUNTPOS2_WAIT, (*Presse auf Montageposition Wzg 2 fahren*)
enPressStep_PRESS_PRESSPOS2, (*Presse auf Pressposition Wzg 2 fahren*)
enPressStep_PRESS_PRESSPOS2_WAIT, (*Presse auf Pressposition Wzg 2 fahren*)
enPressStep_WAIT_PRESSED2, (*Ruhezeit Wzg 2*)
enPressStep_PRESS_HOMEPOS2, (*Presse auf Ruheposition fahren*)
enPressStep_PRESS_HOMEPOS2_WAIT, (*Presse auf Ruheposition fahren*)
enPressStep_TOOL2_OUT, (*Werkzeug einfahren*)
enPressStep_TOOL2_OUT_WAIT, (*Werkzeug einfahren*)
enPressStep_TOOL2_CLOSEDOOR (*Werkzeug 2 Schutzt<7A>r schlie<69>en*)
);
typ_enStepHoming :
( (*Grundstellungsfahrt*)
enPressStepHoming_INIT, (*Auf Start warten*)
enPressStepHoming_WAIT_START, (*Auf Startbefehl warten*)
enPressStepHoming_WAIT_AX_SINGLE, (*Warten bis Achsen Unsync und Bereit*)
enPressStepHoming_REF_PRESS, (*Referenzwerte Laden*)
enPressStepHoming_LEVEL_PRESS, (*Presse ggf. Ausniviellieren*)
enPressStepHoming_LEVEL_WAIT, (*Presse ggf. Ausniviellieren*)
enPressStepHoming_START_GEAR, (*Getriebe Starten*)
enPressStepHoming_MOVE_HOME, (*Presse auffahren*)
enPressStepHoming_MOVE_HOME_WAIT, (*Presse aufgefahren*)
enPressStepHoming_TOOL1_REF, (*Werkzeugschlitten 1 referenzieren*)
enPressStepHoming_TOOL1_REF_WAIT, (*Werkzeugschlitten 1 referenziert*)
enPressStepHoming_TOOL1_OUT, (*Werkzeugschlitten 1 ausfahren*)
enPressStepHoming_TOOL1_OUT_WAIT, (*Werkzeugschlitten 1 ausgefahren*)
enPressStepHoming_TOOL2_REF, (*Werkzeugschlitten 2 referenzieren*)
enPressStepHoming_TOOL2_REF_WAIT, (*Werkzeugschlitten 2 referenziert*)
enPressStepHoming_TOOL2_OUT, (*Werkzeugschlitten 2 ausfahren*)
enPressStepHoming_TOOL2_OUT_WAIT, (*Werkzeugschlitten 2 ausgefahren*)
enPressStepHoming_CLOSE_DOORS, (*Schutztore schlie<69>en*)
enPressStepHoming_DONE (*GST-Fahrt abgeschlossen*)
);
typ_enHome :
(
enHomeIdle,
enHomeOffsetPerm, (*Mit permanet gesp. Offset*)
enHomeOffsetPermDone, (*Mit permanet gesp. Offset*)
enHomeOffset0, (*Mit Offset 0 referenzieren*)
enHomeOffset0Done, (*Mit Offset 0 referenzieren*)
enHomeOffset0NoStore, (*Mit Offset 0 referenzieren*)
enHomeOffset0DoneNoStore, (*Mit Offset 0 referenzieren*)
enHomeStorePos (*Aktuelle Pos als Offset (zum Allg Offset) speichern*)
);
typ_enToolState :
( (*Werkzeugstatus*)
enTool_Empty,
enTool_Loaded,
enTool_TobeUnload
);
typStatusPressVCControls : STRUCT (*Controlbytes f<>r Visu*)
usToggleAutoRepCycle : USINT; (*Reperaturzyklus antriggern*)
usJogNegShaft1 : USINT;
usJogPosShaft1 : USINT;
usJogNegShaft2 : USINT;
usJogPosShaft2 : USINT;
usJogNegShaft3 : USINT;
usJogPosShaft3 : USINT;
usJogNegShaft4 : USINT;
usJogPosShaft4 : USINT;
usJogNegShaftMaster : USINT;
usJogHomeShaftMaster : USINT;
usJogPosShaftMaster : USINT;
usReferencePress : USINT; (*Presse Referenzieren*)
usReferencePressABS : USINT; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
usJogNegSlay1 : USINT;
usJogPosSlay1 : USINT;
usReferenceSlay1 : USINT; (*Werkzeugschlitten 1 referenzieren*)
usJogNegSlay2 : USINT;
usJogPosSlay2 : USINT;
usReferenceSlay2 : USINT; (*Werkzeugschlitten 2 referenzieren*)
usBtnActivateGear : USINT;
usBtnDisableGear : USINT;
usCloseDoorSlay1 : USINT; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
usOpenDoorSlay1 : USINT; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
usCloseDoorSlay2 : USINT; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
usOpenDoorSlay2 : USINT; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
typManualCommnands : STRUCT (*Kommandos f<>r Hand / Automatikbetrieb*)
bNextManStep : BOOL; (*N<>chster Schritt (Semi) Automatic*)
bJogNegShaft1 : BOOL;
bJogPosShaft1 : BOOL;
bJogNegShaft2 : BOOL;
bJogPosShaft2 : BOOL;
bJogNegShaft3 : BOOL;
bJogPosShaft3 : BOOL;
bJogNegShaft4 : BOOL;
bJogPosShaft4 : BOOL;
bJogNegShaftMaster : BOOL;
bJogHomeShaftMaster : BOOL;
bJogPosShaftMaster : BOOL;
bReferencePress : BOOL; (*Presse Referenzieren*)
bReferencePressABS : BOOL; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
bActivateGear : BOOL;
bDisableGear : BOOL;
bToolslay1Up : BOOL; (*Werkzeugschlitten 1 anheben*)
bToolslay1Down : BOOL; (*Werkzeugschlitten 1 absenken*)
bJogNegSlay1 : BOOL;
bJogPosSlay1 : BOOL;
bReferenceSlay1 : BOOL; (*Werkzeugschlitten 1 referenzieren*)
bJogNegSlay2 : BOOL;
bJogPosSlay2 : BOOL;
bReferenceSlay2 : BOOL; (*Werkzeugschlitten 2 referenzieren*)
bCloseDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
bOpenDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
bCloseDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
bOpenDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
typMoveConditions : STRUCT (*Bewegungsfreigaben*)
bEnableNegShaft1 : BOOL;
bEnablePosShaft1 : BOOL;
bEnableNegShaft2 : BOOL;
bEnablePosShaft2 : BOOL;
bEnableNegShaft3 : BOOL;
bEnablePosShaft3 : BOOL;
bEnableNegShaft4 : BOOL;
bEnablePosShaft4 : BOOL;
bEnableNegShaftMaster : BOOL;
bEnableJogHomeShaftMaster : BOOL;
bEnablePosShaftMaster : BOOL;
bEnableReferencePress : BOOL; (*Presse Referenzieren*)
bEnableReferencePressABS : BOOL; (*Presse Referenzieren*)
bEnableNegSlay1 : BOOL;
bEnablePosSlay1 : BOOL;
bEnableReferenceSlay1 : BOOL; (*Werkzeugschlitten 1 referenzieren*)
bEnablePosSlay2 : BOOL;
bEnableNegSlay2 : BOOL;
bEnableReferenceSlay2 : BOOL; (*Werkzeugschlitten 2 referenzieren*)
bEnableCloseDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 Schlie<69>en*)
bEnableOpenDoorSlay1 : BOOL; (*Schutztor bei Werkzeugschlitten 1 <20>ffnen*)
bEnableCloseDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 Schlie<69>en*)
bEnableOpenDoorSlay2 : BOOL; (*Schutztor bei Werkzeugschlitten 2 <20>ffnen*)
END_STRUCT;
END_TYPE

View File

@@ -1,123 +0,0 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: AxCtrl
* File: AxCtrl.var
* Author: michi
* Created: July 17, 2012
********************************************************************
* Local variables of program AxCtrl
********************************************************************)
(*//-----------------------------------------------------------------------------------------------------*)
(*//Dynamic Vars*)
VAR
lPS : REFERENCE TO typPS; (*Axis PS Datastruct *)
lAxisShaftMaster : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft1 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft2 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft3 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisShaft4 : REFERENCE TO typAxis; (*Axis Datastruct *)
lAxisSlay1 : REFERENCE TO typAxis;
lAxisSlay2 : REFERENCE TO typAxis;
END_VAR
(*//Local Vars*)
VAR RETAIN
bDevelEnalbeGear : BOOL := TRUE;
END_VAR
VAR
bTransitionCondition : BOOL;
bSafetyOk : BOOL;
bSafetyOkToolSlay1 : BOOL;
bSafetyOkToolSlay2 : BOOL;
bSafetyOkFP : BOOL;
bNotLevel : BOOL;
bNotLevelLimit : BOOL;
bStopShaftAfterGear1 : BOOL;
bStopShaftAfterGear2 : BOOL;
bStopShaftAfterGear3 : BOOL;
bStopShaftAfterGear4 : BOOL;
bTool1Cycle : BOOL;
bTool2Cycle : BOOL;
bReferenedShaft1 : BOOL;
bReferenedShaft2 : BOOL;
bReferenedShaft3 : BOOL;
bReferenedShaft4 : BOOL;
bMachineIsInHomepos : BOOL;
bPressIsInHomepos : BOOL;
bPressIsInMountpos : BOOL;
bPressIsInMountpos2 : BOOL;
bPressIsInPresspos : BOOL;
bPressIsInPresspos2 : BOOL;
bStopReference : BOOL;
bToolslay1IsUp : BOOL; (*Werkzeugschlitten 1 Luftfedern vollst. ausgefahren*)
bToolslay1IsOut : BOOL; (*Werkzeugschlitten 1 ist in GST*)
bToolslay1IsIn : BOOL; (*Werkzeugschlitten 1 ist in AST (in Presse)*)
bToolslay2IsUp : BOOL; (*Werkzeugschlitten 2 Luftfedern vollst. ausgefahren*)
bToolslay2IsOut : BOOL; (*Werkzeugschlitten 2 ist in GST*)
bToolslay2IsIn : BOOL; (*Werkzeugschlitten 2 ist in AST (in Presse)*)
bDoor1IsOpen : BOOL;
bDoor1IsClosed : BOOL;
bDoor2IsOpen : BOOL;
bDoor2IsClosed : BOOL;
bHome : BOOL := FALSE;
bHomeMaster : BOOL := FALSE;
bStop : BOOL;
bHalt : BOOL;
bAllAxisesInSync : BOOL;
bAllAxisesSingle : BOOL;
bAllAxisesControllerRdy : BOOL;
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
usi : USINT;
usErrorReset : USINT;
udSteptime : UDINT; (*0.1s*)
udCycletime : UDINT := 0; (*ms*)
udCycletimeLast : UDINT := 0; (*ms*)
StatusVCControls : typStatusPressVCControls;
ManualCommands : typManualCommnands; (*Kommandos Betriebsart Hand*)
MoveConditions : typMoveConditions;
enStepHomeShaft1 : typ_enHome;
enStepHomeShaft2 : typ_enHome;
enStepHomeShaft3 : typ_enHome;
enStepHomeShaft4 : typ_enHome;
enTool1State : typ_enToolState := 0;
enTool2State : typ_enToolState := 0;
enStepPress : typ_enStepPress;
enStepPressHoming : typ_enStepHoming;
rOverrideVelocity : REAL := 100.0; (*[0.1mm]*)
rAveragePos : REAL;
lPressParamActTool1 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
lPressParamActTool2 : REFERENCE TO typ_PressParam; (*Positionen aktuelles Werkzeug*)
END_VAR
VAR CONSTANT
rPressPosMin : REAL := 100.0; (*Presse Oben Pos Min [0.1mm]*)
rPressPosMax : REAL := 4250.0; (*Press Unten Pos Max [0.1mm]*)
rSpeedSlay : REAL := 1000.0; (*Speed Slay max 2000*)
rToolSlay1PosOut : REAL := 18.0;
rToolSlay2PosOut : REAL := 18.0;
END_VAR
VAR
rPosDiffShaft1 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft2 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft3 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft4 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft1_2 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft1_3 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft3_4 : REAL; (*Pos Abweichung zum Master*)
rPosDiffShaft2_4 : REAL := 0.0; (*Pos Abweichung zum Master*)
END_VAR
VAR RETAIN
rHOMEPOS : REAL := 100.0; (*[0.1mm] Homepos f<>r Referenzierung !!!!*)
END_VAR
VAR CONSTANT
rSlayAccDecManRef : REAL := 250.0;
rSlayAccAuto : REAL := 900.0;
rSlayDecAuto : REAL := 750.0;
END_VAR
(*//FUBS*)
VAR
FUB_AsArLogWrite : AsArLogWrite;
TOF_ResetAxisErrors : TOF;
TON_Slay1Up : TON;
TON_PressBrakeRdBck : TON;
TON_Slay2Up : TON;
END_VAR

View File

@@ -1,115 +0,0 @@
PROGRAM _INIT
lPS ACCESS ADR (gPS);
lAxisShaftMaster ACCESS ADR (gAxis[0]);
lAxisShaft1 ACCESS ADR (gAxis[1]);
lAxisShaft2 ACCESS ADR (gAxis[2]);
lAxisShaft3 ACCESS ADR (gAxis[3]);
lAxisShaft4 ACCESS ADR (gAxis[4]);
lAxisSlay1 ACCESS ADR (gAxis[5]);
lAxisSlay2 ACCESS ADR (gAxis[6]);
//Enable Powermeter
lPS.Parameter.uiIntervalTime := 100;
lPS.Command.bStartPowerMeter := 1;
//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 := mcDATOBJ; // mcFILE + mcADD_DATE_TIME;
gMAxTrace.Trace_Config.DatObj.Format := 0;
//Setup Trace
gMAxTrace.Trace_Config.ParTrace.Parameter[0].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[0].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[1].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[1].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[2].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[2].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[3].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[3].ParID := ACP10PAR_PCTRL_S_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[4].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[4].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[5].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[5].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[6].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[6].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[7].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[7].ParID := ACP10PAR_PCTRL_LAG_ERROR;
gMAxTrace.Trace_Config.ParTrace.Parameter[8].Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Parameter[8].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[9].Axis := ADR (gAxShaft2);
gMAxTrace.Trace_Config.ParTrace.Parameter[9].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[10].Axis := ADR (gAxShaft3);
gMAxTrace.Trace_Config.ParTrace.Parameter[10].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Parameter[11].Axis := ADR (gAxShaft4);
gMAxTrace.Trace_Config.ParTrace.Parameter[11].ParID := ACP10PAR_TORQUE_ACT;
gMAxTrace.Trace_Config.ParTrace.Trigger.Axis := ADR (gAxShaft1);
gMAxTrace.Trace_Config.ParTrace.Trigger.ParID := ACP10PAR_PCTRL_V_ACT;
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 := 20;
gMAxTrace.Trace_Config.ParTrace.SamplingTime := 0.01;
gMAxTrace.Trace_Config.ParTrace.Delay := 0.0;
gMAxTrace.Trace_Config.ParTrace.NetTriggerDelay := 0;
FUB_AsArLogWrite.ident := arlogBASE_USER_LOG_IDENT;
//Parameter
lAxisShaftMaster.Para.rVelocity := 100; // [0.1mm/s]
lAxisShaftMaster.Para.rAcceleration := 1000; // [0.1mm/s^2]
lAxisShaftMaster.Para.rDeceleration := 1000; // [0.1mm/s^2]
//Dummy Tool
gPressParamTools[0].rPosPremount := 1100;
gPressParamTools[0].rPosPremountMin := 1050;
gPressParamTools[0].rPosPremountMax := 1150;
gPressParamTools[0].rPosPress := 2000;
gPressParamTools[0].rPosPressMin := 200;
gPressParamTools[0].rPosPressMax := rPressPosMax;
// gPressParamTools[0].rPosPressToolslay := 1310;
lAxisShaftMaster.Para.rJogVelocity := 100; // [0.1mm/s]
lAxisShaft1.Para.rJogVelocity := lAxisShaftMaster.Para.rJogVelocity;
lAxisShaft2.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft3.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft4.Para.rJogVelocity := lAxisShaft1.Para.rJogVelocity;
lAxisShaft1.Para.rVelocity := lAxisShaftMaster.Para.rVelocity; // [0.1mm/s]
lAxisShaft2.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft3.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft4.Para.rVelocity := lAxisShaft1.Para.rVelocity;
lAxisShaft1.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft2.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft3.Para.usHomeingMode := mcHOME_ABSOLUTE;
lAxisShaft4.Para.usHomeingMode := mcHOME_ABSOLUTE;
//Gear Coupling Axis2 is Slave from Axis 1
lAxisShaft1.Para.iGearRatioNumerator := 1;
lAxisShaft1.Para.uiGearRatioDenominator := 1;
lAxisShaft2.Para.iGearRatioNumerator := 1;
lAxisShaft2.Para.uiGearRatioDenominator := 1;
lAxisShaft3.Para.iGearRatioNumerator := 1;
lAxisShaft3.Para.uiGearRatioDenominator := 1;
lAxisShaft4.Para.iGearRatioNumerator := 1;
lAxisShaft4.Para.uiGearRatioDenominator := 1;
lAxisShaft1.Para.rGearMasterSyncPos := 100;
lAxisShaft1.Para.rGearSlaveSyncPos := 200;
lAxisShaft1.Para.rGearMasterStartDistance := 100;
lAxisShaft1.Para.rGearSyncVelocity := lAxisShaftMaster.Para.rVelocity * 1.1;
lAxisShaft1.Para.rGearSyncAcceleration := lAxisShaftMaster.Para.rAcceleration * 0.5;
//Reference Offset
lAxisSlay1.Para.rHomePosition := 20.0; //mm
lAxisSlay2.Para.rHomePosition := 20.0; //mm
lAxisSlay1.Para.rVelocity := 175; // [mm/s]
lAxisSlay2.Para.rVelocity := 175; // [mm/s]
lAxisSlay1.Para.rJogVelocity := 75; // [mm/s]
lAxisSlay2.Para.rJogVelocity := 75; // [mm/s]
END_PROGRAM

View File

@@ -1,14 +0,0 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: ncsdcctrl
* File: ncsdcctrl.typ
* Author: michi
* Created: May 15, 2015
********************************************************************
* Local data types of program ncsdcctrl
********************************************************************)
TYPE
END_TYPE

View File

@@ -1,74 +0,0 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: ncsdcctrl
* File: ncsdcctrlCyclic.st
* Author: michi
* Created: May 15, 2015
********************************************************************
* Implementation of program ncsdcctrl
********************************************************************)
PROGRAM _CYCLIC
(* ### BEGIN gAxR1G1 ### *)
(* life counter emulation of digital inputs *)
gAxR1G1_DiDoIf.iLifeCntReference := gAxR1G1_DiDoIf.iLifeCntReference + 1;
gAxR1G1_DiDoIf.iLifeCntNegHwEnd := gAxR1G1_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR1G1_DiDoIf.iLifeCntPosHwEnd := gAxR1G1_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR1G1 ### *)
(* ### BEGIN gAxR2G1 ### *)
(* life counter emulation of digital inputs *)
gAxR2G1_DiDoIf.iLifeCntReference := gAxR2G1_DiDoIf.iLifeCntReference + 1;
gAxR2G1_DiDoIf.iLifeCntNegHwEnd := gAxR2G1_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR2G1_DiDoIf.iLifeCntPosHwEnd := gAxR2G1_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR2G1 ### *)
(* ### BEGIN gAxR1T1 ### *)
(* life counter emulation of digital inputs *)
gAxR1T1_DiDoIf.iLifeCntReference := gAxR1T1_DiDoIf.iLifeCntReference + 1;
gAxR1T1_DiDoIf.iLifeCntNegHwEnd := gAxR1T1_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR1T1_DiDoIf.iLifeCntPosHwEnd := gAxR1T1_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR1T1 ### *)
(* ### BEGIN gAxR1T2 ### *)
(* life counter emulation of digital inputs *)
gAxR1T2_DiDoIf.iLifeCntReference := gAxR1T2_DiDoIf.iLifeCntReference + 1;
gAxR1T2_DiDoIf.iLifeCntNegHwEnd := gAxR1T2_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR1T2_DiDoIf.iLifeCntPosHwEnd := gAxR1T2_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR1T2 ### *)
(* ### BEGIN gAxR2T1 ### *)
(* life counter emulation of digital inputs *)
gAxR2T1_DiDoIf.iLifeCntReference := gAxR2T1_DiDoIf.iLifeCntReference + 1;
gAxR2T1_DiDoIf.iLifeCntNegHwEnd := gAxR2T1_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR2T1_DiDoIf.iLifeCntPosHwEnd := gAxR2T1_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR2T1 ### *)
(* ### BEGIN gAxR2T2 ### *)
(* life counter emulation of digital inputs *)
gAxR2T2_DiDoIf.iLifeCntReference := gAxR2T2_DiDoIf.iLifeCntReference + 1;
gAxR2T2_DiDoIf.iLifeCntNegHwEnd := gAxR2T2_DiDoIf.iLifeCntNegHwEnd + 1;
gAxR2T2_DiDoIf.iLifeCntPosHwEnd := gAxR2T2_DiDoIf.iLifeCntPosHwEnd + 1;
(* ### END gAxR2T2 ### *)
END_PROGRAM

View File

@@ -1,326 +0,0 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: ncsdcctrl
* File: ncsdcctrlInit.st
* Author: michi
* Created: May 15, 2015
********************************************************************
* Implementation of program ncsdcctrl
********************************************************************)
PROGRAM _INIT
(* ### BEGIN gAxis03 ### *)
(* initialize variables *)
gAxis03_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis03_HW.DrvIf_Name[0]), ADR('gAxis03_DrvIf') );
gAxis03_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis03_HW.DiDoIf_Name[0]), ADR('gAxis03_DiDoIf') );
(* force variable offset generation *)
gAxis03.size := gAxis03.size;
gAxis03_DrvIf.iLifeCnt := gAxis03_DrvIf.iLifeCnt;
gAxis03_DiDoIf.iLifeCntDriveReady := gAxis03_DiDoIf.iLifeCntDriveReady;
gAxis03_ModuleOk := gAxis03_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis03_DiDoIf.iPosHwEnd := gAxis03_DiDoIf.iPosHwEnd;
gAxis03_DiDoIf.iNegHwEnd := gAxis03_DiDoIf.iNegHwEnd;
gAxis03_DiDoIf.iReference := gAxis03_DiDoIf.iReference;
*)
(* ### END gAxis03 ### *)
(* ### BEGIN gAxis04 ### *)
(* initialize variables *)
gAxis04_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis04_HW.DrvIf_Name[0]), ADR('gAxis04_DrvIf') );
gAxis04_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis04_HW.DiDoIf_Name[0]), ADR('gAxis04_DiDoIf') );
(* force variable offset generation *)
gAxis04.size := gAxis04.size;
gAxis04_DrvIf.iLifeCnt := gAxis04_DrvIf.iLifeCnt;
gAxis04_DiDoIf.iLifeCntDriveReady := gAxis04_DiDoIf.iLifeCntDriveReady;
gAxis04_ModuleOk := gAxis04_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis04_DiDoIf.iPosHwEnd := gAxis04_DiDoIf.iPosHwEnd;
gAxis04_DiDoIf.iNegHwEnd := gAxis04_DiDoIf.iNegHwEnd;
gAxis04_DiDoIf.iReference := gAxis04_DiDoIf.iReference;
*)
(* ### END gAxis04 ### *)
(* ### BEGIN gAxis05 ### *)
(* initialize variables *)
gAxis05_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis05_HW.DrvIf_Name[0]), ADR('gAxis05_DrvIf') );
gAxis05_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis05_HW.DiDoIf_Name[0]), ADR('gAxis05_DiDoIf') );
(* force variable offset generation *)
gAxis05.size := gAxis05.size;
gAxis05_DrvIf.iLifeCnt := gAxis05_DrvIf.iLifeCnt;
gAxis05_DiDoIf.iLifeCntDriveReady := gAxis05_DiDoIf.iLifeCntDriveReady;
gAxis05_ModuleOk := gAxis05_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis05_DiDoIf.iPosHwEnd := gAxis05_DiDoIf.iPosHwEnd;
gAxis05_DiDoIf.iNegHwEnd := gAxis05_DiDoIf.iNegHwEnd;
gAxis05_DiDoIf.iReference := gAxis05_DiDoIf.iReference;
*)
(* ### END gAxis05 ### *)
(* ### BEGIN gAxis06 ### *)
(* initialize variables *)
gAxis06_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis06_HW.DrvIf_Name[0]), ADR('gAxis06_DrvIf') );
gAxis06_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis06_HW.DiDoIf_Name[0]), ADR('gAxis06_DiDoIf') );
(* force variable offset generation *)
gAxis06.size := gAxis06.size;
gAxis06_DrvIf.iLifeCnt := gAxis06_DrvIf.iLifeCnt;
gAxis06_DiDoIf.iLifeCntDriveReady := gAxis06_DiDoIf.iLifeCntDriveReady;
gAxis06_ModuleOk := gAxis06_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis06_DiDoIf.iPosHwEnd := gAxis06_DiDoIf.iPosHwEnd;
gAxis06_DiDoIf.iNegHwEnd := gAxis06_DiDoIf.iNegHwEnd;
gAxis06_DiDoIf.iReference := gAxis06_DiDoIf.iReference;
*)
(* ### END gAxis06 ### *)
(* ### BEGIN gAxis07 ### *)
(* initialize variables *)
gAxis07_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis07_HW.DrvIf_Name[0]), ADR('gAxis07_DrvIf') );
gAxis07_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis07_HW.DiDoIf_Name[0]), ADR('gAxis07_DiDoIf') );
(* force variable offset generation *)
gAxis07.size := gAxis07.size;
gAxis07_DrvIf.iLifeCnt := gAxis07_DrvIf.iLifeCnt;
gAxis07_DiDoIf.iLifeCntDriveReady := gAxis07_DiDoIf.iLifeCntDriveReady;
gAxis07_ModuleOk := gAxis07_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis07_DiDoIf.iPosHwEnd := gAxis07_DiDoIf.iPosHwEnd;
gAxis07_DiDoIf.iNegHwEnd := gAxis07_DiDoIf.iNegHwEnd;
gAxis07_DiDoIf.iReference := gAxis07_DiDoIf.iReference;
*)
(* ### END gAxis07 ### *)
(* ### BEGIN gAxis08 ### *)
(* initialize variables *)
gAxis08_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxis08_HW.DrvIf_Name[0]), ADR('gAxis08_DrvIf') );
gAxis08_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxis08_HW.DiDoIf_Name[0]), ADR('gAxis08_DiDoIf') );
(* force variable offset generation *)
gAxis08.size := gAxis08.size;
gAxis08_DrvIf.iLifeCnt := gAxis08_DrvIf.iLifeCnt;
gAxis08_DiDoIf.iLifeCntDriveReady := gAxis08_DiDoIf.iLifeCntDriveReady;
gAxis08_ModuleOk := gAxis08_ModuleOk;
(* assign your hardware inputs here*)
(* gAxis08_DiDoIf.iPosHwEnd := gAxis08_DiDoIf.iPosHwEnd;
gAxis08_DiDoIf.iNegHwEnd := gAxis08_DiDoIf.iNegHwEnd;
gAxis08_DiDoIf.iReference := gAxis08_DiDoIf.iReference;
*)
(* ### END gAxis08 ### *)
(* ### BEGIN gAxGrnd1 ### *)
(* initialize variables *)
gAxGrnd1_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxGrnd1_HW.DrvIf_Name[0]), ADR('gAxGrnd1_DrvIf') );
gAxGrnd1_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxGrnd1_HW.DiDoIf_Name[0]), ADR('gAxGrnd1_DiDoIf') );
(* force variable offset generation *)
gAxGrnd1.size := gAxGrnd1.size;
gAxGrnd1_DrvIf.iLifeCnt := gAxGrnd1_DrvIf.iLifeCnt;
gAxGrnd1_DiDoIf.iLifeCntDriveReady := gAxGrnd1_DiDoIf.iLifeCntDriveReady;
gAxGrnd1_ModuleOk := gAxGrnd1_ModuleOk;
(* assign your hardware inputs here*)
(* gAxGrnd1_DiDoIf.iPosHwEnd := gAxGrnd1_DiDoIf.iPosHwEnd;
gAxGrnd1_DiDoIf.iNegHwEnd := gAxGrnd1_DiDoIf.iNegHwEnd;
gAxGrnd1_DiDoIf.iReference := gAxGrnd1_DiDoIf.iReference;
*)
(* ### END gAxGrnd1 ### *)
(* ### BEGIN gAxR1G1 ### *)
(* initialize variables *)
gAxR1G1_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR1G1_HW.DrvIf_Name[0]), ADR('gAxR1G1_DrvIf') );
gAxR1G1_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR1G1_HW.DiDoIf_Name[0]), ADR('gAxR1G1_DiDoIf') );
(* force variable offset generation *)
gAxR1G1.size := gAxR1G1.size;
gAxR1G1_DrvIf.iLifeCnt := gAxR1G1_DrvIf.iLifeCnt;
gAxR1G1_DiDoIf.iLifeCntDriveReady := gAxR1G1_DiDoIf.iLifeCntDriveReady;
gAxR1G1_ModuleOk := gAxR1G1_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR1G1_DiDoIf.iPosHwEnd := gAxR1G1_DiDoIf.iPosHwEnd;
gAxR1G1_DiDoIf.iNegHwEnd := gAxR1G1_DiDoIf.iNegHwEnd;
gAxR1G1_DiDoIf.iReference := gAxR1G1_DiDoIf.iReference;
*)
(* ### END gAxR1G1 ### *)
(* ### BEGIN gAxR2G1 ### *)
(* initialize variables *)
gAxR2G1_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR2G1_HW.DrvIf_Name[0]), ADR('gAxR2G1_DrvIf') );
gAxR2G1_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR2G1_HW.DiDoIf_Name[0]), ADR('gAxR2G1_DiDoIf') );
(* force variable offset generation *)
gAxR2G1.size := gAxR2G1.size;
gAxR2G1_DrvIf.iLifeCnt := gAxR2G1_DrvIf.iLifeCnt;
gAxR2G1_DiDoIf.iLifeCntDriveReady := gAxR2G1_DiDoIf.iLifeCntDriveReady;
gAxR2G1_ModuleOk := gAxR2G1_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR2G1_DiDoIf.iPosHwEnd := gAxR2G1_DiDoIf.iPosHwEnd;
gAxR2G1_DiDoIf.iNegHwEnd := gAxR2G1_DiDoIf.iNegHwEnd;
gAxR2G1_DiDoIf.iReference := gAxR2G1_DiDoIf.iReference;
*)
(* ### END gAxR2G1 ### *)
(* ### BEGIN gAxR1T1 ### *)
(* initialize variables *)
gAxR1T1_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR1T1_HW.DrvIf_Name[0]), ADR('gAxR1T1_DrvIf') );
gAxR1T1_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR1T1_HW.DiDoIf_Name[0]), ADR('gAxR1T1_DiDoIf') );
(* force variable offset generation *)
gAxR1T1.size := gAxR1T1.size;
gAxR1T1_DrvIf.iLifeCnt := gAxR1T1_DrvIf.iLifeCnt;
gAxR1T1_DiDoIf.iLifeCntDriveReady := gAxR1T1_DiDoIf.iLifeCntDriveReady;
gAxR1T1_ModuleOk := gAxR1T1_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR1T1_DiDoIf.iPosHwEnd := gAxR1T1_DiDoIf.iPosHwEnd;
gAxR1T1_DiDoIf.iNegHwEnd := gAxR1T1_DiDoIf.iNegHwEnd;
gAxR1T1_DiDoIf.iReference := gAxR1T1_DiDoIf.iReference;
*)
(* ### END gAxR1T1 ### *)
(* ### BEGIN gAxR1T2 ### *)
(* initialize variables *)
gAxR1T2_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR1T2_HW.DrvIf_Name[0]), ADR('gAxR1T2_DrvIf') );
gAxR1T2_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR1T2_HW.DiDoIf_Name[0]), ADR('gAxR1T2_DiDoIf') );
(* force variable offset generation *)
gAxR1T2.size := gAxR1T2.size;
gAxR1T2_DrvIf.iLifeCnt := gAxR1T2_DrvIf.iLifeCnt;
gAxR1T2_DiDoIf.iLifeCntDriveReady := gAxR1T2_DiDoIf.iLifeCntDriveReady;
gAxR1T2_ModuleOk := gAxR1T2_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR1T2_DiDoIf.iPosHwEnd := gAxR1T2_DiDoIf.iPosHwEnd;
gAxR1T2_DiDoIf.iNegHwEnd := gAxR1T2_DiDoIf.iNegHwEnd;
gAxR1T2_DiDoIf.iReference := gAxR1T2_DiDoIf.iReference;
*)
(* ### END gAxR1T2 ### *)
(* ### BEGIN gAxR2T1 ### *)
(* initialize variables *)
gAxR2T1_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR2T1_HW.DrvIf_Name[0]), ADR('gAxR2T1_DrvIf') );
gAxR2T1_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR2T1_HW.DiDoIf_Name[0]), ADR('gAxR2T1_DiDoIf') );
(* force variable offset generation *)
gAxR2T1.size := gAxR2T1.size;
gAxR2T1_DrvIf.iLifeCnt := gAxR2T1_DrvIf.iLifeCnt;
gAxR2T1_DiDoIf.iLifeCntDriveReady := gAxR2T1_DiDoIf.iLifeCntDriveReady;
gAxR2T1_ModuleOk := gAxR2T1_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR2T1_DiDoIf.iPosHwEnd := gAxR2T1_DiDoIf.iPosHwEnd;
gAxR2T1_DiDoIf.iNegHwEnd := gAxR2T1_DiDoIf.iNegHwEnd;
gAxR2T1_DiDoIf.iReference := gAxR2T1_DiDoIf.iReference;
*)
(* ### END gAxR2T1 ### *)
(* ### BEGIN gAxR2T2 ### *)
(* initialize variables *)
gAxR2T2_HW.DrvIf_Typ := ncSDC_DRVSERVO16;
strcpy( ADR(gAxR2T2_HW.DrvIf_Name[0]), ADR('gAxR2T2_DrvIf') );
gAxR2T2_HW.DiDoIf_Typ := ncSDC_DIDO;
strcpy( ADR(gAxR2T2_HW.DiDoIf_Name[0]), ADR('gAxR2T2_DiDoIf') );
(* force variable offset generation *)
gAxR2T2.size := gAxR2T2.size;
gAxR2T2_DrvIf.iLifeCnt := gAxR2T2_DrvIf.iLifeCnt;
gAxR2T2_DiDoIf.iLifeCntDriveReady := gAxR2T2_DiDoIf.iLifeCntDriveReady;
gAxR2T2_ModuleOk := gAxR2T2_ModuleOk;
(* assign your hardware inputs here*)
(* gAxR2T2_DiDoIf.iPosHwEnd := gAxR2T2_DiDoIf.iPosHwEnd;
gAxR2T2_DiDoIf.iNegHwEnd := gAxR2T2_DiDoIf.iNegHwEnd;
gAxR2T2_DiDoIf.iReference := gAxR2T2_DiDoIf.iReference;
*)
(* ### END gAxR2T2 ### *)
END_PROGRAM

View File

@@ -1,14 +1,30 @@
PROGRAM _CYCLIC
//Input Byte 1 (1-8)
lABBRobot.In.bMotorsOn := BIT_TST (dpInByte[1], 0);
TON_Motors_On.IN := BIT_TST (dpInByte[1], 0);
TON_Motors_On.PT := t#1200ms;
TON_Motors_On ();
lABBRobot.In.bMotorsOn := TON_Motors_On.Q;
lABBRobot.In.bMotorsOff := BIT_TST (dpInByte[1], 1);
lABBRobot.In.bProgramRun := BIT_TST (dpInByte[1], 2);
lABBRobot.In.bEStop := BIT_TST (dpInByte[1], 3);
lABBRobot.In.bAutomatic := BIT_TST (dpInByte[1], 4);
lABBRobot.In.bHome := BIT_TST (dpInByte[1], 5);
lABBRobot.In.bWZTablet1 := BIT_TST (dpInByte[1], 6);
lABBRobot.In.bWZTablet2 := BIT_TST (dpInByte[1], 7);
//Input Byte 2 (9-16)
lABBRobot.In.bWZToolShelf := BIT_TST (dpInByte[2], 0);
lABBRobot.In.bWZGrinder1 := BIT_TST (dpInByte[2], 1);
lABBRobot.In.bWZGrinder2 := BIT_TST (dpInByte[2], 2);
lABBRobot.In.bWZLimit1 := BIT_TST (dpInByte[2], 3);
lABBRobot.In.bWZLimit2 := BIT_TST (dpInByte[2], 4);
lABBRobot.In.bWZChangePart := BIT_TST (dpInByte[2], 5);
//Spares
lABBRobot.In.bReleaseTool := BIT_TST (dpInByte[2], 7);
//Input Byte 3 (17-24)
lABBRobot.In.bReleasePart := BIT_TST (dpInByte[3], 0);
lABBRobot.In.bGrinder1On := BIT_TST (dpInByte[3], 1);
lABBRobot.In.bGrinder2On := BIT_TST (dpInByte[3], 2);
//Input Byte 4 (25-32)
//Input Byte 5 (33-40)
//Input Byte 6 (41-48)
@@ -18,7 +34,7 @@ PROGRAM _CYCLIC
lABBRobot.In.usStatus := dpInByte[9];
//Input Byte 10 (73-80)
lABBRobot.In.usActiveTool := dpInByte[10];
//Input Byte 11 (81-88)
//Input Byte 11 (81-88)m
lABBRobot.In.uspGrinder1 := dpInByte[11];
//Input Byte 12 (89-96)
lABBRobot.In.uspGrinder2 := dpInByte[12];
@@ -28,16 +44,31 @@ PROGRAM _CYCLIC
//Input Byte 16 (121-128)
//Output Byte 1 (1-8)
dpOutByte[1] := BIT_CLR (dpOutByte[1], 0); //Reset E-Stop
dpOutByte[1] := BIT_CLR (dpOutByte[1], 1); //Motors On
dpOutByte[1] := BIT_CLR (dpOutByte[1], 2); //Motors Off
TOF_Reset_EStop.IN := lABBRobot.Out.bResetEStop;
TOF_Reset_EStop.PT := t#400ms;
TOF_Reset_EStop ();
IF TOF_Reset_EStop.Q THEN
dpOutByte[1] := BIT_SET (dpOutByte[1], 0); //Reset E-Stop
ELSE
dpOutByte[1] := BIT_CLR (dpOutByte[1], 0); //Reset E-Stop
END_IF
IF lABBRobot.Out.bSwitchMotorOn THEN
dpOutByte[1] := BIT_SET (dpOutByte[1], 1); //Motors On
ELSE
dpOutByte[1] := BIT_CLR (dpOutByte[1], 1); //Motors On
END_IF
IF lABBRobot.Out.bSwitchMotorOff THEN
dpOutByte[1] := BIT_SET (dpOutByte[1], 2); //Motors Off
ELSE
dpOutByte[1] := BIT_CLR (dpOutByte[1], 2); //Motors Off
END_IF
IF lABBRobot.Out.bStartAtMain THEN
dpOutByte[1] := BIT_SET (dpOutByte[1], 3); //Start at Main
ELSE
dpOutByte[1] := BIT_CLR (dpOutByte[1], 3); //Start at Main
END_IF
IF lABBRobot.Out.bStart THEN
dpOutByte[1] := BIT_SET (dpOutByte[1], 4); //Start
dpOutByte[1] := BIT_SET (dpOutByte[1], 4); //Start (1 Cycle)
ELSE
dpOutByte[1] := BIT_CLR (dpOutByte[1], 4); //Start
END_IF
@@ -54,6 +85,17 @@ PROGRAM _CYCLIC
dpOutByte[1] := BIT_CLR (dpOutByte[1], 7); //SysReset
//Output Byte 2 (9-16)
IF lABBRobot.Out.bReleaseTool THEN
dpOutByte[2] := BIT_SET (dpOutByte[2], 0); //Release Tool
ELSE
dpOutByte[2] := BIT_CLR (dpOutByte[2], 0); //Release Tool
END_IF
IF lABBRobot.Out.bReleasePart THEN
dpOutByte[2] := BIT_SET (dpOutByte[2], 1); //Release Part
ELSE
dpOutByte[2] := BIT_CLR (dpOutByte[2], 1); //Release Part
END_IF
//Output Byte 3 (17-24)
//Output Byte 4 (25-32)
//Output Byte 5 (33-40)

View File

@@ -1,4 +1,6 @@
VAR
TOF_Reset_EStop : TOF;
TON_Motors_On : TON;
dpOutByte : ARRAY[1..16] OF USINT := [16(0)]; (*Raw Output Bytes Abb Interface*)
dpInByte : ARRAY[1..16] OF USINT := [16(0)]; (*Raw Input Bytes Abb Interface*)
lABBRobot : REFERENCE TO TypABBInterface; (*Referenz to ABB Interface*)

View File

@@ -1,4 +1,4 @@
PROGRAM _INIT
//Zeiger auf Roboter Stellen
//Zeiger auf Roboter Stellen
lABBRobot ACCESS ADR (gABBRobot1);
END_PROGRAM

View File

@@ -15,6 +15,7 @@ TYPE
bWZGrinder2 : BOOL := FALSE; (*11 Roboter is in Area of Grinder 2*)
bWZLimit1 : BOOL := FALSE; (*12 Roboter is in Area of Limit 1*)
bWZLimit2 : BOOL := FALSE; (*13 Roboter is in Area of Limit 2*)
bWZChangePart : BOOL := FALSE; (*14 Roboter is in Area of ChangePart*)
bReleaseTool : BOOL := FALSE; (*16 Release Tool*)
bReleasePart : BOOL := FALSE; (*17 Release Part*)
bGrinder1On : BOOL := FALSE; (*18 Grinder 1 (Big) On*)
@@ -33,6 +34,8 @@ TYPE
bStop : BOOL := FALSE; (*06 Stop Cycle*)
bResetError : BOOL := FALSE; (*07 Reset Errors*)
bResetSystem : BOOL := FALSE; (*08 Reset System*)
bReleaseTool : BOOL := FALSE; (*09 Release Tool*)
bReleasePart : BOOL := FALSE; (*10 Release Part*)
usProgNr : USINT := 0; (*64 Programm Number*)
usTool : USINT := 0; (*72 Tool Number (To Change)*)
usStation : USINT := 0; (*80 Active Station FixMe*)

View File

@@ -1,4 +1,4 @@
VAR
VAR RETAIN
gABBRobot1 : TypABBInterface;
gABBRobot2 : TypABBInterface;
END_VAR

View File

@@ -0,0 +1,71 @@
TYPE
ACPinverter_typ : STRUCT
bModuleOK : BOOL;
In : ACPinverterIn_typ;
Out : ACPinverterOut_typ;
END_STRUCT;
ACPinverterIn_typ : STRUCT
bStat00_ReadytoSwitchOn : BOOL;
bStat01_SwitchedOnReady : BOOL;
bstat02_Enabled : BOOL;
bStat03_FaultDetecton : BOOL;
bStat04_VoltageDisabled : BOOL;
bStat05_QuickstopINV : BOOL;
bStat06_SwitchedOnDisabled : BOOL;
bStat07_Alarm : BOOL;
bStat09_ReferenceViaNetwork : BOOL;
bStat10_TargetReferenceReached : BOOL;
bStat11_InternalLimitActive : BOOL;
bStat14_StopViaKey : BOOL;
bStat15_RotationDirection : BOOL;
bExtStat00_EEPROM_NonVolatile : BOOL;
bExtStat01_ParameterConsCheck : BOOL;
bExtStat02_DriveInFault : BOOL;
bExtStat04_SpeedModeActive : BOOL;
bExtStat05_DCInjection : BOOL;
bExtStat06_TransientState : BOOL;
bExtStat07_ThermalTreshold : BOOL;
bExtStat08_Overbraking : BOOL;
bExtStat09_Accelerating : BOOL;
bExtStat10_Decellerating : BOOL;
bExtStat11_I_Limited : BOOL;
bExtStat12_FastStopping : BOOL;
bExtStat13_ExtControlled0 : BOOL;
bExtStat14_ExtCondrolled1 : BOOL;
bExtStat15_OperationDir : BOOL;
iRFRD_Velocity : INT;
iOTR_Torque : INT;
uiLCR_Current : UINT;
uiTHD_ThermalStateDrive : UINT;
uiTHR_ThermalStatMotor : UINT;
bInputLI1 : BOOL;
bInputLI2 : BOOL;
bInputLI3 : BOOL;
bInputLI4 : BOOL;
bRelay2State : BOOL;
uiErrorCode : UINT;
iLastFault : INT;
END_STRUCT;
ACPinverterOut_typ : STRUCT
bCmd00_SwitchOn : BOOL;
bCmd01_DisableVoltage : BOOL;
bCmd02_QuickStop : BOOL;
bCmd03_EnableOperation : BOOL;
bCmd07_ResetFault : BOOL;
bCmd11_Direction : BOOL;
bCmd12_StopCommand : BOOL;
bCmd13 : BOOL;
bCmd14 : BOOL;
bCmd15 : BOOL;
bCmi00_FactorySettings : BOOL;
bCmi01_SaveToEEPROM : BOOL;
bCmi03_ExternalFault : BOOL;
bCmi04_RampSwitching : BOOL;
bCmi09_FrequencyReference : BOOL;
bCmi13_LockOnStandstill : BOOL;
bCmi15_CheckParameterConsitency : BOOL;
iLFR_Setpointspeed : INT;
bOR_Relay2 : BOOL;
END_STRUCT;
END_TYPE

View File

@@ -14,8 +14,8 @@ END_VAR
VAR
gbSPLCOuResetEstopRob1 : BOOL; (*Safety PLC Reset Nothalt Roboter 1*)
gbSPLCOuResetEstopRob2 : BOOL; (*Safety PLC Reset Nothalt Roboter 2*)
gbSPLCOuResetWorkzoneRob1 : BOOL; (*Safety PLC Reset Sicherheit Best<EFBFBD>ckung Roboter 1*)
gbSPLCOuResetWorkzoneRob2 : BOOL; (*Safety PLC Reset Sicherheit Best<EFBFBD>ckung Roboter 2*)
gbSPLCOuResetWorkzoneRob1 : BOOL; (*Safety PLC Reset Sicherheit Einlegebereich Roboter 1*)
gbSPLCOuResetWorkzoneRob2 : BOOL; (*Safety PLC Reset Sicherheit Einlegebereich Roboter 2*)
gbSPLCOuHWSafetyDoor1Rob1OK : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWSafetyDoor2Rob1OK : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuHWSafetyDoor1Rob2OK : BOOL; (*Safety PLC kein Fehler HW*)
@@ -34,6 +34,12 @@ VAR
gbSPLCOuHWValveCloseGateRob2OK : BOOL; (*Safety PLC kein Fehler HW*)
gbSPLCOuReleaseSafeOutputRob1 : BOOL; (*Safety PLC Release Nothalt*)
gbSPLCOuReleaseSafeOutputRob2 : BOOL; (*Safety PLC Release Nothalt*)
gbSPLCOuReleaseSafeDoorOuRob1 : BOOL; (*Safety PLC Release T<>rkreis Roboter 1*)
gbSPLCOuReleaseSafeDoorOuRob2 : BOOL; (*Safety PLC Release T<>rkreis Roboter 2*)
gbSPLCOuResetDoorzoneRob1 : BOOL; (*Safety PLCE Reset T<>rkreis Roboter 1*)
gbSPLCOuResetDoorzoneRob2 : BOOL; (*Safety PLCE Reset T<>rkreis Roboter 2*)
gbSPLCOuReleaseWorkzoneOuRob1 : BOOL; (*Safety PLC Release Einlegebereich Roboter 1*)
gbSPLCOuReleaseWorkzoneOuRob2 : BOOL; (*Safety PLC Release Einlegebereich Roboter 2*)
END_VAR
(*Signals from Safe PLC*)
(*----------------------------------------------------------------------------------------------------------------*)
@@ -43,6 +49,8 @@ VAR
gbSPLCInEstopOkRob2 : BOOL; (*Safety PLC E-Stop is Ok Roboter 2*)
gbSPLCInWorkzoneOkRob1 : {REDUND_UNREPLICABLE} BOOL; (*Safety PLC E-Stop is Ok Best<73>ckung Roboter 1*)
gbSPLCInWorkzoneOkRob2 : {REDUND_UNREPLICABLE} BOOL; (*Safety PLC E-Stop is Ok Best<73>ckung Roboter 2*)
gbSPLCInDoorzoneOkRob1 : {REDUND_UNREPLICABLE} BOOL; (*Safety PLC E-Stop is Ok T<>rkreis Roboter 1*)
gbSPLCInDoorzoneOkRob2 : {REDUND_UNREPLICABLE} BOOL; (*Safety PLC E-Stop is Ok T<>rkreis Roboter 2*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF3.ST2 - Acopos 1045 (Small Grinder Robot 1)*)
@@ -60,41 +68,36 @@ END_VAR
(*IF3.ST4 - Acopos P74 (Robot 1 / Tablett 1)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR1T1_ModuleOk : BOOL := 0;
gAxR1T1 : ACP10AXIS_typ;
gAxR1T1_HW : SdcHwCfg_typ := (0);
gAxR1T1_DrvIf : SdcDrvIf16_typ := (0);
gAxR1T1_DiDoIf : SdcDiDoIf_typ := (0);
gAxR1T1 : ACPinverter_typ;
giOuPressureR1G1 : INT; (*Preassure Grinder 1 Robot 1(0 to 8192)*)
gbInToolSlay1OutRob1 : BOOL; (*Toolslay 1 Robot 1 is Out (LI1)*)
gbInToolSlay1InRob1 : BOOL; (*Toolslay 1 Robot 1 is In (LI2)*)
gbInGateIsOpenRob1 : BOOL; (*ToolGate Robot 1 is Closed (LI4)*)
gbInKeyReleaseTool : BOOL; (*Temporary Key Release Gripper Robot 1 (LI5)*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF3.ST5 - Acopos P74 (Robot 1 / Tablett 2)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR1T2_ModuleOk : BOOL := 0;
gAxR1T2 : ACP10AXIS_typ;
gAxR1T2_HW : SdcHwCfg_typ := (0);
gAxR1T2_DrvIf : SdcDrvIf16_typ := (0);
gAxR1T2_DiDoIf : SdcDiDoIf_typ := (0);
gAxR1T2 : ACPinverter_typ;
giOuPressureR1G2 : INT; (*Preassure Grinder 2 Robot 1 (0 to 8192)*)
gbInToolSlay2OutRob1 : BOOL; (*Toolslay 2 Robot 1 is Out (LI1)*)
gbInToolSlay2InRob1 : BOOL; (*Toolslay 2 Robot 1 is In (LI2)*)
gbInKeyReleasePart : BOOL; (*Temporary Key Release Part Robot 1 (LI5)*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF3.ST6 - Acopos P74 (Robot 2 / Tablett 1)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR2T1_ModuleOk : BOOL := 0;
gAxR2T1 : ACP10AXIS_typ;
gAxR2T1_HW : SdcHwCfg_typ := (0);
gAxR2T1_DrvIf : SdcDrvIf16_typ := (0);
gAxR2T1_DiDoIf : SdcDiDoIf_typ := (0);
gAxR2T1 : ACPinverter_typ;
giOuPressureR2G1 : INT; (*Preassure Grinder 1 Robot 2 (0 to 8192)*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF3.ST7 - Acopos P74 (Robot 2 / Tablett 2)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR2T2_ModuleOk : BOOL := 0;
gAxR2T2 : ACP10AXIS_typ;
gAxR2T2_HW : SdcHwCfg_typ := (0);
gAxR2T2_DrvIf : SdcDrvIf16_typ := (0);
gAxR2T2_DiDoIf : SdcDiDoIf_typ := (0);
gAxR2T2 : ACPinverter_typ;
giOuPressureR2G2 : INT; (*Preassure Grinder 2 Robot 2 (0 to 8192)*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF6.ST1 - DI9371*)
@@ -122,8 +125,10 @@ VAR
gbInResetKeyRob2 : BOOL; (*Resettaster Roboter 1*)
gbInAirOKRob1 : BOOL; (*Druckw<6B>chter Luft OK Roboter 1*)
gbInAirOKRob2 : BOOL; (*Druckw<6B>chter Luft OK Roboter 2*)
gbInEStopPressedRob1 : BOOL; (*Nothalttaster Rob1 Bet<65>tigt*)
gbInEStopPressedRob2 : BOOL; (*Nothalttaster Rob2 Bet<65>tigt*)
gbInStartKey1Rob1 : BOOL; (*Starttaster Roboter 1 Tablet 1*)
gbInStartKey2Rob2 : BOOL; (*Starttaster Roboter 2 Tablet 2*)
gbInStartKey2Rob1 : BOOL; (*Starttaster Roboter 1 Tablet 2*)
gbInStartKey1Rob2 : BOOL; (*Starttaster Roboter 2 Tablet 1*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST3 - DI9371*)
@@ -132,14 +137,16 @@ VAR
gbST3ModuleOk : BOOL;
gbIDoorLockedRob1 : BOOL; (*Zugangst<73>r Rob 1 Geschlossen (Riegel eingef<65>hrt)*)
gbIDoorErrorRob1 : BOOL; (*Zugangst<73>r Rob 1 St<53>rung*)
gbIDoorKey1Rob1 : BOOL; (*Zugangst<73>r Rob 1 Taster 1*)
gbIDoorKey2Rob1 : BOOL; (*Zugangst<73>r Rob 1 Taster 2*)
gbIDoorKey1Rob1 : BOOL; (*Zugangst<73>r Rob 1 Taster 1 Wei<65>*)
gbIDoorKey2Rob1 : BOOL; (*Zugangst<73>r Rob 1 Taster 2 Gelb*)
gbIDoorKey3Rob1 : BOOL; (*Zugangst<73>r Rob 1 Schl<68>sselschalter*)
gbIDoorLockedRob2 : BOOL; (*Zugangst<73>r Rob 2 Geschlossen (Riegel eingef<65>hrt)*)
gbIDoorErrorRob2 : BOOL; (*Zugangst<73>r Rob 2 St<53>rung*)
gbIDoorKey1Rob2 : BOOL; (*Zugangst<73>r Rob 2 Taster 1*)
gbIDoorKey2Rob2 : BOOL; (*Zugangst<73>r Rob 2 Taster 2*)
gbIDoorKey1Rob2 : BOOL; (*Zugangst<73>r Rob 2 Taster 1 Wei<65>*)
gbIDoorKey2Rob2 : BOOL; (*Zugangst<73>r Rob 2 Taster 2 Gelb*)
gbIDoorKey3Rob2 : BOOL; (*Zugangst<73>r Rob 2 Schl<68>sselschalter*)
gbInEStopPressedRob1 : BOOL; (*Nothalttaster Rob1 Bet<65>tigt*)
gbInEStopPressedRob2 : BOOL; (*Nothalttaster Rob2 Bet<65>tigt*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST4 - DO9322*)
@@ -156,6 +163,8 @@ VAR
gbOuResetDoorMGBRob1 : BOOL; (*Roboter 1 Zuhaltung Reset*)
gbOuDoorMGBLED1Rob1 : BOOL; (*Roboter 1 MGB LED 1 Wei<65>*)
gbOuDoorMGBLED2Rob1 : BOOL; (*Roboter 1 MGB LED 2 Gelb*)
gbOuLEDStartKey1Rob1 : BOOL; (*LED Starttaster Roboter 1 Tablet 1*)
gbOuLEDStartKey2Rob2 : BOOL; (*LED Starttaster Roboter 2 Tablet 2*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST5 - DO9322*)
@@ -171,6 +180,8 @@ VAR
gbOuResetDoorMGBRob2 : BOOL; (*Roboter 2 Zuhaltung Reset*)
gbOuDoorMGBLED1Rob2 : BOOL; (*Roboter 2 MGB LED 1 Wei<65>*)
gbOuDoorMGBLED2Rob2 : BOOL; (*Roboter 2 MGB LED 1 Gelb*)
gbOuLEDStartKey2Rob1 : BOOL; (*LED Starttaster Roboter 1 Tablet 2*)
gbOuLEDStartKey1Rob2 : BOOL; (*LED Starttaster Roboter 2 Tablet 1*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST6 - SI9100*)
@@ -281,30 +292,22 @@ VAR
gbOuDQuickStopGrind2Rob2 : BOOL; (*Quickstop Fingerschleifer Rob2*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST29 - X20BT9100*)
(*IF1.ST15 - X20BT9100*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gbST29ModuleOk : BOOL;
gbST15ModuleOk : BOOL;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST30 - ACP X64*)
(*IF1.ST16 - ACP X64*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR1G1_ModuleOk : BOOL := 0;
gAxR1G1 : ACP10AXIS_typ;
gAxR1G1_HW : SdcHwCfg_typ := (0);
gAxR1G1_DrvIf : SdcDrvIf16_typ := (0);
gAxR1G1_DiDoIf : SdcDiDoIf_typ := (0);
gAxR1G1 : ACPinverter_typ;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*IF1.ST31 - ACP X64*)
(*IF1.ST17 - ACP X64*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gAxR2G1_ModuleOk : BOOL := 0;
gAxR2G1 : ACP10AXIS_typ;
gAxR2G1_HW : SdcHwCfg_typ := (0);
gAxR2G1_DrvIf : SdcDrvIf16_typ := (0);
gAxR2G1_DiDoIf : SdcDiDoIf_typ := (0);
gAxR2G1 : ACPinverter_typ;
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)
(*For Test purpose only*)

View File

@@ -26,6 +26,7 @@ TYPE
bAxisSimulation : BOOL;
bMachineON : BOOL; (*Anlage EIN*)
bMachineONDel : BOOL; (*Anlage EIN Verz<72>gert*)
bMachineHOME : BOOL; (*Anlage in Grundstellung*)
bRequestHoming : BOOL := 1; (*Anforderung Grundstellungsfahrt*)
bSetupMode : BOOL; (*Inbetriebnahme (Plausibilit<69>t deaktivieren)*)
enMode : enMACHMODE := enMACH_HOMEPOS; (*Betriebsart*)

View File

@@ -4,7 +4,8 @@ VAR
gMachine2 : typMachine; (*Maschinenstati*)
gMachineCommands1 : typMachineCommands; (*Machinenkommandos*)
gMachineCommands2 : typMachineCommands; (*Machinenkommandos*)
gMachineAlarms : typAlarm := (0); (*Maschinenalarme*)
gMachineAlarms1 : typAlarm := (0); (*Maschinenalarme*)
gMachineAlarms2 : typAlarm := (0); (*Maschinenalarme*)
gSafetyAlarm : typAlarm := (0); (*Sicherheitstechnik Alarme*)
gStatusVCControls : typStatusVCControls;
gVCCommands : typVCCommands;

View File

@@ -0,0 +1,35 @@
PROGRAM _CYCLIC
// Robot 1 Grinder 1
//Enable IF Module is OK
gAxR1G1.Out.bCmd01_DisableVoltage := gAxR1G1.bModuleOK;
gAxR1G1.Out.bCmd02_QuickStop := gAxR1G1.bModuleOK;
//Power Up
IF gAxR1G1.In.bStat00_ReadytoSwitchOn AND gMachine1.bMachineON THEN
gAxR1G1.Out.bCmd00_SwitchOn := TRUE;
gAxR1G1.Out.bCmd03_EnableOperation := TRUE;
END_IF
IF NOT gMachine1.bMachineON OR gAxR1G1.In.bStat06_SwitchedOnDisabled THEN
gAxR1G1.Out.bCmd00_SwitchOn := FALSE;
gAxR1G1.Out.bCmd03_EnableOperation := FALSE;
END_IF
//Reset Error
gAxR1G1.Out.bCmd07_ResetFault := FALSE;
//Belt
gbOuBeltLooseGrind1Rob1 := NOT gCmdTightenBelt1Rob1;
gbOuBeltTightenGrind1Rob1 := gCmdTightenBelt1Rob1;
//Preassure Grinder 1
//Robot Values 0-200 := 0-100 in 0.5% Steps Valve Max value is 8000 (8192)
giOuPressureR1G1 := gABBRobot1.In.uspGrinder1 * iPreassureStep;
//Preassure Grinder 2
giOuPressureR1G2 := gABBRobot1.In.uspGrinder2 * iPreassureStep;
END_PROGRAM

View File

@@ -0,0 +1,3 @@
VAR CONSTANT
iPreassureStep : INT := 40; (*(0-100%) in 0.5 Schritten*)
END_VAR

View File

@@ -2,9 +2,7 @@
<?AutomationStudio Version=4.1.6.81 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File>ncsdcctrlCyclic.st</File>
<File>ncsdcctrlInit.st</File>
<File Private="true">ncsdcctrl.typ</File>
<File Private="true">ncsdcctrl.var</File>
<File Description="Cyclic code">Grinders.st</File>
<File Description="Local variables" Private="true">Grinders.var</File>
</Files>
</Program>

View File

@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.5.68 SP?>
<?AutomationStudio Version=4.1.6.81 SP?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File">GlobalMachine.typ</Object>
<Object Type="File">GlobalMachine.var</Object>
<Object Type="Program" Language="IEC">machine</Object>
<Object Type="Program" Language="IEC" Description="Control Grinders">Grinders</Object>
<Object Type="Program" Language="IEC" Description="Temporary Operation">TempMode</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.1.6.81 SP?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Cyclic code">TempMode.st</File>
<File Description="Local variables" Private="true">TempMode.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,7 @@
PROGRAM _CYCLIC
//Temporary Operation of Valves on Robot
gABBRobot1.Out.bReleaseTool := gbInKeyReleaseTool AND gMachine1.bMachineON;
gABBRobot1.Out.bReleasePart := gbInKeyReleasePart AND gMachine1.bMachineON;
END_PROGRAM

View File

@@ -1,12 +1,12 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* Program: ncsdcctrl
* File: ncsdcctrl.var
* Program: TempMode
* File: TempMode.var
* Author: michi
* Created: May 15, 2015
* Created: July 08, 2015
********************************************************************
* Local variables of program ncsdcctrl
* Local variables of program TempMode
********************************************************************)
VAR

View File

@@ -85,32 +85,52 @@ END_IF
//Machinemodes Robot 1
//=================================================
IF gbInHomeModeRob1 THEN
IF NOT gMachine1.bMachineON THEN
gMachine1.enMode := enMACH_NOOP;
ELSIF gbInHomeModeRob1 THEN
gMachine1.enMode := enMACH_HOMEPOS;
ELSIF gbInAutomaticModeRob1 THEN
gMachine1.enMode := enMACH_AUTOMATIC;
ELSE
gMachine1.enMode := enMACH_JOG;
END_IF
//Only Automatic modes
IF (gMachine1.enMode = enMACH_AUTOMATIC) THEN
IF lMachine1.bRequestHoming THEN
// gMachine1.enMode := enMACH_HOMEPOS;
END_IF
END_IF
//Reset Machine Modes
IF (gMachine1.enMode = enMACH_HOMEPOS) OR (gMachine1.enMode = enMACH_AUTOMATIC) THEN
IF gMachineAlarms1.Alarm[7] THEN
gMachine1.enMode := enMACH_NOOP;
END_IF
END_IF
//On/OFF
IF EDGEPOS (gbInCtrlOnRob1) THEN
gMachine1.bMachineON := TRUE;
END_IF
IF NOT gbInCtrlOffRob1 THEN
gMachine1.bMachineON := FALSE;
gMachine1.enMode := enMACH_NOOP;
//gMachine.bRequestHoming := TRUE;
END_IF
//Machinemodes Robot 2
//=================================================
IF gbInHomeModeRob2 THEN
IF NOT gMachine2.bMachineON THEN
gMachine2.enMode := enMACH_NOOP;
ELSIF gbInHomeModeRob2 THEN
gMachine2.enMode := enMACH_HOMEPOS;
ELSIF gbInAutomaticModeRob2 THEN
gMachine2.enMode := enMACH_AUTOMATIC;
ELSE
gMachine2.enMode := enMACH_JOG;
END_IF
//On/OFF
IF EDGEPOS (gbInCtrlOnRob2) THEN
gMachine2.bMachineON := TRUE;
@@ -122,24 +142,8 @@ IF NOT gbInCtrlOffRob2 THEN
END_IF
//Reset Machine Modes
IF (gMachine1.enMode = enMACH_HOMEPOS) OR (gMachine1.enMode = enMACH_MANUAL) OR (gMachine1.enMode = enMACH_AUTOMATIC) THEN
IF gMachineAlarms.Alarm[7] THEN
gMachine1.enMode := enMACH_NOOP;
END_IF
END_IF
//Only Automatic modes
IF (gMachine1.enMode = enMACH_MANUAL) OR (gMachine1.enMode = enMACH_AUTOMATIC) THEN
IF lMachine1.bRequestHoming THEN
gMachine1.enMode := enMACH_HOMEPOS;
END_IF
END_IF
//Buttons
gStatusVCControls.usBtnHomeMode1 := SHL (BOOL_TO_USINT (FALSE), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_HOMEPOS)), VC_HIDE_BITPOS);
gStatusVCControls.usBtnHomeMode2 := SHL (BOOL_TO_USINT (FALSE), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gMachine2.bMachineON OR (gMachine1.enMode <> enMACH_HOMEPOS)), VC_HIDE_BITPOS);
//Layers
@@ -155,51 +159,39 @@ gStatusVCControls.usLayersMainpage[2] := SHL (BOOL_TO_USINT (NOT gMachine1.bMach
//gusVCCStatusTool[3] := SHL (BOOL_TO_USINT (gusCurrentTool <> 3), VC_HIDE_BITPOS);
gStatusVCControls.usLayersMainpage[3] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_JOG) OR (gusCurrentOpLayer <> 3)), VC_HIDE_BITPOS);
//Layer 4 Automatic Opteration Robot 1
gStatusVCControls.usLayersMainpage[4] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_JOG) OR (gusCurrentOpLayer <> 4)), VC_HIDE_BITPOS);
//Layer 5 Manual Opeation Tool 2
IF (gusCurrentOpLayer = 5) AND (FALSE) THEN
gusCurrentOpLayer := 3;
END_IF
gStatusVCControls.usLayersMainpage[5] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_JOG) OR (gusCurrentOpLayer <> 5)), VC_HIDE_BITPOS);
//Layer 6 Automatic
gStatusVCControls.usLayersMainpage[6] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR ((gMachine1.enMode <> enMACH_MANUAL) AND (gMachine1.enMode <> enMACH_AUTOMATIC))), VC_HIDE_BITPOS);
//Layer 7 Homing
gStatusVCControls.usLayersMainpage[7] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_HOMEPOS)), VC_HIDE_BITPOS);
gStatusVCControls.usLayersMainpage[4] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_AUTOMATIC)), VC_HIDE_BITPOS);
//Layer 5 Homing Robot 1
gStatusVCControls.usLayersMainpage[5] := SHL (BOOL_TO_USINT (NOT gMachine1.bMachineON OR (gMachine1.enMode <> enMACH_HOMEPOS)), VC_HIDE_BITPOS);
//Alarms
//=================================================
//Fuse 24 V DC
gMachineAlarms.Alarm[0] := NOT gbIn24VOk;
gMachineAlarms1.Alarm[0] := NOT gbIn24VOk;
//gMachineAlarms1.Alarm[1] := NOT gbIn24VOk;
//Reset Fuse 24V DC
gbOuReset24VError := (gbInResetKeyRob1 OR gbInResetKeyRob2) AND NOT gbIn24VOk;
//Air
//Air Robot 1
TON_AirOk1.IN := gbInAirOKRob1;
TON_AirOk1.PT := t#5s;
TON_AirOk1.PT := t#2s;
TON_AirOk1 ();
gbAirOk1 := TON_AirOk1.Q;
TON_AirNOk1.IN := NOT gbInAirOKRob1;
TON_AirNOk1.PT := t#5s;
TON_AirNOk1.IN := gMachine1.bMachineON AND gbSPLCInDoorzoneOkRob1 AND NOT gbInAirOKRob1;
TON_AirNOk1.PT := t#2s;
TON_AirNOk1 ();
gMachineAlarms.Alarm[1] := TON_AirNOk1.Q;
//Holding Brake
gMachineAlarms.Alarm[2] := FALSE;
gMachineAlarms.Alarm[3] := FALSE;
//Limit Switches Pressed
//gMachineAlarms.Alarm[4] := NOT gPS.DriveStatus.bTrigger1;
//gMachineAlarms.Alarm[5] := NOT gPS.DriveStatus.bTrigger2;
//Request MachineHoming
gMachineAlarms.Alarm[6] := lMachine1.bRequestHoming;
//Bad Tool
gMachineAlarms.Alarm[7] := FALSE;
//Hardware faults
//Axis PS
gMachineAlarms.Alarm[22] := FALSE; //lPS.DriveStatus.bAxisError;
//Axis Shaft Master
gMachineAlarms1.Alarm[1] := TON_AirNOk1.Q;
//Air Robot 2
TON_AirOk2.IN := gbInAirOKRob2;
TON_AirOk2.PT := t#2s;
TON_AirOk2 ();
gbAirOk2 := TON_AirOk1.Q;
TON_AirNOk2.IN := gMachine2.bMachineON AND gbSPLCInDoorzoneOkRob2 AND NOT gbInAirOKRob2;
TON_AirNOk2.PT := t#2s;
TON_AirNOk2 ();
gMachineAlarms2.Alarm[1] := TON_AirNOk2.Q;
//Request Homing
gMachineAlarms1.Alarm[2] := lMachine1.bRequestHoming;
gMachineAlarms2.Alarm[2] := lMachine1.bRequestHoming;
//Cylinder Toolslay 1
@@ -225,13 +217,18 @@ TON_MachineOn2 ();
gMachine2.bMachineONDel := TON_MachineOn2.Q;
//Reset E-Stop
gbSPLCOuResetEstopRob1 := gbInResetKeyRob1 AND gMachine1.bMachineON;
gbSPLCOuResetEstopRob2 := gbInResetKeyRob2 AND gMachine2.bMachineON;
gbSPLCOuResetEstopRob1 := EDGEPOS (gbInResetKeyRob1) AND gMachine1.bMachineON AND NOT bInit;
gbSPLCOuResetEstopRob2 := EDGEPOS (gbInResetKeyRob2) AND gMachine2.bMachineON AND NOT bInit;
//Reset Workzone
gbSPLCOuResetWorkzoneRob1 := (EDGENEG (gbInStartKey1Rob1) OR EDGENEG (gbInStartKey2Rob1)) AND gMachine1.bMachineON;
gbSPLCOuResetWorkzoneRob2 := (EDGENEG (gbInStartKey1Rob2) OR EDGENEG (gbInStartKey2Rob2)) AND gMachine2.bMachineON;
//gbSPLCOuResetAreaToolslay1 := gbInResetKeyTool1;
//gbSPLCOuResetAreaToorschlocholslay2 := gbInResetKeyTool2;
//Reset Doorzone
//FixMe Temporary Mode
gbSPLCOuResetDoorzoneRob1 := (EDGENEG (gbInStartKey1Rob1) OR EDGENEG (gbInStartKey2Rob1)) AND gMachine1.bMachineON;
//gbSPLCOuResetDoorzoneRob1 := EDGENEG (gbIDoorKey2Rob1) AND gMachine1.bMachineON;
gbSPLCOuResetDoorzoneRob2 := EDGENEG (gbIDoorKey2Rob2) AND gMachine2.bMachineON;
bSafetyError := FALSE;
@@ -241,21 +238,51 @@ FOR usi := 10 TO 33 DO
END_IF
END_FOR
//Outputs
//================================================
//Power Up Diagnostic Modules Bumper
gbOuPowerBumperRob1 := TRUE OR gbInBumperRob1Ok;
gbOuPowerBumperRob2 := TRUE OR gbInBumperRob2Ok;
//Hold Doors Closed
gbOuHoldDoorClosedRob1 := gCmdHoldDoorClosedRob1;
gbOuHoldDoorClosedRob2 := gCmdHoldDoorClosedRob2;
//Lamps
//------------------------------------------------
// cond = Estop
// blink 0,5Hz = Ready to reset
gbOuLEDOnKeyRob1 := lMachine1.bMachineON;
gbOuLEDOnKeyRob2 := lMachine2.bMachineON;
//E-Stop Reset
gbOuLEDResetKeyRob1 := NOT gbSPLCInEstopOkRob1;
gbOuLEDResetKeyRob2 := NOT gbSPLCInEstopOkRob2;
// (bSafetyError AND bBlink0_5);
//Door
gbOuDoorMGBLED2Rob1 := NOT gbSPLCInDoorzoneOkRob1;
gbOuDoorMGBLED2Rob2 := NOT gbSPLCInDoorzoneOkRob2;
//Start Keys at Tablet
gbOuLEDStartKey1Rob1 := NOT gbSPLCInWorkzoneOkRob1;
gbOuLEDStartKey1Rob2 := NOT gbSPLCInWorkzoneOkRob2;
//Signal Tower
gbOuLampGreenSignalTowerRob1 := lMachine1.bMachineON;
gbOuLampRedSignalTowerRob1 := NOT gbSPLCInEstopOkRob1 OR (NOT gbSPLCInWorkzoneOkRob1 AND bBlink0_5);
gbOuLampGreenSignalTowerRob2 := lMachine2.bMachineON;
gbOuLampRedSignalTowerRob2 := NOT gbSPLCInEstopOkRob2 OR (NOT gbSPLCInWorkzoneOkRob1 AND bBlink0_5);
FUB_AsArLogWrite ();
IF FUB_AsArLogWrite.status <> ERR_FUB_BUSY THEN
FUB_AsArLogWrite.enable := FALSE;
END_IF
bInit := FALSE;
END_PROGRAM

View File

@@ -19,37 +19,30 @@ END_PROGRAM
PROGRAM _CYCLIC
gSafetyAlarm.Alarm[0] := NOT gbSPLCInEstopOkRob1 AND gMachine1.bMachineON;
gSafetyAlarm.Alarm[1] := NOT gbSPLCInEstopOkRob2 AND gMachine2.bMachineON;
gSafetyAlarm.Alarm[2] := NOT gbSPLCInDoorzoneOkRob1 AND gMachine1.bMachineON;
gSafetyAlarm.Alarm[3] := NOT gbSPLCInDoorzoneOkRob2 AND gMachine2.bMachineON;
gSafetyAlarm.Alarm[4] := FALSE;
gSafetyAlarm.Alarm[5] := FALSE;
//Light Curtain 1 Tool 1 left big
TON_LightCurtain1.IN := FALSE;
TON_LightCurtain1 ();
gSafetyAlarm.Alarm[0] := TON_LightCurtain1.Q;
//Light Curtain 2 Tool 1 left small
TON_LightCurtain2.IN := FALSE;
TON_LightCurtain2 ();
gSafetyAlarm.Alarm[1] := TON_LightCurtain2.Q;
//SafetyArea
TON_SafetyAreaToolslay1.IN := FALSE; //gbSPLCInEstopOk AND NOT gbSPLCInAreaToolslay1Ok;
TON_SafetyAreaToolslay1 ();
gSafetyAlarm.Alarm[4] := TON_SafetyAreaToolslay1.Q;
TON_SafetyAreaToolslay2.IN := FALSE; //gbSPLCInEstopOk AND NOT gbSPLCInAreaToolslay2Ok;
TON_SafetyAreaToolslay2 ();
gSafetyAlarm.Alarm[5] := TON_SafetyAreaToolslay2.Q;
gSafetyAlarm.Alarm[6] := FALSE; //NOT gbSPLCInEstopOk;
//Hardwareerrors
gbSPLCOuHWSafetyDoor1Rob1OK := TRUE;
gbSPLCOuHWSafetyDoor2Rob1OK := TRUE;
gbSPLCOuHWSafetyDoor1Rob2OK := TRUE;
gbSPLCOuHWSafetyDoor2Rob2OK := TRUE;
gbSPLCOuHWSafetyEStop1Rob1OK := TRUE;
gbSPLCOuHWSafetyEStop2Rob1OK := TRUE;
gbSPLCOuHWSafetyEStop1Rob2OK := TRUE;
gbSPLCOuHWSafetyEStop2Rob2OK := TRUE;
gbSPLCOuHWSafetyToolSlayRob1OK := TRUE;
gbSPLCOuHWSafetyToolSlayRob2OK := TRUE;
gbSPLCOuHWSafetyGrindersRob1OK := TRUE;
@@ -61,176 +54,168 @@ gbSPLCOuHWMainValveRob2OK := TRUE;
gbSPLCOuHWValveCloseGateRob2OK := TRUE;
//MainValve
(*IF (genST8StatDO1 = enSDO_RELEASE_ERROR2) THEN
//HW Freigabe Fehler
//Netzsch<EFBFBD>tz 1 Roboter 1 T<EFBFBD>r
IF (genST7StatDO1 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[10] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[10] := FALSE;
END_IF
IF (genST8StatDO1 = enSDO_LOCK_ERROR) THEN
IF (genST7StatDO1 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[11] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[11] := FALSE;
END_IF
IF (genST8StatDO1 = enSDO_HW_ERROR) THEN
IF (genST7StatDO1 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[12] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[12] := FALSE;
END_IF
gbSPLCOuHWMainValveOK := NOT gSafetyAlarm.Alarm[12];
//Mains Acopos
IF (genST8StatDO2 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyEStop1Rob1OK := NOT gSafetyAlarm.Alarm[12];
//Netzsch<EFBFBD>tz 2 Roboter 1 T<EFBFBD>r
IF (genST7StatDO2 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[13] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[13] := FALSE;
END_IF
IF (genST8StatDO2 = enSDO_LOCK_ERROR) THEN
IF (genST7StatDO2 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[14] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[14] := FALSE;
END_IF
IF (genST8StatDO2 = enSDO_HW_ERROR) THEN
IF (genST7StatDO2 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[15] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[15] := FALSE;
END_IF
gbSPLCOuHWMainsAcoposOk := NOT gSafetyAlarm.Alarm[15];
//Enable Acopos Multi
IF (genST8StatDO3 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyEStop2Rob1OK := NOT gSafetyAlarm.Alarm[15];
//Netzsch<EFBFBD>tz 1 Roboter 2 T<EFBFBD>r
IF (genST7StatDO3 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[16] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[16] := FALSE;
END_IF
IF (genST8StatDO3 = enSDO_LOCK_ERROR) THEN
IF (genST7StatDO1 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[17] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[17] := FALSE;
END_IF
IF (genST8StatDO3 = enSDO_HW_ERROR) THEN
IF (genST7StatDO1 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[18] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[18] := FALSE;
END_IF
gbSPLCOuHWEnableAcpMultiOk := NOT gSafetyAlarm.Alarm[18];
//Valve Pressbrake
IF (genST8StatDO4 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyEStop1Rob2OK := NOT gSafetyAlarm.Alarm[18];
//Netzsch<EFBFBD>tz 2 Roboter 2 T<EFBFBD>r
IF (genST7StatDO4 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[19] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[19] := FALSE;
END_IF
IF (genST8StatDO4 = enSDO_LOCK_ERROR) THEN
IF (genST7StatDO4 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[20] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[20] := FALSE;
END_IF
IF (genST8StatDO4 = enSDO_HW_ERROR) THEN
IF (genST7StatDO4 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[21] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[21] := FALSE;
END_IF
gbSPLCOuHWValveBrakeOk := NOT gSafetyAlarm.Alarm[21];
gbSPLCOuReleaseSafeOut := NOT gSafetyAlarm.Alarm[10] AND NOT gSafetyAlarm.Alarm[13]
AND NOT gSafetyAlarm.Alarm[16] AND NOT gSafetyAlarm.Alarm[19];
IF ((genST8StatDO1 = enSDO_LOCK) OR (genST8StatDO2 = enSDO_LOCK) OR
(genST8StatDO3 = enSDO_LOCK) OR (genST8StatDO4 = enSDO_LOCK)) THEN
TON_ReleaseFlag.IN := TRUE;
END_IF
IF TON_ReleaseFlag.IN AND NOT TON_ReleaseFlag.Q THEN
gbSPLCOuReleaseSafeOut := FALSE;
END_IF
TON_ReleaseFlag.PT := t#50ms;
TON_ReleaseFlag ();
//Valve Door 1
IF (genST9StatDO1 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyEStop2Rob2OK := NOT gSafetyAlarm.Alarm[21];
//Netzsch<EFBFBD>tz 1 Roboter 1
IF (genST8StatDO1 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[22] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[22] := FALSE;
END_IF
IF (genST9StatDO1 = enSDO_LOCK_ERROR) THEN
IF (genST8StatDO1 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[23] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[23] := FALSE;
END_IF
IF (genST9StatDO1 = enSDO_HW_ERROR) THEN
IF (genST8StatDO1 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[24] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[24] := FALSE;
END_IF
gbSPLCOuHWValveDoor1Ok := NOT gSafetyAlarm.Alarm[24];
//Valve Door 2
IF (genST9StatDO2 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyDoor1Rob1OK := NOT gSafetyAlarm.Alarm[24];
//Netzsch<EFBFBD>tz 2 Roboter 1 T<EFBFBD>r
IF (genST8StatDO2 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[25] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[25] := FALSE;
END_IF
IF (genST9StatDO2 = enSDO_LOCK_ERROR) THEN
IF (genST8StatDO2 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[26] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[26] := FALSE;
END_IF
IF (genST9StatDO2 = enSDO_HW_ERROR) THEN
IF (genST8StatDO2 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[27] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob1 THEN
gSafetyAlarm.Alarm[27] := FALSE;
END_IF
gbSPLCOuHWValveDoor2Ok := NOT gSafetyAlarm.Alarm[27];
gbSPLCOuReleaseDoors := NOT gSafetyAlarm.Alarm[22] AND NOT gSafetyAlarm.Alarm[25];
gbSPLCOuHWSafetyDoor2Rob1OK := NOT gSafetyAlarm.Alarm[27];
//Enable Acp Tool 1
IF (genST9StatDO3 = enSDO_RELEASE_ERROR2) THEN
//Netzsch<EFBFBD>tz 1 Roboter 2 T<EFBFBD>r
IF (genST8StatDO3 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[28] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[28] := FALSE;
END_IF
IF (genST9StatDO3 = enSDO_LOCK_ERROR) THEN
IF (genST8StatDO1 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[29] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[29] := FALSE;
END_IF
IF (genST9StatDO3 = enSDO_HW_ERROR) THEN
IF (genST8StatDO1 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[30] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[30] := FALSE;
END_IF
gbSPLCOuHWEnableAcpTool1Ok := NOT gSafetyAlarm.Alarm[30];
gbSPLCOuReleaseAreaToolslay1 := NOT gSafetyAlarm.Alarm[28];
//Enable Acp Tool 2
IF (genST9StatDO4 = enSDO_RELEASE_ERROR2) THEN
gbSPLCOuHWSafetyDoor1Rob2OK := NOT gSafetyAlarm.Alarm[30];
//Netzsch<EFBFBD>tz 2 Roboter 2 T<EFBFBD>r
IF (genST8StatDO4 = enSDO_RELEASE_ERROR2) THEN
gSafetyAlarm.Alarm[31] := TRUE;
END_IF
IF gbInResetKey THEN
IF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[31] := FALSE;
END_IF
IF (genST9StatDO4 = enSDO_LOCK_ERROR) THEN
IF (genST8StatDO4 = enSDO_LOCK_ERROR) THEN
gSafetyAlarm.Alarm[32] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[32] := FALSE;
END_IF
IF (genST9StatDO4 = enSDO_HW_ERROR) THEN
IF (genST8StatDO4 = enSDO_HW_ERROR) THEN
gSafetyAlarm.Alarm[33] := TRUE;
ELSIF gbInResetKey THEN
ELSIF gbInResetKeyRob2 THEN
gSafetyAlarm.Alarm[33] := FALSE;
END_IF
gbSPLCOuHWEnableAcpTool2Ok := NOT gSafetyAlarm.Alarm[33];
gbSPLCOuReleaseAreaToolslay2 := NOT gSafetyAlarm.Alarm[31];
gbSPLCOuHWSafetyDoor2Rob2OK := NOT gSafetyAlarm.Alarm[34];
//EStop Tool 1 left
gSafetyAlarm.Alarm[40] := gbInEStopPressed1;
//EStop Tool 1 right
gSafetyAlarm.Alarm[41] := gbInEStopPressed2;
//EStop Tool 2 left
gSafetyAlarm.Alarm[42] := gbInEStopPressed3;
//EStop Tool 2 right
gSafetyAlarm.Alarm[43] := gbInEStopPressed4;
*)
//Nothalt bet<EFBFBD>tigt Roboter 1
gSafetyAlarm.Alarm[100] := gbInEStopPressedRob1;
//Nothalt bet<EFBFBD>tigt Roboter 2
gSafetyAlarm.Alarm[101] := gbInEStopPressedRob2;
//Nothalt bet<EFBFBD>tigt Roboter 1
gSafetyAlarm.Alarm[102] := NOT gbInEStopPressedRob1 AND NOT gbSInEStopOkRob1;
//Nothalt bet<EFBFBD>tigt Roboter 2
gSafetyAlarm.Alarm[103] := NOT gbInEStopPressedRob1 AND NOT gbSInEStopOkRob1;
END_PROGRAM

View File

@@ -70,15 +70,20 @@ TOF_ST10_Ch4_WaitAfterError ();
//Release Signals
gbSPLCOuReleaseSafeOutputRob1 := NOT (genST8StatDO1 = enSDO_RELEASE_ERROR2) AND NOT (genST8StatDO2 = enSDO_RELEASE_ERROR2);
gbSPLCOuReleaseSafeOutputRob2 := NOT (genST8StatDO3 = enSDO_RELEASE_ERROR2) AND NOT (genST8StatDO4 = enSDO_RELEASE_ERROR2);
gbSPLCOuReleaseSafeOutputRob1 := NOT (genST8StatDO1 = enSDO_RELEASE_ERROR2) AND NOT (genST8StatDO2 = enSDO_RELEASE_ERROR2)
AND NOT (genST10StatDO1 = enSDO_RELEASE_ERROR2);
gbSPLCOuReleaseSafeOutputRob2 := NOT (genST8StatDO3 = enSDO_RELEASE_ERROR2) AND NOT (genST8StatDO4 = enSDO_RELEASE_ERROR2)
AND NOT (genST10StatDO3 = enSDO_RELEASE_ERROR2);
gbSPLCOuReleaseSafeDoorOuRob1 := NOT (genST7StatDO1 = enSDO_RELEASE_ERROR2) AND NOT (genST7StatDO2 = enSDO_RELEASE_ERROR2)
AND NOT (genST9StatDO3 = enSDO_RELEASE_ERROR2);
gbSPLCOuReleaseSafeDoorOuRob2 := NOT (genST7StatDO3 = enSDO_RELEASE_ERROR2) AND NOT (genST7StatDO4 = enSDO_RELEASE_ERROR2)
AND NOT (genST9StatDO4 = enSDO_RELEASE_ERROR2);
//Enable Signals to HW
//ST7
gbSOuSafetyAfterDoor1Rob1 := gMachine1.bMachineON AND gbSPLCInWorkzoneOkRob1;
gbSOuSafetyAfterDoor2Rob1 := gMachine1.bMachineON AND gbSPLCInWorkzoneOkRob1;
gbSOuSafetyAfterDoor1Rob2 := gMachine1.bMachineON AND gbSPLCInWorkzoneOkRob2;
gbSOuSafetyAfterDoor2Rob2 := gMachine1.bMachineON AND gbSPLCInWorkzoneOkRob2;
gbSOuSafetyAfterDoor1Rob2 := gMachine2.bMachineON AND gbSPLCInWorkzoneOkRob2;
gbSOuSafetyAfterDoor2Rob2 := gMachine2.bMachineON AND gbSPLCInWorkzoneOkRob2;
//ST8

View File

@@ -0,0 +1,285 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<AlarmGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="MachineAlarm1">
<Property Name="AcknowledgeImage" Value="None"/>
<Property Name="ActiveBackColor" Value="45"/>
<Property Name="ActiveForeColor" Value="0"/>
<Property Name="AlarmImage" Value="Source[global].Variable[DataSource.Machine.gMachineAlarms1.Alarm]"/>
<Property Name="BypassBackColor" Value="14"/>
<Property Name="BypassForeColor" Value="0"/>
<Property Name="BypassImage" Value="None"/>
<Property Name="DefaultBackColor" Value="15"/>
<Property Name="DefaultForeColor" Value="0"/>
<Property Name="Description" Value="General Machine Alams Robot 1"/>
<Property Name="GroupAlarm" Value="None"/>
<Property Name="ImageOffset" Value="0"/>
<Property Name="Index" Value="1"/>
<Property Name="LatchedBackColor" Value="2"/>
<Property Name="LatchedForeColor" Value="0"/>
<Property Name="Priority" Value="1"/>
<Property Name="QuitBackColor" Value="1"/>
<Property Name="QuitForeColor" Value="0"/>
<Alarms>
<Alarm Index="0">
<Property Name="Acknowledge" Value="Disabled"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="1">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="31">
<Property Name="Acknowledge" Value="Disabled"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="2">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="3">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="50">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="51">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="52">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="53">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="100">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="101">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="Group">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
</Alarm>
</Alarms>
<TextGroup>
<TextSnippets>
<TextSnippet ClassId="0x00002002" Name="AxisMasterErr0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisPSErr">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisShaft1Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisShaft2Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisShaft3Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisShaft4Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisSlay1Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
<TextSnippet ClassId="0x00002002" Name="AxisSlay2Err0">
<Property Name="Alignment" Value="Left"/>
<Property Name="Datapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="FillCharacter" Value=""/>
<Property Name="MaxChars" Value="None"/>
<Property Name="MinChars" Value="None"/>
<Property Name="Persistent" Value="False"/>
</TextSnippet>
</TextSnippets>
<TextLayer LanguageId="en">
<Text ID="21" Value="Dropout Fuse 24V DC"/>
<Text ID="22" Value="Robot 1: Lack of Air "/>
<Text ID="28" Value="External IO Block (Toolslay 1) not OK"/>
<Text ID="29" Value="Robot 1: Request Homing"/>
<Text ID="30" Value="Wrong Tool"/>
<Text ID="31" Value="Safetydoor Toolslay 1 not opened"/>
<Text ID="32" Value="Safetydoor Toolslay 1 not closed"/>
<Text ID="33" Value="Safetydoor Toolslay 2 not opened"/>
<Text ID="34" Value="Safetydoor Toolslay 2 not closed"/>
<Text ID="47" Value="Robot 1: Time Violation in Step Motors On"/>
<Text ID="57" Value="Robot 1: Time Violation in Step Start Cycle"/>
<Text ID="20" Value=""/>
</TextLayer>
<TextLayer LanguageId="de">
<Text ID="21" Value="Sicherungsfall 24 DC"/>
<Text ID="22" Value="Roboter 1: Druckluftüberwachung (Mindestdruck nicht erreicht)"/>
<Text ID="28" Value="Modulfehler I/O Block auf Werkzeug 1"/>
<Text ID="29" Value="Roboter 1: Anforderung Grundstellungsfahrt"/>
<Text ID="30" Value="Falsches Werkzeug eingebaut / angewählt"/>
<Text ID="31" Value="Schutztor bei Werkzeugschlitten 1 öffnet nicht"/>
<Text ID="32" Value="Schutztor bei Werkzeugschlitten 1 schließt nicht"/>
<Text ID="33" Value="Schutztor bei Werkzeugschlitten 2 öffnet nicht"/>
<Text ID="34" Value="Schutztor bei Werkzeugschlitten 2 schließt nicht"/>
<Text ID="47" Value="Roboter 1: Zeitüberwachung in Schritt Motoren Einschalten"/>
<Text ID="57" Value="Roboter 1: Zeitüberwachung in Schritt Programm Start"/>
<Text ID="20" Value=""/>
</TextLayer>
<IndexMap>
<Index ID="21" Value="0"/>
<Index ID="22" Value="1"/>
<Index ID="28" Value="31"/>
<Index ID="29" Value="2"/>
<Index ID="30" Value="3"/>
<Index ID="31" Value="50"/>
<Index ID="32" Value="51"/>
<Index ID="33" Value="52"/>
<Index ID="34" Value="53"/>
<Index ID="47" Value="100"/>
<Index ID="57" Value="101"/>
<Index ID="20" Value="Group"/>
</IndexMap>
</TextGroup>
</AlarmGroup>

View File

@@ -0,0 +1,617 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<AlarmGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="SafetyAlarms">
<Property Name="AcknowledgeImage" Value="None"/>
<Property Name="ActiveBackColor" Value="45"/>
<Property Name="ActiveForeColor" Value="0"/>
<Property Name="AlarmImage" Value="Source[global].Variable[DataSource.Machine.gSafetyAlarm.Alarm]"/>
<Property Name="BypassBackColor" Value="14"/>
<Property Name="BypassForeColor" Value="0"/>
<Property Name="BypassImage" Value="None"/>
<Property Name="DefaultBackColor" Value="15"/>
<Property Name="DefaultForeColor" Value="0"/>
<Property Name="Description" Value="Safety Chain Related Alarms"/>
<Property Name="GroupAlarm" Value="None"/>
<Property Name="ImageOffset" Value="0"/>
<Property Name="Index" Value="3"/>
<Property Name="LatchedBackColor" Value="2"/>
<Property Name="LatchedForeColor" Value="0"/>
<Property Name="Priority" Value="1"/>
<Property Name="QuitBackColor" Value="1"/>
<Property Name="QuitForeColor" Value="0"/>
<Alarms>
<Alarm Index="4">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="5">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="0">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="1">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="2">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="3">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="6">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="10">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="13">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="16">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="19">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="11">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="12">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="14">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="15">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="17">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="18">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="7">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="20">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="21">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="8">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="9">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="22">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="23">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="24">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="25">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="26">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="27">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="28">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="29">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="30">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="31">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="32">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="33">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="100">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="101">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="102">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="103">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
<Property Name="TriggerGroupAlarm" Value="False"/>
</Alarm>
<Alarm Index="Group">
<Property Name="Acknowledge" Value="Possible"/>
<Property Name="AcknowledgeActive" Value="Enabled"/>
<Property Name="Bypass" Value="Enabled"/>
<Property Name="Description" Value=""/>
<Property Name="Latched" Value="False"/>
<Property Name="RecordAcknowledge" Value="True"/>
<Property Name="RecordBypass" Value="All"/>
<Property Name="RecordReset" Value="All"/>
<Property Name="RecordTrigger" Value="True"/>
</Alarm>
</Alarms>
<TextGroup>
<TextSnippets/>
<TextLayer LanguageId="en">
<Text ID="67" Value="SafetyArea Toolslay 1 offline"/>
<Text ID="68" Value="SafetyArea Toolslay2 offline"/>
<Text ID="77" Value="EStop Offline Robot 1"/>
<Text ID="78" Value="EStop Offline Robot 2"/>
<Text ID="79" Value="Safezone Door Offline Robot 1"/>
<Text ID="80" Value="Safezone Door Offline Robot 2"/>
<Text ID="81" Value="EStop offline"/>
<Text ID="82" Value="SDO Mains after Door 1 Robot 1 Release Error 2"/>
<Text ID="83" Value="SDO Mains after Door 2 Robot 1 Release Error 2"/>
<Text ID="84" Value="SDO Mains after Door 1 Robot 2 Release Error 2"/>
<Text ID="85" Value="SDO Mains after Door 2 Robot 2 Release Error 2"/>
<Text ID="116" Value="SDO Mains after Door 1 Robot 1 Lock Error"/>
<Text ID="117" Value="SDO Mains after Door 1 Robot 1 HW Error"/>
<Text ID="118" Value="SDO Mains after Door 2 Robot 1 Lock Error"/>
<Text ID="119" Value="SDO Mains after Door 2 Robot 1 HW Error"/>
<Text ID="120" Value="SDO Mains after Door 1 Robot 2 Lock Error"/>
<Text ID="121" Value="SDO Mains after Door 1 Robot 2 HW Error"/>
<Text ID="122" Value=""/>
<Text ID="123" Value="SDO Mains after Door 2 Robot 2 Lock Error"/>
<Text ID="124" Value="SDO Mains after Door 2 Robot 2 HW Error"/>
<Text ID="143" Value=""/>
<Text ID="144" Value=""/>
<Text ID="146" Value="SDO Mains 1 Robot 1 Release Error 2"/>
<Text ID="147" Value="SDO Mains 1 Robot 1 Lock Error"/>
<Text ID="148" Value="SDO Mains 1 Robot 1 HW Error"/>
<Text ID="149" Value="SDO Mains 2 Robot 1 Release Error 2"/>
<Text ID="150" Value="SDO Mains 2 Robot 1 Lock Error"/>
<Text ID="151" Value="SDO Mains 2 Robot 1 HW Error"/>
<Text ID="152" Value="SDO Mains 1 Robot 2 Release Error 2"/>
<Text ID="153" Value="SDO Mains 1 Robot 2 Lock Error"/>
<Text ID="154" Value="SDO Mains 1 Robot 2 HW Error"/>
<Text ID="155" Value="SDO Mains 2 Robot 2 Release Error 2"/>
<Text ID="156" Value="SDO Mains 2 Robot 2 Lock Error"/>
<Text ID="157" Value="SDO Mains 2 Robot 2 HW Error"/>
<Text ID="170" Value="E-Stop Operatorzone Robot 1 Pressed"/>
<Text ID="171" Value="E-Stop Operatorzone Robot 2 Pressed"/>
<Text ID="178" Value="E-Stop (Robotcontrol, Teachpendant, Door) Robot 1 Pressed"/>
<Text ID="185" Value="E-Stop (Robotcontrol, Teachpendant, Door) Robot 2 Pressed"/>
<Text ID="66" Value=""/>
</TextLayer>
<TextLayer LanguageId="de">
<Text ID="67" Value="Sicherheitsbereich Werkzeugschlitten 1 unterbrochen"/>
<Text ID="68" Value="Sicherheitsbereich Werkzeugschlitten 2 unterbrochen"/>
<Text ID="77" Value="Nothalt Roboter 1"/>
<Text ID="78" Value="Nothalt Roboter 2"/>
<Text ID="79" Value="Automatikbereich Roboter 1 Sicherheit Offline "/>
<Text ID="80" Value="Automatikbereich Roboter 2 Sicherheit Offline"/>
<Text ID="81" Value="Nothaltkreis unterbrochen"/>
<Text ID="82" Value="SDO Netzschütz nach Schutztür 1 Roboter 1 Freigabefehler 2"/>
<Text ID="83" Value="SDO Netzschütz nach Schutztür 2 Roboter 1 Freigabefehler 2"/>
<Text ID="84" Value="SDO Netzschütz nach Schutztür 1 Roboter 2 Freigabefehler 2"/>
<Text ID="85" Value="SDO Netzschütz nach Schutztür 2 Roboter 2 Freigabefehler 2"/>
<Text ID="116" Value="SDO Netzschütz nach Schutztür 1 Roboter 1 Verriegelungsfehler"/>
<Text ID="117" Value="SDO Netzschütz nach Schutztür 1 Roboter 1 HW-Fehler"/>
<Text ID="118" Value="SDO Netzschütz nach Schutztür 2 Roboter 1 Verriegelungsfehler"/>
<Text ID="119" Value="SDO Netzschütz nach Schutztür 2 Roboter 1 HW-Fehler"/>
<Text ID="120" Value="SDO Netzschütz nach Schutztür 2 Roboter 2 Verriegelungsfehler"/>
<Text ID="121" Value="SDO Netzschütz nach Schutztür 1 Roboter 2 HW-Fehler"/>
<Text ID="122" Value=""/>
<Text ID="123" Value="SDO Netzschütz nach Schutztür 2 Roboter 2 Verriegelungsfehler"/>
<Text ID="124" Value="SDO Netzschütz nach Schutztür 2 Roboter 2 HW-Fehler"/>
<Text ID="143" Value=""/>
<Text ID="144" Value=""/>
<Text ID="146" Value="SDO Netzschütz Not-Halt 1 Roboter 1 Freigabefehler 2"/>
<Text ID="147" Value="SDO Netzschütz Not-Halt 1 Roboter 1 Verriegelungsfehler"/>
<Text ID="148" Value="SDO Netzschütz Not-Halt 1 Roboter 1 HW-Fehler"/>
<Text ID="149" Value="SDO Netzschütz Not-Halt 2 Roboter 1 Freigabefehler 2"/>
<Text ID="150" Value="SDO Netzschütz Not-Halt 2 Roboter 1 Verriegelungsfehler"/>
<Text ID="151" Value="SDO Netzschütz Not-Halt 2 Roboter 1 HW-Fehler"/>
<Text ID="152" Value="SDO Netzschütz Not-Halt 1 Roboter 2 Freigabefehler 2"/>
<Text ID="153" Value="SDO Netzschütz Not-Halt 2 Roboter 2 Verriegelungsfehler"/>
<Text ID="154" Value="SDO Netzschütz Not-Halt 1 Roboter 2 HW-Fehler"/>
<Text ID="155" Value="SDO Netzschütz Not-Halt 2 Roboter 2 Freigabefehler 2"/>
<Text ID="156" Value="SDO Netzschütz Not-Halt 2 Roboter 2 Verriegelungsfehler"/>
<Text ID="157" Value="SDO Netzschütz Not-Halt 2 Roboter 2 HW-Fehler"/>
<Text ID="170" Value="Nothalt Einlegebereich Roboter 1 betätigt"/>
<Text ID="171" Value="Nothalt Einlegebereich Roboter 2 betätigt"/>
<Text ID="178" Value="Nothalt (Robotersteuerung, Teachpendant, Tür) Roboter 1 betätigt"/>
<Text ID="185" Value="Nothalt (Robotersteuerung, Teachpendant, Tür) Roboter 2 betätigt"/>
<Text ID="66" Value=""/>
</TextLayer>
<IndexMap>
<Index ID="67" Value="4"/>
<Index ID="68" Value="5"/>
<Index ID="77" Value="0"/>
<Index ID="78" Value="1"/>
<Index ID="79" Value="2"/>
<Index ID="80" Value="3"/>
<Index ID="81" Value="6"/>
<Index ID="82" Value="10"/>
<Index ID="83" Value="13"/>
<Index ID="84" Value="16"/>
<Index ID="85" Value="19"/>
<Index ID="116" Value="11"/>
<Index ID="117" Value="12"/>
<Index ID="118" Value="14"/>
<Index ID="119" Value="15"/>
<Index ID="120" Value="17"/>
<Index ID="121" Value="18"/>
<Index ID="122" Value="7"/>
<Index ID="123" Value="20"/>
<Index ID="124" Value="21"/>
<Index ID="143" Value="8"/>
<Index ID="144" Value="9"/>
<Index ID="146" Value="22"/>
<Index ID="147" Value="23"/>
<Index ID="148" Value="24"/>
<Index ID="149" Value="25"/>
<Index ID="150" Value="26"/>
<Index ID="151" Value="27"/>
<Index ID="152" Value="28"/>
<Index ID="153" Value="29"/>
<Index ID="154" Value="30"/>
<Index ID="155" Value="31"/>
<Index ID="156" Value="32"/>
<Index ID="157" Value="33"/>
<Index ID="170" Value="100"/>
<Index ID="171" Value="101"/>
<Index ID="178" Value="102"/>
<Index ID="185" Value="103"/>
<Index ID="66" Value="Group"/>
</IndexMap>
</TextGroup>
</AlarmGroup>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<AlarmGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="SystemAlarms">
<Property Name="ActiveBackColor" Value="4"/>
<Property Name="ActiveForeColor" Value="16"/>

View File

@@ -345,6 +345,15 @@
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL"/>
</DataPoint>
<DataPoint Name="enMode">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="enMACHMODE"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
</Folder>
<Folder Name="gMachine2">
<Property Name="Description" Value=""/>
@@ -358,6 +367,15 @@
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL"/>
</DataPoint>
<DataPoint Name="enMode">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="enMACHMODE"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
</Folder>
<Folder Name="gStatusVCControls">
<Property Name="Description" Value=""/>
@@ -407,6 +425,170 @@
</DataPoint>
</DataPoint>
</Folder>
<Folder Name="gMachineAlarms1">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Struct"/>
<DataPoint Name="Alarm">
<Property Name="ConnectedBySharedResource" Value="True"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="BOOL[0..127]"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL[]"/>
</DataPoint>
</Folder>
<Folder Name="gSafetyAlarm">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Struct"/>
<DataPoint Name="Alarm">
<Property Name="ConnectedBySharedResource" Value="True"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="BOOL[0..127]"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL[]"/>
</DataPoint>
</Folder>
</Folder>
<Folder Name="Axises">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Package"/>
<Folder Name="GrindCtrl">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Program"/>
<DataPoint Name="enTool1State">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enToolState"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<DataPoint Name="enTool2State">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enToolState"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<DataPoint Name="enStepAuto">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enStepAuto"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<Folder Name="StatusVCControls">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Struct"/>
<DataPoint Name="usTightenBeltGrinder1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="USINT"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<DataPoint Name="usReleaseBeltGrinder1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="USINT"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<DataPoint Name="usPrgSelection">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="USINT"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
</Folder>
<Folder Name="ManualCommands">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Struct"/>
<DataPoint Name="bStartGrinder1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="BOOL"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL"/>
</DataPoint>
<DataPoint Name="bTightenBeltGrinder1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="BOOL"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL"/>
</DataPoint>
<DataPoint Name="bReleaseBeltGrinder1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="BOOL"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="BOOL"/>
</DataPoint>
</Folder>
<DataPoint Name="enProgramSelection">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enPrograms"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
<DataPoint Name="enStepHoming">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enStepHoming"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
</Folder>
<DataPoint Name="genActivePrgRob1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="typ_enPrograms"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="INTEGER"/>
</DataPoint>
</Folder>
<Folder Name="GlobalVars">
<Property Name="Description" Value=""/>
<Property Name="FolderType" Value="Package"/>
<DataPoint Name="giOuPressureR1G1">
<Property Name="ConnectedBySharedResource" Value="False"/>
<Property Name="ConnectingVisus" Value="Visualization\Visu1"/>
<Property Name="DPLimit" Value="Default"/>
<Property Name="Description" Value=""/>
<Property Name="PLCType" Value="INT"/>
<Property Name="PLCUnit" Value="Source[relative:UnitGroup].Unit[PLC_Unit]"/>
<Property Name="UnitGroup" Value="Source[global].UnitGroup[Percentage]"/>
<Property Name="UpdateTime" Value="Default"/>
<Property Name="UserID" Value="None"/>
<Property Name="VCType" Value="SCALED"/>
</DataPoint>
</Folder>
</DataPoints>
</DataSource>

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<Languages xmlns="http://br-automation.co.at/AS/VC/Project">
<Property Name="Default" Value="en"/>
<Property Name="Default" Value="de"/>
<Property Name="FallBackLanguage" Value="None"/>
<Language ID="en">
<Property Name="BidiMode" Value="False"/>

View File

@@ -11,6 +11,8 @@
<Source File="TextGroups\AlarmState.txtgrp"/>
<Source File="TextGroups\DateTimeFormats.txtgrp"/>
<Source File="TextGroups\httpURL_SDM.txtgrp"/>
<Source File="TextGroups\MachineState.txtgrp"/>
<Source File="TextGroups\MachineMode.txtgrp"/>
<Source File="UnitGroups\Length.vcug"/>
<Source File="UnitGroups\Mass.vcug"/>
<Source File="UnitGroups\Volume.vcug"/>
@@ -18,8 +20,11 @@
<Source File="UnitGroups\Memory.vcug"/>
<Source File="UnitGroups\Pressure.vcug"/>
<Source File="UnitGroups\Temperatures.vcug"/>
<Source File="UnitGroups\Percentage.vcug"/>
<Source File="AlarmGroups\AlarmSystem.alcfg"/>
<Source File="AlarmGroups\SystemAlarms.algrp"/>
<Source File="AlarmGroups\MachineAlarm1.algrp"/>
<Source File="AlarmGroups\SafetyAlarms.algrp"/>
<Source File="DataSources\Internal.dso"/>
<Source File="DataSources\DataSource.dso"/>
<Source File="ControlVersion.cvinfo"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmAcknowledgeState">
<Property Name="Description" Value="Texts for acknowledge state of an alarm - index 0-1 long, index 10-11 short"/>
<Property Name="Index" Value="152"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmBypassState">
<Property Name="Description" Value="Texts for the bypass state of an alarm - index 0-1 long, index 10-11 short"/>
<Property Name="Index" Value="153"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmEvent">
<Property Name="Description" Value="Texts for the event of an alarm - index 0-1 long, index 10-11 short"/>
<Property Name="Index" Value="151"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmState">
<Property Name="Description" Value="Texts for alarm state - index 0-1 long, index 10-11 short"/>
<Property Name="Index" Value="150"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="DateTimeFormats">
<Property Name="Description" Value="Formats for Date and Time"/>
<Property Name="Index" Value="0"/>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="MachineMode">
<Property Name="Description" Value="Maschinenmodus"/>
<Property Name="Index" Value="3"/>
<TextSnippets/>
<TextLayer LanguageId="en">
<Text ID="103968" Value="No Mode"/>
<Text ID="103969" Value="Jog Mode"/>
<Text ID="103970" Value="Manual Mode"/>
<Text ID="103971" Value="Automatic Mode"/>
<Text ID="103972" Value="HomingMode"/>
</TextLayer>
<TextLayer LanguageId="de">
<Text ID="103968" Value="Keine Betr.art"/>
<Text ID="103969" Value="Tippbetrieb"/>
<Text ID="103970" Value="Handbetrieb"/>
<Text ID="103971" Value="Automatik"/>
<Text ID="103972" Value="Grundstellung"/>
</TextLayer>
<IndexMap>
<Index ID="103968" Value="0"/>
<Index ID="103969" Value="1"/>
<Index ID="103970" Value="2"/>
<Index ID="103971" Value="4"/>
<Index ID="103972" Value="3"/>
</IndexMap>
</TextGroup>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="MachineState">
<Property Name="Description" Value="Machine ON/OFF State"/>
<Property Name="Index" Value="2"/>
<TextSnippets/>
<TextLayer LanguageId="en">
<Text ID="103966" Value="Machine ON"/>
<Text ID="103967" Value="Machine OFF"/>
</TextLayer>
<TextLayer LanguageId="de">
<Text ID="103966" Value="Anlage EIN"/>
<Text ID="103967" Value="Anlage AUS"/>
</TextLayer>
<IndexMap>
<Index ID="103966" Value="1"/>
<Index ID="103967" Value="0"/>
</IndexMap>
</TextGroup>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="httpURL_SDM">
<Property Name="Description" Value="URL Texts for SDM"/>
<Property Name="Index" Value="1"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Length">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Meter]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Mass">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Kilogramm]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Memory">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Byte]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Percentage">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Per0to200]"/>
<Property Name="DefaultLimit" Value="None"/>
<Property Name="DefaultPLCUnit" Value="Source[embedded].Unit[PLC_Unit]"/>
<Property Name="Description" Value=""/>
<Property Name="InternalUnitTextIndex" Value="0"/>
<Property Name="RuntimeUnitChange" Value="None"/>
<Property Name="RuntimeUnitCurrentDatapoint" Value="None"/>
<TextGroup Name="TextGroup_1">
<Property Name="Description" Value=""/>
<Property Name="Index" Value="65536"/>
<TextSnippets/>
<TextLayer LanguageId="en">
<Text ID="103992" Value=""/>
<Text ID="103993" Value=""/>
<Text ID="103994" Value="%"/>
<Text ID="103996" Value=""/>
<Text ID="103997" Value=""/>
</TextLayer>
<TextLayer LanguageId="de">
<Text ID="103992" Value=""/>
<Text ID="103993" Value=""/>
<Text ID="103994" Value="%"/>
<Text ID="103996" Value=""/>
<Text ID="103997" Value=""/>
</TextLayer>
<IndexMap>
<Index ID="103992" Value="0"/>
<Index ID="103993" Value="1"/>
<Index ID="103994" Value="2"/>
<Index ID="103996" Value="3"/>
<Index ID="103997" Value="4"/>
</IndexMap>
</TextGroup>
<Units>
<Unit ClassId="0x00000603" Name="Per0to200">
<Property Name="DefaultPrecisionDatapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="Index" Value="1"/>
<Property Name="Text_Abbreviation_TextGroup" Value="None"/>
<Property Name="Text_Abbreviation_TextIndex" Value="2"/>
<Property Name="Text_Description_TextGroup" Value="None"/>
<Property Name="Text_Description_TextIndex" Value="1"/>
<Property Name="UnitFraction" Value="False"/>
<Property Name="Unit_DefaultPrecision" Value="1"/>
<Property Name="Value[0].Internal" Value="0"/>
<Property Name="Value[0].Scaled" Value="0"/>
<Property Name="Value[1].Internal" Value="8000"/>
<Property Name="Value[1].Scaled" Value="100"/>
</Unit>
<Unit ClassId="0x00000603" Name="PLC_Unit">
<Property Name="DefaultPrecisionDatapoint" Value="None"/>
<Property Name="Description" Value=""/>
<Property Name="Index" Value="0"/>
<Property Name="Text_Abbreviation_TextGroup" Value="None"/>
<Property Name="Text_Abbreviation_TextIndex" Value="4"/>
<Property Name="Text_Description_TextGroup" Value="None"/>
<Property Name="Text_Description_TextIndex" Value="3"/>
<Property Name="UnitFraction" Value="False"/>
<Property Name="Unit_DefaultPrecision" Value="2"/>
<Property Name="Value[0].Internal" Value="0"/>
<Property Name="Value[0].Scaled" Value="0"/>
<Property Name="Value[1].Internal" Value="1"/>
<Property Name="Value[1].Scaled" Value="1"/>
</Unit>
</Units>
<Limits/>
</UnitGroup>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Power">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Watt]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Pressure">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Pascal]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Temperatures">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Celsius]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<UnitGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Volume">
<Property Name="DefaultDisplayUnit" Value="Source[embedded].Unit[Liter]"/>
<Property Name="DefaultLimit" Value="None"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmAcknowledgeState">
<Property Name="Description" Value="Bitmap group for acknowledge state of an alarm"/>
<Property Name="Index" Value="151"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmBypassState">
<Property Name="Description" Value="Bitmap group for bypass state of an alarm"/>
<Property Name="Index" Value="152"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmEvent">
<Property Name="Description" Value="Bitmap group for the event of an alarm"/>
<Property Name="Index" Value="153"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="AlarmState">
<Property Name="Description" Value="Bitmap group for alarm state"/>
<Property Name="Index" Value="150"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Borders">
<Property Name="Description" Value="Bitmap group for borders"/>
<Property Name="Index" Value="3"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Buttons">
<Property Name="Description" Value=""/>
<Property Name="Index" Value="6"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="GlobalArea">
<Property Name="Description" Value="Bitmap group for global area elements"/>
<Property Name="Index" Value="4"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Orange_24">
<Property Name="Description" Value=""/>
<Property Name="Index" Value="5"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Orange_36">
<Property Name="Description" Value=""/>
<Property Name="Index" Value="2"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="Pads">
<Property Name="Description" Value="Bitmap group for input pads"/>
<Property Name="Index" Value="1"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<BitmapGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="msgBox">
<Property Name="Description" Value="Bitmaps for Message Box"/>
<Property Name="Index" Value="0"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<LogicalFont xmlns="http://br-automation.co.at/AS/VC/Project" Name="Default">
<Property Name="Description" Value="font for simple texts"/>
<Property Name="Index" Value="0"/>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<?AutomationStudio Version="4.1.5.68 SP"?>
<?AutomationStudio Version="4.1.6.81 SP"?>
<LogicalFont xmlns="http://br-automation.co.at/AS/VC/Project" Name="Html_SDM">
<Property Name="Description" Value="font for SDM HTML view"/>
<Property Name="Index" Value="4"/>

Some files were not shown because too many files have changed in this diff Show More