Initial Commit- Working Project

This commit is contained in:
Michael Rest
2015-10-31 21:30:58 +01:00
parent f8001a382c
commit d262e0c416
247 changed files with 12911 additions and 0 deletions

6
LastUser.set Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
<Print Header="%lProject: %n%c%x" Footer="%cPage: %p" />
<ConfigurationManager ActiveConfigurationName="Config1" />
</ProjectSettings>

View File

@@ -0,0 +1,8 @@
TYPE
typAlarm : STRUCT
Alarm : ARRAY[0..127]OF BOOL;
Ack : ARRAY[0..127]OF BOOL;
Bypass : ARRAY[0..127]OF BOOL;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,23 @@
VAR
bBlink0_1 : BOOL;
bBlink0_5 : BOOL;
bBlink1_0 : BOOL;
bBlink2_0 : BOOL;
bBlink5_0 : BOOL;
gdtActTime : DATE_AND_TIME; (*Current Date and Time*)
gDTSActTimeUTC : DTStructure := (0); (*Current Date and Time as DTS (ms) UTC !!!*)
gudUnixTimeUTC : UDINT; (*Current Date and Time as Unixts UTC !!!*)
END_VAR
VAR CONSTANT
gAInNull : INT := 0; (*O FOR Analog Input*)
gTrue : BOOL := TRUE; (*Konstant TRUE*)
gFalse : BOOL := FALSE; (*Konstant False*)
gInNull : BOOL := FALSE; (*FALSE FOR Input *)
END_VAR
VAR
gOuNull : BOOL; (*DUMMY for Output*)
END_VAR
VAR CONSTANT
iAIVoltageOverflow : INT := 16#7FFF; (* Analog Input Voltage Mode,Overflow *)
iAIVoltageUnderflow : INT := -32767; (* Analog Input Voltage Underflow *)
END_VAR

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File">GlobalCommon.typ</Object>
<Object Type="File">GlobalComon.var</Object>
<Object Type="Program" Language="IEC" Description="Actual Date_And_Time">get_dt</Object>
<Object Type="Program" Language="IEC" Description="Blinker 0,1 -0,5s">blinker</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Local variables" Private="true">blinker.var</File>
<File Description="Initialization code">blinkerInit.ab</File>
<File Description="Cyclic code">blinkerCyclic.ab</File>
</Files>
</Program>

View File

@@ -0,0 +1,13 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinker.var
* Author: michi
* Created: November 23, 2009
********************************************************************
* Local variables of program blinker
********************************************************************)
VAR
iCount : USINT;
END_VAR

View File

@@ -0,0 +1,30 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinkerCyclic.ab
* Author: michi
* Created: November 23, 2009
********************************************************************
* Implementation of program blinker
********************************************************************)
PROGRAM _CYCLIC
(* cyclic program *)
;Has to be taskclass 100ms
bBlink0_1 = not bBlink0_1
inc (iCount)
if ((iCount mod 5) = 0) then
bBlink0_5 = not bBlink0_5
endif
if ((iCount mod 10) = 0) then
bBlink1_0 = not bBlink1_0
endif
if ((iCount mod 20) = 0) then
bBlink2_0 = not bBlink2_0
endif
if ((iCount mod 50) = 0) then
bBlink5_0 = not bBlink5_0
iCount = 0
endif
END_PROGRAM

View File

@@ -0,0 +1,16 @@
(********************************************************************
* COPYRIGHT -- kA
********************************************************************
* Program: blinker
* File: blinkerInit.ab
* Author: michi
* Created: November 23, 2009
********************************************************************
* Implementation of program blinker
********************************************************************)
PROGRAM _INIT
iCount = 0
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Private="true">get_dt.var</File>
<File>get_dtInit.ab</File>
<File>get_dtCyclic.ab</File>
</Files>
</Program>

View File

@@ -0,0 +1,13 @@
VAR
lDTGetTime : DTGetTime;
lUtcDTStructureGetTime : UtcDTStructureGetTime;
END_VAR
(*For unixtimestamp conversion*)
VAR CONSTANT
uiDaysToMonthStart : ARRAY[0..11] OF UINT := [0,31,59,90,120,151,181,212,243,273,304,334];
END_VAR
VAR
udYears : UDINT;
udSwitchYears : UDINT;
udUnixTime : UDINT;
END_VAR

View File

@@ -0,0 +1,28 @@
PROGRAM _CYCLIC
//Retrieve actual Date and Time in different Formats
//as Date and Time
lDTGetTime.enable = true
lDTGetTime FUB DTGetTime()
gdtActTime = lDTGetTime.DT1
//as Datetime Structure
lUtcDTStructureGetTime.enable = TRUE
lUtcDTStructureGetTime.pDTStructure = ADR (gDTSActTimeUTC)
lUtcDTStructureGetTime FUB UtcDTStructureGetTime ()
//as Unix Timestamp
udYears = gDTSActTimeUTC.year - 1970
udSwitchYears = ((gDTSActTimeUTC.year - 1) - 1968) / 4\
- ((gDTSActTimeUTC.year - 1) - 1900) / 100\
+ ((gDTSActTimeUTC.year - 1) - 1600) / 400
udUnixTime = gDTSActTimeUTC.second + 60 * gDTSActTimeUTC.minute + 3600 * gDTSActTimeUTC.hour + \
(uiDaysToMonthStart[gDTSActTimeUTC.month - 1] + gDTSActTimeUTC.day -1 + udYears * 365 + udSwitchYears) * 86400
IF (gDTSActTimeUTC.month > 2) AND (gDTSActTimeUTC.year MOD 4 = 0) AND ((gDTSActTimeUTC.year MOD 100 <> 0) OR (gDTSActTimeUTC.year MOD 400 = 0)) THEN
udUnixTime = udUnixTime + 86400
ENDIF
gudUnixTimeUTC = udUnixTime
END_PROGRAM

View File

@@ -0,0 +1,5 @@
PROGRAM _INIT
(* init program *)
;tSEtSntpClient_0.enalbe = true
END_PROGRAM

303
Logical/FFGCtrl/FFGCtrl.st Normal file
View File

@@ -0,0 +1,303 @@
PROGRAM _INIT
//Keep Turntable
bDOuTurnTableFw := bDInTurnTableFw;
bDOuTurnTableBw := bDInTurnTableBw;
bTableUndefinedRestart := NOT bDInTurnTableFw AND NOT bDInTurnTableBw;
bDOuGateOpen := bDInGateOpen;
bDOuGateClose := FALSE;
bDOuCutterBw := TRUE;
bDOuCutterFw := FALSE;
bDOuCutterClose := FALSE;
//FixMe Gegendruck
END_PROGRAM
PROGRAM _CYCLIC
//Eing<EFBFBD>nge auslesen
bDInGateClosed := BIT_TST (uiInputs, 0);
bDInPart1Available := BIT_TST (uiInputs, 1);
bDInPart2Available := BIT_TST (uiInputs, 2);
bDInEStopOK := BIT_TST (uiInputs, 3);
bDInCutAreaOK := BIT_TST (uiInputs, 4);
bCuttersHome := bDInHomeCutter1 AND bDInHomeCutter2 AND bDInHomeCutter3 AND bDInHomeCutter4;
bTableInPos := (bDInTurnTableFw AND bDOuTurnTableFw AND NOT bDOuTurnTableBw) OR
(bDInTurnTableBw AND bDOuTurnTableBw AND NOT bDOuTurnTableFw);
gbMachIsInHomepos := bCuttersHome AND NOT bDInGateOpen AND (bDInTurnTableFw OR bDInTurnTableBw); //FiXMe
bSafetyOk := TRUE; //FixMe
gMoveConditions.bEnableGateClose := bTableInPos;
gMoveConditions.bEnableTurnTable := bCuttersHome AND bDInGateOpen;
gMoveConditions.bEnableCutterFw := bTableInPos AND bDInGateClosed; // (Safety...OK)
//Jog Mode
//==========================================================================================
IF genMachMode = enMACH_JOG THEN
//Set LEDs
IF bDInGateOpen THEN
gVCLEDs.usGateOpen := 0;
ELSIF NOT gMoveConditions.bEnableGateClose THEN
gVCLEDs.usGateOpen := 3; //Fast Blink
ELSE
gVCLEDs.usGateOpen := 1; //ON
END_IF
IF NOT bDInGateOpen THEN //FixMe Closed
gVCLEDs.usGateClose := 0;
ELSIF NOT gMoveConditions.bEnableGateClose THEN
gVCLEDs.usGateClose := 3; //Fast Blink
ELSE
gVCLEDs.usGateClose := 1; //ON
END_IF
IF (bDInTurnTableFw AND bDOuTurnTableFw) THEN
gVCLEDs.usTurnPosPart1 := 0;
ELSIF NOT gMoveConditions.bEnableTurnTable THEN
gVCLEDs.usTurnPosPart1 := 3;
ELSE
gVCLEDs.usTurnPosPart1 := 1;
END_IF
IF (bDInTurnTableBw AND bDOuTurnTableBw) THEN
gVCLEDs.usTurnPosPart2 := 0;
ELSIF NOT gMoveConditions.bEnableTurnTable THEN
gVCLEDs.usTurnPosPart2 := 3;
ELSE
gVCLEDs.usTurnPosPart2 := 1;
END_IF
IF bDOuCutterFw THEN
gVCLEDs.usCutterFw := 0;
ELSIF NOT gMoveConditions.bEnableCutterFw THEN
gVCLEDs.usCutterFw := 3;
ELSE
gVCLEDs.usCutterFw := 1;
END_IF
IF bDOuCutterBw THEN
gVCLEDs.usCutterBw := 0;
ELSE
gVCLEDs.usCutterBw := 1;
END_IF
IF gMoveConditions.bEnableGateClose AND (gManualCommands.usGateClose = 1) THEN
bDOuGateClose := TRUE;
bDOuGateOpen := FALSE;
ELSIF (gManualCommands.usGateOpen = 1) THEN
bDOuGateClose := FALSE;
bDOuGateOpen := TRUE;
END_IF
IF gMoveConditions.bEnableTurnTable THEN
IF (gManualCommands.usTurnPosPart1 = 1) THEN
bDOuTurnTableFw := TRUE;
bDOuTurnTableBw := FALSE;
ELSIF (gManualCommands.usTurnPosPart2 = 1) THEN
bDOuTurnTableFw := FALSE;
bDOuTurnTableBw := TRUE;
END_IF
END_IF
IF gMoveConditions.bEnableCutterFw AND (gManualCommands.usCutterFw = 1) THEN
bDOuCutterFw := TRUE;
bDOuCutterBw := FALSE;
ELSIF (gManualCommands.usCutterBw = 1) THEN
bDOuCutterFw := FALSE;
bDOuCutterBw := TRUE;
END_IF
bDOuCutterClose := (gManualCommands.usCutterClose = 1);
ELSIF (genMachMode = enMACH_HOMEPOS) THEN
//Homing
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CASE enStepFFGHoming OF
END_CASE
ELSIF (genMachMode = enMACH_MANUAL) OR (genMachMode = enMACH_AUTOMATIC) THEN
bEnableNextStep := EDGEPOS (gManualCommands.usNextManStep = 1) OR (genMachMode = enMACH_AUTOMATIC);
//Automatic
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CASE enStepFFG OF
//Init
//---------------------------
enFFGStep_INIT:
bTransitionCondition := gbMachIsInHomepos;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_WAIT_START;
END_IF
//Wait for Start
//---------------------------
enFFGStep_WAIT_START:
udCycletime := 0;
bTransitionCondition := ((EDGEPOS (bDInStartKey) AND (genMachMode = enMACH_AUTOMATIC)) OR (genMachMode = enMACH_MANUAL)) AND bSafetyOk AND gbMachON;
IF (bSafetyOkFP OR (bTransitionCondition AND (bEnableNextStep))) THEN
enStepFFG := enFFGStep_OPEN_GATE;
END_IF
//Schutzt<EFBFBD>r <EFBFBD>ffnen
//------------------------------
enFFGStep_OPEN_GATE:
bDOuGateOpen := TRUE;
bDOuGateClose := FALSE;
TOF_Cleaner.IN := TRUE;
IF bDInTurnTableFw THEN
bDOuHoldPart1Fw := TRUE;
END_IF
IF bDInTurnTableBw THEN
bDOuHoldPart2Fw := TRUE;
END_IF
bTransitionCondition := gMoveConditions.bEnableTurnTable AND bEnableNextStep;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_TURN;
IF bDInTurnTableFw THEN
bDOuTurnTableBw := TRUE;
bDOuTurnTableFw := FALSE;
ELSIF bDInTurnTableBw THEN
bDOuTurnTableFw := TRUE;
bDOuTurnTableBw := FALSE;
END_IF
END_IF
//Tisch drehen und einlege zylinder zustellen
//---------------------------
enFFGStep_TURN:
bTransitionCondition := (bDInTurnTableFw AND bDOuTurnTableFw) OR (bDInTurnTableBw AND bDOuTurnTableBw) AND bEnableNextStep;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_CLOSE_GATE;
END_IF
//Schutzt<EFBFBD>r Schlie<EFBFBD>en
//------------------------------
enFFGStep_CLOSE_GATE:
bDOuGateOpen := FALSE;
bDOuGateClose := gMoveConditions.bEnableGateClose;
bTransitionCondition := bDInGateClosed AND bEnableNextStep;
IF bDInTurnTableFw THEN
bDOuHoldPart1Fw := FALSE;
END_IF
IF bDInTurnTableBw THEN
bDOuHoldPart2Fw := FALSE;
END_IF
IF bTransitionCondition AND NOT ((bDInTurnTableFw AND bDInPart2Available) OR (bDInTurnTableBw AND bDInPart1Available)) THEN
enStepFFG := enFFGStep_INIT;
TOF_Cleaner.IN := FALSE;
udSteptime := 0;
ELSIF bTransitionCondition THEN
enStepFFG := enFFGStep_FW_CUTTER;
END_IF
//Cutter Zustellen
//------------------------------
enFFGStep_FW_CUTTER:
bDOuCutterBw := FALSE;
bDOuCutterFw := gMoveConditions.bEnableCutterFw;
bTransitionCondition := NOT bDInHomeCutter1 AND NOT bDInHomeCutter2 AND NOT bDInHomeCutter3 AND NOT bDInHomeCutter4 AND bEnableNextStep;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_CUT;
udSteptime := 0;
END_IF
//Cutter Schlie<EFBFBD>en
//------------------------------
enFFGStep_CUT:
bDOuCutterClose := TRUE;
bCount := TRUE;
bTransitionCondition := (udSteptime > 500) AND bEnableNextStep;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_BW_CUTTER;
bDOuCutterClose := FALSE;
END_IF
//Cutter R<EFBFBD>ckstellen
//------------------------------
enFFGStep_BW_CUTTER:
bDOuCutterBw := TRUE;
bDOuCutterFw := FALSE;
TOF_Cleaner.IN := FALSE;
bTransitionCondition := bCuttersHome;
IF bTransitionCondition THEN
enStepFFG := enFFGStep_INIT;
udSteptime := 0;
IF bCount THEN
bCount := FALSE;
gudShiftCounter := gudShiftCounter + 1;
gudOverallCounter := gudOverallCounter + 1;
END_IF
END_IF
END_CASE
END_IF
IF (gManualCommands.uResetShiftCount = 1) THEN
gudShiftCounter := 0;
END_IF
guiStepFFG := DINT_TO_UINT (enStepFFG);
bDOuLEDRd := gbMachON AND NOT bDInEStopOK;
bDOuLEDGn := gbMachON AND NOT bDInCutAreaOK;
IF EDGEPOS (bBlink0_1) THEN
udSteptime := udSteptime + 100;
udCycletime := udCycletime + 100;
END_IF
IF NOT gbMachON THEN
TOF_Cleaner.IN := FALSE;
END_IF
TOF_Cleaner.PT := t#5s;
TOF_Cleaner ();
bDOuCleanerOn := TOF_Cleaner.Q;
//Outputs
IF bDOuHoldPart1Fw THEN
uiOutputs := BIT_SET (uiOutputs, 0);
ELSE
uiOutputs := BIT_CLR (uiOutputs, 0);
END_IF
IF bDOuHoldPart2Fw THEN
uiOutputs := BIT_SET (uiOutputs, 1);
ELSE
uiOutputs := BIT_CLR (uiOutputs, 1);
END_IF
IF bDOuLEDGn THEN
uiOutputs := BIT_SET (uiOutputs, 2);
ELSE
uiOutputs := BIT_CLR (uiOutputs, 2);
END_IF
IF bDOuLEDRd THEN
uiOutputs := BIT_SET (uiOutputs, 3 + 4);
ELSE
uiOutputs := BIT_CLR (uiOutputs, 3 + 4);
END_IF
IF bDOuCleanerOn THEN
uiOutputs := BIT_SET (uiOutputs, 4);
ELSE
uiOutputs := BIT_CLR (uiOutputs, 4);
END_IF
END_PROGRAM

View File

@@ -0,0 +1,45 @@
(**)
TYPE
typ_enStepFFG :
(
enFFGStep_INIT := 0, (*Grundstellung pr<70>fen*)
enFFGStep_WAIT_START, (*Auf Startbefehl warten (mit Teil)*)
enFFGStep_OPEN_GATE, (*Schutzt<7A>r <20>ffnen*)
enFFGStep_TURN, (*Tisch drehen*)
enFFGStep_CLOSE_GATE, (*Schutzt<7A>r schlie<69>en*)
enFFGStep_FW_CUTTER, (*Cutter zustellen*)
enFFGStep_CUT, (*Schneiden*)
enFFGStep_WAIT_CUTTER, (*Wartezeit*)
enFFGStep_BW_CUTTER (*Cutter zur<75>ckstellen*)
);
typ_enStepHoming :
( (*Grundstellungsfahrt*)
enFFGStepHoming_INIT, (*Auf Start warten*)
enFFGStepHoming_WAIT_START, (*Auf Startbefehl warten*)
enFFGStepHoming_OPEN_GATE, (*Referenzwerte Laden*)
enFFGStepHoming_TURN, (*Alles in Grundstellung fahren*)
enPressStepHoming_MOVE_HOME_TT, (*Drehtisch in Grundstellung*)
enPressStepHoming_FW_AX, (*Achse an Einlegeposition Zustellen*)
enPressStepHoming_DONE (*GST-Fahrt abgeschlossen*)
);
typStatusPressVCControls : STRUCT (*Controlbytes f<>r Visu*)
usStartHoming : USINT;
usJogPosShaft1 : USINT;
usJogPosShaft2 : USINT;
usShaft1MaskPos : USINT;
usShaft2MaskPos : USINT;
usTurnPosShaft1 : USINT; (*Drehtisch auf Achse 1 drehen*)
usTurnPosShaft2 : USINT; (*Drehtisch auf Achse 2 drehen*)
usAxis1Fw : USINT;
usAxis1Bw : USINT;
usAxis2Fw : USINT;
usAxis2Bw : USINT;
usGrinderFw : USINT;
usGrinderBw : USINT;
usReferencePress : USINT; (*Presse Referenzieren*)
usReferencePressABS : USINT; (*Presse Referenzieren mit gespeicherten Absolutwerten*)
usResetAx1 : USINT;
usResetAx2 : USINT;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,17 @@
VAR
bSafetyOk : BOOL;
bSafetyOkFP : BOOL;
bTransitionCondition : BOOL;
bTableUndefinedRestart : BOOL;
bCuttersHome : BOOL;
bTableInPos : BOOL;
bEnableNextStep : BOOL; (*N<>chsten Schritt (Semiautomatik) Freigeben*)
bCount : BOOL;
enStepFFG : typ_enStepFFG;
enStepFFGHoming : typ_enStepHoming;
guiStepFFG : UINT; (*F<>r Visu*)
uiTemp : UINT;
udSteptime : UDINT; (*[0.1s]*)
udCycletime : UDINT;
TOF_Cleaner : TOF;
END_VAR

9
Logical/FFGCtrl/IEC.prg Normal file
View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Implementation code">FFGCtrl.st</File>
<File Description="Local variables" Private="true">FFGCtrl.var</File>
<File Description="Local data types" Private="true">FFGCtrl.typ</File>
</Files>
</Program>

38
Logical/Global/Global.typ Normal file
View File

@@ -0,0 +1,38 @@
TYPE
typManualCommnands : STRUCT (*Kommandos f<>r Hand / Automatikbetrieb*)
usNextManStep : USINT; (*N<>chster Schritt (Semi) Automatic*)
usStartHoming : USINT; (*Maschine in Grundstellung fahren*)
usGateOpen : USINT; (*Schutzt<7A>r <20>ffnen*)
usGateClose : USINT; (*Schutzt<7A>r schlie<69>en*)
usTurnPosPart1 : USINT; (*Drehtisch auf Teil 1 drehen*)
usTurnPosPart2 : USINT; (*Drehtisch auf Teil 2 drehen*)
usCutterFw : USINT;
usCutterBw : USINT;
usCutterClose : USINT;
usToggleHolderPart1 : USINT;
usToggleHolderPart2 : USINT;
uResetShiftCount : USINT;
END_STRUCT;
typMoveConditions : STRUCT (*Bewegungsfreigaben*)
bEnableGateClose : BOOL;
bEnableTurnTable : BOOL;
bEnableCutterFw : BOOL;
END_STRUCT;
typVCLEDs : STRUCT (*Kommandos f<>r Hand / Automatikbetrieb*)
usJOGButton : USINT;
usHOMEButton : USINT;
usAUTOButton : USINT;
usNextManStep : USINT; (*N<>chster Schritt (Semi) Automatic*)
usStartHoming : USINT; (*Maschine in Grundstellung fahren*)
usGateOpen : USINT; (*Schutzt<7A>r <20>ffnen*)
usGateClose : USINT; (*Schutzt<7A>r schlie<69>en*)
usTurnPosPart1 : USINT; (*Drehtisch auf Teil 1 drehen*)
usTurnPosPart2 : USINT; (*Drehtisch auf Teil 2 drehen*)
usCutterFw : USINT;
usCutterBw : USINT;
usCutterClose : USINT;
usToggleHolderPart1 : USINT;
usToggleHolderPart2 : USINT;
END_STRUCT;
END_TYPE

52
Logical/Global/Global.var Normal file
View File

@@ -0,0 +1,52 @@
(*//Inputs Panel Onboard*)
VAR
bDInHomeCutter1 : BOOL; (*Cutter 1 GS*)
bDInHomeCutter2 : BOOL; (*Cutter 2 GS*)
bDInHomeCutter3 : BOOL; (*Cutter 3 GS*)
bDInHomeCutter4 : BOOL; (*Cutter 4 GS*)
bDInGateOpen : BOOL; (*Schutzt<7A>r offen*)
bDInTurnTableFw : BOOL; (*Drehtisch Pos 1 (Fw) im Einlegebereich*)
bDInTurnTableBw : BOOL; (*Drehtisch Pos 2 (Bw) im Einlegebereich*)
bDInStartKey : BOOL; (*Starttaster*)
bDInAirOk1 : BOOL; (*Druckluft 1 (Nach Notaus) OK*)
bDInAirOk2 : BOOL; (*Druckluft 1 (Nach Lichtvorhang) OK*)
END_VAR
(*//Expansion Module 1*)
VAR
uiInputs : UINT; (*Gesammelte Eing<6E>nge*)
bDInGateClosed : BOOL; (*Schutzt<7A>r geschlossen (unsicher)*)
bDInPart1Available : BOOL; (*Teil 1 eingelegt*)
bDInPart2Available : BOOL; (*Teil 2 eingelegt*)
bDInEStopOK : BOOL; (*Notauskreis OK*)
bDInCutAreaOK : BOOL; (*Sicherheitskreis Schneidebereich OK*)
END_VAR
(*//Outputs Panel Onboard*)
VAR
bDOuGateOpen : BOOL; (*Schutzt<7A>r <20>ffnen*)
bDOuGateClose : BOOL; (*Schtuzt<7A>r schlie<69>en*)
bDOuTurnTableFw : BOOL; (*Drehtisch auf Pos 1 drehen*)
bDOuTurnTableBw : BOOL; (*Drehtisch auf Pos 2 drehen*)
bDOuCutterFw : BOOL; (*Cutter Zustellen*)
bDOuCutterBw : BOOL; (*Cutter R<>ckstellen*)
bDOuCutterClose : BOOL; (*Cutter - Schlie<69>en*)
bDOuLightOn : BOOL; (*Anlagenbeleuchtung ein*)
END_VAR
(*//Expansion Module 2*)
VAR
uiOutputs : UINT; (*Gesammelte Ausg<73>nge*)
bDOuHoldPart1Fw : BOOL; (*Teil 1 - Niederhalter ausfahren*)
bDOuHoldPart2Fw : BOOL; (*Teil 2 - Niederhalter ausfahren*)
bDOuLEDGn : BOOL; (*LED Starttaster*)
bDOuLEDRd : BOOL; (*LED Reset*)
bDOuCleanerOn : BOOL; (*Staubsauger ein*)
END_VAR
(*Structures*)
VAR
gManualCommands : typManualCommnands; (*Kommandos Betriebsart Hand*)
gMoveConditions : typMoveConditions;
gVCLEDs : typVCLEDs; (*LED Statis*)
END_VAR
VAR RETAIN
gudOverallCounter : UDINT;
gudShiftCounter : UDINT;
END_VAR

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File" Description="Global variables">Global.var</Object>
<Object Type="File" Description="Global data types">Global.typ</Object>
</Objects>
</Package>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="This library contains function interfaces for IEC 1131-3 conversion functions." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>AsIecCon.fun</File>
</Files>
<Dependencies>
<Dependency ObjectName="AsTime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,49 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASIECCON_H_
#define ASIECCON_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
signed short H_TO_NINT(signed short IN);
unsigned short H_TO_NUINT(unsigned short IN);
signed long H_TO_NDINT(signed long IN);
unsigned long H_TO_NUDINT(unsigned long IN);
float H_TO_NREAL(float IN);
plctime H_TO_NTIME(plctime IN);
DATE_AND_TIME H_TO_NDT(DATE_AND_TIME IN);
signed short N_TO_HINT(signed short IN);
unsigned short N_TO_HUINT(unsigned short IN);
signed long N_TO_HDINT(signed long IN);
unsigned long N_TO_HUDINT(unsigned long IN);
float N_TO_HREAL(float IN);
plctime N_TO_HTIME(plctime IN);
DATE_AND_TIME N_TO_HDT(DATE_AND_TIME IN);
signed short swapINT(signed short IN);
unsigned short swapUINT(unsigned short IN);
signed long swapDINT(signed long IN);
unsigned long swapUDINT(unsigned long IN);
float swapREAL(float IN);
#ifdef __cplusplus
};
#endif
#endif /* ASIECCON_H_ */

View File

@@ -0,0 +1,62 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASIECCON_H_
#define ASIECCON_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
signed short H_TO_NINT(signed short IN);
unsigned short H_TO_NUINT(unsigned short IN);
signed long H_TO_NDINT(signed long IN);
unsigned long H_TO_NUDINT(unsigned long IN);
float H_TO_NREAL(float IN);
plctime H_TO_NTIME(plctime IN);
DATE_AND_TIME H_TO_NDT(DATE_AND_TIME IN);
DATE H_TO_NDATE(DATE IN);
TOD H_TO_NTOD(TOD IN);
signed short N_TO_HINT(signed short IN);
unsigned short N_TO_HUINT(unsigned short IN);
signed long N_TO_HDINT(signed long IN);
unsigned long N_TO_HUDINT(unsigned long IN);
float N_TO_HREAL(float IN);
plctime N_TO_HTIME(plctime IN);
DATE_AND_TIME N_TO_HDT(DATE_AND_TIME IN);
DATE N_TO_HDATE(DATE IN);
TOD N_TO_HTOD(TOD IN);
signed short swapINT(signed short IN);
unsigned short swapUINT(unsigned short IN);
WORD swapWORD(WORD IN);
signed long swapDINT(signed long IN);
unsigned long swapUDINT(unsigned long IN);
DWORD swapDWORD(DWORD IN);
TIME swapTIME(TIME IN);
DATE_AND_TIME swapDT(DATE_AND_TIME IN);
DATE swapDATE(DATE IN);
TOD swapTOD(TOD IN);
float swapREAL(float IN);
/* The interface declarations of the AsIecCon functions are not included here
* because they are inline in IEC languages. The x_TO_STRING and the
* STRING_TO_x functions are not available for C programms. */
#ifdef __cplusplus
};
#endif
#endif /* ASIECCON_H_ */

View File

@@ -0,0 +1,62 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASIECCON_H_
#define ASIECCON_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
signed short H_TO_NINT(signed short IN);
unsigned short H_TO_NUINT(unsigned short IN);
signed long H_TO_NDINT(signed long IN);
unsigned long H_TO_NUDINT(unsigned long IN);
float H_TO_NREAL(float IN);
plctime H_TO_NTIME(plctime IN);
DATE_AND_TIME H_TO_NDT(DATE_AND_TIME IN);
DATE H_TO_NDATE(DATE IN);
TOD H_TO_NTOD(TOD IN);
signed short N_TO_HINT(signed short IN);
unsigned short N_TO_HUINT(unsigned short IN);
signed long N_TO_HDINT(signed long IN);
unsigned long N_TO_HUDINT(unsigned long IN);
float N_TO_HREAL(float IN);
plctime N_TO_HTIME(plctime IN);
DATE_AND_TIME N_TO_HDT(DATE_AND_TIME IN);
DATE N_TO_HDATE(DATE IN);
TOD N_TO_HTOD(TOD IN);
signed short swapINT(signed short IN);
unsigned short swapUINT(unsigned short IN);
WORD swapWORD(WORD IN);
signed long swapDINT(signed long IN);
unsigned long swapUDINT(unsigned long IN);
DWORD swapDWORD(DWORD IN);
TIME swapTIME(TIME IN);
DATE_AND_TIME swapDT(DATE_AND_TIME IN);
DATE swapDATE(DATE IN);
TOD swapTOD(TOD IN);
float swapREAL(float IN);
/* The interface declarations of the AsIecCon functions are not included here
* because they are inline in IEC languages. The x_TO_STRING and the
* STRING_TO_x functions are not available for C programms. */
#ifdef __cplusplus
};
#endif
#endif /* ASIECCON_H_ */

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="Library" Language="Binary" Description="This library contains function interfaces for IEC1131-3 operator functions. For the most part, these are mathematical and logical functions.">Operator</Object>
<Object Type="Library" Language="Binary" Description="This library contains runtime functions for IEC tasks.">Runtime</Object>
<Object Type="Library" Language="Binary" Description="The AsTime Library supports DATE_AND_TIME and TIME data types.">AsTime</Object>
<Object Type="Library" Language="Binary" Description="This library contains function interfaces for IEC 1131-3 conversion functions.">AsIecCon</Object>
<Object Type="Library" Language="Binary" Description="The AsString Library contains FBKs for memory and character string handling.">asstring</Object>
<Object Type="Library" Language="Binary" Description="This library contains standard function blocks and funtions for IEC 1131-3.">standard</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="The AsString Library contains FBKs for memory and character string handling." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>asstring.fun</File>
</Files>
</Library>

View File

@@ -0,0 +1,33 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASSTRING_H_
#define ASSTRING_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
unsigned short ftoa(float value, unsigned long pString);
unsigned short itoa(signed long value, unsigned long pString);
float atof(unsigned long pString);
signed long atoi(unsigned long pString);
#ifdef __cplusplus
};
#endif
#endif /* ASSTRING_H_ */

View File

@@ -0,0 +1,33 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASSTRING_H_
#define ASSTRING_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
unsigned short ftoa(float value, unsigned long pString);
unsigned short itoa(signed long value, unsigned long pString);
float atof(unsigned long pString);
signed long atoi(unsigned long pString);
#ifdef __cplusplus
};
#endif
#endif /* ASSTRING_H_ */

View File

@@ -0,0 +1,33 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef ASSTRING_H_
#define ASSTRING_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
/* Prototyping of functions and function blocks */
unsigned short ftoa(float value, unsigned long pString);
unsigned short itoa(signed long value, unsigned long pString);
float atof(unsigned long pString);
signed long atoi(unsigned long pString);
#ifdef __cplusplus
};
#endif
#endif /* ASSTRING_H_ */

View File

@@ -0,0 +1,83 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: asstring
* File: asstring.fun
* Author: B+R
********************************************************************
* Functions and function blocks of library asstring
********************************************************************)
FUNCTION ftoa : UINT (*converts a REAL value into a character string*)
VAR_INPUT
value :REAL; (*REAL (FLOAT) value to be converted into a character string*)
pString :UDINT; (*pointer to the destination character string*)
END_VAR
END_FUNCTION
FUNCTION atof : REAL (*converts a character string into a REAL (FLOAT) value*)
VAR_INPUT
pString :UDINT; (*pointer to the character string to be converted*)
END_VAR
END_FUNCTION
FUNCTION itoa : UINT (*converts a DINT value into a character string*)
VAR_INPUT
value :DINT; (*numerical value to be converted into a string*)
pString :UDINT; (*pointer to the destination character string*)
END_VAR
END_FUNCTION
FUNCTION atoi : DINT (*converts a character string into a DINT value*)
VAR_INPUT
pString :UDINT; (*pointer to the character string to be converted*)
END_VAR
END_FUNCTION
FUNCTION memset : UDINT (*fills the memory area with specific values*)
VAR_INPUT
pDest :UDINT; (*pointer to the destination memory*)
value :USINT; (*initialization value*)
length :UDINT; (*number of bytes to be initialized*)
END_VAR
END_FUNCTION
FUNCTION memcpy : UDINT (*copies the memory area*)
VAR_INPUT
pDest :UDINT; (*pointer to the destination memory*)
pSrc :UDINT; (*pointer to the data to be copied*)
length :UDINT; (*size of bytes to be copied*)
END_VAR
END_FUNCTION
FUNCTION memmove : UDINT (*copies the memory area (even if the memory areas overlap)*)
VAR_INPUT
pDest :UDINT; (*pointer to the destination memory*)
pSrc :UDINT; (*pointer to the data to be copied*)
length :UDINT; (*size of bytes to be copied*)
END_VAR
END_FUNCTION
FUNCTION memcmp : DINT (*compares memory areas*)
VAR_INPUT
pMem1 :UDINT; (*pointer to the memory area 1*)
pMem2 :UDINT; (*pointer to the memory area 2*)
length :UDINT; (*size of bytes to be checked*)
END_VAR
END_FUNCTION
FUNCTION strcat : UDINT (*attaches character strings to one another*)
VAR_INPUT
pDest :UDINT; (*pointer to the destination character string*)
pSrc :UDINT; (*pointer to the source character string*)
END_VAR
END_FUNCTION
FUNCTION strlen : UINT (*provides the length of a character string*)
VAR_INPUT
pString :UDINT; (*pointer to the source character string*)
END_VAR
END_FUNCTION
FUNCTION strcpy : UDINT (*copies one character string into another*)
VAR_INPUT
pDest :UDINT; (*pointer to the destination character string*)
pSrc :UDINT; (*pointer to the source character string*)
END_VAR
END_FUNCTION
FUNCTION strcmp : DINT (*compares two character strings*)
VAR_INPUT
pString1 :UDINT; (*pointer to the first character string*)
pString2 :UDINT; (*pointer to the second character string*)
END_VAR
END_FUNCTION

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="The AsTime Library supports DATE_AND_TIME and TIME data types." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>astime.var</File>
<File>astime.typ</File>
<File>astime.fun</File>
</Files>
<Dependencies>
<Dependency ObjectName="runtime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,130 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASTIME_
#define _ASTIME_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <runtime.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define timERR_AR 33213U
#define timERR_INVALID_DTSTRUCTURE 33212U
#define timERR_INVALID_LEN 33211U
#define timERR_INVALID_PARAMETER 33210U
#define timTIME_SERVER 2U
#define timREAL_TIME_CLOCK 1U
#define timNO_DST 3U
#define timDAYLIGHT_SAVING_TIME 2U
#define timNORMAL_TIME 1U
#define TIME_MAX 2073600000
#define TIME_MIN (-2073600000)
#define DATE_AND_TIME_MAX 4102444799U
#define timEXSETTIME_NO_OPTION 0U
#define timEXSETTIME_NO_LOGENTRY 1U
#else
_IEC_CONST unsigned short timERR_AR = 33213U;
_IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U;
_IEC_CONST unsigned short timERR_INVALID_LEN = 33211U;
_IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U;
_IEC_CONST unsigned char timTIME_SERVER = 2U;
_IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U;
_IEC_CONST unsigned char timNO_DST = 3U;
_IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U;
_IEC_CONST unsigned char timNORMAL_TIME = 1U;
_IEC_CONST signed long TIME_MAX = 2073600000;
_IEC_CONST signed long TIME_MIN = -2073600000;
_IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U;
_IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U;
_IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct TIMEStructure
{ signed char day;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} TIMEStructure;
typedef struct DTStructure
{ unsigned short year;
unsigned char month;
unsigned char day;
unsigned char wday;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} DTStructure;
typedef struct DTExSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTExSetTime_typ;
typedef struct DTSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTSetTime_typ;
typedef struct DTGetTime
{
/* VAR_OUTPUT (analog) */
unsigned short status;
plcdt DT1;
/* VAR_INPUT (digital) */
plcbit enable;
} DTGetTime_typ;
/* Prototyping of functions and function blocks */
void DTExSetTime(struct DTExSetTime* inst);
void DTSetTime(struct DTSetTime* inst);
void DTGetTime(struct DTGetTime* inst);
unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
plcdt DTStructure_TO_DT(unsigned long pDTStructure);
unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
unsigned long DiffT(plctime TIME2, plctime TIME1);
unsigned long DiffDT(plcdt DT2, plcdt DT1);
#ifdef __cplusplus
};
#endif
#endif /* _ASTIME_ */

View File

@@ -0,0 +1,362 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASTIME_
#define _ASTIME_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <runtime.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define timERR_AR 33213U
#define timERR_INVALID_DTSTRUCTURE 33212U
#define timERR_INVALID_LEN 33211U
#define timERR_INVALID_PARAMETER 33210U
#define timTIME_SERVER 2U
#define timREAL_TIME_CLOCK 1U
#define timNO_DST 3U
#define timDAYLIGHT_SAVING_TIME 2U
#define timNORMAL_TIME 1U
#define TIME_MAX 2073600000
#define TIME_MIN (-2073600000)
#define DATE_AND_TIME_MAX 4102444799U
#define timEXSETTIME_NO_OPTION 0U
#define timEXSETTIME_NO_LOGENTRY 1U
#else
_IEC_CONST unsigned short timERR_AR = 33213U;
_IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U;
_IEC_CONST unsigned short timERR_INVALID_LEN = 33211U;
_IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U;
_IEC_CONST unsigned char timTIME_SERVER = 2U;
_IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U;
_IEC_CONST unsigned char timNO_DST = 3U;
_IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U;
_IEC_CONST unsigned char timNORMAL_TIME = 1U;
_IEC_CONST signed long TIME_MAX = 2073600000;
_IEC_CONST signed long TIME_MIN = -2073600000;
_IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U;
_IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U;
_IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct TIMEStructure
{ signed char day;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} TIMEStructure;
typedef struct DTStructure
{ unsigned short year;
unsigned char month;
unsigned char day;
unsigned char wday;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} DTStructure;
typedef struct DTExSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTExSetTime_typ;
typedef struct DTSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTSetTime_typ;
typedef struct DTGetTime
{
/* VAR_OUTPUT (analog) */
unsigned short status;
plcdt DT1;
/* VAR_INPUT (digital) */
plcbit enable;
} DTGetTime_typ;
typedef struct UtcDTGetTime
{
/* VAR_OUTPUT (analog) */
unsigned short status;
plcdt DT1;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTGetTime_typ;
typedef struct UtcDTSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTSetTime_typ;
typedef struct UtcDTExSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTExSetTime_typ;
typedef struct DTStructureGetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTStructureGetTime_typ;
typedef struct DTStructureSetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTStructureSetTime_typ;
typedef struct DTStructureExSetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTStructureExSetTime_typ;
typedef struct UtcDTStructureGetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTStructureGetTime_typ;
typedef struct UtcDTStructureSetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTStructureSetTime_typ;
typedef struct UtcDTStructureExSetTime
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTStructureExSetTime_typ;
typedef struct UtcDT_TO_LocalDTStructure
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDT_TO_LocalDTStructure_typ;
typedef struct LocalDT_TO_UtcDTStructure
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} LocalDT_TO_UtcDTStructure_typ;
typedef struct UtcDTStructure_TO_LocalDT
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
plcdt DT1;
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} UtcDTStructure_TO_LocalDT_typ;
typedef struct LocalDTStructure_TO_UtcDT
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
plcdt DT1;
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} LocalDTStructure_TO_UtcDT_typ;
typedef struct TimeDeviceGetInfo
{
/* VAR_INPUT (analog) */
unsigned long pServer;
unsigned char len;
/* VAR_OUTPUT (analog) */
unsigned char timeDevice;
float avgDeviation;
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} TimeDeviceGetInfo_typ;
typedef struct DstGetInfo
{
/* VAR_INPUT (analog) */
unsigned long pDTStructure;
/* VAR_OUTPUT (analog) */
unsigned char dstState;
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} DstGetInfo_typ;
typedef struct DstGetInfoDT
{
/* VAR_INPUT (analog) */
plcdt DT1;
/* VAR_OUTPUT (analog) */
unsigned char dstState;
unsigned short status;
/* VAR (analog) */
unsigned short i_state;
unsigned short i_result;
unsigned long i_tmp;
/* VAR_INPUT (digital) */
plcbit enable;
} DstGetInfoDT_typ;
/* Prototyping of functions and function blocks */
void DTExSetTime(struct DTExSetTime* inst);
void DTSetTime(struct DTSetTime* inst);
void DTGetTime(struct DTGetTime* inst);
void UtcDTGetTime(struct UtcDTGetTime* inst);
void UtcDTSetTime(struct UtcDTSetTime* inst);
void UtcDTExSetTime(struct UtcDTExSetTime* inst);
void DTStructureGetTime(struct DTStructureGetTime* inst);
void DTStructureSetTime(struct DTStructureSetTime* inst);
void DTStructureExSetTime(struct DTStructureExSetTime* inst);
void UtcDTStructureGetTime(struct UtcDTStructureGetTime* inst);
void UtcDTStructureSetTime(struct UtcDTStructureSetTime* inst);
void UtcDTStructureExSetTime(struct UtcDTStructureExSetTime* inst);
void UtcDT_TO_LocalDTStructure(struct UtcDT_TO_LocalDTStructure* inst);
void LocalDT_TO_UtcDTStructure(struct LocalDT_TO_UtcDTStructure* inst);
void UtcDTStructure_TO_LocalDT(struct UtcDTStructure_TO_LocalDT* inst);
void LocalDTStructure_TO_UtcDT(struct LocalDTStructure_TO_UtcDT* inst);
void TimeDeviceGetInfo(struct TimeDeviceGetInfo* inst);
void DstGetInfo(struct DstGetInfo* inst);
void DstGetInfoDT(struct DstGetInfoDT* inst);
plctime clock_ms();
unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
plcdt DTStructure_TO_DT(unsigned long pDTStructure);
unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
unsigned long DiffT(plctime TIME2, plctime TIME1);
unsigned long DiffDT(plcdt DT2, plcdt DT1);
#ifdef __cplusplus
};
#endif
#endif /* _ASTIME_ */

View File

@@ -0,0 +1,130 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASTIME_
#define _ASTIME_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <runtime.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define timERR_AR 33213U
#define timERR_INVALID_DTSTRUCTURE 33212U
#define timERR_INVALID_LEN 33211U
#define timERR_INVALID_PARAMETER 33210U
#define timTIME_SERVER 2U
#define timREAL_TIME_CLOCK 1U
#define timNO_DST 3U
#define timDAYLIGHT_SAVING_TIME 2U
#define timNORMAL_TIME 1U
#define TIME_MAX 2073600000
#define TIME_MIN (-2073600000)
#define DATE_AND_TIME_MAX 4102444799U
#define timEXSETTIME_NO_OPTION 0U
#define timEXSETTIME_NO_LOGENTRY 1U
#else
_IEC_CONST unsigned short timERR_AR = 33213U;
_IEC_CONST unsigned short timERR_INVALID_DTSTRUCTURE = 33212U;
_IEC_CONST unsigned short timERR_INVALID_LEN = 33211U;
_IEC_CONST unsigned short timERR_INVALID_PARAMETER = 33210U;
_IEC_CONST unsigned char timTIME_SERVER = 2U;
_IEC_CONST unsigned char timREAL_TIME_CLOCK = 1U;
_IEC_CONST unsigned char timNO_DST = 3U;
_IEC_CONST unsigned char timDAYLIGHT_SAVING_TIME = 2U;
_IEC_CONST unsigned char timNORMAL_TIME = 1U;
_IEC_CONST signed long TIME_MAX = 2073600000;
_IEC_CONST signed long TIME_MIN = -2073600000;
_IEC_CONST unsigned long DATE_AND_TIME_MAX = 4102444799U;
_IEC_CONST unsigned char timEXSETTIME_NO_OPTION = 0U;
_IEC_CONST unsigned char timEXSETTIME_NO_LOGENTRY = 1U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct TIMEStructure
{ signed char day;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} TIMEStructure;
typedef struct DTStructure
{ unsigned short year;
unsigned char month;
unsigned char day;
unsigned char wday;
unsigned char hour;
unsigned char minute;
unsigned char second;
unsigned short millisec;
unsigned short microsec;
} DTStructure;
typedef struct DTExSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
unsigned char Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTExSetTime_typ;
typedef struct DTSetTime
{
/* VAR_INPUT (analog) */
plcdt DT1;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DTSetTime_typ;
typedef struct DTGetTime
{
/* VAR_OUTPUT (analog) */
unsigned short status;
plcdt DT1;
/* VAR_INPUT (digital) */
plcbit enable;
} DTGetTime_typ;
/* Prototyping of functions and function blocks */
void DTExSetTime(struct DTExSetTime* inst);
void DTSetTime(struct DTSetTime* inst);
void DTGetTime(struct DTGetTime* inst);
unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
plcdt DTStructure_TO_DT(unsigned long pDTStructure);
unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
unsigned long DiffT(plctime TIME2, plctime TIME1);
unsigned long DiffDT(plcdt DT2, plcdt DT1);
#ifdef __cplusplus
};
#endif
#endif /* _ASTIME_ */

View File

@@ -0,0 +1,342 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: astime
* File: astime.fun
* Author: B+R
********************************************************************
* Functions and function blocks of library astime
********************************************************************)
FUNCTION_BLOCK DTExSetTime (*sets the current time using the DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*date and time to be written*)
Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DTSetTime (*sets current time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*date and time to be written*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DTGetTime (*reads the current time in the DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
DT1 :DATE_AND_TIME; (*date and time read*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION clock_ms : TIME (*provides a continuous millisecond counter in the TIME data type*)
END_FUNCTION
FUNCTION_BLOCK UtcDTGetTime (*reads the current UTC-time in the DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
DT1 :DATE_AND_TIME; (*UTC date and time read*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTSetTime (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*UTC date and time to be written*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTExSetTime (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*UTC date and time to be written*)
Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DTStructureGetTime (*reads the current time in the calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DTStructureSetTime (*sets current time in calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DTStructureExSetTime (*sets current time in calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTStructureGetTime (*reads the UTC time in the calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTStructureSetTime (*sets UTC time in calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTStructureExSetTime (*sets UTC time in calendar structure*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
Option :USINT; (*additional option: timEXSETTIME_NO_OPTION, timEXSETTIME_NO_LOGENTRY*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDT_TO_LocalDTStructure (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*UTC date and time*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK LocalDT_TO_UtcDTStructure (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*Local date and time*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK UtcDTStructure_TO_LocalDT (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
DT1 :DATE_AND_TIME; (*Local date and time*)
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK LocalDTStructure_TO_UtcDT (*sets current UTC-time in DATE_AND_TIME data type*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
VAR_OUTPUT
DT1 :DATE_AND_TIME; (*UTC date and time*)
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state : UINT; (*internal variable*)
i_result : UINT; (*internal variable*)
i_tmp : UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION ascTIMEStructure : UDINT (*converts a "time" structure to a character string in the format "15:14:13\0"*)
VAR_INPUT
pTIMEStructure :UDINT; (*address of the time structure*)
pStr :UDINT; (*address of the character field*)
len :UDINT; (*length of the character field *)
END_VAR
END_FUNCTION
FUNCTION ascDTStructure : UDINT (*converts a "date" structure to a character string in the format "Sun Jan 3 15:14:13 1988\0"*)
VAR_INPUT
pDTStructure :UDINT; (*address of the calendar structure *)
pStr :UDINT; (*address of the character field*)
len :UDINT; (*length of the character field*)
END_VAR
END_FUNCTION
FUNCTION ascTIME : UDINT (*converts the TIME data type to a character string in the format "15:14:13\0"*)
VAR_INPUT
TIME1 :TIME; (*time*)
pStr :UDINT; (*address of the character field*)
len :UDINT; (*length of the character field*)
END_VAR
END_FUNCTION
FUNCTION ascDT : UDINT (*converts the DATE_AND_TIME data type to character string in the format "Sun Jan 3 15:14:13 1988\0"*)
VAR_INPUT
DT1 :DATE_AND_TIME; (*date and time*)
pStr :UDINT; (*address of the character field*)
len :UDINT; (*length of the character field*)
END_VAR
END_FUNCTION
FUNCTION TIMEStructure_TO_TIME : TIME (*converts a "time" structure to the TIME data type*)
VAR_INPUT
pTIMEStructure :UDINT; (*address of the time structure*)
END_VAR
END_FUNCTION
FUNCTION TIME_TO_TIMEStructure : UDINT (*converts the TIME data type to a "time" structure*)
VAR_INPUT
TIME1 :TIME; (*time*)
pTIMEStructure :UDINT; (*address of the calendar structure*)
END_VAR
END_FUNCTION
FUNCTION DTStructure_TO_DT : DATE_AND_TIME (*converts a "date" structure to the DATE_AND_TIME data type*)
VAR_INPUT
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
END_FUNCTION
FUNCTION DT_TO_DTStructure : UDINT (*converts the DATE_AND_TIME data type to a "date" structure*)
VAR_INPUT
DT1 :DATE_AND_TIME; (*date and time*)
pDTStructure :UDINT; (*address of the calendar structure*)
END_VAR
END_FUNCTION
FUNCTION DiffT : UDINT (*shows the difference between two times (TIME data type) expressed in milliseconds*)
VAR_INPUT
TIME2 :TIME; (*time 2*)
TIME1 :TIME; (*time 1*)
END_VAR
END_FUNCTION
FUNCTION DiffDT : UDINT (*shows the difference between two times (DATE_AND_TIME data type) expressed in seconds*)
VAR_INPUT
DT2 :DATE_AND_TIME; (*date and time 2*)
DT1 :DATE_AND_TIME; (*date and time 1*)
END_VAR
END_FUNCTION
FUNCTION_BLOCK TimeDeviceGetInfo (*read information about time device*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pServer :UDINT; (*Pointer to string*)
len :USINT; (*length of pServer*)
END_VAR
VAR_OUTPUT
timeDevice :USINT; (*sntpREAL_TIME_CLOCK or sntpTIME_SERVER*)
avgDeviation :REAL; (*average deviation between software time and time device*)
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state :UINT; (*internal variable*)
i_result :UINT; (*internal variable*)
i_tmp :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DstGetInfo (*read information about time device*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDTStructure :UDINT; (*Pointer to DTStructure*)
END_VAR
VAR_OUTPUT
dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*)
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state :UINT; (*internal variable*)
i_result :UINT; (*internal variable*)
i_tmp :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK DstGetInfoDT (*read information about time device*)
VAR_INPUT
enable :BOOL; (*enables execution*)
DT1 :DATE_AND_TIME; (*date and time in UTC*)
END_VAR
VAR_OUTPUT
dstState :USINT; (*timDAYLIGHT_SAVING_TIME, timNORMAL_TIME or timNO_DST*)
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, ERR_FUB_BUSY, 0xXXXX = see help*)
END_VAR
VAR
i_state :UINT; (*internal variable*)
i_result :UINT; (*internal variable*)
i_tmp :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,31 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: astime
* File: astime.typ
* Author: B+R
********************************************************************
* Data types of library astime
********************************************************************)
TYPE
TIMEStructure : STRUCT (*time structure*)
day : SINT ; (*day (1-31)*)
hour : USINT ; (*hours (0-23)*)
minute : USINT ; (*minutes (0-59)*)
second : USINT ; (*seconds (0-59)*)
millisec : UINT ; (*milliseconds (0-999)*)
microsec : UINT ; (*microseconds (0-999)*)
END_STRUCT;
DTStructure : STRUCT (*date structure*)
year : UINT ; (*year*)
month : USINT ; (*month (1-12)*)
day : USINT ; (*day (1-31)*)
wday : USINT ; (*day of the week (0-6), e.g. 0 = Sunday, 6 = Saturday*)
hour : USINT ; (*hours (0-23)*)
minute : USINT ; (*minutes (0-59)*)
second : USINT ; (*seconds (0-59)*)
millisec : UINT ; (*milliseconds (0-999)*)
microsec : UINT ; (*microseconds (0-999)*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,26 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: astime
* File: astime.var
* Author: B+R
********************************************************************
* Local variables of library astime
********************************************************************)
VAR CONSTANT
timEXSETTIME_NO_LOGENTRY : USINT := 1;
timEXSETTIME_NO_OPTION : USINT := 0;
DATE_AND_TIME_MAX : UDINT := 4102444799;
TIME_MIN : DINT := -2073600000;
TIME_MAX : DINT := 2073600000;
timNORMAL_TIME : USINT := 1;
timDAYLIGHT_SAVING_TIME : USINT := 2;
timNO_DST : USINT := 3;
timREAL_TIME_CLOCK : USINT := 1;
timTIME_SERVER : USINT := 2;
timERR_INVALID_PARAMETER : UINT := 33210;
timERR_INVALID_LEN : UINT := 33211;
timERR_INVALID_DTSTRUCTURE : UINT := 33212;
timERR_AR : UINT := 33213;
END_VAR

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="This library contains function interfaces for IEC1131-3 operator functions. For the most part, these are mathematical and logical functions." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>operator.fun</File>
</Files>
</Library>

View File

@@ -0,0 +1,11 @@
/****************************************************************************/
/* */
/* operator.h */
/* */
/* Automation Studio */
/* Copyright Bernecker&Rainer 1998-1999 */
/* */
/****************************************************************************/
/* This library does not contain C code */

View File

@@ -0,0 +1,11 @@
/****************************************************************************/
/* */
/* operator.h */
/* */
/* Automation Studio */
/* Copyright Bernecker&Rainer 1998-1999 */
/* */
/****************************************************************************/
/* This library does not contain C code */

View File

@@ -0,0 +1,11 @@
/****************************************************************************/
/* */
/* operator.h */
/* */
/* Automation Studio */
/* Copyright Bernecker&Rainer 1998-1999 */
/* */
/****************************************************************************/
/* This library does not contain C code */

View File

@@ -0,0 +1,231 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: operator
* File: operator.fun
* Author: B+R
********************************************************************
* Functions and function blocks of library operator
********************************************************************)
FUNCTION SIZEOF : UDINT (*determines the size of a variable in bytes*)
VAR_INPUT
in :ANY; (*input value*)
END_VAR
END_FUNCTION
FUNCTION ADR : UDINT (*determines the address of a data point*)
VAR_INPUT
in :ANY; (*input value*)
END_VAR
END_FUNCTION
FUNCTION SHR : ANY (*shifts bitwise to the right*)
VAR_INPUT
IN :ANY; (*input value*)
N :SINT; (*number of bits to be shifted*)
END_VAR
END_FUNCTION
FUNCTION ROR : ANY (*rotates bitwise to the right*)
VAR_INPUT
IN :ANY; (*input value*)
N :SINT; (*number of bits to be rotated*)
END_VAR
END_FUNCTION
FUNCTION ROL : ANY (*rotates bitwise to the left*)
VAR_INPUT
IN :ANY; (*input value*)
N :SINT; (*number of bits to be rotated*)
END_VAR
END_FUNCTION
FUNCTION SHL : ANY (*shifts bitwise to the left*)
VAR_INPUT
IN :ANY; (*input value*)
N :SINT; (*number of bits to be shifted*)
END_VAR
END_FUNCTION
FUNCTION AND : ANY (*makes a bitwise AND relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input value*)
END_VAR
END_FUNCTION
FUNCTION XOR : ANY (*makes a bitwise XOR relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
FUNCTION OR : ANY (*makes a bitwise OR relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
FUNCTION NOT : ANY (*makes a bitwise inversion of variables*)
VAR_INPUT
IN :ANY; (*input value*)
END_VAR
END_FUNCTION
FUNCTION ADD : ANY (*adds 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
FUNCTION MUL : ANY_NUM (*multiplies 2 or more variables*)
VAR_INPUT
INx :ANY_NUM; (*input values*)
END_VAR
END_FUNCTION
FUNCTION SUB : ANY (*subtracts one or more variables from another variable*)
VAR_INPUT
IN1 :ANY; (*value 1*)
IN2 :ANY; (*value 2*)
END_VAR
END_FUNCTION
FUNCTION DIV : ANY_NUM (*divides a variable by one or more variables*)
VAR_INPUT
IN1 :ANY_NUM; (*dividend*)
IN2 :ANY_NUM; (*divisor*)
END_VAR
END_FUNCTION
FUNCTION MOD : ANY_INT (*makes a remainder when dividing a variable by another variable*)
VAR_INPUT
IN1 :ANY_INT; (*dividend*)
IN2 :ANY_INT; (*divisor*)
END_VAR
END_FUNCTION
FUNCTION MOVE : ANY (*copies the contents of the input variables to the corresponding output variables*)
VAR_INPUT
IN :ANY; (*input variable*)
END_VAR
END_FUNCTION
FUNCTION MAX : ANY (*determines the maximum value of two or more values*)
VAR_INPUT
IN1 :ANY; (*input value 1*)
IN2 :ANY; (*input value 2*)
END_VAR
END_FUNCTION
FUNCTION MIN : ANY (*determines the lowest value of two or more values*)
VAR_INPUT
IN1 :ANY; (*input value 1*)
IN2 :ANY; (*input value 2*)
END_VAR
END_FUNCTION
FUNCTION LIMIT : ANY (*limits a value to within maximum and minimum boundaries*)
VAR_INPUT
MN :ANY; (*minimum value*)
IN :ANY; (*input value*)
MX :ANY; (*maximum value*)
END_VAR
END_FUNCTION
FUNCTION SEL : ANY (*selects one value from two values*)
VAR_INPUT
G :BOOL; (*selection variable*)
IN0 :ANY; (*input value for FALSE*)
IN1 :ANY; (*input value for TRUE*)
END_VAR
END_FUNCTION
FUNCTION MUX : ANY (*selects a value from several values*)
VAR_INPUT
K :SINT; (*selection variable*)
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
FUNCTION GE : BOOL (*checks if the input values are in decreasing order*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION EQ : BOOL (*compares two or more values whether they are equal*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION GT : BOOL (*checks if the input values are in decreasing order*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION LE : BOOL (*checks if the input values are in increasing order*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION LT : BOOL (*checks if the input values are in increasing order*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION NE : BOOL (*compares two values whether they are not equal*)
VAR_INPUT
IN1 :ANY; (*comparison value 1*)
IN2 :ANY; (*comparison value 2*)
END_VAR
END_FUNCTION
FUNCTION ABS : ANY_NUM (*returns the absolute value of a number*)
VAR_INPUT
IN :ANY_NUM; (*input value*)
END_VAR
END_FUNCTION
FUNCTION SQRT : ANY_REAL (*returns the square root of a number*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION LN : ANY_REAL (*returns the result of a natural logarithm*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION LOG : ANY_REAL (*returns the result of a base 10 logarithm*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION EXP : ANY_REAL (*returns the result of a natural exponential function*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION SIN : ANY_REAL (*returns the sine of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value in radian*)
END_VAR
END_FUNCTION
FUNCTION COS : ANY_REAL (*returns the cosine of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value in radian*)
END_VAR
END_FUNCTION
FUNCTION TAN : ANY_REAL (*returns the tangent of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value in radian*)
END_VAR
END_FUNCTION
FUNCTION ASIN : ANY_REAL (*returns the arc sine (inverse function of sine) of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION ACOS : ANY_REAL (*returns the arc cosine (inverse function of cosine) of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION ATAN : ANY_REAL (*returns the arc tangent (inverse function of tangent) of a number (calculated in radian)*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
FUNCTION EXPT : REAL (*raises one variable to the power of another*)
VAR_INPUT
IN1 :REAL; (*base*)
IN2 :ANY_NUM; (*exponent*)
END_VAR
END_FUNCTION
FUNCTION TRUNC : INT (*converts from type REAL to type INT (number is always rounded down)*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="This library contains runtime functions for IEC tasks." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>runtime.var</File>
<File>runtime.typ</File>
<File>runtime.fun</File>
</Files>
</Library>

View File

@@ -0,0 +1,80 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _RUNTIME_
#define _RUNTIME_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plctypes.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define ERR_OK 0
#define ERR_NOTIMPLEMENTED 9999
#define ERR_FUB_ENABLE_FALSE 0xFFFE
#define ERR_FUB_BUSY 0xFFFF
/* IEC 61131-3 Datentypen */
#define IEC_DATATYPE_BOOL 1
#define IEC_DATATYPE_SINT 2
#define IEC_DATATYPE_INT 3
#define IEC_DATATYPE_DINT 4
#define IEC_DATATYPE_USINT 5
#define IEC_DATATYPE_UINT 6
#define IEC_DATATYPE_UDINT 7
#define IEC_DATATYPE_REAL 8
#define IEC_DATATYPE_STRING 9
#define IEC_DATATYPE_ULINT 10
#define IEC_DATATYPE_DATE_AND_TIME 11
#define IEC_DATATYPE_TIME 12
#define IEC_DATATYPE_DATE 13
#define IEC_DATATYPE_LREAL 14
#define IEC_DATATYPE_TIME_OF_DAY 16
#define IEC_DATATYPE_BYTE 17
#define IEC_DATATYPE_WORD 18
#define IEC_DATATYPE_DWORD 19
#define IEC_DATATYPE_LWORD 20
#define IEC_DATATYPE_WSTRING 21
#define IEC_DATATYPE_LINT 23
#else
_IEC_CONST unsigned short ERR_OK = 0U;
_IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U;
_IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU;
_IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU;
/* IEC 61131-3 Datentypen */
_IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1;
_IEC_CONST unsigned short IEC_DATATYPE_SINT = 2;
_IEC_CONST unsigned short IEC_DATATYPE_INT = 3;
_IEC_CONST unsigned short IEC_DATATYPE_DINT = 4;
_IEC_CONST unsigned short IEC_DATATYPE_USINT = 5;
_IEC_CONST unsigned short IEC_DATATYPE_UINT = 6;
_IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7;
_IEC_CONST unsigned short IEC_DATATYPE_REAL = 8;
_IEC_CONST unsigned short IEC_DATATYPE_STRING = 9;
_IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10;
_IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11;
_IEC_CONST unsigned short IEC_DATATYPE_TIME = 12;
_IEC_CONST unsigned short IEC_DATATYPE_DATE = 13;
_IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14;
_IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16;
_IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17;
_IEC_CONST unsigned short IEC_DATATYPE_WORD = 18;
_IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19;
_IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20;
_IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21;
_IEC_CONST unsigned short IEC_DATATYPE_LINT = 23;
#endif
#ifdef __cplusplus
};
#endif
#endif /* _RUNTIME_ */

View File

@@ -0,0 +1,80 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _RUNTIME_
#define _RUNTIME_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plctypes.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define ERR_OK 0
#define ERR_NOTIMPLEMENTED 9999
#define ERR_FUB_ENABLE_FALSE 0xFFFE
#define ERR_FUB_BUSY 0xFFFF
/* IEC 61131-3 Datentypen */
#define IEC_DATATYPE_BOOL 1
#define IEC_DATATYPE_SINT 2
#define IEC_DATATYPE_INT 3
#define IEC_DATATYPE_DINT 4
#define IEC_DATATYPE_USINT 5
#define IEC_DATATYPE_UINT 6
#define IEC_DATATYPE_UDINT 7
#define IEC_DATATYPE_REAL 8
#define IEC_DATATYPE_STRING 9
#define IEC_DATATYPE_ULINT 10
#define IEC_DATATYPE_DATE_AND_TIME 11
#define IEC_DATATYPE_TIME 12
#define IEC_DATATYPE_DATE 13
#define IEC_DATATYPE_LREAL 14
#define IEC_DATATYPE_TIME_OF_DAY 16
#define IEC_DATATYPE_BYTE 17
#define IEC_DATATYPE_WORD 18
#define IEC_DATATYPE_DWORD 19
#define IEC_DATATYPE_LWORD 20
#define IEC_DATATYPE_WSTRING 21
#define IEC_DATATYPE_LINT 23
#else
_IEC_CONST unsigned short ERR_OK = 0U;
_IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U;
_IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU;
_IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU;
/* IEC 61131-3 Datentypen */
_IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1;
_IEC_CONST unsigned short IEC_DATATYPE_SINT = 2;
_IEC_CONST unsigned short IEC_DATATYPE_INT = 3;
_IEC_CONST unsigned short IEC_DATATYPE_DINT = 4;
_IEC_CONST unsigned short IEC_DATATYPE_USINT = 5;
_IEC_CONST unsigned short IEC_DATATYPE_UINT = 6;
_IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7;
_IEC_CONST unsigned short IEC_DATATYPE_REAL = 8;
_IEC_CONST unsigned short IEC_DATATYPE_STRING = 9;
_IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10;
_IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11;
_IEC_CONST unsigned short IEC_DATATYPE_TIME = 12;
_IEC_CONST unsigned short IEC_DATATYPE_DATE = 13;
_IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14;
_IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16;
_IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17;
_IEC_CONST unsigned short IEC_DATATYPE_WORD = 18;
_IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19;
_IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20;
_IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21;
_IEC_CONST unsigned short IEC_DATATYPE_LINT = 23;
#endif
#ifdef __cplusplus
};
#endif
#endif /* _RUNTIME_ */

View File

@@ -0,0 +1,80 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _RUNTIME_
#define _RUNTIME_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plctypes.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define ERR_OK 0
#define ERR_NOTIMPLEMENTED 9999
#define ERR_FUB_ENABLE_FALSE 0xFFFE
#define ERR_FUB_BUSY 0xFFFF
/* IEC 61131-3 Datentypen */
#define IEC_DATATYPE_BOOL 1
#define IEC_DATATYPE_SINT 2
#define IEC_DATATYPE_INT 3
#define IEC_DATATYPE_DINT 4
#define IEC_DATATYPE_USINT 5
#define IEC_DATATYPE_UINT 6
#define IEC_DATATYPE_UDINT 7
#define IEC_DATATYPE_REAL 8
#define IEC_DATATYPE_STRING 9
#define IEC_DATATYPE_ULINT 10
#define IEC_DATATYPE_DATE_AND_TIME 11
#define IEC_DATATYPE_TIME 12
#define IEC_DATATYPE_DATE 13
#define IEC_DATATYPE_LREAL 14
#define IEC_DATATYPE_TIME_OF_DAY 16
#define IEC_DATATYPE_BYTE 17
#define IEC_DATATYPE_WORD 18
#define IEC_DATATYPE_DWORD 19
#define IEC_DATATYPE_LWORD 20
#define IEC_DATATYPE_WSTRING 21
#define IEC_DATATYPE_LINT 23
#else
_IEC_CONST unsigned short ERR_OK = 0U;
_IEC_CONST unsigned short ERR_NOTIMPLEMENTED = 9999U;
_IEC_CONST unsigned short ERR_FUB_ENABLE_FALSE = 0xFFFEU;
_IEC_CONST unsigned short ERR_FUB_BUSY = 0xFFFFU;
/* IEC 61131-3 Datentypen */
_IEC_CONST unsigned short IEC_DATATYPE_BOOL = 1;
_IEC_CONST unsigned short IEC_DATATYPE_SINT = 2;
_IEC_CONST unsigned short IEC_DATATYPE_INT = 3;
_IEC_CONST unsigned short IEC_DATATYPE_DINT = 4;
_IEC_CONST unsigned short IEC_DATATYPE_USINT = 5;
_IEC_CONST unsigned short IEC_DATATYPE_UINT = 6;
_IEC_CONST unsigned short IEC_DATATYPE_UDINT = 7;
_IEC_CONST unsigned short IEC_DATATYPE_REAL = 8;
_IEC_CONST unsigned short IEC_DATATYPE_STRING = 9;
_IEC_CONST unsigned short IEC_DATATYPE_ULINT = 10;
_IEC_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME = 11;
_IEC_CONST unsigned short IEC_DATATYPE_TIME = 12;
_IEC_CONST unsigned short IEC_DATATYPE_DATE = 13;
_IEC_CONST unsigned short IEC_DATATYPE_LREAL = 14;
_IEC_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY = 16;
_IEC_CONST unsigned short IEC_DATATYPE_BYTE = 17;
_IEC_CONST unsigned short IEC_DATATYPE_WORD = 18;
_IEC_CONST unsigned short IEC_DATATYPE_DWORD = 19;
_IEC_CONST unsigned short IEC_DATATYPE_LWORD = 20;
_IEC_CONST unsigned short IEC_DATATYPE_WSTRING = 21;
_IEC_CONST unsigned short IEC_DATATYPE_LINT = 23;
#endif
#ifdef __cplusplus
};
#endif
#endif /* _RUNTIME_ */

View File

@@ -0,0 +1,189 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: runtime
* File: runtime.fun
* Author: B+R
********************************************************************
* Functions and function blocks of library runtime
********************************************************************)
FUNCTION_BLOCK r_trig (*for internal use only - do not use this function in user programs*)
VAR_INPUT
CLK :BOOL;
END_VAR
VAR_OUTPUT
Q :BOOL;
END_VAR
VAR
M :BOOL;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK f_trig (*for internal use only - do not use this function in user programs*)
VAR_INPUT
CLK :BOOL;
END_VAR
VAR_OUTPUT
Q :BOOL;
END_VAR
VAR
M :BOOL;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK rf_trig (*for internal use only - do not use this function in user programs*)
VAR_INPUT
CLK :BOOL;
END_VAR
VAR_OUTPUT
Q :BOOL;
END_VAR
VAR
M :BOOL;
END_VAR
END_FUNCTION_BLOCK
FUNCTION GetTime : TIME (*for internal use only - do not use this function in user programs*)
END_FUNCTION
FUNCTION_BLOCK SFCActionControl (*for internal use only - do not use this function in user programs*)
VAR_INPUT
N :BOOL;
R0 :BOOL;
S0 :BOOL;
L :BOOL;
D :BOOL;
P :BOOL;
SD :BOOL;
DS :BOOL;
SL :BOOL;
T :TIME;
END_VAR
VAR_OUTPUT
Q :BOOL;
END_VAR
VAR
S_FF_SET :USINT;
S_FF_R1 :USINT;
S_FF_Q :USINT;
dummy1 :USINT;
L_TMR_PT :TIME;
L_TMR_ET :TIME;
L_TMR_STAR :TIME;
L_TMR_IN :USINT;
L_TMR_Q :USINT;
L_TMR_M :USINT;
dummy2 :USINT;
D_TMR_PT :TIME;
D_TMR_ET :TIME;
D_TMR_STAR :TIME;
D_TMR_IN :USINT;
D_TMR_Q :USINT;
D_TMR_M :USINT;
dummy3 :USINT;
P_TRIG_CLK :USINT;
P_TRIG_Q :USINT;
P_TRIG_M :USINT;
dummy4 :USINT;
SD_TMR_PT :TIME;
SD_TMR_ET :TIME;
SD_TMR_STA :TIME;
SD_TMR_IN :USINT;
SD_TMR_Q :USINT;
SD_TMR_M :USINT;
dummy5 :USINT;
SD_FF_SET :USINT;
SD_FF_R1 :USINT;
SD_FF_Q :USINT;
DS_FF_SET :USINT;
DS_FF_R1 :USINT;
DS_FF_Q :USINT;
DS_TMR_PT :TIME;
DS_TMR_ET :TIME;
DS_TMR_STA :TIME;
DS_TMR_IN :USINT;
DS_TMR_Q :USINT;
DS_TMR_M :USINT;
dummy6 :USINT;
SL_FF_SET :USINT;
SL_FF_R1 :USINT;
SL_FF_Q :USINT;
dummy7 :USINT;
SL_TMR_PT :TIME;
SL_TMR_ET :TIME;
SL_TMR_STA :TIME;
SL_TMR_IN :USINT;
SL_TMR_Q :USINT;
SL_TMR_M :USINT;
dummy8 :USINT;
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK SFCAC2 (*for internal use only - do not use this function in user programs*)
VAR_INPUT
N :BOOL;
R0 :BOOL;
S0 :BOOL;
L :BOOL;
D :BOOL;
P :BOOL;
P1 :BOOL;
P0 :BOOL;
SD :BOOL;
DS :BOOL;
SL :BOOL;
T :TIME;
END_VAR
VAR_OUTPUT
Q :BOOL;
A :BOOL;
END_VAR
VAR
S_FF_SET :USINT;
S_FF_R1 :USINT;
S_FF_Q :USINT;
L_TMR_PT :TIME;
L_TMR_ET :TIME;
L_TMR_STAR :TIME;
L_TMR_IN :USINT;
L_TMR_Q :USINT;
L_TMR_M :USINT;
D_TMR_PT :TIME;
D_TMR_ET :TIME;
D_TMR_STAR :TIME;
D_TMR_IN :USINT;
D_TMR_Q :USINT;
D_TMR_M :USINT;
SD_TMR_PT :TIME;
SD_TMR_ET :TIME;
SD_TMR_STA :TIME;
SD_TMR_IN :USINT;
SD_TMR_Q :USINT;
SD_TMR_M :USINT;
SD_FF_SET :USINT;
SD_FF_R1 :USINT;
SD_FF_Q1 :USINT;
DS_FF_SET :USINT;
DS_FF_R1 :USINT;
DS_FF_Q1 :USINT;
DS_TMR_PT :TIME;
DS_TMR_ET :TIME;
DS_TMR_STA :TIME;
DS_TMR_IN :USINT;
DS_TMR_Q :USINT;
DS_TMR_M :USINT;
SL_FF_SET :USINT;
SL_FF_R1 :USINT;
SL_FF_Q :USINT;
SL_TMR_PT :TIME;
SL_TMR_ET :TIME;
SL_TMR_STA :TIME;
SL_TMR_IN :USINT;
SL_TMR_Q :USINT;
SL_TMR_M :USINT;
P_TRIG_Q :USINT;
P_TRIG_M :USINT;
Q_TRIG_Q :USINT;
Q_TRIG_M :USINT;
P1_TRIG_Q :USINT;
P1_TRIG_M :USINT;
P0_TRIG_Q :USINT;
P0_TRIG_M :USINT;
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,78 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: runtime
* File: runtime.typ
* Author: B+R
********************************************************************
* Data types of library runtime
********************************************************************)
TYPE
SFCActionType : STRUCT (*internal use*)
x : BOOL ;
_x : BOOL ;
t : TIME ;
_t : TIME ;
AC : SFCActionControl;
END_STRUCT;
SFCActionType2 : STRUCT (*internal use*)
x : BOOL ;
_x : BOOL ;
AC : SFCAC2 ;
END_STRUCT;
SFCActionCType : STRUCT (*internal use*)
x : BOOL ;
_x : BOOL ;
force : BOOL ;
_force : BOOL ;
active : BOOL ;
_active : BOOL ;
AC : SFCActionControl ;
END_STRUCT;
SFCActionCType2 : STRUCT (*internal use*)
x : BOOL ;
_x : BOOL ;
force : BOOL ;
_force : BOOL ;
active : BOOL ;
_active : BOOL ;
AC : SFCAC2 ;
END_STRUCT;
SFCStepType : STRUCT (*internal use*)
x : BOOL ;
t : TIME ;
_x : BOOL ;
_t : TIME ;
END_STRUCT;
SFCStepCType : STRUCT (*internal use*)
t : TIME ;
_t : TIME ;
inactive_actions : UDINT ;
_inactive_actions : UDINT ;
x : BOOL ;
_x : BOOL ;
force : BOOL ;
_force : BOOL ;
active : BOOL ;
_active : BOOL ;
error : BOOL ;
END_STRUCT;
SFCSimpleStepCType : STRUCT (*internal use*)
t : TIME ;
_t : TIME ;
x : BOOL ;
_x : BOOL ;
force : BOOL ;
_force : BOOL ;
active : BOOL ;
_active : BOOL ;
error : BOOL ;
END_STRUCT;
SFCTransitionCType : STRUCT (*internal use*)
force : BOOL ;
_force : BOOL ;
active : BOOL ;
_active : BOOL ;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,42 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: runtime
* File: runtime.var
* Author: B+R
********************************************************************
* Local variables of library runtime
********************************************************************)
(*Common Functionblock Status*)
VAR CONSTANT
ERR_OK : UINT := 0; (*no error*)
ERR_NOTIMPLEMENTED : UINT := 9999; (*function or function block not implemented*)
ERR_FUB_ENABLE_FALSE : UINT := 16#FFFE; (*function block parameter "enable" is FALSE*)
ERR_FUB_BUSY : UINT := 16#FFFF; (*function block still working*)
END_VAR
(*IEC 61131-3 Datatypes*)
VAR CONSTANT
IEC_DATATYPE_BOOL : UINT := 1; (*8 Bit containing a boolean value FALSE=0 or TRUE=1*)
IEC_DATATYPE_SINT : UINT := 2; (*8 Bit signed integer*)
IEC_DATATYPE_INT : UINT := 3; (*16 Bit signed integer*)
IEC_DATATYPE_DINT : UINT := 4; (*32 Bit signed integer*)
IEC_DATATYPE_USINT : UINT := 5; (*8 Bit unsigned integer*)
IEC_DATATYPE_UINT : UINT := 6; (*16 Bit unsigned integer*)
IEC_DATATYPE_UDINT : UINT := 7; (*32 Bit unsigned integer*)
IEC_DATATYPE_REAL : UINT := 8; (*32 Bit floating point number*)
IEC_DATATYPE_STRING : UINT := 9; (*Variable-length single-byte character string*)
IEC_DATATYPE_ULINT : UINT := 10; (*64 Bit unsigned integer*)
IEC_DATATYPE_DATE_AND_TIME : UINT := 11; (*32 Bit of Date in Seconds since 01.01.1970 00:00:00*)
IEC_DATATYPE_TIME : UINT := 12; (*32 Bit of Time in ms*)
IEC_DATATYPE_DATE : UINT := 13; (*32 Bit of Date (only)*)
IEC_DATATYPE_LREAL : UINT := 14; (*64 Bit floating point number*)
IEC_DATATYPE_TIME_OF_DAY: UINT := 16; (*32 Bit Time of day (only)*)
IEC_DATATYPE_BYTE : UINT := 17; (*Bit string of length 8*)
IEC_DATATYPE_WORD : UINT := 18; (*Bit string of length 16*)
IEC_DATATYPE_DWORD : UINT := 19; (*Bit string of length 32*)
IEC_DATATYPE_LWORD : UINT := 20; (*Bit string of length 64*)
IEC_DATATYPE_WSTRING : UINT := 21; (*Variable-length double-byte character string*)
IEC_DATATYPE_LINT : UINT := 23; (*64 Bit signed integer*)
END_VAR

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Library Description="This library contains standard function blocks and funtions for IEC 1131-3." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>standard.fun</File>
</Files>
</Library>

View File

@@ -0,0 +1,262 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef STANDARD_H_
#define STANDARD_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
#define TP_10mstyp TP_10ms_typ
#define TOF_10mstyp TOF_10ms_typ
#define TON_10mstyp TON_10ms_typ
#define TPtyp TP_typ
#define TOFtyp TOF_typ
#define TONtyp TON_typ
#define SEMAtyp SEMA_typ
#define RStyp RS_typ
#define SRtyp SR_typ
#define R_TRIGtyp R_TRIG_typ
#define F_TRIGtyp F_TRIG_typ
#define CTUtyp CTU_typ
#define CTDtyp CTD_typ
#define CTUDtyp CTUD_typ
#define RF_TRIGtyp RF_TRIG_typ
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
typedef struct TP_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_10ms_typ;
typedef struct TOF_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_10ms_typ;
typedef struct TON_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_10ms_typ;
typedef struct TP
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_typ;
typedef struct TOF
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_typ;
typedef struct TON
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_typ;
typedef struct SEMA
{
/* VAR_INPUT (digital) */
plcbit CLAIM;
plcbit RELEASE;
/* VAR_OUTPUT (digital) */
plcbit BUSY;
/* VAR (digital) */
plcbit X;
} SEMA_typ;
typedef struct RS
{
/* VAR_INPUT (digital) */
plcbit SET;
plcbit RESET1;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} RS_typ;
typedef struct SR
{
/* VAR_INPUT (digital) */
plcbit SET1;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} SR_typ;
typedef struct R_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} R_TRIG_typ;
typedef struct F_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} F_TRIG_typ;
typedef struct CTU
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTU_typ;
typedef struct CTD
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CD;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTD_typ;
typedef struct CTUD
{
/* VAR_INPUT (analogous) */
signed short PV;
/* VAR_OUTPUT (analogous) */
signed short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit CD;
plcbit RESET;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit QU;
plcbit QD;
/* VAR (digital) */
plcbit MU;
plcbit MD;
} CTUD_typ;
typedef struct RF_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} RF_TRIG_typ;
/* Prototyping of functions and function blocks */
void TP_10ms(TP_10ms_typ* inst);
void TOF_10ms(TOF_10ms_typ* inst);
void TON_10ms(TON_10ms_typ* inst);
void TP(TP_typ* inst);
void TOF(TOF_typ* inst);
void TON(TON_typ* inst);
void SEMA(SEMA_typ* inst);
void RS(RS_typ* inst);
void SR(SR_typ* inst);
void R_TRIG(R_TRIG_typ* inst);
void F_TRIG(F_TRIG_typ* inst);
void CTU(CTU_typ* inst);
void CTD(CTD_typ* inst);
void CTUD(CTUD_typ* inst);
void RF_TRIG(RF_TRIG_typ* inst);
#ifdef __cplusplus
};
#endif
#endif /* STANDARD_H_ */

View File

@@ -0,0 +1,262 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef STANDARD_H_
#define STANDARD_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
#define TP_10mstyp TP_10ms_typ
#define TOF_10mstyp TOF_10ms_typ
#define TON_10mstyp TON_10ms_typ
#define TPtyp TP_typ
#define TOFtyp TOF_typ
#define TONtyp TON_typ
#define SEMAtyp SEMA_typ
#define RStyp RS_typ
#define SRtyp SR_typ
#define R_TRIGtyp R_TRIG_typ
#define F_TRIGtyp F_TRIG_typ
#define CTUtyp CTU_typ
#define CTDtyp CTD_typ
#define CTUDtyp CTUD_typ
#define RF_TRIGtyp RF_TRIG_typ
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
typedef struct TP_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_10ms_typ;
typedef struct TOF_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_10ms_typ;
typedef struct TON_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_10ms_typ;
typedef struct TP
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_typ;
typedef struct TOF
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_typ;
typedef struct TON
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_typ;
typedef struct SEMA
{
/* VAR_INPUT (digital) */
plcbit CLAIM;
plcbit RELEASE;
/* VAR_OUTPUT (digital) */
plcbit BUSY;
/* VAR (digital) */
plcbit X;
} SEMA_typ;
typedef struct RS
{
/* VAR_INPUT (digital) */
plcbit SET;
plcbit RESET1;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} RS_typ;
typedef struct SR
{
/* VAR_INPUT (digital) */
plcbit SET1;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} SR_typ;
typedef struct R_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} R_TRIG_typ;
typedef struct F_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} F_TRIG_typ;
typedef struct CTU
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTU_typ;
typedef struct CTD
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CD;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTD_typ;
typedef struct CTUD
{
/* VAR_INPUT (analogous) */
signed short PV;
/* VAR_OUTPUT (analogous) */
signed short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit CD;
plcbit RESET;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit QU;
plcbit QD;
/* VAR (digital) */
plcbit MU;
plcbit MD;
} CTUD_typ;
typedef struct RF_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} RF_TRIG_typ;
/* Prototyping of functions and function blocks */
void TP_10ms(TP_10ms_typ* inst);
void TOF_10ms(TOF_10ms_typ* inst);
void TON_10ms(TON_10ms_typ* inst);
void TP(TP_typ* inst);
void TOF(TOF_typ* inst);
void TON(TON_typ* inst);
void SEMA(SEMA_typ* inst);
void RS(RS_typ* inst);
void SR(SR_typ* inst);
void R_TRIG(R_TRIG_typ* inst);
void F_TRIG(F_TRIG_typ* inst);
void CTU(CTU_typ* inst);
void CTD(CTD_typ* inst);
void CTUD(CTUD_typ* inst);
void RF_TRIG(RF_TRIG_typ* inst);
#ifdef __cplusplus
};
#endif
#endif /* STANDARD_H_ */

View File

@@ -0,0 +1,262 @@
/* Automation Studio Generated Header File, Format Version 1.00 */
/* do not change */
#ifndef STANDARD_H_
#define STANDARD_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <bur/plc.h>
#define TP_10mstyp TP_10ms_typ
#define TOF_10mstyp TOF_10ms_typ
#define TON_10mstyp TON_10ms_typ
#define TPtyp TP_typ
#define TOFtyp TOF_typ
#define TONtyp TON_typ
#define SEMAtyp SEMA_typ
#define RStyp RS_typ
#define SRtyp SR_typ
#define R_TRIGtyp R_TRIG_typ
#define F_TRIGtyp F_TRIG_typ
#define CTUtyp CTU_typ
#define CTDtyp CTD_typ
#define CTUDtyp CTUD_typ
#define RF_TRIGtyp RF_TRIG_typ
/* Constants */
/* Datatypes */
/* Datatypes of function blocks */
typedef struct TP_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_10ms_typ;
typedef struct TOF_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_10ms_typ;
typedef struct TON_10ms
{
/* VAR_INPUT (analogous) */
unsigned long PT;
/* VAR_OUTPUT (analogous) */
unsigned long ET;
/* VAR (analogous) */
unsigned long StartTime;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_10ms_typ;
typedef struct TP
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
} TP_typ;
typedef struct TOF
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TOF_typ;
typedef struct TON
{
/* VAR_INPUT (analogous) */
plctime PT;
/* VAR_OUTPUT (analogous) */
plctime ET;
/* VAR (analogous) */
plctime StartTime;
unsigned long Restart;
/* VAR_INPUT (digital) */
plcbit IN;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} TON_typ;
typedef struct SEMA
{
/* VAR_INPUT (digital) */
plcbit CLAIM;
plcbit RELEASE;
/* VAR_OUTPUT (digital) */
plcbit BUSY;
/* VAR (digital) */
plcbit X;
} SEMA_typ;
typedef struct RS
{
/* VAR_INPUT (digital) */
plcbit SET;
plcbit RESET1;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} RS_typ;
typedef struct SR
{
/* VAR_INPUT (digital) */
plcbit SET1;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q1;
} SR_typ;
typedef struct R_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} R_TRIG_typ;
typedef struct F_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} F_TRIG_typ;
typedef struct CTU
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit RESET;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTU_typ;
typedef struct CTD
{
/* VAR_INPUT (analogous) */
unsigned short PV;
/* VAR_OUTPUT (analogous) */
unsigned short CV;
/* VAR_INPUT (digital) */
plcbit CD;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} CTD_typ;
typedef struct CTUD
{
/* VAR_INPUT (analogous) */
signed short PV;
/* VAR_OUTPUT (analogous) */
signed short CV;
/* VAR_INPUT (digital) */
plcbit CU;
plcbit CD;
plcbit RESET;
plcbit LOAD;
/* VAR_OUTPUT (digital) */
plcbit QU;
plcbit QD;
/* VAR (digital) */
plcbit MU;
plcbit MD;
} CTUD_typ;
typedef struct RF_TRIG
{
/* VAR_INPUT (digital) */
plcbit CLK;
/* VAR_OUTPUT (digital) */
plcbit Q;
/* VAR (digital) */
plcbit M;
} RF_TRIG_typ;
/* Prototyping of functions and function blocks */
void TP_10ms(TP_10ms_typ* inst);
void TOF_10ms(TOF_10ms_typ* inst);
void TON_10ms(TON_10ms_typ* inst);
void TP(TP_typ* inst);
void TOF(TOF_typ* inst);
void TON(TON_typ* inst);
void SEMA(SEMA_typ* inst);
void RS(RS_typ* inst);
void SR(SR_typ* inst);
void R_TRIG(R_TRIG_typ* inst);
void F_TRIG(F_TRIG_typ* inst);
void CTU(CTU_typ* inst);
void CTD(CTD_typ* inst);
void CTUD(CTUD_typ* inst);
void RF_TRIG(RF_TRIG_typ* inst);
#ifdef __cplusplus
};
#endif
#endif /* STANDARD_H_ */

View File

@@ -0,0 +1,262 @@
(********************************************************************
* COPYRIGHT -- Bernecker + Rainer
********************************************************************
* Library: standard
* File: standard.fun
* Author: B+R
********************************************************************
* Functions and function blocks of library standard
********************************************************************)
FUNCTION_BLOCK RF_TRIG (*recognizes both edges of BOOL values*)
VAR_INPUT
CLK :BOOL; (*input signal of the edge to be recognized*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*TRUE if the input signal was FALSE on the last call and is now TRUE*)
END_VAR
VAR
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTUD (*counts upward or downward*)
VAR_INPUT
CU :BOOL; (*counter CV is increased by 1 by CU when the edge is rising*)
CD :BOOL; (*counter CV is reduced by 1 by CD when the edge is rising*)
RESET :BOOL; (*counter CV is set to 0 if RESET is TRUE*)
LOAD :BOOL; (*if LOAD is TRUE, then counter CV is initialized with the starting value PV*)
PV :INT; (*start value*)
END_VAR
VAR_OUTPUT
QU :BOOL; (*is TRUE if CV is greater than or equal to PV*)
QD :BOOL; (*is TRUE if CV equals 0*)
CV :INT; (*counter*)
END_VAR
VAR
MU :BOOL; (*internal variable*)
MD :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTD (*counts downward*)
VAR_INPUT
CD :BOOL; (*counter CV is reduced by 1 by CD when the edge is rising*)
LOAD :BOOL; (*if LOAD is TRUE, then counter CV is initialized with the starting value PV*)
PV :UINT; (*start value*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*is TRUE if CV equals 0*)
CV :UINT; (*counter*)
END_VAR
VAR
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTU (*counts upward*)
VAR_INPUT
CU :BOOL; (*counter CV is increased by 1 by CU when the edge is rising*)
RESET :BOOL; (*counter CV is set to 0 if RESET is TRUE*)
PV :UINT; (*comparison variable*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*is TRUE if counter CV is greater than or equal to the PV comparison variable*)
CV :UINT; (*counter*)
END_VAR
VAR
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK F_TRIG (*recognizes falling edges from BOOL values*)
VAR_INPUT
CLK :BOOL; (*input signal whose edge should be detected*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*is set to TRUE if the input signal was TRUE during the last call and is now FALSE*)
END_VAR
VAR
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK R_TRIG (*recognizes rising edges from BOOL values*)
VAR_INPUT
CLK :BOOL; (*input signal whose edge should be detected*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*is set to TRUE if the input signal was FALSE during the last call and is now TRUE*)
END_VAR
VAR
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK SR (*sets or resets the output (set has priority)*)
VAR_INPUT
SET1 :BOOL; (*sets output Q1 (priority)*)
RESET :BOOL; (*resets output Q1*)
END_VAR
VAR_OUTPUT
Q1 :BOOL; (*output value *)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK RS (*sets or resets the output (reset has priority)*)
VAR_INPUT
SET :BOOL; (*sets output Q1*)
RESET1 :BOOL; (*resets output Q1 (priority)*)
END_VAR
VAR_OUTPUT
Q1 :BOOL; (*output value*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK SEMA (*blocks access within the same task class (simple semaphore)*)
VAR_INPUT
CLAIM :BOOL; (*locks semaphore*)
RELEASE :BOOL; (*releases semaphore*)
END_VAR
VAR_OUTPUT
BUSY :BOOL; (*TRUE if the semaphore was already locked*)
END_VAR
VAR
X :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TON (*implements a switch on delay*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :TIME; (*delay time*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*rising edge of the input signal is delayed by PT*)
ET :TIME; (*elapsed time*)
END_VAR
VAR
StartTime :TIME; (*internal variable*)
M :BOOL; (*internal variable*)
Restart :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TOF (*implements a switch off delay*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :TIME; (*delay time*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*falling edge of the input signal is delayed by PT*)
ET :TIME; (*elapsed time*)
END_VAR
VAR
M :BOOL; (*internal variable*)
StartTime :TIME; (*internal variable*)
Restart :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TP (*implements a pulse generator*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :TIME; (*pulse time*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*output signal*)
ET :TIME; (*elapsed time*)
END_VAR
VAR
StartTime :TIME; (*internal variable*)
Restart :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TON_10ms (*implements a switch on delay based on 10 ms steps*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :UDINT; (*delay time in 10 ms steps*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*output signal, the rising edge of the input signal is delayed by PT*)
ET :UDINT; (*elapsed time in 10 ms increments*)
END_VAR
VAR
StartTime :UDINT; (*internal variable*)
M :BOOL; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TOF_10ms (*implements a switch off delay based on 10 ms steps*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :UDINT; (*delay time in 10 ms steps*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*output signal, the falling edge of the input signal is delayed by PT*)
ET :UDINT; (*elapsed time in 10 ms increments*)
END_VAR
VAR
M :BOOL; (*internal variable*)
StartTime :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION_BLOCK TP_10ms (*implements a pulse using 10 ms steps*)
VAR_INPUT
IN :BOOL; (*input signal*)
PT :UDINT; (*pulse time in 10 ms steps*)
END_VAR
VAR_OUTPUT
Q :BOOL; (*output signal*)
ET :UDINT; (*elapsed time in 10 ms increments*)
END_VAR
VAR
StartTime :UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
FUNCTION LEN : INT (*calculates the length of a string*)
VAR_INPUT
IN :STRING[32767]; (*input string*)
END_VAR
END_FUNCTION
FUNCTION LEFT : STRING[255] (*extracts a certain amount (L) of leftmost characters from a string*)
VAR_INPUT
IN :STRING[32767]; (*input string*)
L :INT; (*number of characters*)
END_VAR
END_FUNCTION
FUNCTION RIGHT : STRING[255] (*extracts a certain amount (L) of rightmost characters from a string*)
VAR_INPUT
IN :STRING[32767]; (*input string*)
L :INT; (*number of characters*)
END_VAR
END_FUNCTION
FUNCTION MID : STRING[255] (*extracts L number of characters out of string beginning with position P*)
VAR_INPUT
IN :STRING[32767]; (*string which should be extracted from*)
L :INT; (*number of characters*)
P :INT; (*position of the first character which should be extracted*)
END_VAR
END_FUNCTION
FUNCTION CONCAT : STRING[255] (*attaches strings to one another*)
VAR_INPUT
IN1 :STRING[32767]; (*first input string*)
IN2 :STRING[32767]; (*second input string*)
END_VAR
END_FUNCTION
FUNCTION INSERT : STRING[255] (*inserts a string into a string*)
VAR_INPUT
IN1 :STRING[32767]; (*string which should be inserted into*)
IN2 :STRING[32767]; (*string which should be inserted*)
P :INT; (*position where insertion should take place*)
END_VAR
END_FUNCTION
FUNCTION DELETE : STRING[255] (*deletes L number of characters from the IN string beginning with the Pth character position*)
VAR_INPUT
IN :STRING[32767]; (*input string*)
L :INT; (*number of characters to be deleted*)
P :INT; (*starting position of characters to be deleted*)
END_VAR
END_FUNCTION
FUNCTION REPLACE : STRING[255] (*replaces characters in a string*)
VAR_INPUT
IN1 :STRING[32767]; (*string which should have characters replaced*)
IN2 :STRING[32767]; (*string used for the replacement*)
L :INT; (*length of the area to be replaced*)
P :INT; (*starting position of replacement*)
END_VAR
END_FUNCTION
FUNCTION FIND : INT (*determines the position of a string inside a string*)
VAR_INPUT
IN1 :STRING[32767]; (*string which should be looked through*)
IN2 :STRING[32767]; (*string which should be looked for*)
END_VAR
END_FUNCTION

View File

@@ -0,0 +1,54 @@
TYPE
typMachineCommands : STRUCT (*Betriebsart w<>hlen*)
usSwitchOff : USINT;
usSwitchOn : USINT;
usJogMode : USINT;
usManualMode : USINT;
usHomeMode : USINT;
usAutomaticMode : USINT;
END_STRUCT;
typStatusVCControls : STRUCT
usBtnPowerOff : USINT;
usBtnPowerOn : USINT;
usBtnJogMode : USINT;
usBtnManMode : USINT;
usBtnHomeMode : USINT;
usBtnAutoMode : USINT;
usBtnSetupmode : USINT;
usLabelSetupmode : USINT;
usBtnErrorReset : USINT;
usBtnNextStep : USINT;
usLayersMainpage : ARRAY[1..7]OF USINT;
END_STRUCT;
typVCCommands : STRUCT
bErrorReset : BOOL;
END_STRUCT;
enMACHMODE :
(
enMACH_NOOP, (*Maschine hat keine g<>ltige Betriebsart*)
enMACH_JOG, (*Maschine ist im Tippbetrieb*)
enMACH_MANUAL, (*Maschine ist im Hand (Semiautomatic) Betrieb*)
enMACH_HOMEPOS, (*Maschine ist in Betriebsart Grundstellung Anfahren*)
enMACH_AUTOMATIC (*Maschine ist im Automatikbetrieb*)
);
enACCESSLEVEL :
( (*Berechtigungslevel (von Euchner EKS)*)
enACCESSLEVEL_0 := 0,
enACCESSLEVEL_1 := 1,
enACCESSLEVEL_2 := 2,
enACCESSLEVEL_3 := 3,
enACCESSLEVEL_4 := 4,
enACCESSLEVEL_5 := 5,
enACCESSLEVEL_6 := 6,
enACCESSLEVEL_7 := 7,
enACCESSLEVEL_8 := 8,
enACCESSLEVEL_9 := 9,
enACCESSLEVEL_10 := 10,
enACCESSLEVEL_11 := 11,
enACCESSLEVEL_12 := 12,
enACCESSLEVEL_13 := 13,
enACCESSLEVEL_14 := 14,
enACCESSLEVEL_15 := 15
);
END_TYPE

View File

@@ -0,0 +1,21 @@
VAR
gusCurrentOpLayer : USINT; (*Aktueller Bedienlayer*)
gbMachON : BOOL; (*Anlage ist EIN*)
gbMachRequestHome : BOOL; (*Anforderung GS Fahrt*)
gbMachSetupMode : BOOL; (*Inbetriebnahmemodus*)
gbMachIsInHomepos : BOOL;
gstrMachineCaption : STRING[80];
genMachMode : enMACHMODE := enMACH_HOMEPOS;
guiMachMode : UINT; (*F<>r Visu*)
gMachineCommands : typMachineCommands; (*Machinenkommandos*)
gMachineAlarms : typAlarm; (*Maschinenalarme*)
genAccessLevel : enACCESSLEVEL := enACCESSLEVEL_0; (*aktueller Berechtigungslevel*)
gStatusVCControls : typStatusVCControls;
gVCCommands : typVCCommands;
gbEnableNextStepBtn : BOOL;
END_VAR
(*Constants*)
VAR CONSTANT
VC_HIDE_BITPOS : USINT := 0;
VC_LOCK_BITPOS : USINT := 1;
END_VAR

10
Logical/Mach/Package.pkg Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<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" Description="Init Machine">mc_init</Object>
<Object Type="Program" Language="IEC" Description="Global Machine Control">machine</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Private="true">machine.var</File>
<File>machineInit.st</File>
<File>machineCyclic.st</File>
</Files>
</Program>

View File

@@ -0,0 +1,3 @@
VAR
bInit : BOOL;
END_VAR

View File

@@ -0,0 +1,85 @@
PROGRAM _CYCLIC
(* cyclic program *)
IF bInit THEN
gbMachON := FALSE;
genMachMode := enMACH_JOG;
bInit := FALSE;
END_IF
//Eing<EFBFBD>nge einlesen
bDInEStopOK := BIT_TST (uiInputs, 3);
//Machine On / Off
IF (gMachineCommands.usSwitchOn = 1) THEN
gbMachON := TRUE;
END_IF
//Mschine Ein / Aus
IF (gMachineCommands.usSwitchOff = 1) THEN
gbMachON := FALSE;
END_IF
//Inbetriebnahmemodus
gbMachSetupMode := TRUE;
IF EDGEPOS (gMachineCommands.usManualMode = 1) THEN
genMachMode := enMACH_MANUAL;
END_IF
IF EDGEPOS (gMachineCommands.usJogMode = 1) THEN
genMachMode := enMACH_JOG;
END_IF
IF EDGEPOS (gMachineCommands.usHomeMode = 1) THEN
genMachMode := enMACH_HOMEPOS;
END_IF
IF EDGEPOS (gMachineCommands.usAutomaticMode = 1) THEN
genMachMode := enMACH_AUTOMATIC;
END_IF
gStatusVCControls.usBtnJogMode := SHL (BOOL_TO_USINT (genAccessLevel < enACCESSLEVEL_2), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gbMachON OR (genMachMode = enMACH_JOG)), VC_HIDE_BITPOS);
gStatusVCControls.usBtnManMode := SHL (BOOL_TO_USINT ((genAccessLevel < enACCESSLEVEL_2)), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gbMachON OR (genMachMode = enMACH_MANUAL) OR gbMachRequestHome), VC_HIDE_BITPOS);
gStatusVCControls.usBtnNextStep := SHL (BOOL_TO_USINT ((genAccessLevel < enACCESSLEVEL_2) OR NOT gbEnableNextStepBtn), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gbMachON OR (genMachMode <> enMACH_MANUAL)), VC_HIDE_BITPOS);
gStatusVCControls.usBtnHomeMode := SHL (BOOL_TO_USINT ((genAccessLevel < enACCESSLEVEL_1)), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gbMachON OR (genMachMode = enMACH_HOMEPOS)), VC_HIDE_BITPOS);
gStatusVCControls.usBtnAutoMode := SHL (BOOL_TO_USINT ((genAccessLevel < enACCESSLEVEL_1)), VC_LOCK_BITPOS) +
SHL (BOOL_TO_USINT (NOT gbMachON OR (genMachMode = enMACH_AUTOMATIC) OR gbMachRequestHome), VC_HIDE_BITPOS);
guiMachMode := DINT_TO_UINT (genMachMode);
IF (genMachMode = enMACH_JOG) THEN
gVCLEDs.usJOGButton := 1; //ON
ELSE
gVCLEDs.usJOGButton := 0; //Off
END_IF
IF (genMachMode = enMACH_HOMEPOS) THEN
gVCLEDs.usHOMEButton := 1; //ON
ELSE
gVCLEDs.usHOMEButton := 0; //Off
END_IF
IF (genMachMode = enMACH_AUTOMATIC) THEN
gVCLEDs.usAUTOButton := 1; //ON
ELSE
gVCLEDs.usAUTOButton := 0; //Off
END_IF
//gbOuLEDEStop := NOT gbInEStopOk AND (bBlink0_5 OR NOT gbInEStopPressed);
//Anlagenbeleuchtung
bDOuLightOn := gbMachON;
//Alarms
gMachineAlarms.Alarm[0] := NOT bDInEStopOK;
//gMachineAlarms.Alarm[1] := gbInEStopPressed;
//gMachineAlarms.Alarm[2] := gbInEStopOk AND NOT gbInSafetyChainOk;
//Accesslevels
genAccessLevel := enACCESSLEVEL_5;
END_PROGRAM

View File

@@ -0,0 +1,4 @@
PROGRAM _INIT
bInit := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Program xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Private="true">mc_init.var</File>
<File>mc_initInit.ab</File>
<File>mc_initCyclic.ab</File>
</Files>
</Program>

View File

@@ -0,0 +1,4 @@
VAR
bInit : BOOL;
usi : USINT;
END_VAR

View File

@@ -0,0 +1,7 @@
PROGRAM _CYCLIC
(* cyclic program *)
IF bInit THEN
strcpy(ADR (gstrMachineCaption), "FFG-Pinchanlage")
bInit = FALSE
ENDIF
END_PROGRAM

View File

@@ -0,0 +1,5 @@
PROGRAM _INIT
(* init program *)
bInit = true
END_PROGRAM

12
Logical/Package.pkg Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="Package">Global</Object>
<Object Type="Package">Common</Object>
<Object Type="Package">Mach</Object>
<Object Type="Program" Language="IEC" Description="Controller">FFGCtrl</Object>
<Object Type="Package" Description="Global libraries">Libraries</Object>
<Object Type="DataObject" Language="Vc3" Description="4P304000490dis">Visu</Object>
</Objects>
</Package>

BIN
Logical/Visu/Gfont1x1.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
Logical/Visu/Gfont2x2.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
Logical/Visu/Gfont4x4.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="3.0"?>
<VisualComponents xmlns="http://br-automation.co.at/AS/VC/Project">
<Visualization Name="Visu">
<Property Name="Hardware" Value="4P304000490dis.hwc" />
<Property Name="Printer" Value="None" />
</Visualization>
</VisualComponents>

7
Logical/Visu/Vc3.dob Normal file
View File

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

BIN
Logical/Visu/Visu.pwc Normal file

Binary file not shown.

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Configuration xmlns="http://br-automation.co.at/AS/Configuration">
<Objects>
<Object Type="File" Description="Hardware topology">Hardware.hc</Object>
<Object Type="PLC" Description="Files belonging to this PLC">PLC1</Object>
</Objects>
</Configuration>

Binary file not shown.

View File

@@ -0,0 +1,13 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* File: Cpu.per
* Author: michi
* Created: April 17, 2015
********************************************************************
* Declaration of permanent variables
********************************************************************)
VAR_CONFIG
gudShiftCounter AT %MD0;
gudOverallCounter AT %MD4;
END_VAR

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<SwConfiguration CpuAddress="SL1" xmlns="http://br-automation.co.at/AS/SwConfiguration">
<TaskClass Name="Exception" />
<TaskClass Name="Timer#1" />
<TaskClass Name="Cyclic#1" />
<TaskClass Name="Cyclic#2" />
<TaskClass Name="Cyclic#3">
<Task Name="blinker" Source="Common.blinker.prg" Memory="UserRAM" Language="IEC" Debugging="true" />
<Task Name="mc_init" Source="Mach.mc_init.prg" Memory="UserRAM" Language="IEC" Debugging="true" />
<Task Name="machine" Source="Mach.machine.prg" Memory="UserRAM" Language="IEC" Debugging="true" />
<Task Name="FFGCtrl" Source="FFGCtrl.prg" Memory="UserRAM" Language="IEC" Debugging="true" />
</TaskClass>
<TaskClass Name="Cyclic#4" />
<DataObjects />
<NcDataObjects />
<VcDataObjects>
<VcDataObject Name="Visu" Source="Visu.dob" Memory="UserROM" Language="Vc3" />
</VcDataObjects>
<Binaries>
<BinaryObject Name="vcinter" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="rtk68k" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="ddpcpp41" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="Visu01" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="gcloader" Source="" Memory="UserROM" Language="Binary" />
<BinaryObject Name="Visu02" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="aplib" Source="" Memory="UserRAM" Language="Binary" />
<BinaryObject Name="sysconf" Source="" Memory="SystemROM" Language="Binary" />
</Binaries>
<Libraries>
<LibraryObject Name="burtrap" Source="" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="dataobj" Source="" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="asieccon" Source="" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="runtime" Source="" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="sys_lib" Source="" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="asstring" Source="Libraries.asstring.lby" Memory="UserROM" Language="Binary" Debugging="true" />
<LibraryObject Name="standard" Source="Libraries.standard.lby" Memory="UserROM" Language="Binary" Debugging="true" />
</Libraries>
</SwConfiguration>

View File

@@ -0,0 +1,31 @@
(********************************************************************
* COPYRIGHT --
********************************************************************
* File: IoMap.iom
* Author: michi
* Created: April 17, 2015
********************************************************************
* IO mapping file
********************************************************************)
VAR_CONFIG
bDInHomeCutter1 AT %IX.SL2.DigitalInput01;
bDInHomeCutter2 AT %IX.SL2.DigitalInput02;
bDInHomeCutter3 AT %IX.SL2.DigitalInput03;
bDInHomeCutter4 AT %IX.SL2.DigitalInput04;
bDInGateOpen AT %IX.SL2.DigitalInput05;
bDInTurnTableFw AT %IX.SL2.DigitalInput06;
bDInTurnTableBw AT %IX.SL2.DigitalInput07;
bDInStartKey AT %IX.SL2.DigitalInput08;
bDOuGateOpen AT %QX.SL2.DigitalOutput01;
bDOuGateClose AT %QX.SL2.DigitalOutput02;
bDOuTurnTableFw AT %QX.SL2.DigitalOutput03;
bDOuTurnTableBw AT %QX.SL2.DigitalOutput04;
bDOuCutterBw AT %QX.SL2.DigitalOutput05;
bDOuCutterClose AT %QX.SL2.DigitalOutput07;
bDOuLightOn AT %QX.SL2.DigitalOutput08;
bDOuCutterFw AT %QX.SL2.DigitalOutput06;
bDInAirOk1 AT %IX.SL2.DigitalInput09;
uiInputs AT %IW.SL0.SS1.AnalogInput01;
uiOutputs AT %QW.SL0.SS2.AnalogOutput01;
bDInAirOk2 AT %IX.SL2.DigitalInput10;
END_VAR

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<PLC xmlns="http://br-automation.co.at/AS/PLC">
<Objects>
<Object Type="File" Description="Software configuration">Cpu.sw</Object>
<Object Type="File" Description="Declaration of permanent variables">Cpu.per</Object>
<Object Type="File" Description="IO mapping file">IoMap.iom</Object>
<Object Type="File" Description="VC Mapping File">Visual.vcm</Object>
<Object Type="File" Description="CPU system configuration">sysconf.br</Object>
</Objects>
<CpuModules>
<CpuModule LocalVariablesMemory="MemoryPool" GeneratePPCode="false" HasNcOperatingSystem="false" Target="SG3" ModuleID="PP41" ClassID="PP41" GccVersion="V2.95.3">
<DefaultTargetMemory Tasks="UserRAM" Libraries="UserROM" DataObjects="UserRAM" />
<DefaultTaskClass Name="Cyclic4" />
<IO DefaultTaskClass="Automatic" ArConfigDataModule="false" ArConfigDataModulePath="$(AS_CPU_PATH)\AS\CfgData.br" IoMapDataModule="false" IoMapDataModulePath="$(AS_CPU_PATH)\AS\IomData.br" />
<OS Version="8.14.0" Status="X" />
<Transfer DownloadMode="Overload" PromptBeforeProject="false" PromptBeforeTask="false" PackedArConfig="false" PackedIoMap="false" IgnoreTargetOnlyObjects="false" GeneratePviTransferList="true" TransferOnlyRelevantChanges="true" AllowWarmRestart="true" IgnoreBrDependencies="false" />
<Build />
<VC FirmwareVersion="V3.96.2" />
<OPC WindowsServer="false" />
</CpuModule>
</CpuModules>
<Communication />
</PLC>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<VcMapping>
<Row Address="SY1" ObjectName="Visu" KeyPriority="Lower Cyclic #8" Description="Display" />
</VcMapping>

Binary file not shown.

7
Physical/Physical.pkg Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=3.0.90.30 SP12?>
<Physical xmlns="http://br-automation.co.at/AS/Physical">
<Configurations>
<Configuration Name="Config1" Description="" />
</Configurations>
</Physical>

Binary file not shown.

View File

@@ -0,0 +1,5 @@
[config]
rule: MK_RK_mempercent , 2, 32, 1, 17003
rule: MK_RK_NMERRTAB , 16, 60, 1, 17531
rule: MK_RK_NUMSS , 0, 2, 1, 17520
rule: MK_SS_zyklimit8 , 0, 0, 1, 17031

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
as/system/X0814/SG3/AsMc.br Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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