Workbackup

This commit is contained in:
2022-02-10 12:02:06 +01:00
parent db8c1eb1a4
commit 547757cc0f
688 changed files with 36368 additions and 0 deletions

12
KD_Elunic_Devel.apj Normal file
View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="4.9.4.92 SP" WorkingVersion="4.9"?>
<Project Description="Ausgangsprojekt - Entwicklung Elunic" Version="1.00.0" Edition="Standard" EditionComment="Standard" xmlns="http://br-automation.co.at/AS/Project">
<Communication>
<OnlineConfiguration Name="Elunic-Management" DeviceType="TCPIP" DeviceParameters="/IF=tcpip /LOPO=11159 /SA=194" ConnectionParameters="/COMT=5000 /RT=1000 /AM=* /SDT=5 /DAIP=10.13.15.10 /REPO=11159 /ANSL=1" Description="" />
</Communication>
<ANSIC DefaultIncludes="true" />
<IEC ExtendedConstants="true" IecExtendedComments="true" KeywordsAsStructureMembers="false" NamingConventions="true" Pointers="true" Preprocessor="false" />
<Motion RestartAcoposParameter="true" RestartInitParameter="true" />
<Project StoreRuntimeInProject="false" />
<Variables DefaultInitValue="0" DefaultRetain="false" DefaultVolatile="true" />
</Project>

7
LastUser.set Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="4.9.4.92 SP"?>
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
<ConfigurationManager ActiveConfigurationName="CfgSPSL1a" />
<Deployment Value="ActiveCpu" />
<Print Footer="%cPage: %p" Header="%lProject: %n%c%x" />
</ProjectSettings>

View File

@@ -0,0 +1,10 @@
TYPE
gtyp_Blinker : STRUCT
bBlink0_1 : BOOL; (*Blinker 0,1Hz*)
bBlink0_5 : BOOL; (*Blinker 0,5Hz*)
bBlink1_0 : BOOL; (*Blinker 1Hz*)
bBlink2_0 : BOOL; (*Blinker 2Hz*)
bBlink5_0 : BOOL; (*Blinker 5Hz*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,12 @@
VAR
gBlinker : gtyp_Blinker;
gdtCurrentTime : DATE_AND_TIME; (*Current Date and Time*)
gDTstrucCurrentTime : DTStructure := (0); (*Current Date and Time as DTStructure*)
gsCurrentTime : STRING[25] := ''; (*Current Date and Time as String*)
gTCurrentTime : TIME := T#0ms; (*Current Time*)
END_VAR
VAR CONSTANT
gAInNull : INT := 0; (*O FOR Analog Input*)
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 FileVersion="4.9"?>
<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="Current Date_And_Time / DT Struct">get_dt</Object>
<Object Type="Program" Language="IEC" Description="Blinker 0,1 -0,5s (f. 100ms Task) !!!">blinker</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Program SubType="IEC" 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.st</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,18 @@
PROGRAM _CYCLIC
//Must be taskclass 100ms
gBlinker.bBlink0_1 := NOT gBlinker.bBlink0_1;
iCount := iCount + 1;
IF ((iCount MOD 5) = 0) THEN
gBlinker.bBlink0_5 := NOT gBlinker.bBlink0_5;
END_IF
IF ((iCount MOD 10) = 0) THEN
gBlinker.bBlink1_0 := NOT gBlinker.bBlink1_0;
END_IF
IF ((iCount MOD 20) = 0) THEN
gBlinker.bBlink2_0 := NOT gBlinker.bBlink2_0;
END_IF
IF ((iCount MOD 50) = 0) THEN
gBlinker.bBlink5_0 := NOT gBlinker.bBlink5_0;
iCount := 0;
END_IF
END_PROGRAM

View File

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

View File

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

View File

@@ -0,0 +1,6 @@
VAR
sTemp : STRING[10] := '';
lDTStructureGetTime : DTStructureGetTime := (0);
lDTGetTime : DTGetTime := (0);
lTimeStructure : TIMEStructure := (0);
END_VAR

View File

@@ -0,0 +1,57 @@
PROGRAM _CYCLIC
(* cyclic program *)
lDTGetTime.enable = true
lDTGetTime FUB DTGetTime()
gdtCurrentTime = lDTGetTime.DT1
lDTStructureGetTime.enable = true
lDTStructureGetTime FUB DTStructureGetTime ()
lDTStructureGetTime.pDTStructure = adr (gDTstrucCurrentTime)
ascDTStructure (ADR (gDTstrucCurrentTime), ADR (gsCurrentTime), 25)
brsstrcpy (ADR (gsCurrentTime), "")
brsitoa (gDTstrucCurrentTime.year, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
IF (gDTstrucCurrentTime.month < 10) THEN
brsstrcat (ADR (gsCurrentTime), "0")
ENDIF
brsitoa (gDTstrucCurrentTime.month, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
IF (gDTstrucCurrentTime.day < 10) THEN
brsstrcat (ADR (gsCurrentTime), "0")
ENDIF
brsitoa (gDTstrucCurrentTime.day, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), "_")
IF (gDTstrucCurrentTime.hour < 10) THEN
brsstrcat (ADR (gsCurrentTime), "0")
ENDIF
brsitoa (gDTstrucCurrentTime.hour, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), "-")
IF (gDTstrucCurrentTime.minute < 10) THEN
brsstrcat (ADR (gsCurrentTime), "0")
ENDIF
brsitoa (gDTstrucCurrentTime.minute, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), "-")
IF (gDTstrucCurrentTime.second < 10) THEN
brsstrcat (ADR (gsCurrentTime), "0")
ENDIF
brsitoa (gDTstrucCurrentTime.second, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), "_")
brsitoa (gDTstrucCurrentTime.millisec, ADR (sTemp))
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
lTimeStructure.day = gDTstrucCurrentTime.day
lTimeStructure.hour = gDTstrucCurrentTime.hour
lTimeStructure.minute = gDTstrucCurrentTime.minute
lTimeStructure.second = gDTstrucCurrentTime.second
lTimeStructure.millisec = gDTstrucCurrentTime.millisec
lTimeStructure.microsec = gDTstrucCurrentTime.microsec
gTCurrentTime = TIMEStructure_TO_TIME (adr (lTimeStructure))
END_PROGRAM

View File

@@ -0,0 +1,4 @@
PROGRAM _INIT
(* init program *)
END_PROGRAM

0
Logical/Global.typ Normal file
View File

0
Logical/Global.var Normal file
View File

View File

@@ -0,0 +1,8 @@
(*================================================================================================================*)
(*CPU (PWLnk Node 240)*)
(*----------------------------------------------------------------------------------------------------------------*)
VAR
gudSerialNr : UDINT; (*Seriennummer*)
gdiSystemTime : DINT; (*Systemzeit [<5B>s]*)
END_VAR
(*----------------------------------------------------------------------------------------------------------------*)

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File" Description="Global variables / IOs">Global.var</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,80 @@
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsftoa : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatof : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatod : LREAL (*converts a character string into a LREAL (DOUBLE) value*)
VAR_INPUT
pString :UDINT; (*pointer to the character string to be converted*)
END_VAR
END_FUNCTION
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsitoa : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsatoi : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemset : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcpy : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemmove : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsmemcmp : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcat : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrlen : UDINT (*provides the length of a character string*)
VAR_INPUT
pString :UDINT; (*pointer to the source character string*)
END_VAR
END_FUNCTION
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcpy : 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION brsstrcmp : 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,4 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,4 @@
VAR CONSTANT
END_VAR

View File

@@ -0,0 +1,39 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASBRSTR_
#define _ASBRSTR_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Prototyping of functions and function blocks */
unsigned short brsftoa(float value, unsigned long pString);
float brsatof(unsigned long pString);
unsigned short brsitoa(signed long value, unsigned long pString);
signed long brsatoi(unsigned long pString);
unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
unsigned long brsstrlen(unsigned long pString);
unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
#ifdef __cplusplus
};
#endif
#endif /* _ASBRSTR_ */

View File

@@ -0,0 +1,39 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASBRSTR_
#define _ASBRSTR_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Prototyping of functions and function blocks */
_BUR_PUBLIC unsigned short brsftoa(float value, unsigned long pString);
_BUR_PUBLIC float brsatof(unsigned long pString);
_BUR_PUBLIC double brsatod(unsigned long pString);
_BUR_PUBLIC unsigned short brsitoa(signed long value, unsigned long pString);
_BUR_PUBLIC signed long brsatoi(unsigned long pString);
_BUR_PUBLIC unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
_BUR_PUBLIC unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
_BUR_PUBLIC unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
_BUR_PUBLIC signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
_BUR_PUBLIC unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
_BUR_PUBLIC unsigned long brsstrlen(unsigned long pString);
_BUR_PUBLIC unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
_BUR_PUBLIC signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
#ifdef __cplusplus
};
#endif
#endif /* _ASBRSTR_ */

View File

@@ -0,0 +1,39 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASBRSTR_
#define _ASBRSTR_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Prototyping of functions and function blocks */
unsigned short brsftoa(float value, unsigned long pString);
float brsatof(unsigned long pString);
unsigned short brsitoa(signed long value, unsigned long pString);
signed long brsatoi(unsigned long pString);
unsigned long brsmemset(unsigned long pDest, unsigned char value, unsigned long length);
unsigned long brsmemcpy(unsigned long pDest, unsigned long pSrc, unsigned long length);
unsigned long brsmemmove(unsigned long pDest, unsigned long pSrc, unsigned long length);
signed long brsmemcmp(unsigned long pMem1, unsigned long pMem2, unsigned long length);
unsigned long brsstrcat(unsigned long pDest, unsigned long pSrc);
unsigned long brsstrlen(unsigned long pString);
unsigned long brsstrcpy(unsigned long pDest, unsigned long pSrc);
signed long brsstrcmp(unsigned long pString1, unsigned long pString2);
#ifdef __cplusplus
};
#endif
#endif /* _ASBRSTR_ */

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="The AsBrStr Library contains FBKs for memory and character string handling." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>AsBrStr.fun</File>
<File>AsBrStr.typ</File>
<File>AsBrStr.var</File>
</Files>
</Library>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,4 @@
VAR CONSTANT
END_VAR

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,61 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _ASIECCON_
#define _ASIECCON_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Prototyping of functions and function blocks */
_BUR_PUBLIC signed short H_TO_NINT(signed short IN);
_BUR_PUBLIC unsigned short H_TO_NUINT(unsigned short IN);
_BUR_PUBLIC signed long H_TO_NDINT(signed long IN);
_BUR_PUBLIC unsigned long H_TO_NUDINT(unsigned long IN);
_BUR_PUBLIC float H_TO_NREAL(float IN);
_BUR_PUBLIC double H_TO_NLREAL(double IN);
_BUR_PUBLIC plctime H_TO_NTIME(plctime IN);
_BUR_PUBLIC DATE_AND_TIME H_TO_NDT(DATE_AND_TIME IN);
_BUR_PUBLIC DATE H_TO_NDATE(DATE IN);
_BUR_PUBLIC TOD H_TO_NTOD(TOD IN);
_BUR_PUBLIC signed short N_TO_HINT(signed short IN);
_BUR_PUBLIC unsigned short N_TO_HUINT(unsigned short IN);
_BUR_PUBLIC signed long N_TO_HDINT(signed long IN);
_BUR_PUBLIC unsigned long N_TO_HUDINT(unsigned long IN);
_BUR_PUBLIC float N_TO_HREAL(float IN);
_BUR_PUBLIC double N_TO_HLREAL(double IN);
_BUR_PUBLIC plctime N_TO_HTIME(plctime IN);
_BUR_PUBLIC DATE_AND_TIME N_TO_HDT(DATE_AND_TIME IN);
_BUR_PUBLIC DATE N_TO_HDATE(DATE IN);
_BUR_PUBLIC TOD N_TO_HTOD(TOD IN);
_BUR_PUBLIC signed short swapINT(signed short IN);
_BUR_PUBLIC unsigned short swapUINT(unsigned short IN);
_BUR_PUBLIC WORD swapWORD(WORD IN);
_BUR_PUBLIC signed long swapDINT(signed long IN);
_BUR_PUBLIC unsigned long swapUDINT(unsigned long IN);
_BUR_PUBLIC DWORD swapDWORD(DWORD IN);
_BUR_PUBLIC TIME swapTIME(TIME IN);
_BUR_PUBLIC DATE_AND_TIME swapDT(DATE_AND_TIME IN);
_BUR_PUBLIC DATE swapDATE(DATE IN);
_BUR_PUBLIC TOD swapTOD(TOD IN);
_BUR_PUBLIC float swapREAL(float IN);
_BUR_PUBLIC double swapLREAL(double 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_ */

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 FileVersion="4.9"?>
<Library SubType="binary" Description="This library contains function interfaces for IEC 61131-3 conversion functions." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>AsIecCon.fun</File>
<File>AsIecCon.typ</File>
<File>AsIecCon.var</File>
</Files>
<Dependencies>
<Dependency ObjectName="astime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,98 @@
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBMCmd (*operates the modbus protocol in runtime*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*identifier of the MBMOpen() FBK*)
mfc :USINT; (*modbus function call*)
node :USINT; (*station number (0 = broadcast)*)
data :UDINT; (*pointer to the data area*)
offset :UINT; (*offset*)
len :UINT; (*size of data*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBMClose (*closes the driver environment to enable the MBMOpen() FBK to be called again*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*identifier of the MBMOpen() FBK*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBMaster (*operates the modbus protocol in runtime*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*identifier of the MBMOpen() FBK*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
execute :BOOL; (*command executed (execute = 1)*)
recordnum :UINT; (*number of the entry in the data object currently being processed*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBMOpen (*configures the interface and initializes the internal structures that are required*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDevice :UDINT; (*device name given as a pointer*)
pMode :UDINT; (*pointer to the mode description string*)
pConfig :UDINT; (*pointer to the data object name*)
timeout :UINT; (*response timeout in milliseconds (the value must be a multiple of 10)*)
ascii :USINT; (*modBus mode (0 = RTU / 1 = ASCII)*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
ident :UDINT; (*identifier for the MBMaster(), MBMCmd() and MBMClose() FBKs*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBSClose (*closes the driver environment to enable the MBSOpen() FBK to be called again*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*identifier of the MBSOpen() FBK*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
InitCount :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBSlave (*operates the modbus protocol in runtime*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*identifier of the MBSOpen() FBK*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
exec :UINT; (*counter for modbus commands received*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK MBSOpen (*configures the interface and initializes the internal structures that are required*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pDevice :UDINT; (*device name given as a pointer*)
pMode :UDINT; (*pointer to the mode description string*)
pCoilStat :UDINT; (*pointer to the coil status (modbus simulation variable)*)
pInputStat :UDINT; (*pointer to the input status (modbus simulation variable)*)
pHoldingReg :UDINT; (*pointer to the holding register (modbus simulation variable)*)
pInputReg :UDINT; (*pointer to the input register (modbus simulation variable)*)
own_ID :USINT; (*own node number*)
timeout :UINT; (*response timeout in milliseconds (the value must be a multiple of 10)*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
ident :UDINT; (*identifier for the MBClient() and MBSClose() FBKs*)
END_VAR
VAR
FirstInit :UDINT; (*internal variable*)
InitCount :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,4 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,28 @@
VAR CONSTANT
mbERR_INVALID_PARAM : UINT := 20201; (*invalid FBK parameter (e.g. pDevice = 0)*)
mbERR_ILG_O_NODE_N : UINT := 20205; (*invalid own_ID stated in MBSOpen() FBK; valid IDs are between 1 and 247*)
mbERR_ILG_IDENT : UINT := 20210; (*invalid ID or ID is 0*)
mbERR_ILG_MBVAR : UINT := 20215; (*ModBus simulation variable invalid or missing (MBSOpen() and MBSlave() FBK)*)
mbERR_NODE_TOUT : UINT := 20220; (*in MBSOpen(), MBMOpen(): invalid value for timeout parameter, in MBMCmd(), MBMaster(), MBSlave(): timeout detected*)
mbERR_CMD_ENTRY : UINT := 20240; (*invalid entry in data object, invalid length of data object*)
mbERR_CMD_NULL : UINT := 20241; (*data object not present or data parameter in MBMCmd FBK is 0*)
mbERR_CMD_EVENTPV : UINT := 20242; (*invalid EventPV stated in the data object*)
mbERR_CMD_FUNCTION : UINT := 20243; (*invalid ModBus function stated in the data object or in the MBMCmd() FBK*)
mbERR_CMD_NODE : UINT := 20244; (*invalid nodenumber stated in the data object or in the MBMCmd() FBK*)
mbERR_CMD_LOCALPV : UINT := 20245; (*invalid EventPV stated in the data object*)
mbERR_CMD_LENGTH : UINT := 20246; (*invalid length stated in the data object*)
mbERR_NO_MEM : UINT := 20250; (*no memory for internal library management*)
mbERR_MEM_FREE : UINT := 20252; (*memory for internal library management cannot be freed*)
mbERR_RESP_ERROR : UINT := 20260; (*invalid frame received*)
mbERR_RESP_LENGTH : UINT := 20261; (*frame with wrong length received*)
mbERR_RESP_INVALID : UINT := 20262; (*error in frame*)
mbERR_RESP_CRC : UINT := 20263; (*error in frame check (CRC / LRC) MBMaster() and MBMCmd()*)
mbERR_QUERY_CRC : UINT := 20264; (*error in frame check (CRC) MBMSlave()*)
mbERR_FRM_READ : UINT := 20291; (*error while receiving a frame (FRM_read())*)
mbERR_FRM_GETBUF : UINT := 20292; (*no write buffer available (FRM_gbuf())*)
mbERR_FRM_WRITE : UINT := 20293; (*error while writing a frame (FRM_write())*)
mbERR_FRM_RELOUTBUF : UINT := 20294; (*error in buffer return (FRM_robuf())*)
mbERR_FRM_RELBUF : UINT := 20295; (*error in buffer return (FRM_rbuf())*)
mbERR_FRM_CLOSE : UINT := 20296; (*error while closing the interface (FRM_close())*)
END_VAR

View File

@@ -0,0 +1,193 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DRV_MBUS_
#define _DRV_MBUS_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <DataObj.h>
#include <dvframe.h>
#include <runtime.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define mbERR_INVALID_PARAM 20201U
#define mbERR_ILG_O_NODE_N 20205U
#define mbERR_ILG_IDENT 20210U
#define mbERR_ILG_MBVAR 20215U
#define mbERR_NODE_TOUT 20220U
#define mbERR_CMD_ENTRY 20240U
#define mbERR_CMD_NULL 20241U
#define mbERR_CMD_EVENTPV 20242U
#define mbERR_CMD_FUNCTION 20243U
#define mbERR_CMD_NODE 20244U
#define mbERR_CMD_LOCALPV 20245U
#define mbERR_CMD_LENGTH 20246U
#define mbERR_NO_MEM 20250U
#define mbERR_MEM_FREE 20252U
#define mbERR_RESP_ERROR 20260U
#define mbERR_RESP_LENGTH 20261U
#define mbERR_RESP_INVALID 20262U
#define mbERR_RESP_CRC 20263U
#define mbERR_QUERY_CRC 20264U
#define mbERR_FRM_READ 20291U
#define mbERR_FRM_GETBUF 20292U
#define mbERR_FRM_WRITE 20293U
#define mbERR_FRM_RELOUTBUF 20294U
#define mbERR_FRM_RELBUF 20295U
#define mbERR_FRM_CLOSE 20296U
#else
_IEC_CONST unsigned short mbERR_INVALID_PARAM = 20201U;
_IEC_CONST unsigned short mbERR_ILG_O_NODE_N = 20205U;
_IEC_CONST unsigned short mbERR_ILG_IDENT = 20210U;
_IEC_CONST unsigned short mbERR_ILG_MBVAR = 20215U;
_IEC_CONST unsigned short mbERR_NODE_TOUT = 20220U;
_IEC_CONST unsigned short mbERR_CMD_ENTRY = 20240U;
_IEC_CONST unsigned short mbERR_CMD_NULL = 20241U;
_IEC_CONST unsigned short mbERR_CMD_EVENTPV = 20242U;
_IEC_CONST unsigned short mbERR_CMD_FUNCTION = 20243U;
_IEC_CONST unsigned short mbERR_CMD_NODE = 20244U;
_IEC_CONST unsigned short mbERR_CMD_LOCALPV = 20245U;
_IEC_CONST unsigned short mbERR_CMD_LENGTH = 20246U;
_IEC_CONST unsigned short mbERR_NO_MEM = 20250U;
_IEC_CONST unsigned short mbERR_MEM_FREE = 20252U;
_IEC_CONST unsigned short mbERR_RESP_ERROR = 20260U;
_IEC_CONST unsigned short mbERR_RESP_LENGTH = 20261U;
_IEC_CONST unsigned short mbERR_RESP_INVALID = 20262U;
_IEC_CONST unsigned short mbERR_RESP_CRC = 20263U;
_IEC_CONST unsigned short mbERR_QUERY_CRC = 20264U;
_IEC_CONST unsigned short mbERR_FRM_READ = 20291U;
_IEC_CONST unsigned short mbERR_FRM_GETBUF = 20292U;
_IEC_CONST unsigned short mbERR_FRM_WRITE = 20293U;
_IEC_CONST unsigned short mbERR_FRM_RELOUTBUF = 20294U;
_IEC_CONST unsigned short mbERR_FRM_RELBUF = 20295U;
_IEC_CONST unsigned short mbERR_FRM_CLOSE = 20296U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct MBMCmd
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char mfc;
unsigned char node;
unsigned long data;
unsigned short offset;
unsigned short len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMCmd_typ;
typedef struct MBMClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMClose_typ;
typedef struct MBMaster
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short recordnum;
/* VAR_INPUT (digital) */
plcbit enable;
/* VAR_OUTPUT (digital) */
plcbit execute;
} MBMaster_typ;
typedef struct MBMOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pConfig;
unsigned short timeout;
unsigned char ascii;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMOpen_typ;
typedef struct MBSClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSClose_typ;
typedef struct MBSlave
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short exec;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSlave_typ;
typedef struct MBSOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pCoilStat;
unsigned long pInputStat;
unsigned long pHoldingReg;
unsigned long pInputReg;
unsigned char own_ID;
unsigned short timeout;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
unsigned long FirstInit;
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSOpen_typ;
/* Prototyping of functions and function blocks */
void MBMCmd(struct MBMCmd* inst);
void MBMClose(struct MBMClose* inst);
void MBMaster(struct MBMaster* inst);
void MBMOpen(struct MBMOpen* inst);
void MBSClose(struct MBSClose* inst);
void MBSlave(struct MBSlave* inst);
void MBSOpen(struct MBSOpen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DRV_MBUS_ */

View File

@@ -0,0 +1,195 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DRV_MBUS_
#define _DRV_MBUS_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <DataObj.h>
#include <dvframe.h>
#include <runtime.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define mbERR_FRM_CLOSE 20296U
#define mbERR_FRM_RELBUF 20295U
#define mbERR_FRM_RELOUTBUF 20294U
#define mbERR_FRM_WRITE 20293U
#define mbERR_FRM_GETBUF 20292U
#define mbERR_FRM_READ 20291U
#define mbERR_QUERY_CRC 20264U
#define mbERR_RESP_CRC 20263U
#define mbERR_RESP_INVALID 20262U
#define mbERR_RESP_LENGTH 20261U
#define mbERR_RESP_ERROR 20260U
#define mbERR_MEM_FREE 20252U
#define mbERR_NO_MEM 20250U
#define mbERR_CMD_LENGTH 20246U
#define mbERR_CMD_LOCALPV 20245U
#define mbERR_CMD_NODE 20244U
#define mbERR_CMD_FUNCTION 20243U
#define mbERR_CMD_EVENTPV 20242U
#define mbERR_CMD_NULL 20241U
#define mbERR_CMD_ENTRY 20240U
#define mbERR_NODE_TOUT 20220U
#define mbERR_ILG_MBVAR 20215U
#define mbERR_ILG_IDENT 20210U
#define mbERR_ILG_O_NODE_N 20205U
#define mbERR_INVALID_PARAM 20201U
#else
#ifndef _GLOBAL_CONST
#define _GLOBAL_CONST _WEAK const
#endif
_GLOBAL_CONST unsigned short mbERR_FRM_CLOSE;
_GLOBAL_CONST unsigned short mbERR_FRM_RELBUF;
_GLOBAL_CONST unsigned short mbERR_FRM_RELOUTBUF;
_GLOBAL_CONST unsigned short mbERR_FRM_WRITE;
_GLOBAL_CONST unsigned short mbERR_FRM_GETBUF;
_GLOBAL_CONST unsigned short mbERR_FRM_READ;
_GLOBAL_CONST unsigned short mbERR_QUERY_CRC;
_GLOBAL_CONST unsigned short mbERR_RESP_CRC;
_GLOBAL_CONST unsigned short mbERR_RESP_INVALID;
_GLOBAL_CONST unsigned short mbERR_RESP_LENGTH;
_GLOBAL_CONST unsigned short mbERR_RESP_ERROR;
_GLOBAL_CONST unsigned short mbERR_MEM_FREE;
_GLOBAL_CONST unsigned short mbERR_NO_MEM;
_GLOBAL_CONST unsigned short mbERR_CMD_LENGTH;
_GLOBAL_CONST unsigned short mbERR_CMD_LOCALPV;
_GLOBAL_CONST unsigned short mbERR_CMD_NODE;
_GLOBAL_CONST unsigned short mbERR_CMD_FUNCTION;
_GLOBAL_CONST unsigned short mbERR_CMD_EVENTPV;
_GLOBAL_CONST unsigned short mbERR_CMD_NULL;
_GLOBAL_CONST unsigned short mbERR_CMD_ENTRY;
_GLOBAL_CONST unsigned short mbERR_NODE_TOUT;
_GLOBAL_CONST unsigned short mbERR_ILG_MBVAR;
_GLOBAL_CONST unsigned short mbERR_ILG_IDENT;
_GLOBAL_CONST unsigned short mbERR_ILG_O_NODE_N;
_GLOBAL_CONST unsigned short mbERR_INVALID_PARAM;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct MBMCmd
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char mfc;
unsigned char node;
unsigned long data;
unsigned short offset;
unsigned short len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMCmd_typ;
typedef struct MBMClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMClose_typ;
typedef struct MBMaster
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short recordnum;
/* VAR_INPUT (digital) */
plcbit enable;
/* VAR_OUTPUT (digital) */
plcbit execute;
} MBMaster_typ;
typedef struct MBMOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pConfig;
unsigned short timeout;
unsigned char ascii;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMOpen_typ;
typedef struct MBSClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSClose_typ;
typedef struct MBSlave
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short exec;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSlave_typ;
typedef struct MBSOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pCoilStat;
unsigned long pInputStat;
unsigned long pHoldingReg;
unsigned long pInputReg;
unsigned char own_ID;
unsigned short timeout;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
unsigned long FirstInit;
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSOpen_typ;
/* Prototyping of functions and function blocks */
_BUR_PUBLIC void MBMCmd(struct MBMCmd* inst);
_BUR_PUBLIC void MBMClose(struct MBMClose* inst);
_BUR_PUBLIC void MBMaster(struct MBMaster* inst);
_BUR_PUBLIC void MBMOpen(struct MBMOpen* inst);
_BUR_PUBLIC void MBSClose(struct MBSClose* inst);
_BUR_PUBLIC void MBSlave(struct MBSlave* inst);
_BUR_PUBLIC void MBSOpen(struct MBSOpen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DRV_MBUS_ */

View File

@@ -0,0 +1,194 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DRV_MBUS_
#define _DRV_MBUS_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <DataObj.h>
#include <dvframe.h>
#include <runtime.h>
#ifndef _IEC_CONST
#define _IEC_CONST _WEAK const
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define mbERR_INVALID_PARAM 20201U
#define mbERR_ILG_O_NODE_N 20205U
#define mbERR_ILG_IDENT 20210U
#define mbERR_ILG_MBVAR 20215U
#define mbERR_NODE_TOUT 20220U
#define mbERR_CMD_ENTRY 20240U
#define mbERR_CMD_NULL 20241U
#define mbERR_CMD_EVENTPV 20242U
#define mbERR_CMD_FUNCTION 20243U
#define mbERR_CMD_NODE 20244U
#define mbERR_CMD_LOCALPV 20245U
#define mbERR_CMD_LENGTH 20246U
#define mbERR_NO_MEM 20250U
#define mbERR_MEM_FREE 20252U
#define mbERR_RESP_ERROR 20260U
#define mbERR_RESP_LENGTH 20261U
#define mbERR_RESP_INVALID 20262U
#define mbERR_RESP_CRC 20263U
#define mbERR_QUERY_CRC 20264U
#define mbERR_FRM_READ 20291U
#define mbERR_FRM_GETBUF 20292U
#define mbERR_FRM_WRITE 20293U
#define mbERR_FRM_RELOUTBUF 20294U
#define mbERR_FRM_RELBUF 20295U
#define mbERR_FRM_CLOSE 20296U
#else
_IEC_CONST unsigned short mbERR_INVALID_PARAM = 20201U;
_IEC_CONST unsigned short mbERR_ILG_O_NODE_N = 20205U;
_IEC_CONST unsigned short mbERR_ILG_IDENT = 20210U;
_IEC_CONST unsigned short mbERR_ILG_MBVAR = 20215U;
_IEC_CONST unsigned short mbERR_NODE_TOUT = 20220U;
_IEC_CONST unsigned short mbERR_CMD_ENTRY = 20240U;
_IEC_CONST unsigned short mbERR_CMD_NULL = 20241U;
_IEC_CONST unsigned short mbERR_CMD_EVENTPV = 20242U;
_IEC_CONST unsigned short mbERR_CMD_FUNCTION = 20243U;
_IEC_CONST unsigned short mbERR_CMD_NODE = 20244U;
_IEC_CONST unsigned short mbERR_CMD_LOCALPV = 20245U;
_IEC_CONST unsigned short mbERR_CMD_LENGTH = 20246U;
_IEC_CONST unsigned short mbERR_NO_MEM = 20250U;
_IEC_CONST unsigned short mbERR_MEM_FREE = 20252U;
_IEC_CONST unsigned short mbERR_RESP_ERROR = 20260U;
_IEC_CONST unsigned short mbERR_RESP_LENGTH = 20261U;
_IEC_CONST unsigned short mbERR_RESP_INVALID = 20262U;
_IEC_CONST unsigned short mbERR_RESP_CRC = 20263U;
_IEC_CONST unsigned short mbERR_QUERY_CRC = 20264U;
_IEC_CONST unsigned short mbERR_FRM_READ = 20291U;
_IEC_CONST unsigned short mbERR_FRM_GETBUF = 20292U;
_IEC_CONST unsigned short mbERR_FRM_WRITE = 20293U;
_IEC_CONST unsigned short mbERR_FRM_RELOUTBUF = 20294U;
_IEC_CONST unsigned short mbERR_FRM_RELBUF = 20295U;
_IEC_CONST unsigned short mbERR_FRM_CLOSE = 20296U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct MBMCmd
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char mfc;
unsigned char node;
unsigned long data;
unsigned short offset;
unsigned short len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMCmd_typ;
typedef struct MBMClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMClose_typ;
typedef struct MBMaster
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short recordnum;
/* VAR_INPUT (digital) */
plcbit enable;
/* VAR_OUTPUT (digital) */
plcbit execute;
} MBMaster_typ;
typedef struct MBMOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pConfig;
unsigned short timeout;
unsigned char ascii;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR_INPUT (digital) */
plcbit enable;
} MBMOpen_typ;
typedef struct MBSClose
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSClose_typ;
typedef struct MBSlave
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned short exec;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSlave_typ;
typedef struct MBSOpen
{
/* VAR_INPUT (analog) */
unsigned long pDevice;
unsigned long pMode;
unsigned long pCoilStat;
unsigned long pInputStat;
unsigned long pHoldingReg;
unsigned long pInputReg;
unsigned char own_ID;
unsigned short timeout;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
unsigned long FirstInit;
unsigned char InitCount;
/* VAR_INPUT (digital) */
plcbit enable;
} MBSOpen_typ;
/* Prototyping of functions and function blocks */
void MBMCmd(struct MBMCmd* inst);
void MBMClose(struct MBMClose* inst);
void MBMaster(struct MBMaster* inst);
void MBMOpen(struct MBMOpen* inst);
void MBSClose(struct MBSClose* inst);
void MBSlave(struct MBSlave* inst);
void MBSOpen(struct MBSOpen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DRV_MBUS_ */

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="The DRV_mbus library provides functions that allow a B&amp;R System to communicate via Modbus communication." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>DRV_mbus.fun</File>
<File>DRV_mbus.typ</File>
<File>DRV_mbus.var</File>
</Files>
<Dependencies>
<Dependency ObjectName="dvframe" />
<Dependency ObjectName="DataObj" />
<Dependency ObjectName="runtime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,157 @@
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjCreate (*creates a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
grp :USINT; (*group ID for the data object (default 0x00), must be set to zero*)
pName :UDINT; (*pointer to name of the data object to be created*)
len :UDINT; (*length of the data area of the data object to be created*)
MemType :USINT; (*type of target memory: doTEMP, doUSRRAM, doUSRROM, doSYSROM, doFIXRAM, doMEMCARD*)
Option :UDINT; (*options: doNO_CS*)
pCpyData :UDINT; (*pointer to data written to the data object during generation*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
ident :UDINT; (*ID of the created data object*)
pDatObjMem :UDINT; (*pointer to the data in the data object*)
END_VAR
VAR
i_state :UDINT; (*internal variable*)
i_result :UDINT; (*internal variable*)
i_spare :ARRAY[0..104] OF USINT; (*internal variable*)
i_spare_1 :UDINT; (*internal variable*)
i_spare_2 :UINT; (*internal variable*)
i_spare_3 :UDINT; (*internal variable*)
i_spare_4 :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjWrite (*writes to a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
Offset :UDINT; (*offset in the data area of the data object*)
pSource :UDINT; (*pointer to the data copied to the data object*)
len :UDINT; (*length of the data to be copied*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjRead (*reads from a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
Offset :UDINT; (*offset in the data area of the data object*)
pDestination:UDINT; (*memory to which the data to be read is copied*)
len :UDINT; (*length of the data to be copied*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjDelete (*deletes data objects*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
i_state :UDINT; (*internal variable*)
i_result :UDINT; (*internal variable*)
i_spare :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjMove (*moves the storage space of a data object to a new target memory*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
MemType :USINT; (*target memory in which the data object is to be saved, e.g. doTEMP, doUSRRAM, doUSRROM, ...*)
Option :UDINT; (*options for the object to be saved (doNO_CS = no checksum)*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
identNew :UDINT; (*ID of the new data object*)
pDatObjMem :UDINT; (*pointer to the data in the newly created data object*)
END_VAR
VAR
i_state :UDINT; (*internal variable*)
i_result :UDINT; (*internal variable*)
i_spare :ARRAY[0..40] OF USINT; (*internal variable*)
i_spare_1 :UDINT; (*internal variable*)
i_spare_2 :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjCopy (*copies a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object to be copied*)
pNameTarget :UDINT; (*pointer to name of the new data object*)
MemTypeTarget :USINT; (*target memory in which the new object is to be generated, e.g. doTEMP, doUSRRAM, ...*)
OptionTarget :UDINT; (*options for the copied object (doNO_CS = no checksum)*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
identNew :UDINT; (*ID of the copied data object*)
pDatObjMemNew :UDINT; (*pointer to the data in the newly created data object*)
END_VAR
VAR
i_state :UDINT; (*internal variable*)
i_result :UDINT; (*internal variable*)
i_spare :ARRAY[0..40] OF USINT; (*internal variable*)
i_spare_1 :UDINT; (*internal variable*)
i_spare_2 :USINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjInfo (*gives information about a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pName :UDINT; (*name of data object*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
ident :UDINT; (*ID of the data object*)
pDatObjMem :UDINT; (*pointer to the data in the data object*)
len :UDINT; (*length of the data area in the data object*)
MemType :USINT; (*memory type in which the data object is located, e.g. doTEMP, doUSRRAM, doUSRROM, ...*)
Option :UDINT; (*information about data object options*)
ChangeDate :DATE_AND_TIME; (*modification date of the data object*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjChangeDate (*changes the modification date of a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
pName :UDINT; (*pointer to name of data object*)
SetDate :DATE_AND_TIME; (*date and time; if the value 0 is transferred, the current PLC system time is used*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjAttach (*attaches a data object to prevent deletion*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK DatObjDetach (*detaches a data object*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*ID of the data object*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,14 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,27 @@
VAR CONSTANT
doERR_TOOLONG_MODULNAME : UINT := 20613; (*module name too long (max. 10 characters)*)
doERR_CHECKSUM_WARNING : UINT := 20630; (*wrong target memory specified for the "doNO_CS" option*)
doERR_MODULNOTFOUND : UINT := 20609; (*data object not found*)
doERR_ILLEGALLENGTH : UINT := 20608; (*wrong length specified*)
doERR_STARTHANDLER : UINT := 20612; (*error while enabling asynchronous handler (only SG4)*)
doERR_ILLPARAMETER : UINT := 20600; (*wrong parameter given (NULL pointer)*)
doERR_WRONGOFFSET : UINT := 20607; (*wrong offset specified*)
doERR_ILLOBJTYPE : UINT := 20606; (*wrong object type (not data object)*)
doERR_ILLMEMTYPE : UINT := 20602; (*wrong target memory specified*)
doERR_WRONGTIME : UINT := 20610; (*wrong date in SetDate (DatObjChangeDate)*)
doERR_ILLOBJECT : UINT := 20605; (*object not found*)
doERR_DUPOBJECT : UINT := 20601; (*object already present*)
doERR_BRINSTALL : UINT := 20604; (*error installing data object*)
doERR_NOMEMORY : UINT := 20603; (*no memory available for module to be created*)
doERR_ILLSTATE : UINT := 20611; (*incorrect state of the data object*)
doERR_BURNINGOBJECT : UINT := 20614; (*error while saving the data object in "Flash" memory*)
doERR_MODULDELETE_SYSROM : UINT := 20615; (*a module in SYSROM cannot be deleted*)
doSYSROM : USINT := 0; (*SYSROM (SYSTEM FLASH)*)
doNO_CS : USINT := 1; (*no cyclic checksum monitoring and no checksum monitoring during installation and booting*)
doUSRROM : USINT := 2; (*USERROM (USER FLASH)*)
doUSRRAM : USINT := 3; (*USERRAM (target memory for pointer handling)*)
doMEMCARD : USINT := 4; (*MEMCARD (only for SG3)*)
doFIXRAM : USINT := 5; (*FIXRAM (only for SG3)*)
doTEMP : USINT := 65; (*Temporary data object (DRAM, only for SG4)*)
END_VAR

View File

@@ -0,0 +1,225 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DATAOBJ_
#define _DATAOBJ_
#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 doTEMP 65U
#define doFIXRAM 5U
#define doMEMCARD 4U
#define doUSRRAM 3U
#define doUSRROM 2U
#define doNO_CS 1U
#define doSYSROM 0U
#define doERR_BURNINGOBJECT 20614U
#define doERR_ILLSTATE 20611U
#define doERR_NOMEMORY 20603U
#define doERR_BRINSTALL 20604U
#define doERR_DUPOBJECT 20601U
#define doERR_ILLOBJECT 20605U
#define doERR_WRONGTIME 20610U
#define doERR_ILLMEMTYPE 20602U
#define doERR_ILLOBJTYPE 20606U
#define doERR_WRONGOFFSET 20607U
#define doERR_ILLPARAMETER 20600U
#define doERR_STARTHANDLER 20612U
#define doERR_ILLEGALLENGTH 20608U
#define doERR_MODULNOTFOUND 20609U
#define doERR_CHECKSUM_WARNING 20630U
#define doERR_TOOLONG_MODULNAME 20613U
#else
_IEC_CONST unsigned char doTEMP = 65U;
_IEC_CONST unsigned char doFIXRAM = 5U;
_IEC_CONST unsigned char doMEMCARD = 4U;
_IEC_CONST unsigned char doUSRRAM = 3U;
_IEC_CONST unsigned char doUSRROM = 2U;
_IEC_CONST unsigned char doNO_CS = 1U;
_IEC_CONST unsigned char doSYSROM = 0U;
_IEC_CONST unsigned short doERR_BURNINGOBJECT = 20614U;
_IEC_CONST unsigned short doERR_ILLSTATE = 20611U;
_IEC_CONST unsigned short doERR_NOMEMORY = 20603U;
_IEC_CONST unsigned short doERR_BRINSTALL = 20604U;
_IEC_CONST unsigned short doERR_DUPOBJECT = 20601U;
_IEC_CONST unsigned short doERR_ILLOBJECT = 20605U;
_IEC_CONST unsigned short doERR_WRONGTIME = 20610U;
_IEC_CONST unsigned short doERR_ILLMEMTYPE = 20602U;
_IEC_CONST unsigned short doERR_ILLOBJTYPE = 20606U;
_IEC_CONST unsigned short doERR_WRONGOFFSET = 20607U;
_IEC_CONST unsigned short doERR_ILLPARAMETER = 20600U;
_IEC_CONST unsigned short doERR_STARTHANDLER = 20612U;
_IEC_CONST unsigned short doERR_ILLEGALLENGTH = 20608U;
_IEC_CONST unsigned short doERR_MODULNOTFOUND = 20609U;
_IEC_CONST unsigned short doERR_CHECKSUM_WARNING = 20630U;
_IEC_CONST unsigned short doERR_TOOLONG_MODULNAME = 20613U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct DatObjCreate
{
/* VAR_INPUT (analog) */
unsigned char grp;
unsigned long pName;
unsigned long len;
unsigned char MemType;
unsigned long Option;
unsigned long pCpyData;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[105];
unsigned long i_spare_1;
unsigned short i_spare_2;
unsigned long i_spare_3;
unsigned char i_spare_4;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCreate_typ;
typedef struct DatObjWrite
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pSource;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjWrite_typ;
typedef struct DatObjRead
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pDestination;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjRead_typ;
typedef struct DatObjDelete
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjDelete_typ;
typedef struct DatObjMove
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char MemType;
unsigned long Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjMove_typ;
typedef struct DatObjCopy
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long pNameTarget;
unsigned char MemTypeTarget;
unsigned long OptionTarget;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMemNew;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCopy_typ;
typedef struct DatObjInfo
{
/* VAR_INPUT (analog) */
unsigned long pName;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
unsigned long len;
unsigned char MemType;
unsigned long Option;
plcdt ChangeDate;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjInfo_typ;
typedef struct DatObjChangeDate
{
/* VAR_INPUT (analog) */
unsigned long pName;
plcdt SetDate;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjChangeDate_typ;
/* Prototyping of functions and function blocks */
void DatObjCreate(struct DatObjCreate* inst);
void DatObjWrite(struct DatObjWrite* inst);
void DatObjRead(struct DatObjRead* inst);
void DatObjDelete(struct DatObjDelete* inst);
void DatObjMove(struct DatObjMove* inst);
void DatObjCopy(struct DatObjCopy* inst);
void DatObjInfo(struct DatObjInfo* inst);
void DatObjChangeDate(struct DatObjChangeDate* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DATAOBJ_ */

View File

@@ -0,0 +1,250 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DATAOBJ_
#define _DATAOBJ_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <runtime.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define doTEMP 65U
#define doFIXRAM 5U
#define doMEMCARD 4U
#define doUSRRAM 3U
#define doUSRROM 2U
#define doNO_CS 1U
#define doSYSROM 0U
#define doERR_MODULDELETE_SYSROM 20615U
#define doERR_BURNINGOBJECT 20614U
#define doERR_ILLSTATE 20611U
#define doERR_NOMEMORY 20603U
#define doERR_BRINSTALL 20604U
#define doERR_DUPOBJECT 20601U
#define doERR_ILLOBJECT 20605U
#define doERR_WRONGTIME 20610U
#define doERR_ILLMEMTYPE 20602U
#define doERR_ILLOBJTYPE 20606U
#define doERR_WRONGOFFSET 20607U
#define doERR_ILLPARAMETER 20600U
#define doERR_STARTHANDLER 20612U
#define doERR_ILLEGALLENGTH 20608U
#define doERR_MODULNOTFOUND 20609U
#define doERR_CHECKSUM_WARNING 20630U
#define doERR_TOOLONG_MODULNAME 20613U
#else
#ifndef _GLOBAL_CONST
#define _GLOBAL_CONST _WEAK const
#endif
_GLOBAL_CONST unsigned char doTEMP;
_GLOBAL_CONST unsigned char doFIXRAM;
_GLOBAL_CONST unsigned char doMEMCARD;
_GLOBAL_CONST unsigned char doUSRRAM;
_GLOBAL_CONST unsigned char doUSRROM;
_GLOBAL_CONST unsigned char doNO_CS;
_GLOBAL_CONST unsigned char doSYSROM;
_GLOBAL_CONST unsigned short doERR_MODULDELETE_SYSROM;
_GLOBAL_CONST unsigned short doERR_BURNINGOBJECT;
_GLOBAL_CONST unsigned short doERR_ILLSTATE;
_GLOBAL_CONST unsigned short doERR_NOMEMORY;
_GLOBAL_CONST unsigned short doERR_BRINSTALL;
_GLOBAL_CONST unsigned short doERR_DUPOBJECT;
_GLOBAL_CONST unsigned short doERR_ILLOBJECT;
_GLOBAL_CONST unsigned short doERR_WRONGTIME;
_GLOBAL_CONST unsigned short doERR_ILLMEMTYPE;
_GLOBAL_CONST unsigned short doERR_ILLOBJTYPE;
_GLOBAL_CONST unsigned short doERR_WRONGOFFSET;
_GLOBAL_CONST unsigned short doERR_ILLPARAMETER;
_GLOBAL_CONST unsigned short doERR_STARTHANDLER;
_GLOBAL_CONST unsigned short doERR_ILLEGALLENGTH;
_GLOBAL_CONST unsigned short doERR_MODULNOTFOUND;
_GLOBAL_CONST unsigned short doERR_CHECKSUM_WARNING;
_GLOBAL_CONST unsigned short doERR_TOOLONG_MODULNAME;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct DatObjCreate
{
/* VAR_INPUT (analog) */
unsigned char grp;
unsigned long pName;
unsigned long len;
unsigned char MemType;
unsigned long Option;
unsigned long pCpyData;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[105];
unsigned long i_spare_1;
unsigned short i_spare_2;
unsigned long i_spare_3;
unsigned char i_spare_4;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCreate_typ;
typedef struct DatObjWrite
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pSource;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjWrite_typ;
typedef struct DatObjRead
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pDestination;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjRead_typ;
typedef struct DatObjDelete
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjDelete_typ;
typedef struct DatObjMove
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char MemType;
unsigned long Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjMove_typ;
typedef struct DatObjCopy
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long pNameTarget;
unsigned char MemTypeTarget;
unsigned long OptionTarget;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMemNew;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCopy_typ;
typedef struct DatObjInfo
{
/* VAR_INPUT (analog) */
unsigned long pName;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
unsigned long len;
unsigned char MemType;
unsigned long Option;
plcdt ChangeDate;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjInfo_typ;
typedef struct DatObjChangeDate
{
/* VAR_INPUT (analog) */
unsigned long pName;
plcdt SetDate;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjChangeDate_typ;
typedef struct DatObjAttach
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjAttach_typ;
typedef struct DatObjDetach
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjDetach_typ;
/* Prototyping of functions and function blocks */
_BUR_PUBLIC void DatObjCreate(struct DatObjCreate* inst);
_BUR_PUBLIC void DatObjWrite(struct DatObjWrite* inst);
_BUR_PUBLIC void DatObjRead(struct DatObjRead* inst);
_BUR_PUBLIC void DatObjDelete(struct DatObjDelete* inst);
_BUR_PUBLIC void DatObjMove(struct DatObjMove* inst);
_BUR_PUBLIC void DatObjCopy(struct DatObjCopy* inst);
_BUR_PUBLIC void DatObjInfo(struct DatObjInfo* inst);
_BUR_PUBLIC void DatObjChangeDate(struct DatObjChangeDate* inst);
_BUR_PUBLIC void DatObjAttach(struct DatObjAttach* inst);
_BUR_PUBLIC void DatObjDetach(struct DatObjDetach* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DATAOBJ_ */

View File

@@ -0,0 +1,225 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DATAOBJ_
#define _DATAOBJ_
#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 doTEMP 65U
#define doFIXRAM 5U
#define doMEMCARD 4U
#define doUSRRAM 3U
#define doUSRROM 2U
#define doNO_CS 1U
#define doSYSROM 0U
#define doERR_BURNINGOBJECT 20614U
#define doERR_ILLSTATE 20611U
#define doERR_NOMEMORY 20603U
#define doERR_BRINSTALL 20604U
#define doERR_DUPOBJECT 20601U
#define doERR_ILLOBJECT 20605U
#define doERR_WRONGTIME 20610U
#define doERR_ILLMEMTYPE 20602U
#define doERR_ILLOBJTYPE 20606U
#define doERR_WRONGOFFSET 20607U
#define doERR_ILLPARAMETER 20600U
#define doERR_STARTHANDLER 20612U
#define doERR_ILLEGALLENGTH 20608U
#define doERR_MODULNOTFOUND 20609U
#define doERR_CHECKSUM_WARNING 20630U
#define doERR_TOOLONG_MODULNAME 20613U
#else
_IEC_CONST unsigned char doTEMP = 65U;
_IEC_CONST unsigned char doFIXRAM = 5U;
_IEC_CONST unsigned char doMEMCARD = 4U;
_IEC_CONST unsigned char doUSRRAM = 3U;
_IEC_CONST unsigned char doUSRROM = 2U;
_IEC_CONST unsigned char doNO_CS = 1U;
_IEC_CONST unsigned char doSYSROM = 0U;
_IEC_CONST unsigned short doERR_BURNINGOBJECT = 20614U;
_IEC_CONST unsigned short doERR_ILLSTATE = 20611U;
_IEC_CONST unsigned short doERR_NOMEMORY = 20603U;
_IEC_CONST unsigned short doERR_BRINSTALL = 20604U;
_IEC_CONST unsigned short doERR_DUPOBJECT = 20601U;
_IEC_CONST unsigned short doERR_ILLOBJECT = 20605U;
_IEC_CONST unsigned short doERR_WRONGTIME = 20610U;
_IEC_CONST unsigned short doERR_ILLMEMTYPE = 20602U;
_IEC_CONST unsigned short doERR_ILLOBJTYPE = 20606U;
_IEC_CONST unsigned short doERR_WRONGOFFSET = 20607U;
_IEC_CONST unsigned short doERR_ILLPARAMETER = 20600U;
_IEC_CONST unsigned short doERR_STARTHANDLER = 20612U;
_IEC_CONST unsigned short doERR_ILLEGALLENGTH = 20608U;
_IEC_CONST unsigned short doERR_MODULNOTFOUND = 20609U;
_IEC_CONST unsigned short doERR_CHECKSUM_WARNING = 20630U;
_IEC_CONST unsigned short doERR_TOOLONG_MODULNAME = 20613U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct DatObjCreate
{
/* VAR_INPUT (analog) */
unsigned char grp;
unsigned long pName;
unsigned long len;
unsigned char MemType;
unsigned long Option;
unsigned long pCpyData;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[105];
unsigned long i_spare_1;
unsigned short i_spare_2;
unsigned long i_spare_3;
unsigned char i_spare_4;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCreate_typ;
typedef struct DatObjWrite
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pSource;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjWrite_typ;
typedef struct DatObjRead
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long Offset;
unsigned long pDestination;
unsigned long len;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjRead_typ;
typedef struct DatObjDelete
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjDelete_typ;
typedef struct DatObjMove
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned char MemType;
unsigned long Option;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMem;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjMove_typ;
typedef struct DatObjCopy
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long pNameTarget;
unsigned char MemTypeTarget;
unsigned long OptionTarget;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long identNew;
unsigned long pDatObjMemNew;
/* VAR (analog) */
unsigned long i_state;
unsigned long i_result;
unsigned char i_spare[41];
unsigned long i_spare_1;
unsigned char i_spare_2;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjCopy_typ;
typedef struct DatObjInfo
{
/* VAR_INPUT (analog) */
unsigned long pName;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
unsigned long pDatObjMem;
unsigned long len;
unsigned char MemType;
unsigned long Option;
plcdt ChangeDate;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjInfo_typ;
typedef struct DatObjChangeDate
{
/* VAR_INPUT (analog) */
unsigned long pName;
plcdt SetDate;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR_INPUT (digital) */
plcbit enable;
} DatObjChangeDate_typ;
/* Prototyping of functions and function blocks */
void DatObjCreate(struct DatObjCreate* inst);
void DatObjWrite(struct DatObjWrite* inst);
void DatObjRead(struct DatObjRead* inst);
void DatObjDelete(struct DatObjDelete* inst);
void DatObjMove(struct DatObjMove* inst);
void DatObjCopy(struct DatObjCopy* inst);
void DatObjInfo(struct DatObjInfo* inst);
void DatObjChangeDate(struct DatObjChangeDate* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DATAOBJ_ */

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="The DataObj library can be used to dynamically create, dynamically delete and copy data objects, etc. " xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>DataObj.fun</File>
<File>DataObj.typ</File>
<File>DataObj.var</File>
</Files>
<Dependencies>
<Dependency ObjectName="runtime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="Library" Language="binary" Description="This library contains function interfaces for IEC 61131-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 61131-3 conversion functions.">AsIecCon</Object>
<Object Type="Library" Language="binary" Description="The DRV_mbus library provides functions that allow a B&amp;R System to communicate via Modbus communication.">DRV_mbus</Object>
<Object Type="Library" Language="binary" Description="The DVFrame library and the frame driver can be used to exchange data with external devices.">dvframe</Object>
<Object Type="Library" Language="binary" Description="The DataObj library can be used to dynamically create, dynamically delete and copy data objects, etc. ">DataObj</Object>
<Object Type="Library" Language="binary" Description="This library contains standard function blocks and functions for IEC 61131-3.">standard</Object>
<Object Type="Library" Language="binary" Description="The AsBrStr Library contains FBKs for memory and character string handling.">AsBrStr</Object>
</Objects>
</Package>

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,365 @@
/* 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 _BUR_PUBLIC
#define _BUR_PUBLIC
#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 timREDUND_INTERFACE 3U
#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
#ifndef _GLOBAL_CONST
#define _GLOBAL_CONST _WEAK const
#endif
_GLOBAL_CONST unsigned short timERR_AR;
_GLOBAL_CONST unsigned short timERR_INVALID_DTSTRUCTURE;
_GLOBAL_CONST unsigned short timERR_INVALID_LEN;
_GLOBAL_CONST unsigned short timERR_INVALID_PARAMETER;
_GLOBAL_CONST unsigned char timREDUND_INTERFACE;
_GLOBAL_CONST unsigned char timTIME_SERVER;
_GLOBAL_CONST unsigned char timREAL_TIME_CLOCK;
_GLOBAL_CONST unsigned char timNO_DST;
_GLOBAL_CONST unsigned char timDAYLIGHT_SAVING_TIME;
_GLOBAL_CONST unsigned char timNORMAL_TIME;
_GLOBAL_CONST signed long TIME_MAX;
_GLOBAL_CONST signed long TIME_MIN;
_GLOBAL_CONST unsigned long DATE_AND_TIME_MAX;
_GLOBAL_CONST unsigned char timEXSETTIME_NO_OPTION;
_GLOBAL_CONST unsigned char timEXSETTIME_NO_LOGENTRY;
#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 */
_BUR_PUBLIC void DTExSetTime(struct DTExSetTime* inst);
_BUR_PUBLIC void DTSetTime(struct DTSetTime* inst);
_BUR_PUBLIC void DTGetTime(struct DTGetTime* inst);
_BUR_PUBLIC void UtcDTGetTime(struct UtcDTGetTime* inst);
_BUR_PUBLIC void UtcDTSetTime(struct UtcDTSetTime* inst);
_BUR_PUBLIC void UtcDTExSetTime(struct UtcDTExSetTime* inst);
_BUR_PUBLIC void DTStructureGetTime(struct DTStructureGetTime* inst);
_BUR_PUBLIC void DTStructureSetTime(struct DTStructureSetTime* inst);
_BUR_PUBLIC void DTStructureExSetTime(struct DTStructureExSetTime* inst);
_BUR_PUBLIC void UtcDTStructureGetTime(struct UtcDTStructureGetTime* inst);
_BUR_PUBLIC void UtcDTStructureSetTime(struct UtcDTStructureSetTime* inst);
_BUR_PUBLIC void UtcDTStructureExSetTime(struct UtcDTStructureExSetTime* inst);
_BUR_PUBLIC void UtcDT_TO_LocalDTStructure(struct UtcDT_TO_LocalDTStructure* inst);
_BUR_PUBLIC void LocalDT_TO_UtcDTStructure(struct LocalDT_TO_UtcDTStructure* inst);
_BUR_PUBLIC void UtcDTStructure_TO_LocalDT(struct UtcDTStructure_TO_LocalDT* inst);
_BUR_PUBLIC void LocalDTStructure_TO_UtcDT(struct LocalDTStructure_TO_UtcDT* inst);
_BUR_PUBLIC void TimeDeviceGetInfo(struct TimeDeviceGetInfo* inst);
_BUR_PUBLIC void DstGetInfo(struct DstGetInfo* inst);
_BUR_PUBLIC void DstGetInfoDT(struct DstGetInfoDT* inst);
_BUR_PUBLIC plctime clock_ms(void);
_BUR_PUBLIC unsigned long ascTIMEStructure(unsigned long pTIMEStructure, unsigned long pStr, unsigned long len);
_BUR_PUBLIC unsigned long ascDTStructure(unsigned long pDTStructure, unsigned long pStr, unsigned long len);
_BUR_PUBLIC unsigned long ascTIME(plctime TIME1, unsigned long pStr, unsigned long len);
_BUR_PUBLIC unsigned long ascDT(plcdt DT1, unsigned long pStr, unsigned long len);
_BUR_PUBLIC plctime TIMEStructure_TO_TIME(unsigned long pTIMEStructure);
_BUR_PUBLIC unsigned long TIME_TO_TIMEStructure(plctime TIME1, unsigned long pTIMEStructure);
_BUR_PUBLIC plcdt DTStructure_TO_DT(unsigned long pDTStructure);
_BUR_PUBLIC unsigned long DT_TO_DTStructure(plcdt DT1, unsigned long pDTStructure);
_BUR_PUBLIC unsigned long DiffT(plctime TIME2, plctime TIME1);
_BUR_PUBLIC 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,333 @@
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION clock_ms : TIME (*provides a continuous millisecond counter in the TIME data type*)
END_FUNCTION
{REDUND_OK} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} 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,22 @@
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,18 @@
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;
timREDUND_INTERFACE : USINT := 3;
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,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="The AsTime Library supports DATE_AND_TIME and TIME data types." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>astime.fun</File>
<File>astime.typ</File>
<File>astime.var</File>
</Files>
<Dependencies>
<Dependency ObjectName="runtime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,227 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DVFRAME_
#define _DVFRAME_
#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 ARG_BAUD 0U
#define ARG_MISC 16U
#define frmERR_OK 0U
#define ARG_PVPOLLADR 15U
#define frmERR_MAXOPEN 8254U
#define frmERR_NOINPUT 60U
#define ARG_TXPVPOLLADR 17U
#define frmERR_NOBUFFER 8071U
#define frmERR_PA_DB_SB 8256U
#define MISC_RECEIVE_ALL 2U
#define frmERR_NOTOPENED 8251U
#define frmERR_INPUTERROR 8079U
#define frmERR_NORESOURCES 8258U
#define ARG_EVSEND_TASKEVENT 18U
#define ARG_EVSEND_TASKIDENT 14U
#define frmERR_INVALIDBUFFER 8072U
#define frmERR_IOCTL_NOTVALID 8073U
#define frmERR_MODEDESCRIPTION 8253U
#define frmERR_TRANSMITOVERRUN 8078U
#define frmERR_FUB_ENABLE_FALSE 65534U
#define frmERR_DEVICEDESCRIPTION 8252U
#define frmERR_IOCTL_NOTSUPPORTED 8257U
#else
_IEC_CONST unsigned long ARG_BAUD = 0U;
_IEC_CONST unsigned long ARG_MISC = 16U;
_IEC_CONST unsigned short frmERR_OK = 0U;
_IEC_CONST unsigned long ARG_PVPOLLADR = 15U;
_IEC_CONST unsigned short frmERR_MAXOPEN = 8254U;
_IEC_CONST unsigned short frmERR_NOINPUT = 60U;
_IEC_CONST unsigned long ARG_TXPVPOLLADR = 17U;
_IEC_CONST unsigned short frmERR_NOBUFFER = 8071U;
_IEC_CONST unsigned short frmERR_PA_DB_SB = 8256U;
_IEC_CONST unsigned long MISC_RECEIVE_ALL = 2U;
_IEC_CONST unsigned short frmERR_NOTOPENED = 8251U;
_IEC_CONST unsigned short frmERR_INPUTERROR = 8079U;
_IEC_CONST unsigned short frmERR_NORESOURCES = 8258U;
_IEC_CONST unsigned long ARG_EVSEND_TASKEVENT = 18U;
_IEC_CONST unsigned long ARG_EVSEND_TASKIDENT = 14U;
_IEC_CONST unsigned short frmERR_INVALIDBUFFER = 8072U;
_IEC_CONST unsigned short frmERR_IOCTL_NOTVALID = 8073U;
_IEC_CONST unsigned short frmERR_MODEDESCRIPTION = 8253U;
_IEC_CONST unsigned short frmERR_TRANSMITOVERRUN = 8078U;
_IEC_CONST unsigned short frmERR_FUB_ENABLE_FALSE = 65534U;
_IEC_CONST unsigned short frmERR_DEVICEDESCRIPTION = 8252U;
_IEC_CONST unsigned short frmERR_IOCTL_NOTSUPPORTED = 8257U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct XOPENCONFIG
{ unsigned short idle;
unsigned short delimc;
unsigned char delim[2];
unsigned short tx_cnt;
unsigned short rx_cnt;
unsigned short tx_len;
unsigned short rx_len;
unsigned short argc;
unsigned long argv;
} XOPENCONFIG;
typedef struct FRM_mode
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long mode;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_mode_typ;
typedef struct FRM_ctrl
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned short ioctrl;
unsigned long inarg;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long outarg;
/* VAR (analog) */
plcstring internal[44];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_ctrl_typ;
typedef struct FRM_robuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_robuf_typ;
typedef struct FRM_gbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_gbuf_typ;
typedef struct FRM_rbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_rbuf_typ;
typedef struct FRM_close
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_close_typ;
typedef struct FRM_write
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_write_typ;
typedef struct FRM_read
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_read_typ;
typedef struct FRM_xopen
{
/* VAR_INPUT (analog) */
unsigned long device;
unsigned long mode;
unsigned long config;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_xopen_typ;
/* Prototyping of functions and function blocks */
void FRM_mode(struct FRM_mode* inst);
void FRM_ctrl(struct FRM_ctrl* inst);
void FRM_robuf(struct FRM_robuf* inst);
void FRM_gbuf(struct FRM_gbuf* inst);
void FRM_rbuf(struct FRM_rbuf* inst);
void FRM_close(struct FRM_close* inst);
void FRM_write(struct FRM_write* inst);
void FRM_read(struct FRM_read* inst);
void FRM_xopen(struct FRM_xopen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DVFRAME_ */

View File

@@ -0,0 +1,248 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DVFRAME_
#define _DVFRAME_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#include <runtime.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define ARG_BAUD 0U
#define ARG_MISC 16U
#define frmERR_OK 0U
#define ARG_PVPOLLADR 15U
#define frmERR_MAXOPEN 8254U
#define frmERR_NOINPUT 60U
#define ARG_TXPVPOLLADR 17U
#define frmERR_NOBUFFER 8071U
#define frmERR_PA_DB_SB 8256U
#define MISC_RECEIVE_ALL 2U
#define frmERR_NOTOPENED 8251U
#define frmERR_INPUTERROR 8079U
#define frmERR_NORESOURCES 8258U
#define ARG_EVSEND_TASKEVENT 18U
#define ARG_EVSEND_TASKIDENT 14U
#define frmERR_INIT_IN_PROGRESS 8068U
#define frmERR_IF_UNREACHABLE 8067U
#define frmERR_INVALIDBUFFER 8072U
#define frmERR_IOCTL_NOTVALID 8073U
#define frmERR_MODEDESCRIPTION 8253U
#define frmERR_TRANSMITOVERRUN 8078U
#define frmERR_FUB_ENABLE_FALSE 65534U
#define frmERR_DEVICEDESCRIPTION 8252U
#define frmERR_IOCTL_NOTSUPPORTED 8257U
#else
#ifndef _GLOBAL_CONST
#define _GLOBAL_CONST _WEAK const
#endif
_GLOBAL_CONST unsigned long ARG_BAUD;
_GLOBAL_CONST unsigned long ARG_MISC;
_GLOBAL_CONST unsigned short frmERR_OK;
_GLOBAL_CONST unsigned long ARG_PVPOLLADR;
_GLOBAL_CONST unsigned short frmERR_MAXOPEN;
_GLOBAL_CONST unsigned short frmERR_NOINPUT;
_GLOBAL_CONST unsigned long ARG_TXPVPOLLADR;
_GLOBAL_CONST unsigned short frmERR_NOBUFFER;
_GLOBAL_CONST unsigned short frmERR_PA_DB_SB;
_GLOBAL_CONST unsigned long MISC_RECEIVE_ALL;
_GLOBAL_CONST unsigned short frmERR_NOTOPENED;
_GLOBAL_CONST unsigned short frmERR_INPUTERROR;
_GLOBAL_CONST unsigned short frmERR_NORESOURCES;
_GLOBAL_CONST unsigned long ARG_EVSEND_TASKEVENT;
_GLOBAL_CONST unsigned long ARG_EVSEND_TASKIDENT;
_GLOBAL_CONST unsigned short frmERR_INIT_IN_PROGRESS;
_GLOBAL_CONST unsigned short frmERR_IF_UNREACHABLE;
_GLOBAL_CONST unsigned short frmERR_INVALIDBUFFER;
_GLOBAL_CONST unsigned short frmERR_IOCTL_NOTVALID;
_GLOBAL_CONST unsigned short frmERR_MODEDESCRIPTION;
_GLOBAL_CONST unsigned short frmERR_TRANSMITOVERRUN;
_GLOBAL_CONST unsigned short frmERR_FUB_ENABLE_FALSE;
_GLOBAL_CONST unsigned short frmERR_DEVICEDESCRIPTION;
_GLOBAL_CONST unsigned short frmERR_IOCTL_NOTSUPPORTED;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct XOPENCONFIG
{ unsigned short idle;
unsigned short delimc;
unsigned char delim[2];
unsigned short tx_cnt;
unsigned short rx_cnt;
unsigned short tx_len;
unsigned short rx_len;
unsigned short argc;
unsigned long argv;
} XOPENCONFIG;
typedef struct FRM_mode
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long mode;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_mode_typ;
typedef struct FRM_ctrl
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned short ioctrl;
unsigned long inarg;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long outarg;
/* VAR (analog) */
plcstring internal[44];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_ctrl_typ;
typedef struct FRM_robuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_robuf_typ;
typedef struct FRM_gbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_gbuf_typ;
typedef struct FRM_rbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_rbuf_typ;
typedef struct FRM_close
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_close_typ;
typedef struct FRM_write
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_write_typ;
typedef struct FRM_writeAcknowledged
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_writeAcknowledged_typ;
typedef struct FRM_read
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_read_typ;
typedef struct FRM_xopen
{
/* VAR_INPUT (analog) */
unsigned long device;
unsigned long mode;
unsigned long config;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_xopen_typ;
/* Prototyping of functions and function blocks */
_BUR_PUBLIC void FRM_mode(struct FRM_mode* inst);
_BUR_PUBLIC void FRM_ctrl(struct FRM_ctrl* inst);
_BUR_PUBLIC void FRM_robuf(struct FRM_robuf* inst);
_BUR_PUBLIC void FRM_gbuf(struct FRM_gbuf* inst);
_BUR_PUBLIC void FRM_rbuf(struct FRM_rbuf* inst);
_BUR_PUBLIC void FRM_close(struct FRM_close* inst);
_BUR_PUBLIC void FRM_write(struct FRM_write* inst);
_BUR_PUBLIC void FRM_writeAcknowledged(struct FRM_writeAcknowledged* inst);
_BUR_PUBLIC void FRM_read(struct FRM_read* inst);
_BUR_PUBLIC void FRM_xopen(struct FRM_xopen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DVFRAME_ */

View File

@@ -0,0 +1,227 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _DVFRAME_
#define _DVFRAME_
#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 ARG_BAUD 0U
#define ARG_MISC 16U
#define frmERR_OK 0U
#define ARG_PVPOLLADR 15U
#define frmERR_MAXOPEN 8254U
#define frmERR_NOINPUT 60U
#define ARG_TXPVPOLLADR 17U
#define frmERR_NOBUFFER 8071U
#define frmERR_PA_DB_SB 8256U
#define MISC_RECEIVE_ALL 2U
#define frmERR_NOTOPENED 8251U
#define frmERR_INPUTERROR 8079U
#define frmERR_NORESOURCES 8258U
#define ARG_EVSEND_TASKEVENT 18U
#define ARG_EVSEND_TASKIDENT 14U
#define frmERR_INVALIDBUFFER 8072U
#define frmERR_IOCTL_NOTVALID 8073U
#define frmERR_MODEDESCRIPTION 8253U
#define frmERR_TRANSMITOVERRUN 8078U
#define frmERR_FUB_ENABLE_FALSE 65534U
#define frmERR_DEVICEDESCRIPTION 8252U
#define frmERR_IOCTL_NOTSUPPORTED 8257U
#else
_IEC_CONST unsigned long ARG_BAUD = 0U;
_IEC_CONST unsigned long ARG_MISC = 16U;
_IEC_CONST unsigned short frmERR_OK = 0U;
_IEC_CONST unsigned long ARG_PVPOLLADR = 15U;
_IEC_CONST unsigned short frmERR_MAXOPEN = 8254U;
_IEC_CONST unsigned short frmERR_NOINPUT = 60U;
_IEC_CONST unsigned long ARG_TXPVPOLLADR = 17U;
_IEC_CONST unsigned short frmERR_NOBUFFER = 8071U;
_IEC_CONST unsigned short frmERR_PA_DB_SB = 8256U;
_IEC_CONST unsigned long MISC_RECEIVE_ALL = 2U;
_IEC_CONST unsigned short frmERR_NOTOPENED = 8251U;
_IEC_CONST unsigned short frmERR_INPUTERROR = 8079U;
_IEC_CONST unsigned short frmERR_NORESOURCES = 8258U;
_IEC_CONST unsigned long ARG_EVSEND_TASKEVENT = 18U;
_IEC_CONST unsigned long ARG_EVSEND_TASKIDENT = 14U;
_IEC_CONST unsigned short frmERR_INVALIDBUFFER = 8072U;
_IEC_CONST unsigned short frmERR_IOCTL_NOTVALID = 8073U;
_IEC_CONST unsigned short frmERR_MODEDESCRIPTION = 8253U;
_IEC_CONST unsigned short frmERR_TRANSMITOVERRUN = 8078U;
_IEC_CONST unsigned short frmERR_FUB_ENABLE_FALSE = 65534U;
_IEC_CONST unsigned short frmERR_DEVICEDESCRIPTION = 8252U;
_IEC_CONST unsigned short frmERR_IOCTL_NOTSUPPORTED = 8257U;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct XOPENCONFIG
{ unsigned short idle;
unsigned short delimc;
unsigned char delim[2];
unsigned short tx_cnt;
unsigned short rx_cnt;
unsigned short tx_len;
unsigned short rx_len;
unsigned short argc;
unsigned long argv;
} XOPENCONFIG;
typedef struct FRM_mode
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long mode;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_mode_typ;
typedef struct FRM_ctrl
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned short ioctrl;
unsigned long inarg;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long outarg;
/* VAR (analog) */
plcstring internal[44];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_ctrl_typ;
typedef struct FRM_robuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_robuf_typ;
typedef struct FRM_gbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_gbuf_typ;
typedef struct FRM_rbuf
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_rbuf_typ;
typedef struct FRM_close
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_close_typ;
typedef struct FRM_write
{
/* VAR_INPUT (analog) */
unsigned long ident;
unsigned long buffer;
unsigned short buflng;
/* VAR_OUTPUT (analog) */
unsigned short status;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_write_typ;
typedef struct FRM_read
{
/* VAR_INPUT (analog) */
unsigned long ident;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long buffer;
unsigned short buflng;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_read_typ;
typedef struct FRM_xopen
{
/* VAR_INPUT (analog) */
unsigned long device;
unsigned long mode;
unsigned long config;
/* VAR_OUTPUT (analog) */
unsigned short status;
unsigned long ident;
/* VAR (analog) */
plcstring internal[28];
/* VAR_INPUT (digital) */
plcbit enable;
} FRM_xopen_typ;
/* Prototyping of functions and function blocks */
void FRM_mode(struct FRM_mode* inst);
void FRM_ctrl(struct FRM_ctrl* inst);
void FRM_robuf(struct FRM_robuf* inst);
void FRM_gbuf(struct FRM_gbuf* inst);
void FRM_rbuf(struct FRM_rbuf* inst);
void FRM_close(struct FRM_close* inst);
void FRM_write(struct FRM_write* inst);
void FRM_read(struct FRM_read* inst);
void FRM_xopen(struct FRM_xopen* inst);
#ifdef __cplusplus
};
#endif
#endif /* _DVFRAME_ */

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="The DVFrame library and the frame driver can be used to exchange data with external devices." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>dvframe.fun</File>
<File>dvframe.typ</File>
<File>dvframe.var</File>
</Files>
<Dependencies>
<Dependency ObjectName="runtime" />
</Dependencies>
</Library>

View File

@@ -0,0 +1,149 @@
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_mode (*modifies the values for the baud rate and asynchronous parameters*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
mode :UDINT; (*address of the string which configures the interface to be used*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_ctrl (*operates the DSR/DTR signals for modem capable interfaces*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
ioctrl :UINT; (*control selection*)
inarg :UDINT; (*input argument*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
outarg :UDINT; (*output argument*)
END_VAR
VAR
internal :STRING[43]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_robuf (*releases the send buffer manually*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
buffer :UDINT; (*send buffer address*)
buflng :UINT; (*send buffer length*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_gbuf (*requests an available send buffer*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
buffer :UDINT; (*send buffer address*)
buflng :UINT; (*send buffer length*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_rbuf (*releases the receive buffer*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
buffer :UDINT; (*receive buffer address*)
buflng :UINT; (*receive buffer length*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_close (*closes a previously opened serial interface*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_write (*enables the frame driver to send data to the send buffer*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
buffer :UDINT; (*send buffer address*)
buflng :UINT; (*send buffer length*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_writeAcknowledged (*enables the frame driver to send data to the send buffer*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
buffer :UDINT; (*send buffer address*)
buflng :UINT; (*send buffer length*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_read (*starts the receive process*)
VAR_INPUT
enable :BOOL; (*enables execution*)
ident :UDINT; (*driver ID for the interface (see FRM_xopen())*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
buffer :UDINT; (*receive buffer address*)
buflng :UINT; (*receive buffer length*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK FRM_xopen (*opens a serial interface for frame transfer*)
VAR_INPUT
enable :BOOL; (*enables execution*)
device :UDINT; (*pointer to a string which clearly describes the interface used*)
mode :UDINT; (*pointer to the string which configures the interface to be used*)
config :UDINT; (*address for a configuration structure can be entered at this point (optional entry)*)
END_VAR
VAR_OUTPUT
status :UINT; (*execution status: ERR_OK, ERR_FUB_ENABLE_FALSE, 0xXXXX = see help*)
ident :UDINT; (*driver ID for the interface (required for other functions in the DVFrame library)*)
END_VAR
VAR
internal :STRING[27]; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,14 @@
TYPE
XOPENCONFIG : STRUCT
idle : UINT ; (*maximum idle time between characters*)
delimc : UINT ; (*activate the frame delimiters, standard value : 0*)
delim : ARRAY[0..1] OF USINT ; (*frame delimiters, default value: 0,0*)
tx_cnt : UINT ; (*number of send buffers (maximum 8), default value: 2*)
rx_cnt : UINT ; (*number of receive buffers (maximum 8), default value: 2*)
tx_len : UINT ; (*send buffer length, default value: 256 bytes*)
rx_len : UINT ; (*receive buffer length, default value: 256 bytes*)
argc : UINT ; (*number of additional arguments in argv, default value: 0*)
argv : UDINT ; (*address for a UDINT field with additional arguments, default value: 0*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,27 @@
VAR CONSTANT
frmERR_IOCTL_NOTSUPPORTED : UINT := 8257; (*command not supported by driver (hardware)*)
frmERR_DEVICEDESCRIPTION : UINT := 8252; (*device not found*)
frmERR_FUB_ENABLE_FALSE : UINT := 65534;
frmERR_TRANSMITOVERRUN : UINT := 8078; (*send buffer waiting queue full*)
frmERR_MODEDESCRIPTION : UINT := 8253; (*syntax error in mode parameter string, or mode parameter not supported by the specified device*)
frmERR_IOCTL_NOTVALID : UINT := 8073; (*invalid I/O control code*)
frmERR_INVALIDBUFFER : UINT := 8072; (*invalid buffer rejected*)
frmERR_IF_UNREACHABLE : UINT := 8067; (*device is not available*)
frmERR_INIT_IN_PROGRESS : UINT := 8068; (*device is busy with xopen/mode*)
ARG_EVSEND_TASKIDENT : UDINT := 14;
ARG_EVSEND_TASKEVENT : UDINT := 18;
frmERR_NORESOURCES : UINT := 8258; (*required resource not available (memory, OS object, etc.)*)
frmERR_INPUTERROR : UINT := 8079; (*frame buffer with defective character*)
frmERR_NOTOPENED : UINT := 8251; (*device not open*)
MISC_RECEIVE_ALL : UDINT := 2;
frmERR_PA_DB_SB : UINT := 8256; (*/PA, /DB, /SB must always be specified together*)
frmERR_NOBUFFER : UINT := 8071; (*no buffer available in the send buffer manager*)
ARG_TXPVPOLLADR : UDINT := 17;
frmERR_NOINPUT : UINT := 60; (*no message received*)
frmERR_MAXOPEN : UINT := 8254; (*too many devices opened at once*)
ARG_PVPOLLADR : UDINT := 15;
frmERR_OK : UINT := 0;
ARG_MISC : UDINT := 16;
ARG_BAUD : UDINT := 0;
END_VAR

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,2 @@
/* 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,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="This library contains function interfaces for IEC 61131-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>
<File>operator.typ</File>
<File>operator.var</File>
</Files>
</Library>

View File

@@ -0,0 +1,224 @@
{REDUND_OK} FUNCTION SIZEOF : UDINT (*determines the size of a variable in bytes*)
VAR_INPUT
in :ANY; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION ADR : UDINT (*determines the address of a data point*)
VAR_INPUT
in :ANY; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION ADRINST : UDINT (*determines the address of a fub instance*)
END_FUNCTION
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION AND : ANY (*makes a bitwise AND relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION XOR : ANY (*makes a bitwise XOR relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION OR : ANY (*makes a bitwise OR relation for 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION NOT : ANY (*makes a bitwise inversion of variables*)
VAR_INPUT
IN :ANY; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION ADD : ANY (*adds 2 or more variables*)
VAR_INPUT
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION MUL : ANY_NUM (*multiplies 2 or more variables*)
VAR_INPUT
INx :ANY_NUM; (*input values*)
END_VAR
END_FUNCTION
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION MUX : ANY (*selects a value from several values*)
VAR_INPUT
K :SINT; (*selection variable*)
INx :ANY; (*input values*)
END_VAR
END_FUNCTION
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION ABS : ANY_NUM (*returns the absolute value of a number*)
VAR_INPUT
IN :ANY_NUM; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION SQRT : ANY_REAL (*returns the square root of a number*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION LN : ANY_REAL (*returns the result of a natural logarithm*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION LOG : ANY_REAL (*returns the result of a base 10 logarithm*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION EXP : ANY_REAL (*returns the result of a natural exponential function*)
VAR_INPUT
IN :ANY_REAL; (*input value*)
END_VAR
END_FUNCTION
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION EXPT : REAL (*raises one variable to the power of another*)
VAR_INPUT
IN1 :REAL; (*base*)
IN2 :ANY_NUM; (*exponent*)
END_VAR
END_FUNCTION
{REDUND_OK} 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,4 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,4 @@
VAR CONSTANT
END_VAR

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,489 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef _RUNTIME_
#define _RUNTIME_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
/* Constants */
#ifdef _REPLACE_CONST
#define IEC_DATATYPE_LINT 23U
#define IEC_DATATYPE_WSTRING 21U
#define IEC_DATATYPE_LWORD 20U
#define IEC_DATATYPE_DWORD 19U
#define IEC_DATATYPE_WORD 18U
#define IEC_DATATYPE_BYTE 17U
#define IEC_DATATYPE_TIME_OF_DAY 16U
#define IEC_DATATYPE_LREAL 14U
#define IEC_DATATYPE_DATE 13U
#define IEC_DATATYPE_TIME 12U
#define IEC_DATATYPE_DATE_AND_TIME 11U
#define IEC_DATATYPE_ULINT 10U
#define IEC_DATATYPE_STRING 9U
#define IEC_DATATYPE_REAL 8U
#define IEC_DATATYPE_UDINT 7U
#define IEC_DATATYPE_UINT 6U
#define IEC_DATATYPE_USINT 5U
#define IEC_DATATYPE_DINT 4U
#define IEC_DATATYPE_INT 3U
#define IEC_DATATYPE_SINT 2U
#define IEC_DATATYPE_BOOL 1U
#define ERR_FB_NOT_IMPLEMENTED (-1070585592)
#define ERR_FUB_REDUNDANT 35688U
#define ERR_FUB_BUSY 65535U
#define ERR_FUB_ENABLE_FALSE 65534U
#define ERR_NOTIMPLEMENTED 9999U
#define ERR_OK 0U
#else
#ifndef _GLOBAL_CONST
#define _GLOBAL_CONST _WEAK const
#endif
_GLOBAL_CONST unsigned short IEC_DATATYPE_LINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_WSTRING;
_GLOBAL_CONST unsigned short IEC_DATATYPE_LWORD;
_GLOBAL_CONST unsigned short IEC_DATATYPE_DWORD;
_GLOBAL_CONST unsigned short IEC_DATATYPE_WORD;
_GLOBAL_CONST unsigned short IEC_DATATYPE_BYTE;
_GLOBAL_CONST unsigned short IEC_DATATYPE_TIME_OF_DAY;
_GLOBAL_CONST unsigned short IEC_DATATYPE_LREAL;
_GLOBAL_CONST unsigned short IEC_DATATYPE_DATE;
_GLOBAL_CONST unsigned short IEC_DATATYPE_TIME;
_GLOBAL_CONST unsigned short IEC_DATATYPE_DATE_AND_TIME;
_GLOBAL_CONST unsigned short IEC_DATATYPE_ULINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_STRING;
_GLOBAL_CONST unsigned short IEC_DATATYPE_REAL;
_GLOBAL_CONST unsigned short IEC_DATATYPE_UDINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_UINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_USINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_DINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_INT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_SINT;
_GLOBAL_CONST unsigned short IEC_DATATYPE_BOOL;
_GLOBAL_CONST signed long ERR_FB_NOT_IMPLEMENTED;
_GLOBAL_CONST unsigned short ERR_FUB_REDUNDANT;
_GLOBAL_CONST unsigned short ERR_FUB_BUSY;
_GLOBAL_CONST unsigned short ERR_FUB_ENABLE_FALSE;
_GLOBAL_CONST unsigned short ERR_NOTIMPLEMENTED;
_GLOBAL_CONST unsigned short ERR_OK;
#endif
/* Datatypes and datatypes of function blocks */
typedef struct SFCActionControl
{
/* VAR_INPUT (analog) */
plctime T;
/* VAR (analog) */
unsigned char S_FF_SET;
unsigned char S_FF_R1;
unsigned char S_FF_Q;
unsigned char dummy1;
plctime L_TMR_PT;
plctime L_TMR_ET;
plctime L_TMR_STAR;
unsigned char L_TMR_IN;
unsigned char L_TMR_Q;
unsigned char L_TMR_M;
unsigned char dummy2;
plctime D_TMR_PT;
plctime D_TMR_ET;
plctime D_TMR_STAR;
unsigned char D_TMR_IN;
unsigned char D_TMR_Q;
unsigned char D_TMR_M;
unsigned char dummy3;
unsigned char P_TRIG_CLK;
unsigned char P_TRIG_Q;
unsigned char P_TRIG_M;
unsigned char dummy4;
plctime SD_TMR_PT;
plctime SD_TMR_ET;
plctime SD_TMR_STA;
unsigned char SD_TMR_IN;
unsigned char SD_TMR_Q;
unsigned char SD_TMR_M;
unsigned char dummy5;
unsigned char SD_FF_SET;
unsigned char SD_FF_R1;
unsigned char SD_FF_Q;
unsigned char DS_FF_SET;
unsigned char DS_FF_R1;
unsigned char DS_FF_Q;
plctime DS_TMR_PT;
plctime DS_TMR_ET;
plctime DS_TMR_STA;
unsigned char DS_TMR_IN;
unsigned char DS_TMR_Q;
unsigned char DS_TMR_M;
unsigned char dummy6;
unsigned char SL_FF_SET;
unsigned char SL_FF_R1;
unsigned char SL_FF_Q;
unsigned char dummy7;
plctime SL_TMR_PT;
plctime SL_TMR_ET;
plctime SL_TMR_STA;
unsigned char SL_TMR_IN;
unsigned char SL_TMR_Q;
unsigned char SL_TMR_M;
unsigned char dummy8;
/* VAR_INPUT (digital) */
plcbit N;
plcbit R0;
plcbit S0;
plcbit L;
plcbit D;
plcbit P;
plcbit SD;
plcbit DS;
plcbit SL;
/* VAR_OUTPUT (digital) */
plcbit Q;
} SFCActionControl_typ;
typedef struct SFCActionType
{ plcbit x;
plcbit _x;
plctime t;
plctime _t;
struct SFCActionControl AC;
} SFCActionType;
typedef struct SFCAC2
{
/* VAR_INPUT (analog) */
plctime T;
/* VAR (analog) */
unsigned char S_FF_SET;
unsigned char S_FF_R1;
unsigned char S_FF_Q;
plctime L_TMR_PT;
plctime L_TMR_ET;
plctime L_TMR_STAR;
unsigned char L_TMR_IN;
unsigned char L_TMR_Q;
unsigned char L_TMR_M;
plctime D_TMR_PT;
plctime D_TMR_ET;
plctime D_TMR_STAR;
unsigned char D_TMR_IN;
unsigned char D_TMR_Q;
unsigned char D_TMR_M;
plctime SD_TMR_PT;
plctime SD_TMR_ET;
plctime SD_TMR_STA;
unsigned char SD_TMR_IN;
unsigned char SD_TMR_Q;
unsigned char SD_TMR_M;
unsigned char SD_FF_SET;
unsigned char SD_FF_R1;
unsigned char SD_FF_Q1;
unsigned char DS_FF_SET;
unsigned char DS_FF_R1;
unsigned char DS_FF_Q1;
plctime DS_TMR_PT;
plctime DS_TMR_ET;
plctime DS_TMR_STA;
unsigned char DS_TMR_IN;
unsigned char DS_TMR_Q;
unsigned char DS_TMR_M;
unsigned char SL_FF_SET;
unsigned char SL_FF_R1;
unsigned char SL_FF_Q;
plctime SL_TMR_PT;
plctime SL_TMR_ET;
plctime SL_TMR_STA;
unsigned char SL_TMR_IN;
unsigned char SL_TMR_Q;
unsigned char SL_TMR_M;
unsigned char P_TRIG_Q;
unsigned char P_TRIG_M;
unsigned char Q_TRIG_Q;
unsigned char Q_TRIG_M;
unsigned char P1_TRIG_Q;
unsigned char P1_TRIG_M;
unsigned char P0_TRIG_Q;
unsigned char P0_TRIG_M;
/* VAR_INPUT (digital) */
plcbit N;
plcbit R0;
plcbit S0;
plcbit L;
plcbit D;
plcbit P;
plcbit P1;
plcbit P0;
plcbit SD;
plcbit DS;
plcbit SL;
/* VAR_OUTPUT (digital) */
plcbit Q;
plcbit A;
} SFCAC2_typ;
typedef struct SFCActionType2
{ plcbit x;
plcbit _x;
struct SFCAC2 AC;
} SFCActionType2;
typedef struct SFCActionCType
{ plcbit x;
plcbit _x;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
struct SFCActionControl AC;
} SFCActionCType;
typedef struct SFCActionCType2
{ plcbit x;
plcbit _x;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
struct SFCAC2 AC;
} SFCActionCType2;
typedef struct TimerType
{ double ptime;
double etime;
double start;
unsigned char in;
unsigned char q;
} TimerType;
typedef struct SFCAC3
{
/* VAR_INPUT (analog) */
double T;
double T_ACT;
/* VAR (analog) */
struct TimerType L_TMR;
struct TimerType D_TMR;
struct TimerType SD_TMR;
struct TimerType DS_TMR;
struct TimerType SL_TMR;
unsigned char S_FF_Q1;
unsigned char SD_FF_Q1;
unsigned char DS_FF_Q1;
unsigned char SL_FF_Q1;
unsigned char P_R_TRIG_Q;
unsigned char P_R_TRIG_M;
unsigned char Q_F_TRIG_Q;
unsigned char Q_F_TRIG_M;
unsigned char P1_R_TRIG_Q;
unsigned char P1_R_TRIG_M;
unsigned char P0_F_TRIG_Q;
unsigned char P0_F_TRIG_M;
/* VAR_INPUT (digital) */
plcbit N;
plcbit R0;
plcbit S0;
plcbit L;
plcbit D;
plcbit P;
plcbit P1;
plcbit P0;
plcbit SD;
plcbit DS;
plcbit SL;
plcbit PAUSE;
/* VAR_OUTPUT (digital) */
plcbit Q;
plcbit A;
} SFCAC3_typ;
typedef struct SFCActionCType3
{ double t;
double _t;
double tp;
plcbit x;
plcbit _x;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
struct SFCAC3 AC;
} SFCActionCType3;
typedef struct SFCStepType
{ plcbit x;
plctime t;
plcbit _x;
plctime _t;
} SFCStepType;
typedef struct SFCStepCType
{ plctime t;
plctime _t;
unsigned long inactive_actions;
unsigned long _inactive_actions;
unsigned long error_actions;
plcbit x;
plcbit _x;
plcbit x_activate;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
plcbit tip;
plcbit tip_disable_duration;
plcbit tip_disable_action;
} SFCStepCType;
typedef struct SFCStepCType3
{ double t;
double _t;
double tp;
unsigned long inactive_actions;
unsigned long _inactive_actions;
unsigned long error_actions;
plcbit x;
plcbit _x;
plcbit x_activate;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
plcbit tip;
plcbit tip_disable_duration;
plcbit tip_disable_action;
} SFCStepCType3;
typedef struct SFCSimpleStepCType
{ plctime t;
plctime _t;
plcbit x;
plcbit _x;
plcbit x_activate;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
plcbit tip;
plcbit tip_disable_duration;
plcbit tip_disable_action;
} SFCSimpleStepCType;
typedef struct SFCSimpleStepCType3
{ double t;
double _t;
double tp;
plcbit x;
plcbit _x;
plcbit x_activate;
plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
plcbit error;
plcbit tip;
plcbit tip_disable_duration;
plcbit tip_disable_action;
} SFCSimpleStepCType3;
typedef struct SFCTransitionCType
{ plcbit force;
plcbit _force;
plcbit active;
plcbit _active;
} SFCTransitionCType;
typedef struct ArFBStateInternalType
{ unsigned long ExecuteRef;
unsigned long BusyRef;
unsigned long DoneRef;
unsigned long ErrorRef;
unsigned long ActiveRef;
unsigned long StatusRef;
unsigned long FBCyclic;
unsigned long AsyfumaState;
unsigned long FBResetOut;
unsigned long Argument;
unsigned long State;
plcbit ExecutePrev;
} ArFBStateInternalType;
typedef struct ArFBAsyFuMaInternalType
{ unsigned short State;
signed long Result;
} ArFBAsyFuMaInternalType;
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 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 */
_BUR_PUBLIC void r_trig(struct r_trig* inst);
_BUR_PUBLIC void f_trig(struct f_trig* inst);
_BUR_PUBLIC void rf_trig(struct rf_trig* inst);
_BUR_PUBLIC void SFCActionControl(struct SFCActionControl* inst);
_BUR_PUBLIC void SFCAC2(struct SFCAC2* inst);
_BUR_PUBLIC void SFCAC3(struct SFCAC3* inst);
_BUR_PUBLIC plctime GetTime(void);
_BUR_PUBLIC double RealTan(double x);
_BUR_PUBLIC double RealAtan(double x);
_BUR_PUBLIC double RealAsin(double x);
_BUR_PUBLIC double RealAcos(double x);
_BUR_PUBLIC double RealExp(double x);
_BUR_PUBLIC double RealLn(double x);
_BUR_PUBLIC double RealLog(double x);
_BUR_PUBLIC double RealExpt(double x, double y);
_BUR_PUBLIC double RealAbs(double x);
_BUR_PUBLIC double RealSin(double x);
_BUR_PUBLIC double RealCos(double x);
_BUR_PUBLIC double RealSqrt(double x);
#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,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="This library contains runtime functions for IEC tasks." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>runtime.fun</File>
<File>runtime.typ</File>
<File>runtime.var</File>
</Files>
</Library>

View File

@@ -0,0 +1,282 @@
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} FUNCTION_BLOCK SFCAC2 (*for internal use only - do not use this function in user programs*)
VAR_INPUT
N : {REDUND_UNREPLICABLE} BOOL;
R0 : {REDUND_UNREPLICABLE} BOOL;
S0 : {REDUND_UNREPLICABLE} BOOL;
L : {REDUND_UNREPLICABLE} BOOL;
D : {REDUND_UNREPLICABLE} BOOL;
P : {REDUND_UNREPLICABLE} BOOL;
P1 : {REDUND_UNREPLICABLE} BOOL;
P0 : {REDUND_UNREPLICABLE} BOOL;
SD : {REDUND_UNREPLICABLE} BOOL;
DS : {REDUND_UNREPLICABLE} BOOL;
SL : {REDUND_UNREPLICABLE} 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
{REDUND_OK} FUNCTION RealTan : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealAtan : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealAsin : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealAcos : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealExp : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealLn : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealLog : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealExpt : LREAL
VAR_INPUT
x :LREAL;
y :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealAbs : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealSin : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealCos : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION RealSqrt : LREAL
VAR_INPUT
x :LREAL;
END_VAR
END_FUNCTION
{REDUND_OK} FUNCTION_BLOCK SFCAC3 (*for internal use only - do not use this function in user programs*)
VAR_INPUT
N : {REDUND_UNREPLICABLE} BOOL;
R0 : {REDUND_UNREPLICABLE} BOOL;
S0 : {REDUND_UNREPLICABLE} BOOL;
L : {REDUND_UNREPLICABLE} BOOL;
D : {REDUND_UNREPLICABLE} BOOL;
P : {REDUND_UNREPLICABLE} BOOL;
P1 : {REDUND_UNREPLICABLE} BOOL;
P0 : {REDUND_UNREPLICABLE} BOOL;
SD : {REDUND_UNREPLICABLE} BOOL;
DS : {REDUND_UNREPLICABLE} BOOL;
SL : {REDUND_UNREPLICABLE} BOOL;
T :LREAL;
T_ACT : {REDUND_UNREPLICABLE} LREAL;
PAUSE : {REDUND_UNREPLICABLE} BOOL;
END_VAR
VAR_OUTPUT
Q : {REDUND_UNREPLICABLE} BOOL;
A :BOOL;
END_VAR
VAR
L_TMR :TimerType;
D_TMR :TimerType;
SD_TMR :TimerType;
DS_TMR :TimerType;
SL_TMR :TimerType;
S_FF_Q1 :USINT;
SD_FF_Q1 :USINT;
DS_FF_Q1 :USINT;
SL_FF_Q1 :USINT;
P_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
P_R_TRIG_M :USINT;
Q_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
Q_F_TRIG_M :USINT;
P1_R_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
P1_R_TRIG_M :USINT;
P0_F_TRIG_Q : {REDUND_UNREPLICABLE} USINT;
P0_F_TRIG_M :USINT;
END_VAR
END_FUNCTION_BLOCK

View File

@@ -0,0 +1,156 @@
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;
error : BOOL;
AC : SFCActionControl;
END_STRUCT;
SFCActionCType2 : STRUCT (*internal use*)
x : BOOL;
_x : BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
AC : SFCAC2;
END_STRUCT;
SFCActionCType3 : STRUCT (*internal use*)
t : LREAL;
_t : LREAL;
tp : LREAL;
x : BOOL;
_x : BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
AC : SFCAC3;
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;
error_actions : UDINT;
x : BOOL;
_x : BOOL;
x_activate : BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
tip : BOOL;
tip_disable_duration: BOOL;
tip_disable_action : BOOL;
END_STRUCT;
SFCStepCType3 : STRUCT (*internal use*)
t : LREAL;
_t : LREAL;
tp : LREAL;
inactive_actions : UDINT;
_inactive_actions : UDINT;
error_actions : UDINT;
x : BOOL;
_x : BOOL;
x_activate : {REDUND_UNREPLICABLE} BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
tip : BOOL;
tip_disable_duration : BOOL;
tip_disable_action : BOOL;
END_STRUCT;
SFCSimpleStepCType : STRUCT (*internal use*)
t : TIME;
_t : TIME;
x : BOOL;
_x : BOOL;
x_activate : BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
tip : BOOL;
tip_disable_duration : BOOL;
tip_disable_action : BOOL;
END_STRUCT;
SFCSimpleStepCType3 : STRUCT (*internal use*)
t : LREAL;
_t : LREAL;
tp : LREAL;
x : BOOL;
_x : BOOL;
x_activate : {REDUND_UNREPLICABLE} BOOL;
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
error : BOOL;
tip : BOOL;
tip_disable_duration : BOOL;
tip_disable_action : BOOL;
END_STRUCT;
SFCTransitionCType : STRUCT (*internal use*)
force : BOOL;
_force : BOOL;
active : BOOL;
_active : BOOL;
END_STRUCT;
TimerType : STRUCT (*internal use*)
ptime : LREAL;
etime : LREAL;
start : LREAL;
in : USINT;
q : USINT;
END_STRUCT;
ArFBStateInternalType : STRUCT (*fb state machine internal context*)
ExecuteRef : UDINT;
BusyRef : UDINT;
DoneRef : UDINT;
ErrorRef : UDINT;
ActiveRef : UDINT;
StatusRef : UDINT;
FBCyclic : UDINT;
AsyfumaState : UDINT;
FBResetOut : UDINT;
Argument : UDINT;
State : UDINT;
ExecutePrev : BOOL;
END_STRUCT;
ArFBAsyFuMaInternalType : STRUCT (*asynchronous function manager internal context*)
State : UINT;
Result : DINT;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,35 @@
(*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*)
ERR_FUB_REDUNDANT : UINT := 35688; (*This FUB can not be used on the standby CPU*)
ERR_FB_NOT_IMPLEMENTED: DINT := -1070585592;(*function or function block not implemented for the target system*)
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,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,267 @@
/* Automation Studio generated header file */
/* Do not edit ! */
#ifndef STANDARD_H_
#define STANDARD_H_
#ifdef __cplusplus
extern "C"
{
#endif
#include <bur/plctypes.h>
#ifndef _BUR_PUBLIC
#define _BUR_PUBLIC
#endif
#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 */
_BUR_PUBLIC void TP_10ms(TP_10ms_typ* inst);
_BUR_PUBLIC void TOF_10ms(TOF_10ms_typ* inst);
_BUR_PUBLIC void TON_10ms(TON_10ms_typ* inst);
_BUR_PUBLIC void TP(TP_typ* inst);
_BUR_PUBLIC void TOF(TOF_typ* inst);
_BUR_PUBLIC void TON(TON_typ* inst);
_BUR_PUBLIC void SEMA(SEMA_typ* inst);
_BUR_PUBLIC void RS(RS_typ* inst);
_BUR_PUBLIC void SR(SR_typ* inst);
_BUR_PUBLIC void R_TRIG(R_TRIG_typ* inst);
_BUR_PUBLIC void F_TRIG(F_TRIG_typ* inst);
_BUR_PUBLIC void CTU(CTU_typ* inst);
_BUR_PUBLIC void CTD(CTD_typ* inst);
_BUR_PUBLIC void CTUD(CTUD_typ* inst);
_BUR_PUBLIC 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,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Library SubType="binary" Description="This library contains standard function blocks and functions for IEC 61131-3." xmlns="http://br-automation.co.at/AS/Library">
<Files>
<File>standard.fun</File>
<File>standard.typ</File>
<File>standard.var</File>
</Files>
</Library>

View File

@@ -0,0 +1,253 @@
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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 : {REDUND_UNREPLICABLE} UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_OK} 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 : {REDUND_UNREPLICABLE} UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_OK} 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 : {REDUND_UNREPLICABLE} UDINT; (*internal variable*)
END_VAR
END_FUNCTION_BLOCK
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} 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
{REDUND_OK} {REDUND_UNREPLICABLE} FUNCTION LEN : INT (*calculates the length of a string*)
VAR_INPUT
IN :STRING[32767]; (*input string*)
END_VAR
END_FUNCTION
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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
{REDUND_OK} {REDUND_UNREPLICABLE} 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,4 @@
TYPE
END_TYPE

View File

@@ -0,0 +1,4 @@
VAR CONSTANT
END_VAR

View File

@@ -0,0 +1,33 @@
FUNCTION ASCtoUDINT
//Dezimalversion
ASCtoUDINT := 0;
udNextAdr := udInNextAdr;
sStart := 0;
sEnd := sInLen;
sStep := 1;
FOR usi := sStart TO sEnd BY sStep DO
brsmemcpy (ADR (usChar), udNextAdr + usi, 1);
CASE usChar OF
48:
ASCtoUDINT := ASCtoUDINT * 10 + 0;
49:
ASCtoUDINT := ASCtoUDINT * 10 + 1;
50:
ASCtoUDINT := ASCtoUDINT * 10 + 2;
51:
ASCtoUDINT := ASCtoUDINT * 10 + 3;
52:
ASCtoUDINT := ASCtoUDINT * 10 + 4;
53:
ASCtoUDINT := ASCtoUDINT * 10 + 5;
54:
ASCtoUDINT := ASCtoUDINT * 10 + 6;
55:
ASCtoUDINT := ASCtoUDINT * 10 + 7;
56:
ASCtoUDINT := ASCtoUDINT * 10 + 8;
57:
ASCtoUDINT := ASCtoUDINT * 10 + 9;
END_CASE
END_FOR
END_FUNCTION

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Init code">Init.st</File>
<File Description="Implementation code">RS232.st</File>
<File Description="Local variables" Private="true">RS232.var</File>
<File Description="Local data types" Private="true">RS232.typ</File>
<File Description="Local Funntions" Private="true">RS232.fun</File>
<File Description="Convert ASCII Value to UDINT (DEZIMAL)">ASCtoUDINT.st</File>
<File Description="Local variables" Private="true">IOs.var</File>
</Files>
</Program>

View File

@@ -0,0 +1 @@
(*//-----------------------------------------------------------------------------------------------------*)

View File

@@ -0,0 +1,11 @@
PROGRAM _INIT
strDevice := 'IF1';
FUBs.FrameXOpen1.device :=ADR (strDevice);
FUBs.FrameXOpen1.mode := ADR ('PHY=RS232 /PA=N /DB=8 /SB=1 /BD=57600');
FUBs.FrameWrite1.enable := 0;
FUBs.FrameReleaseBuffer1.enable := 0;
FUBs.FrameXOpen1.enable := 0;
bInit := TRUE;
END_PROGRAM

View File

@@ -0,0 +1,15 @@
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
VAR_INPUT
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
sInLen : SINT;
END_VAR
VAR
udNextAdr : UDINT;
usi : SINT;
sStart : SINT;
sEnd : SINT;
sStep : SINT;
usChar : USINT;
END_VAR
END_FUNCTION

View File

@@ -0,0 +1,122 @@
(********************************************************************
* Program: RS232
* File: RS232.st
* Author: michi
********************************************************************
********************************************************************)
PROGRAM _CYCLIC
IF bInit THEN
bInit := FALSE;
END_IF
//Schrittkette
CASE enStepRS232 OF
//Init
//---------------------------
enRS232Step_INIT:
enStepRS232 := enRS232Step_DEVOPEN;
//Open Serial Device
//---------------------------
enRS232Step_DEVOPEN:
// initialize open structure */
FUBs.FrameXOpen1.config := 0;
FUBs.FrameXOpen1.enable := TRUE;
IF (FUBs.FrameXOpen1.status = frmERR_OK) THEN
FUBs.FrameWrite1.ident := FUBs.FrameXOpen1.ident;
FUBs.FrameRead1.ident := FUBs.FrameXOpen1.ident;
FUBs.FrameReleaseBuffer1.ident := FUBs.FrameXOpen1.ident;
FUBs.FrameXOpen1.enable := 0;
enStepRS232 := enRS232Step_READY;
END_IF
//READY
//---------------------------
enRS232Step_READY:
FUBs.FrameRead1.enable := TRUE;
IF bLEDOut THEN
//brsmemset (ADR (strWriteData), 0, SIZEOF (strWriteData));
brsstrcpy (ADR (strWriteData), ADR ('CB')); //Command Blackuot LEDs aus
FUBs.FrameWrite1.buffer := ADR (strWriteData);
FUBs.FrameWrite1.buflng := UDINT_TO_UINT (brsstrlen (ADR (strWriteData)));
FUBs.FrameWrite1.enable := TRUE;
bLEDOut := FALSE;
ELSIF bLEDCmd THEN
brsstrcpy (ADR (strWriteData), ADR ('c001')); //ERste LED
FOR usi:= 0 TO MAX_CONV_POS - 50 DO //0 wg. MOD
usTemp := (usi + gLEDState.usWritePos) MOD MAX_CONV_POS;
CASE gLEDState.usSegState[usTemp + 1] OF
LED_STATE_NO_PART://Kein Teil
brsstrcat (ADR (strWriteData), ADR ('v000v000v000'));
LED_STATE_NEW_PART://Neues Teil noch Unbewertet
brsstrcat (ADR (strWriteData), ADR ('v000v000v010'));
LED_STATE_NOT_INSPECTED://Teil nicht inspiert
brsstrcat (ADR (strWriteData), ADR ('v010v010v000'));
LED_STATE_PART_NOK://NIO Teil
brsstrcat (ADR (strWriteData), ADR ('v010v000v000'));
LED_STATE_PART_OK://IO Teil
brsstrcat (ADR (strWriteData), ADR ('v000v010v000'));
END_CASE
END_FOR
gLEDState.usSegState[usTemp + 1] := 0;// Letztes Segment l<EFBFBD>schen
FUBs.FrameWrite1.buffer := ADR (strWriteData);
FUBs.FrameWrite1.buflng := UDINT_TO_UINT (brsstrlen (ADR (strWriteData)));
FUBs.FrameWrite1.enable := TRUE;
bLEDCmd := FALSE;
END_IF
IF (FUBs.FrameRead1.status = frmERR_OK) THEN
pReadBuffer := FUBs.FrameRead1.buffer; // get adress OF read buffer */
uiReadBufferLength := FUBs.FrameRead1.buflng; // get length OF read buffer */
brsmemset (ADR (strReadData), 0, SIZEOF (strReadData));
brsmemcpy (ADR (strReadData), pReadBuffer, uiReadBufferLength); // copy read data into array */
// initialize release buffer structure */m
FUBs.FrameReleaseBuffer1.enable := TRUE;
FUBs.FrameReleaseBuffer1.buffer := pReadBuffer;
FUBs.FrameReleaseBuffer1.buflng := uiReadBufferLength;
END_IF
END_CASE
IF gLEDState.bNextPos OR (VCTestMode.bCommand AND EDGEPOS (gBlinker.bBlink0_1)) THEN
gLEDState.usWritePos := (gLEDState.usWritePos -1);
IF gLEDState.usWritePos > MAX_CONV_POS THEN
gLEDState.usWritePos := MAX_CONV_POS;
END_IF
IF VCTestMode.bCommand THEN
CASE (gLEDState.usWritePos MOD 25) OF
0:
gLEDState.usSegState[gLEDState.usWritePos] := LED_STATE_NO_PART;
1:
gLEDState.usSegState[gLEDState.usWritePos] := LED_STATE_NEW_PART;
2:
gLEDState.usSegState[gLEDState.usWritePos] := LED_STATE_NOT_INSPECTED;
3:
gLEDState.usSegState[gLEDState.usWritePos] := LED_STATE_PART_OK;
4:
gLEDState.usSegState[gLEDState.usWritePos] := LED_STATE_PART_NOK;
END_CASE
END_IF
gLEDState.bNextPos := FALSE;
bLEDCmd := TRUE;
END_IF
//Call FUBs
FUBs.FrameWrite1 ();
IF FUBs.FrameWrite1.status = 0 THEN
FUBs.FrameWrite1.enable := FALSE;
END_IF
FUBs.FrameRead1 ();
FUBs.FrameXOpen1 ();
FUBs.FrameReleaseBuffer1 ();
IF FUBs.FrameReleaseBuffer1.status = 0 THEN
FUBs.FrameReleaseBuffer1.enable := FALSE;
END_IF
END_PROGRAM
PROGRAM _EXIT
END_PROGRAM

View File

@@ -0,0 +1,16 @@
TYPE
typ_enStepRS232 :
( (*Schritte TM*)
enRS232Step_INIT, (*Init*)
enRS232Step_DEVOPEN, (*Open Device*)
enRS232Step_READY (*READ / Write from TS*)
);
typ_FUBs : STRUCT (*Funktionsblocks*)
TOF_Delay : TOF;
FrameWrite1 : FRM_write;
FrameRead1 : FRM_read;
FrameReleaseBuffer1 : {REDUND_UNREPLICABLE} FRM_rbuf;
FrameXOpen1 : {REDUND_UNREPLICABLE} FRM_xopen;
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,29 @@
(*//---------------------------------------------*)
(*Konstanten*)
(*//---------------------------------------------*)
VAR CONSTANT
usF : USINT := 70; (*'F'*)
usMinus : USINT := 16#2D; (*'-'*)
usCR : USINT := 16#0d; (*<CR>*)
END_VAR
(*//---------------------------------------------*)
VAR
bInit : BOOL;
bLEDOut : BOOL;
bLEDCmd : BOOL;
usi : USINT;
usTemp : USINT;
uiReadBufferLength : UINT;
pReadBuffer : UDINT;
strDevice : STRING[80];
strWriteData : {REDUND_UNREPLICABLE} STRING[1850];
strReadData : {REDUND_UNREPLICABLE} STRING[1850];
VCTestMode : gtyp_VCButton;
END_VAR
(*//---------------------------------------------*)
(*Strukturen*)
(*//---------------------------------------------*)
VAR
enStepRS232 : typ_enStepRS232;
FUBs : typ_FUBs;
END_VAR

121
Logical/Linectrl/Global.typ Normal file
View File

@@ -0,0 +1,121 @@
TYPE
gtyp_RecipeCamSegment : STRUCT (*Beleuchtungsschritt Schrittdauer (Vorlaufzeit - Blitzdauer - Nachlaufzeit)*)
udCamMatrix : ARRAY[1..MAX_REC_SEG_SUBSTEP]OF UDINT; (*Bitarray - Kamera zum Triggern*)
bFlashLamp : ARRAY[1..MAX_REC_SEG_SUBSTEP]OF UDINT; (*Bitarray - Lampen zum Blitzen*)
udFlashtime : ARRAY[1..MAX_REC_SEG_SUBSTEP]OF UDINT; (*Beleuchtungszeit [<5B>s]*)
END_STRUCT;
gtyp_Recipe : STRUCT (*Rezept*)
uiPartID : UINT; (*Bauteil ID (zum Abgleich mit Linie)*)
strPartID : STRING[20]; (*Bauteilbezeichnung*)
usFillByte : USINT; (*Wg Bytealignment*)
udSegmentlength : {REDUND_UNREPLICABLE} UDINT; (*Segmentl<74>nge Band [mm]*)
udLeadtimeTriggerCam : UDINT; (*Vorlaufzeit Blitz -> Kameratrigger [<5B>s]*)
udPostDelayFlash : UDINT; (*Nachlaufzeit Blitz -> Bevor neuer Substep gestartet wird [<5B>s]*)
CamSegment : ARRAY[1..MAX_REC_SEGS]OF gtyp_RecipeCamSegment; (*Beleuchtungssegment - mit MAX_REC_SEG_SUBSTEP Substeps*)
END_STRUCT;
gtyp_Parameter : STRUCT (*Maschinenparameter*)
diIncPerRev : DINT := 65536; (*Inc / Rev - Geber*)
usNrOfCams : USINT := 1; (*Anzahl montierter Kameras*)
usNrOfLights : USINT := 1; (*Anzahl montierter Lampen*)
rPosPerRev : LREAL := 55; (*L<>nge / Umdrehung [mm]*)
rOffsetLED : LREAL := 1000.0; (*Offset LED Band*)
rOffsetLightbarrier : LREAL := 700; (*Offset Lichtvorhang zur ersten Cam Reihe*)
uiLineID : UINT; (*Seriennummer Anlage wg. Spez. Softwareanpassungen*)
END_STRUCT;
gtyp_LEDState : STRUCT (*LED Status Band*)
bNextPos : BOOL; (*Trigger n<>chste Position*)
usWritePos : USINT;
usSegState : ARRAY[1..MAX_CONV_POS]OF USINT; (*Segmentstatus Segmentl<74>nge 100mm*)
END_STRUCT;
END_TYPE
(*Schnittstelle Liniensteuerung*)
TYPE
gtyp_LineCtrl : STRUCT (*Interface Liniensteuerung*)
ToLineCtrl : gtyp_ToLineCtrl;
FromLineCtrl : gtyp_FromLineCtrl;
END_STRUCT;
gtyp_ToLineCtrl : STRUCT (*Daten an Liniensteuerung*)
bLifebeat : BOOL; (*Lifebeat (Toggle bit)*)
bReadyToInspect : BOOL; (*Bereit f<>r Inspektion*)
bNoInspectionMirror : BOOL; (*Keine Inspektion - Zelle abgew<65>hlt*)
bAlarmSum : BOOL; (*Sammelst<73>rung*)
Alarms : gtyp_ToLineCtrlAlarms;
END_STRUCT;
gtyp_FromLineCtrl : STRUCT (*Daten vom Liniensteuerung*)
bLifebeat : BOOL; (*Lifebeat*)
bAutomaticmode : BOOL; (*Automatikmodus*)
bActiveToolchange : BOOL; (*Werkzeugwechsel Aktiv*)
bConveyorCycleMode : BOOL; (*Band im Taktbetrieb*)
bConveyorContinuosMode : BOOL; (*Bank im Dauerbetrieb*)
bConveyorRunning : BOOL; (*Band l<>uft*)
bNoInspection : BOOL; (*Zelle abgew<65>hlt*)
bAcknowledgeErrors : BOOL; (*St<53>rungen quittieren*)
bNewPartPlaced : BOOL; (*Neues Bauteil abgelegt (-> LS aktiv)*)
udPartID : UDINT; (*Bauteil ID (zum Abgleich mit Linie)*)
strPartID : STRING[20]; (*Bauteilbezeichnung*)
END_STRUCT;
gtyp_ToLineCtrlAlarms : STRUCT (*Eing<6E>nge Zustands<64>berwachnung*)
bPSMain1VoltageAlarm : BOOL; (*24V Haupt-Versorgung 1 Spannung Ok*)
bPSMain1Overload : BOOL; (*24V Haupt-Versorgung 1 <20>berlast (>90%)*)
bPSMain2VoltageAlarm : BOOL; (*24V Haupt-Versorgung 2 Spannung Ok*)
bPSMain2Overload : BOOL; (*24V Haupt-Versorgung 2 <20>berlast (>90%)*)
bPSMainFuseSumAlarm : BOOL; (*24V Haupt-Versorgung Verteilung - Alarm (Sammelst<73>rung)*)
bPSMainFuseSumOvld : BOOL; (*24V Haupt-Versorgung Verteilung - <20>berlast (Sammelst<73>rung)*)
bPSMainFuseInternAlarm : BOOL; (*24V Haupt-Versorgung - Intern / Sensorik Alarm*)
bPSMainFuseInternOvld : BOOL; (*24V Haupt-Versorgung - Intern / Sensorik <20>berlast (> 90%)*)
bPSMainFuseCamsAlarm : BOOL; (*24V Haupt-Versorgung - Kameras Alarm*)
bPSMainFuseCamsOvld : BOOL; (*24V Haupt-Versorgung - Kameras <20>berlast (> 90%)*)
bPSMainFuseLight1to5Alarm : BOOL; (*24V Haupt-Versorgung - Beleuchtung 1-5 Alarm*)
bPSMainFuseLight1to5Ovld : BOOL; (*24V Haupt-Versorgung - Beleuchtung 1-5 <20>berlast (> 90%)*)
bPSMainFuseLight6to10Alarm : BOOL; (*24V Haupt-Versorgung - Beleuchtung 6-10 Alarm*)
bPSMainFuseLight6to10Ovld : BOOL; (*24V Haupt-Versorgung - Beleuchtung 6-10 <20>berlast (> 90%)*)
bPSMainFuseLEDStripeAlarm : BOOL; (*24V Haupt-Versorgung - LED Streifen Auslaufband Alarm*)
bPSMainFuseLEDStripeOvld : BOOL; (*24V Haupt-Versorgung - LED Srreiven Auslaufband <20>berlast (> 90%)*)
bBatteryAlarmPLC : BOOL; (*Pufferbattery Steuerung Nicht Vorhanden oder Schwach*)
bCoolerTempMin : BOOL; (*Klimager<65>t Temperatur Min*)
bCoolerTempMax : BOOL; (*Klimager<65>t Temperatur Max*)
bCoolerAntiFreezeTempMin : BOOL; (*Klimager<65>t Temperatur Frostschutz Min*)
bCoolerAspirationTempMax : BOOL; (*Klimager<65>t Temperatur Verdampfer Max*)
bCoolerPreasureMin : BOOL; (*Klimager<65>t Unterdruck*)
bCoolerPreasureMax : BOOL; (*Klimager<65>t <20>berdruck*)
bPC1PS1VoltageOk : BOOL; (*PC1 24V Versorgung 1 Spannung Ok*)
bPC1PS1Overload : BOOL; (*PC1 24V Haupt-Versorgung 1 <20>berlast (>90%)*)
bPC1PS2VoltageOk : BOOL; (*PC1 24V Haupt-Versorgung 2 Spannung Ok*)
bPC1PS2Overload : BOOL; (*PC1 24V Haupt-Versorgung 2 <20>berlast (>90%)*)
bPC1USVAlarm : BOOL; (*PC1 USV Alarm*)
bPC1USVBatteryAlarm : BOOL; (*PC1 USV Batterie Alarm*)
bPC1FuseSumAlarm : BOOL; (*PC1 24V Versorgung Verteilung - Alarm (Sammelst<73>rung)*)
bPC1FuseSumOvld : BOOL; (*PC1 24V Versorgung Verteilung - <20>berlast (Sammelst<73>rung)*)
bPC1FuseSystemAlarm : BOOL; (*PC1 24V Versorgung - System Alarm (Sammelst<73>rung)*)
bPC1FuseSystemOvld : BOOL; (*PC1 24V Versorgung - System <20>berlast (Sammelst<73>rung)*)
bPC1FuseGPUAlarm : BOOL; (*PC1 24V Versorgung - GPU Alarm (Sammelst<73>rung)*)
bPC1FuseGPUOvld : BOOL; (*PC1 24V Versorgung - GPU <20>berlast (Sammelst<73>rung)*)
bPC2PS1VoltageOk : BOOL; (*PC2 24V Versorgung 1 Spannung Ok*)
bPC2PS1Overload : BOOL; (*PC2 24V Haupt-Versorgung 1 <20>berlast (>90%)*)
bPC2PS2VoltageOk : BOOL; (*PC2 24V Haupt-Versorgung 2 Spannung Ok*)
bPC2PS2Overload : BOOL; (*PC2 24V Haupt-Versorgung 2 <20>berlast (>90%)*)
bPC2USVAlarm : BOOL; (*PC2 USV Alarm*)
bPC2USVBatteryAlarm : BOOL; (*PC2 USV Batterie Alarm*)
bPC2FuseSumAlarm : BOOL; (*PC2 24V Versorgung Verteilung - Alarm (Sammelst<73>rung)*)
bPC2FuseSumOvld : BOOL; (*PC2 24V Versorgung Verteilung - <20>berlast (Sammelst<73>rung)*)
bPC2FuseSystemAlarm : BOOL; (*PC2 24V Versorgung - System Alarm (Sammelst<73>rung)*)
bPC2FuseSystemOvld : BOOL; (*PC2 24V Versorgung - System <20>berlast (Sammelst<73>rung)*)
bPC2FuseGPUAlarm : BOOL; (*PC2 24V Versorgung - GPU Alarm (Sammelst<73>rung)*)
bPC2FuseGPUOvld : BOOL; (*PC2 24V Versorgung - GPU <20>berlast (Sammelst<73>rung)*)
bPC3PS1VoltageOk : BOOL; (*PC3 24V Versorgung 1 Spannung Ok*)
bPC3PS1Overload : BOOL; (*PC3 24V Haupt-Versorgung 1 <20>berlast (>90%)*)
bPC3PS2VoltageOk : BOOL; (*PC3 24V Haupt-Versorgung 2 Spannung Ok*)
bPC3PS2Overload : BOOL; (*PC3 24V Haupt-Versorgung 2 <20>berlast (>90%)*)
bPC3USVAlarm : BOOL; (*PC3 USV Alarm*)
bPC3USVBatteryAlarm : BOOL; (*PC3 USV Batterie Alarm*)
bPC3FuseSumAlarm : BOOL; (*PC3 24V Versorgung Verteilung - Alarm (Sammelst<73>rung)*)
bPC3FuseSumOvld : BOOL; (*PC3 24V Versorgung Verteilung - <20>berlast (Sammelst<73>rung)*)
bPC3FuseSystemAlarm : BOOL; (*PC3 24V Versorgung - System Alarm (Sammelst<73>rung)*)
bPC3FuseSystemOvld : BOOL; (*PC3 24V Versorgung - System <20>berlast (Sammelst<73>rung)*)
bPC3FuseGPUAlarm : BOOL; (*PC3 24V Versorgung - GPU Alarm (Sammelst<73>rung)*)
bPC3FuseGPUOvld : BOOL; (*PC3 24V Versorgung - GPU <20>berlast (Sammelst<73>rung)*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,25 @@
VAR
gusByte : USINT;
gstrTest : STRING[80];
gLEDState : gtyp_LEDState; (*Status LED Anzeige I/O*)
END_VAR
VAR RETAIN
gRecipe : gtyp_Recipe; (*Rezept*)
gParameter : gtyp_Parameter; (*Anlagenparameter*)
END_VAR
VAR
gLineCtrlInterface : gtyp_LineCtrl; (*Interface mit Liniensteurung*)
END_VAR
(*Konstanten*)
VAR CONSTANT
LED_STATE_NO_PART : USINT := 0; (*Status KEIN TEIL*)
LED_STATE_NEW_PART : USINT := 1; (*Status Neues TEIL*)
LED_STATE_NOT_INSPECTED : USINT := 2; (*Status Teil nicht inspiziert*)
LED_STATE_PART_NOK : USINT := 3; (*Status TEIL NIO*)
LED_STATE_PART_OK : USINT := 4; (*Status TEIL IO*)
MAX_CONV_POS : USINT := 200; (*!!!Anzahl LED Segmente Ein Band hat 50 (Reserve 50 Einplanen*)
MAX_CAM : USINT := 30; (*Max Anzahl Kameras*)
MAX_LAMP : USINT := 10; (*Max Anzahl Lampen*)
MAX_REC_SEGS : USINT := 50; (*Max Anzahl Beleuchtungssegmente im Rezept*)
MAX_REC_SEG_SUBSTEP : USINT := 5; (*Max Anzahl Unterschritte in Beleuchtungssegment*)
END_VAR

View File

@@ -0,0 +1,268 @@
//Zeiten berechnen
ACTION DoTimes:
IF (Times_Latch.diCamStep <> 0) THEN
Times.diCamStep := gdiSystemTime - Times_Latch.diCamStep;
ELSE
Times.diCamStep := 0;
END_IF
END_ACTION
//Interface Liniensteuerung
ACTION DoLinectrlInterface:
//Signale Einlesen
//Byte 0
gLineCtrlInterface.FromLineCtrl.bLifebeat := usInLineCtrlRaw[0].0;
gLineCtrlInterface.FromLineCtrl.bAutomaticmode := usInLineCtrlRaw[0].1;
gLineCtrlInterface.FromLineCtrl.bActiveToolchange := usInLineCtrlRaw[0].2;
gLineCtrlInterface.FromLineCtrl.bConveyorCycleMode := usInLineCtrlRaw[0].3;
gLineCtrlInterface.FromLineCtrl.bConveyorContinuosMode := usInLineCtrlRaw[0].4;
gLineCtrlInterface.FromLineCtrl.bConveyorRunning := usInLineCtrlRaw[0].5;
gLineCtrlInterface.FromLineCtrl.bNoInspection := usInLineCtrlRaw[0].6;
gLineCtrlInterface.FromLineCtrl.bAcknowledgeErrors := usInLineCtrlRaw[0].7;
//Byte 1
gLineCtrlInterface.FromLineCtrl.bNewPartPlaced := usInLineCtrlRaw[1].7;
//PartID / Parttype
//-----------------------------------------------
IF (Parameter.uiLineID = LINE_VAL_SG_L8) THEN
//Variante Voest Alpine Linie 8
//Byte 16-19
gLineCtrlInterface.FromLineCtrl.udPartID := USINT_TO_UDINT (usInLineCtrlRaw[19]) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[18]), 8) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[17]), 16) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[16]), 24);
ELSIF (Parameter.uiLineID = LINE_VAL_SG_L7a) OR (Parameter.uiLineID = LINE_VAL_SG_L7b) THEN
//Variante Voest Alpine Linie 7 a und b
//Byte 16-19
gLineCtrlInterface.FromLineCtrl.udPartID := USINT_TO_UDINT (usInLineCtrlRaw[17]) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[16]), 8) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[19]), 16) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[18]), 24);
ELSIF (Parameter.uiLineID = LINE_VAL_SPS_L1a) OR (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante SPS Linie 1 a und b
//Byte 10-11
gLineCtrlInterface.FromLineCtrl.udPartID := USINT_TO_UDINT (usInLineCtrlRaw[11]) +
SHL (USINT_TO_UDINT (usInLineCtrlRaw[10]), 8);
END_IF
//Part ID String / Serial
//-----------------------------------------------
IF (Parameter.uiLineID = LINE_VAL_SPS_L1a) THEN
//Variante SPS Linie 1a
brsmemcpy (ADR (gLineCtrlInterface.FromLineCtrl.strPartID), ADR (usInLineCtrlRaw[12]), 7); //S7 L<EFBFBD>ngeninfo abschneiden
brsmemset (ADR (gLineCtrlInterface.FromLineCtrl.strPartID) + 7, 0, 13);
ELSIF (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante Linie 1b
brsmemcpy (ADR (gLineCtrlInterface.FromLineCtrl.strPartID), ADR (usInLineCtrlRaw[28]), 7); //S7 L<EFBFBD>ngeninfo abschneiden
brsmemset (ADR (gLineCtrlInterface.FromLineCtrl.strPartID) + 7, 0, 13);
ELSE
//Standard
brsmemcpy (ADR (gLineCtrlInterface.FromLineCtrl.strPartID), ADR (usInLineCtrlRaw[20]) + 2, 14 -2); //S7 L<EFBFBD>ngeninfo abschneiden
brsmemset (ADR (gLineCtrlInterface.FromLineCtrl.strPartID) + 14, 0, 6);
END_IF
//Lifebeat spiegeln
//-----------------------------------------------
gLineCtrlInterface.ToLineCtrl.bLifebeat := gLineCtrlInterface.FromLineCtrl.bLifebeat;
gLineCtrlInterface.ToLineCtrl.bNoInspectionMirror := gLineCtrlInterface.FromLineCtrl.bNoInspection;
//Ausgangsbytes schreiben
//===============================================
usOuLineCtrlRaw[0].0 := gLineCtrlInterface.ToLineCtrl.bLifebeat;
usOuLineCtrlRaw[0].5 := gLineCtrlInterface.ToLineCtrl.bReadyToInspect;
usOuLineCtrlRaw[0].6 := gLineCtrlInterface.ToLineCtrl.bNoInspectionMirror;
usOuLineCtrlRaw[0].7 := FALSE ; //gLineCtrlInterface.ToLineCtrl.bAlarmSum;
//
usOuLineCtrlRaw[1].0 := FALSE;
usOuLineCtrlRaw[1].1 := FALSE;
usOuLineCtrlRaw[1].2 := FALSE;
usOuLineCtrlRaw[1].3 := FALSE;
//Lineinspector Errors
IF (Parameter.uiLineID = LINE_VAL_SPS_L1a) OR (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante SPS Linie 1a/b
usOuLineCtrlRaw[2].0 := LineInspectorInterface.FromLineInspector.bErrorParttype;
usOuLineCtrlRaw[2].1 := LineInspectorInterface.FromLineInspector.bErrorConfiguration;
usOuLineCtrlRaw[2].2 := LineInspectorInterface.FromLineInspector.bErrorNetwork;
usOuLineCtrlRaw[2].3 := LineInspectorInterface.FromLineInspector.bErrorERP;
usOuLineCtrlRaw[2].4 := LineInspectorInterface.FromLineInspector.bErrorVirtualConv;
usOuLineCtrlRaw[2].5 := LineInspectorInterface.FromLineInspector.bErrorCam;
usOuLineCtrlRaw[2].6 := LineInspectorInterface.FromLineInspector.bErrorPC;
ELSE
//Standard
usOuLineCtrlRaw[5].0 := LineInspectorInterface.FromLineInspector.bErrorParttype;
usOuLineCtrlRaw[5].1 := LineInspectorInterface.FromLineInspector.bErrorConfiguration;
usOuLineCtrlRaw[5].2 := LineInspectorInterface.FromLineInspector.bErrorNetwork;
usOuLineCtrlRaw[5].3 := LineInspectorInterface.FromLineInspector.bErrorERP;
usOuLineCtrlRaw[5].4 := LineInspectorInterface.FromLineInspector.bErrorVirtualConv;
usOuLineCtrlRaw[5].5 := LineInspectorInterface.FromLineInspector.bErrorCam;
usOuLineCtrlRaw[5].6 := LineInspectorInterface.FromLineInspector.bErrorPC;
END_IF
//St<EFBFBD>rungen
//-----------------------------------------------
IF (Parameter.uiLineID = LINE_VAL_SPS_L1a) OR (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante SPS Linie 1a/b
ELSE
//Standard
usOuLineCtrlRaw[3].0 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMain1VoltageAlarm;
usOuLineCtrlRaw[3].1 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMain1Overload;
usOuLineCtrlRaw[3].2 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMain2VoltageAlarm;
usOuLineCtrlRaw[3].3 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMain2Overload;
usOuLineCtrlRaw[3].4 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseSumAlarm;
usOuLineCtrlRaw[3].5 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseSumOvld;
usOuLineCtrlRaw[3].6 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseInternAlarm;
usOuLineCtrlRaw[3].7 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseInternOvld;
usOuLineCtrlRaw[4].0 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseCamsAlarm;
usOuLineCtrlRaw[4].1 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseCamsOvld;
usOuLineCtrlRaw[4].2 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLight1to5Alarm;
usOuLineCtrlRaw[4].3 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLight1to5Ovld;
usOuLineCtrlRaw[4].4 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLight6to10Alarm;
usOuLineCtrlRaw[4].5 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLight6to10Ovld;
usOuLineCtrlRaw[4].6 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLEDStripeAlarm;
usOuLineCtrlRaw[4].7 := gLineCtrlInterface.ToLineCtrl.Alarms.bPSMainFuseLEDStripeOvld;
usOuLineCtrlRaw[5].0 := gLineCtrlInterface.ToLineCtrl.Alarms.bBatteryAlarmPLC;
usOuLineCtrlRaw[5].1 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerTempMin;
usOuLineCtrlRaw[5].2 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerTempMax;
usOuLineCtrlRaw[5].3 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerAntiFreezeTempMin;
usOuLineCtrlRaw[5].4 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerAspirationTempMax;
usOuLineCtrlRaw[5].5 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerPreasureMin;
usOuLineCtrlRaw[5].6 := gLineCtrlInterface.ToLineCtrl.Alarms.bCoolerPreasureMax;
usOuLineCtrlRaw[5].7 := FALSE; //Chiller Flow
usOuLineCtrlRaw[6].0 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1PS1VoltageOk;
usOuLineCtrlRaw[6].1 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1PS1Overload;
usOuLineCtrlRaw[6].2 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1PS2VoltageOk;
usOuLineCtrlRaw[6].3 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1PS2Overload;
usOuLineCtrlRaw[6].4 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1USVAlarm;
usOuLineCtrlRaw[6].5 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1USVBatteryAlarm;
usOuLineCtrlRaw[6].6 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseSumAlarm;
usOuLineCtrlRaw[6].7 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseSumOvld;
usOuLineCtrlRaw[7].0 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseSystemAlarm;
usOuLineCtrlRaw[7].1 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseSystemOvld;
usOuLineCtrlRaw[7].2 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseGPUAlarm;
usOuLineCtrlRaw[7].3 := gLineCtrlInterface.ToLineCtrl.Alarms.bPC1FuseGPUOvld;
//Fixme weitere PCs
END_IF
//Variante zur<EFBFBD>ckspiegeln
//-----------------------------------------------
udTemp := UINT_TO_UDINT (gRecipe.uiPartID);
IF (Parameter.uiLineID = LINE_VAL_SG_L8) THEN
//Variante Voest Alpine Linie 8
//Byte 16-19
usOuLineCtrlRaw[19] := UDINT_TO_USINT (udTemp);
usOuLineCtrlRaw[18] := UDINT_TO_USINT (SHR (udTemp, 8));
usOuLineCtrlRaw[17] := UDINT_TO_USINT (SHR (udTemp, 16));
usOuLineCtrlRaw[16] := UDINT_TO_USINT (SHR (udTemp, 24));
ELSIF (Parameter.uiLineID = LINE_VAL_SG_L7a) OR (Parameter.uiLineID = LINE_VAL_SG_L7b) THEN
//Variante Voest Alpine Linie 7 a und b
//Byte 16-19
usOuLineCtrlRaw[17] := UDINT_TO_USINT (udTemp);
usOuLineCtrlRaw[16] := UDINT_TO_USINT (SHR (udTemp, 8));
usOuLineCtrlRaw[19] := UDINT_TO_USINT (SHR (udTemp, 16));
usOuLineCtrlRaw[18] := UDINT_TO_USINT (SHR (udTemp, 24));
ELSIF (Parameter.uiLineID = LINE_VAL_SPS_L1a) OR (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante SPS Linie 1 a und b
//Byte 10-11
usOuLineCtrlRaw[11] := UDINT_TO_USINT (udTemp);
usOuLineCtrlRaw[10] := UDINT_TO_USINT (SHR (udTemp, 8));
END_IF
//Part ID String / Serial zur<EFBFBD>ckspiegeln
//-----------------------------------------------
IF (Parameter.uiLineID = LINE_VAL_SPS_L1a) THEN
//Variante SPS Linie 1a
brsmemcpy (ADR (usOuLineCtrlRaw[12]), ADR (gLineCtrlInterface.FromLineCtrl.strPartID), 7);
ELSIF (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Variante Linie 1b
brsmemcpy (ADR (usOuLineCtrlRaw[28]), ADR (gLineCtrlInterface.FromLineCtrl.strPartID), 7);
ELSE
//Standard keine Spiegelung
brsmemcpy (ADR (usOuLineCtrlRaw[20]), ADR (gLineCtrlInterface.FromLineCtrl.strPartID), 14);
END_IF
END_ACTION
//Interface Lineinspector
ACTION DoLineinspectorInterface:
//Signale von Lineinspector
gLineCtrlInterface.ToLineCtrl.bReadyToInspect := LineInspectorInterface.FromLineInspector.bReadyToInspect;
//Signale an Lineinspector
LineInspectorInterface.ToLineInspector.bLifebeat := NOT LineInspectorInterface.FromLineInspector.bLifebeat;
LineInspectorInterface.ToLineInspector.bPartActive := Status.bPartActive;
LineInspectorInterface.ToLineInspector.bNoInspection := gLineCtrlInterface.FromLineCtrl.bNoInspection;
LineInspectorInterface.ToLineInspector.bVNCControl := VCButtons.EnableVNCCtrl.bCommand;
LineInspectorInterface.ToLineInspector.bVNCSetupmode := VCButtons.EnableSetupmode.bCommand;
LineInspectorInterface.ToLineInspector.udPartID := gLineCtrlInterface.FromLineCtrl.udPartID;
LineInspectorInterface.ToLineInspector.strPartID := gLineCtrlInterface.FromLineCtrl.strPartID;
END_ACTION
//Zeit Funktionsbausteine
ACTION DoTimeFUBs:
FUBs.TOF_Lightbarrier.IN := bInLightbarrier;
FUBs.TOF_Lightbarrier.PT := t#200ms; //FixMe was 400
FUBs.TOF_Lightbarrier ();
FUBs.TON_SetNewPartTest.IN := Status.bModeStartupWithEncoder AND NOT Status.bNewPartActivateLightbarrier AND NOT Status.bPartActive;
FUBs.TON_SetNewPartTest.PT := t#150ms;
FUBs.TON_SetNewPartTest ();
FUBs.TON_CamOffDelay.IN := NOT VCButtons.ResetCam.bCommand;
FUBs.TON_CamOffDelay.PT := t#5s;
FUBs.TON_CamOffDelay ();
VCButtons.ResetCam.usStatus.1 := NOT FUBs.TON_CamOffDelay.Q;
IF EDGEPOS (VCButtons.ResetCam.bCommand) THEN
Status.bDisableCamPowerPulse := TRUE;
END_IF
FUBs.TON_CTRLPSCamOff.IN := Status.bDisableCamPowerPulse;
FUBs.TON_CTRLPSCamOff.PT := t#400ms;
FUBs.TON_CTRLPSCamOff ();
IF FUBs.TON_CTRLPSCamOff.Q THEN
Status.bDisableCamPowerPulse := FALSE;
END_IF
FUBs.TON_CTRLPSCamWaitRepower.IN := VCButtons.ResetCam.bCommand;
FUBs.TON_CTRLPSCamWaitRepower.PT := t#1s;
FUBs.TON_CTRLPSCamWaitRepower ();
IF EDGEPOS (FUBs.TON_CTRLPSCamWaitRepower.Q) THEN
Status.bCamPowerOnPulse := TRUE;
VCButtons.ResetCam.bCommand := FALSE;
END_IF
FUBs.TON_CTRLPSCamOn.IN := Status.bCamPowerOnPulse;
FUBs.TON_CTRLPSCamOn.PT := t#200ms;
FUBs.TON_CTRLPSCamOn ();
IF FUBs.TON_CTRLPSCamOn.Q THEN
Status.bCamPowerOnPulse := FALSE;
END_IF
bOuCtrlPSCam := Status.bCamPowerOnPulse OR Status.bDisableCamPowerPulse;
END_ACTION

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Init, cyclic, exit code">Main.st</File>
<File Description="Aktionen">Action.st</File>
<File Description="Local data types" Private="true">Types.typ</File>
<File Description="Lokale Variablen" Private="true">Variables.var</File>
<File Description="I/Os" Private="true">IOs.var</File>
<File Description="LineIDs" Private="true">LinIDs.var</File>
</Files>
</Program>

View File

@@ -0,0 +1,29 @@
(*//Inputs*)
VAR
iInConvPos : INT; (*Bandposition Geber*)
rInConvPos : REAL; (*Bandposition <20>ber Bus*)
rInConvVelocity : REAL;
bInLightbarrier : BOOL; (*Lichtchranke Bauteil*)
bInLightbarrierNC : BOOL; (*Lichtchranke Bauteil is <20>ffner*)
END_VAR
(*//Outputs*)
VAR
bOuFlashLamp : ARRAY[1..MAX_LAMP] OF BOOL; (*Ansteuerung Lampe*)
bOuTriggerCam : ARRAY[1..MAX_CAM] OF BOOL; (*Ansteuerung Kamera*)
bOuCtrlPSCam : BOOL; (*Schalten Versorgung Cams*)
END_VAR
(*//BusSignals DP / PN*)
VAR
usInLineCtrlRaw : ARRAY[0..63] OF USINT;
usOuLineCtrlRaw : ARRAY[0..63] OF USINT;
END_VAR
(*//NetTime (Devel)*)
VAR
diOuEdgeNettime : DINT;
iOuSequence : SINT;
iInSequence : SINT;
udOuOffset1 : UDINT := 100;
udOuOffset2 : UDINT := 1000000;
bOuEnableGen01 : BOOL;
bTestGen : BOOL;
END_VAR

View File

@@ -0,0 +1,7 @@
VAR CONSTANT
LINE_VAL_SG_L8 : USINT := 1; (*Voest Alpine SGm<47>nd Line 8*)
LINE_VAL_SG_L7a : USINT := 2; (*Voest Alpine SGm<47>nd Line 7a*)
LINE_VAL_SG_L7b : USINT := 3; (*Voest Alpine SGm<47>nd Line 7b*)
LINE_VAL_SPS_L1a : USINT := 4; (*Smart Press Shop Linie 1a*)
LINE_VAL_SPS_L1b : USINT := 5; (*Smart Press Shop Linie 1B*)
END_VAR

View File

@@ -0,0 +1,432 @@
PROGRAM _INIT
//Werte initialisieren
Status.iConvPos := iInConvPos;
Status.iConvPosLatch := iInConvPos;
Status.iConvPosSimulation := iInConvPos;
Status.bModeStartupWithEncoder := FALSE;
Parameter ACCESS ADR (gParameter);
END_PROGRAM
PROGRAM _CYCLIC
//Dynamische Varliablen
Parameter ACCESS ADR (gParameter);
ParameterAsArray ACCESS ADR (gParameter);
//Zeiten bereichen
DoTimes;
DoTimeFUBs;
//Schnitstelle
DoLinectrlInterface;
DoLineinspectorInterface;
//Wenn Lichtschranke als <EFBFBD>ffner angeschlossen Mapping <EFBFBD>ndern
// und Signal invertiert einlesen
IF (Parameter.uiLineID = LINE_VAL_SG_L7a) OR (Parameter.uiLineID = LINE_VAL_SG_L7b) THEN
bInLightbarrier := NOT bInLightbarrierNC;
END_IF
//Inbetriebnamemodus (Mit Geber)
Status.bModeStartupWithEncoder := VCButtons.EnableTestMode.bCommand;
IF (Status.bModeStartupWithEncoder AND EDGEPOS (FUBs.TON_SetNewPartTest.Q)) OR
(NOT Status.bModeStartupWithEncoder AND NOT Status.bPartActive AND bLatchPartFromRobot AND NOT gLineCtrlInterface.FromLineCtrl.bNoInspection) THEN
Status.bNewPartActivateLightbarrier := TRUE;
bLatchPartFromRobot := FALSE;
END_IF
IF NOT Status.bModeStartupWithEncoder AND EDGEPOS (gLineCtrlInterface.FromLineCtrl.bNewPartPlaced) THEN
bLatchPartFromRobot := TRUE;
END_IF
//Zyklusz<EFBFBD>hler f<EFBFBD>r Simulaiton
Status.usSimulationCycle := (Status.usSimulationCycle + 1) MOD 5;
//Aktuelle Bandposition ermiteln
IF Status.bSimulateConveyor THEN
//Simulation
IF (Status.usSimulationCycle = 0) THEN
Status.iConvPosSimulation := Status.iConvPosSimulation + 1;
END_IF
Status.iConvPos := Status.iConvPosSimulation;
ELSE
//Geberposition
Status.iConvPos := iInConvPos;
Status.iConvPosSimulation := iInConvPos;
END_IF
//Neues Bauteil erkennen
IF EDGEPOS (FUBs.TOF_Lightbarrier.Q) AND Status.bNewPartActivateLightbarrier AND NOT Status.bPartActive THEN
Status.rPosPart := Status.rConvPos;
Status.usSegment := 1;
Status.usSubstep := 1;
Status.bNewPartActivateLightbarrier := FALSE;
Status.bPartActive := TRUE;
//Bauteil auf Leuchtband platzieren
//Bauteillaenge ermitteln
Status.usNrOfSegments := 1;
FOR usi := 1 TO MAX_REC_SEGS DO
IF (gRecipe.CamSegment[usi].udFlashtime[1] = 0) THEN
//Letztes Segment
EXIT;
ELSE
Status.usNrOfSegments := usi;
END_IF
END_FOR
Status.usPartLenLEDSegments := UDINT_TO_USINT (USINT_TO_UDINT (Status.usNrOfSegments) * gRecipe.udSegmentlength / 100);
//Schreibposition Band ermittlen
//FixMe Offset
usTemp := LREAL_TO_USINT (Parameter.rOffsetLED / 100.);
FOR usi := 1 TO Status.usNrOfSegments DO
IF (gLEDState.usWritePos > (usi + usTemp)) THEN
gLEDState.usSegState[gLEDState.usWritePos -usi -usTemp] := LED_STATE_NEW_PART; //Neues Bauteil
ELSE
gLEDState.usSegState[MAX_CONV_POS - usi -usTemp + gLEDState.usWritePos] := LED_STATE_NEW_PART; //Beues Bauteil
END_IF
END_FOR
END_IF
//Bauteilerkennung
IF EDGEPOS (FUBs.TOF_Lightbarrier.Q) THEN
FOR usi := 0 TO 4 DO
PartDetector.rPosPartGap[usi] := PartDetector.rPosPartGap[usi + 1];
END_FOR;
PartDetector.rPosPartStart := Status.rConvPos;
PartDetector.rPosPartGap[5] := PartDetector.rPosPartStart - PartDetector.rPosPartEnd;
END_IF
IF EDGENEG (FUBs.TOF_Lightbarrier.Q) THEN
FOR usi := 0 TO 4 DO
PartDetector.rPosPartLen[usi] := PartDetector.rPosPartLen[usi + 1];
END_FOR;
PartDetector.rPosPartEnd := Status.rConvPos;
PartDetector.rPosPartLen[5] := PartDetector.rPosPartEnd - PartDetector.rPosPartStart;
END_IF
//Neue Position rekennen / berechnen
IF (Parameter.uiLineID = LINE_VAL_SPS_L1a) OR (Parameter.uiLineID = LINE_VAL_SPS_L1b) THEN
//Bandposition kommt <EFBFBD>ber bus
Status.rConvVel := REAL_TO_LREAL (rInConvVelocity);
Status.rConvPosLineCtrl := REAL_TO_LREAL (rInConvPos);
IF (Status.rConvPosLineCtrl <> Status.rConvPosLineCtrlLatch) THEN
lrTemp := Status.rConvPosLineCtrl - Status.rConvPosLineCtrlLatch;
Status.rConvPos := Status.rConvPos + lrTemp;
Status.bNewConvPos := TRUE;
Status.rConvPosLineCtrlLatch := Status.rConvPosLineCtrl;
END_IF
ELSE
//Standard <EFBFBD>ber Geber
IF (Status.iConvPos <> Status.iConvPosLatch) THEN
IF( (Status.iConvPos - Status.iConvPosLatch) > 0) THEN
//Nur Vorw<EFBFBD>rtsbewegung erlauben
lrTemp := INT_TO_LREAL (Status.iConvPos - Status.iConvPosLatch) * Parameter.rPosPerRev / DINT_TO_LREAL (Parameter.diIncPerRev);
Status.rConvPos := Status.rConvPos + lrTemp;
Status.rConvVel := lrTemp / ((gdiSystemTime - Status.diTimeConvPosLatch) * 1000);
Status.bNewConvPos := TRUE;
END_IF
Status.iConvPosLatch := Status.iConvPos;
Status.diTimeConvPosLatch := gdiSystemTime;
END_IF
END_IF
//Neue Position erkannt
IF Status.bNewConvPos THEN
//Neue Positon f<EFBFBD>r LED streifen
IF ((Status.rConvPos - Status.rConvPosLatchLED) >= 100.0) THEN
Status.rConvPosLatchLED := Status.rConvPos;
gLEDState.bNextPos := TRUE;
END_IF
//Segment triggern
IF ((Status.rConvPos - Status.rPosPart) > (UDINT_TO_LREAL (gRecipe.udSegmentlength * USINT_TO_UDINT (Status.usSegment)) + Parameter.rOffsetLightbarrier)) AND
Status.bPartActive AND NOT Status.bSegmentActive THEN
Status.bSegmentActive := TRUE;
END_IF
Status.bNewConvPos := FALSE;
END_IF
IF (Status.usSegment < 1) OR (Status.usSegment > MAX_REC_SEGS) THEN
Status.usSegment := 1;
END_IF
//VNC Steuerung aktiv
//======================================
IF VCButtons.EnableVNCCtrl.bCommand THEN
//Kein Trigger mit Encoder
Status.bPartActive := FALSE;
//Ein Segment aus der Visu <EFBFBD>bernehmen
//Kamera Definieren
lCurrentCamSegment.bFlashLamp[1].0 := VCButtons.SelLamp[1].bCommand;
lCurrentCamSegment.bFlashLamp[1].1 := VCButtons.SelLamp[2].bCommand;
lCurrentCamSegment.bFlashLamp[1].2 := VCButtons.SelLamp[3].bCommand;
lCurrentCamSegment.bFlashLamp[1].3 := VCButtons.SelLamp[4].bCommand;
lCurrentCamSegment.bFlashLamp[1].4 := VCButtons.SelLamp[5].bCommand;
lCurrentCamSegment.bFlashLamp[1].5 := VCButtons.SelLamp[6].bCommand;
lCurrentCamSegment.bFlashLamp[1].6 := VCButtons.SelLamp[7].bCommand;
lCurrentCamSegment.bFlashLamp[1].7 := VCButtons.SelLamp[8].bCommand;
lCurrentCamSegment.bFlashLamp[1].8 := VCButtons.SelLamp[9].bCommand;
lCurrentCamSegment.bFlashLamp[1].9 := VCButtons.SelLamp[10].bCommand;
lCurrentCamSegment.bFlashLamp[1].10 := VCButtons.SelLamp[11].bCommand;
lCurrentCamSegment.bFlashLamp[1].11 := VCButtons.SelLamp[12].bCommand;
lCurrentCamSegment.bFlashLamp[1].12 := VCButtons.SelLamp[13].bCommand;
lCurrentCamSegment.bFlashLamp[1].13 := VCButtons.SelLamp[14].bCommand;
lCurrentCamSegment.bFlashLamp[1].14 := VCButtons.SelLamp[15].bCommand;
lCurrentCamSegment.bFlashLamp[1].15 := VCButtons.SelLamp[16].bCommand;
lCurrentCamSegment.bFlashLamp[1].16 := VCButtons.SelLamp[17].bCommand;
lCurrentCamSegment.bFlashLamp[1].17 := VCButtons.SelLamp[18].bCommand;
lCurrentCamSegment.bFlashLamp[1].18 := VCButtons.SelLamp[19].bCommand;
lCurrentCamSegment.bFlashLamp[1].19 := VCButtons.SelLamp[20].bCommand;
lCurrentCamSegment.bFlashLamp[1].20 := VCButtons.SelLamp[21].bCommand;
lCurrentCamSegment.bFlashLamp[1].21 := VCButtons.SelLamp[22].bCommand;
lCurrentCamSegment.bFlashLamp[1].22 := VCButtons.SelLamp[23].bCommand;
lCurrentCamSegment.bFlashLamp[1].23 := VCButtons.SelLamp[24].bCommand;
lCurrentCamSegment.bFlashLamp[1].24 := VCButtons.SelLamp[25].bCommand;
lCurrentCamSegment.bFlashLamp[1].25 := VCButtons.SelLamp[26].bCommand;
lCurrentCamSegment.bFlashLamp[1].26 := VCButtons.SelLamp[27].bCommand;
lCurrentCamSegment.bFlashLamp[1].27 := VCButtons.SelLamp[28].bCommand;
lCurrentCamSegment.bFlashLamp[1].28 := VCButtons.SelLamp[29].bCommand;
lCurrentCamSegment.bFlashLamp[1].29 := VCButtons.SelLamp[30].bCommand;
lCurrentCamSegment.bFlashLamp[1].30 := VCButtons.SelLamp[31].bCommand;
lCurrentCamSegment.bFlashLamp[1].31 := VCButtons.SelLamp[32].bCommand;
lCurrentCamSegment.udCamMatrix[1].0 := VCButtons.SelCam[1].bCommand;
lCurrentCamSegment.udCamMatrix[1].1 := VCButtons.SelCam[2].bCommand;
lCurrentCamSegment.udCamMatrix[1].2 := VCButtons.SelCam[3].bCommand;
lCurrentCamSegment.udCamMatrix[1].3 := VCButtons.SelCam[4].bCommand;
lCurrentCamSegment.udCamMatrix[1].4 := VCButtons.SelCam[5].bCommand;
lCurrentCamSegment.udCamMatrix[1].5 := VCButtons.SelCam[6].bCommand;
lCurrentCamSegment.udCamMatrix[1].6 := VCButtons.SelCam[7].bCommand;
lCurrentCamSegment.udCamMatrix[1].7 := VCButtons.SelCam[8].bCommand;
lCurrentCamSegment.udCamMatrix[1].8 := VCButtons.SelCam[9].bCommand;
lCurrentCamSegment.udCamMatrix[1].9 := VCButtons.SelCam[10].bCommand;
lCurrentCamSegment.udCamMatrix[1].10 := VCButtons.SelCam[11].bCommand;
lCurrentCamSegment.udCamMatrix[1].11 := VCButtons.SelCam[12].bCommand;
lCurrentCamSegment.udCamMatrix[1].12 := VCButtons.SelCam[13].bCommand;
lCurrentCamSegment.udCamMatrix[1].13 := VCButtons.SelCam[14].bCommand;
lCurrentCamSegment.udCamMatrix[1].14 := VCButtons.SelCam[15].bCommand;
lCurrentCamSegment.udCamMatrix[1].15 := VCButtons.SelCam[16].bCommand;
lCurrentCamSegment.udCamMatrix[1].16 := VCButtons.SelCam[17].bCommand;
lCurrentCamSegment.udCamMatrix[1].17 := VCButtons.SelCam[18].bCommand;
lCurrentCamSegment.udCamMatrix[1].18 := VCButtons.SelCam[19].bCommand;
lCurrentCamSegment.udCamMatrix[1].19 := VCButtons.SelCam[20].bCommand;
lCurrentCamSegment.udCamMatrix[1].20 := VCButtons.SelCam[21].bCommand;
lCurrentCamSegment.udCamMatrix[1].21 := VCButtons.SelCam[22].bCommand;
lCurrentCamSegment.udCamMatrix[1].22 := VCButtons.SelCam[23].bCommand;
lCurrentCamSegment.udCamMatrix[1].23 := VCButtons.SelCam[24].bCommand;
lCurrentCamSegment.udCamMatrix[1].24 := VCButtons.SelCam[25].bCommand;
lCurrentCamSegment.udCamMatrix[1].25 := VCButtons.SelCam[26].bCommand;
lCurrentCamSegment.udCamMatrix[1].26 := VCButtons.SelCam[27].bCommand;
lCurrentCamSegment.udCamMatrix[1].27 := VCButtons.SelCam[28].bCommand;
lCurrentCamSegment.udCamMatrix[1].28 := VCButtons.SelCam[29].bCommand;
lCurrentCamSegment.udCamMatrix[1].29 := VCButtons.SelCam[30].bCommand;
lCurrentCamSegment.udCamMatrix[1].30 := VCButtons.SelCam[31].bCommand;
lCurrentCamSegment.udCamMatrix[1].31 := VCButtons.SelCam[32].bCommand;
//Beleuchtungzeit wird direkt eingegeben <EFBFBD>ber VNC
//auf ein Segment / Step beschr<EFBFBD>nken
lCurrentCamSegment.udFlashtime[2] := 0;
//Segment triggern
IF EDGEPOS (VCButtons.TriggerSegment.bCommand) THEN
Status.bSegmentActive := TRUE;
END_IF
//Visu Anpassen bzw Steuern
VCButtons.EnableTestMode.usStatus.0 := TRUE;
VCButtons.EnableTestMode.bCommand := FALSE;
VCButtons.udDisableInput.0 := FALSE;
VCButtons.udDisableInput.1 := VCButtons.EnableSetupmode.bCommand;
VCButtons.EnableSetupmode.usStatus.0 := FALSE;
VCButtons.TriggerSegment.usStatus.0 := FALSE;
VCButtons.TriggerSegment.usStatus.1 := VCButtons.EnableSetupmode.bCommand;
//Lampen
FOR usi:=1 TO MAX_LAMP DO
VCButtons.LampOn[usi].usStatus.1 := NOT VCButtons.EnableSetupmode.bCommand;
IF EDGENEG (VCButtons.EnableSetupmode.bCommand) THEN
//Lampen aus bei Deaktivieren des Einrichtbetriebs
bOuFlashLamp[usi] := FALSE;
VCButtons.LampOn[usi].bCommand := FALSE;
ELSE
//Lampen selektiv anschalten
bOuFlashLamp[usi] := VCButtons.LampOn[usi].bCommand;
END_IF
END_FOR
//Kameras
FOR usi:=1 TO MAX_CAM DO
VCButtons.ContTrgCam[usi].usStatus.1 := NOT VCButtons.EnableSetupmode.bCommand;
IF EDGENEG (VCButtons.EnableSetupmode.bCommand) THEN
//Cameras aus bei Deaktivieren des Einrichtbetriebs
bOuTriggerCam[usi] := FALSE;
VCButtons.ContTrgCam[usi].bCommand := FALSE;
ELSE
//Kamerass selektiv kontinuierlich triggern
bOuTriggerCam[usi] := VCButtons.ContTrgCam[usi].bCommand AND gBlinker.bBlink0_1;
END_IF
END_FOR
ELSE
//VNC Steuerung ist aus Segment aus Rezept <EFBFBD>bernehmen
lCurrentCamSegment := gRecipe.CamSegment[Status.usSegment];
//Setupmode nur wenn VNC Steuerung aktiv ist
VCButtons.EnableSetupmode.bCommand := FALSE;
VCButtons.EnableSetupmode.usStatus.0 := TRUE;
VCButtons.EnableTestMode.usStatus.0 := FALSE;
VCButtons.udDisableInput.0 := TRUE;
VCButtons.TriggerSegment.usStatus.0 := TRUE;
END_IF
//VNCCtrl Verlassen
IF EDGENEG (VCButtons.EnableVNCCtrl.bCommand) THEN
//Lampen deaktivieren
FOR usi:=1 TO MAX_LAMP DO
bOuFlashLamp[usi] := FALSE;
VCButtons.LampOn[usi].bCommand := FALSE;
END_FOR
//Kameras deaktivieren
FOR usi:=1 TO MAX_CAM DO
bOuTriggerCam[usi] := FALSE;
END_FOR
END_IF
//Minimale Blitzzeit erzwingen
FOR usi:=1 TO MAX_REC_SEG_SUBSTEP DO
IF (lCurrentCamSegment.udFlashtime[usi] > 0) AND (lCurrentCamSegment.udFlashtime[usi] < 1000) THEN
lCurrentCamSegment.udFlashtime[usi] := 1000;
END_IF
END_FOR;
IF lCurrentCamSegment.udFlashtime[1] = 0 THEN
Status.bSegmentActive := FALSE;
Status.bPartActive := FALSE;
END_IF
//Segment aktiv
//===================================
IF Status.bSegmentActive THEN
//Zeit Starten
IF (Times_Latch.diCamStep = 0) THEN
diDebug := Times_Latch.diCamStep;
Times_Latch.diCamStep := gdiSystemTime + 1;
END_IF
//Bei neuem Schrittbeginn Lampen aktivieren
IF (Times_Latch.diCamStep <> 0) AND (Times.diCamStep = 0) THEN
FOR usi := 1 TO MAX_LAMP DO
bOuFlashLamp[usi] := BIT_TST (lCurrentCamSegment.bFlashLamp[Status.usSubstep], usi - 1);
END_FOR;
END_IF
//Nach Vorlaufzeit Cam Triggern
IF EDGEPOS (DINT_TO_UDINT (Times.diCamStep) > gRecipe.udLeadtimeTriggerCam) THEN
FOR usi := 1 TO MAX_CAM DO
bOuTriggerCam[usi] := BIT_TST (lCurrentCamSegment.udCamMatrix[Status.usSubstep], usi - 1);
END_FOR;
END_IF
//Nach Belichtungszeit Kameras und lampen aus
IF EDGEPOS (DINT_TO_UDINT (Times.diCamStep) > (gRecipe.udLeadtimeTriggerCam + lCurrentCamSegment.udFlashtime[Status.usSubstep])) THEN
FOR usi := 1 TO MAX_LAMP DO
bOuFlashLamp[usi] := FALSE;
END_FOR;
FOR usi := 1 TO MAX_CAM DO
bOuTriggerCam[usi] :=FALSE;
END_FOR;
END_IF
//Nach Nachlaufzeit n<EFBFBD>chsten Substep aktivieren
IF EDGEPOS (DINT_TO_UDINT (Times.diCamStep) > (gRecipe.udLeadtimeTriggerCam + lCurrentCamSegment.udFlashtime[Status.usSubstep] + gRecipe.udPostDelayFlash)) THEN
Status.usSubstep := Status.usSubstep + 1;
IF (Status.usSubstep >= MAX_REC_SEG_SUBSTEP) OR (lCurrentCamSegment.udFlashtime[Status.usSubstep] = 0) THEN
Status.bSegmentActive := FALSE; //Segment beendet
Status.usSegment := Status.usSegment + 1;
Status.usSubstep := 1;
END_IF
Times_Latch.diCamStep := 0; //Neuen Trigger erzwingen
END_IF
END_IF
//Bauteil bewertung
IF EDGEPOS (LineInspectorInterface.FromLineInspector.bNotInspected OR
LineInspectorInterface.FromLineInspector.bResultNOk OR
LineInspectorInterface.FromLineInspector.bResultOk) THEN
IF LineInspectorInterface.FromLineInspector.bNotInspected THEN
usSegState := LED_STATE_NOT_INSPECTED; //Not Inspected
ELSIF LineInspectorInterface.FromLineInspector.bResultNOk THEN
usSegState := LED_STATE_PART_NOK; //NOK
ELSIF LineInspectorInterface.FromLineInspector.bResultOk THEN
usSegState := LED_STATE_PART_OK; //OK
END_IF
bFoundPart := FALSE;
FOR usi := 80 TO 1 BY -1 DO //Max 8m Band
usTemp := (usi + gLEDState.usWritePos) MOD MAX_CONV_POS;
IF gLEDState.usSegState[usTemp] = LED_STATE_NEW_PART THEN
gLEDState.usSegState[usTemp] := usSegState;
bFoundPart := TRUE;
ELSIF bFoundPart THEN
EXIT;
END_IF
END_FOR
END_IF
//Visu Enable
IF EDGEPOS (VCButtons.EnableVNCCtrl.bCommand) THEN
//Visu Anpassen
FOR usi:=1 TO 32 DO
VCButtons.SelCam[usi].usStatus.0 := (usi > Parameter.usNrOfCams);
VCButtons.ContTrgCam[usi].usStatus.0 := (usi > Parameter.usNrOfCams);
VCButtons.SelLamp[usi].usStatus.0 := (usi > Parameter.usNrOfLights);
VCButtons.LampOn[usi].usStatus.0 := (usi > Parameter.usNrOfLights);
END_FOR
END_IF
//Generell wenn Linie nicht in Automatik
// VNC Steuerung (Segment einstellen - Handbetrieb freigeben
VCButtons.EnableVNCCtrl.usStatus.1 := FALSE;
//Testen mit Geber
VCButtons.EnableTestMode.usStatus.1 := NOT LineInspectorInterface.FromLineInspector.bEnableSetupmode;
//Testumgebung f<EFBFBD>r Flankengenerator
IF bTestGen THEN
bOuEnableGen01 := TRUE;
diOuEdgeNettime := gdiSystemTime + 4000;
iOuSequence := iOuSequence + 1;
udOuOffset1;
udOuOffset2;
bTestGen := FALSE;
END_IF
END_PROGRAM
PROGRAM _EXIT
(* Insert code here *)
END_PROGRAM

View File

@@ -0,0 +1,92 @@
TYPE
typ_Status : STRUCT (*Statis*)
bSegmentActive : BOOL; (*Beleuchtungssegment ist aktiv*)
bModeStartupWithEncoder : BOOL; (*Bandsimulation *)
bSimulateConveyor : BOOL; (*F<>rderband simulieren*)
bNewPartActivateLightbarrier : BOOL; (*Neues Bauteil abgelegt - Lichtschranke aktivieren*)
bNewConvPos : BOOL;
bPartActive : BOOL; (*Bauteil vorhanden*)
bDisableCamPowerPulse : BOOL;
bCamPowerOnPulse : BOOL;
usSegment : USINT; (*Aktuelles Segment*)
usSubstep : USINT := 1; (*Aktueller Unterschritt in Beleuchtungssegment*)
usNrOfSegments : USINT := 1; (*Anzahl der Beleuchtungssegmente wg. Bauteill<6C>nge*)
usPartLenLEDSegments : USINT := 1; (*Anzahl der Beleuchtungssegmente wg. Bauteill<6C>nge*)
usSimulationCycle : USINT; (*Zyklusz<73>hler simulation*)
iConvPosSimulation : INT; (*Simulierte BandPos [inc]*)
iConvPos : INT; (*Aktuelle BandPos [inc] von Geber oder Simulation*)
iConvPosLatch : INT; (*Speicher letzte BandPos [inc]*)
diTimeConvPosLatch : DINT; (*Zeitstempel letzte BandPos*)
rConvVel : LREAL; (*Bandgeschwindigkeit [mm/s]*)
rConvPosLineCtrl : LREAL; (*Aktuelle BandPos [mm] <20>ber Bus*)
rConvPosLineCtrlLatch : LREAL; (*Aktuelle BandPos [mm] <20>ber Bus speicher*)
rConvPos : LREAL; (*Aktuelle BandPos [mm]*)
rConvPosLatchLED : LREAL; (*Speicher BandPos [mm] f<>r LED*)
rPosPart : LREAL; (*Position aktuelles Bauteil auf Band [mm]*)
END_STRUCT;
typ_PartDetection : STRUCT (*Bauteilerkennung*)
rPosPartStart : LREAL; (*Position aktuelles Bauteil auf Band [mm]*)
rPosPartEnd : LREAL; (*Position aktuelles Bauteil auf Band [mm]*)
rPosPartLen : ARRAY[0..5]OF LREAL; (*Position aktuelles Bauteil auf Band [mm]*)
rPosPartGap : ARRAY[0..5]OF LREAL; (*Position aktuelles Bauteil auf Band [mm]*)
END_STRUCT;
typ_Times : STRUCT (*Zeiten*)
diCamStep : DINT;
END_STRUCT;
typ_FUBs : STRUCT (*Funktionsbausteine*)
TOF_Lightbarrier : TOF;
TON_SetNewPartTest : TON;
TON_CamOffDelay : {REDUND_UNREPLICABLE} TON;
TON_CTRLPSCamWaitRepower : {REDUND_UNREPLICABLE} TON;
TON_CTRLPSCamOn : TON;
TON_CTRLPSCamOff : TON;
END_STRUCT;
typ_VCButtons : STRUCT (*Buttons f<>r Visu*)
udDisableInput : USINT;
EnableVNCCtrl : gtyp_VCButton; (*Steuerung <20>ber VNC Aktivieren*)
EnableSetupmode : gtyp_VCButton; (*Einrichtbetrieb*)
EnableTestMode : gtyp_VCButton; (*Testmodus Mit Encoder*)
TriggerSegment : gtyp_VCButton; (*Segment Triggern*)
ResetCam : gtyp_VCButton; (*Kameraversorung deaktivieren*)
SelCam : ARRAY[1..32]OF gtyp_VCButton; (*Kamera anw<6E>hlen*)
SelLamp : ARRAY[1..32]OF gtyp_VCButton; (*Lampe anw<6E>len*)
ContTrgCam : ARRAY[1..32]OF gtyp_VCButton; (*Einrichtbetrieb Kamera Dauertrigger*)
LampOn : ARRAY[1..32]OF gtyp_VCButton; (*Einrichtbetrieb Lampe einschalten*)
END_STRUCT;
END_TYPE
(*Schnittstelle Lineinspector*)
TYPE
typ_LineinspectorInterface : STRUCT (*Interface Lineinspector PC*)
ToLineInspector : typ_ToLineInspector;
FromLineInspector : typ_FromLineInspector;
END_STRUCT;
typ_ToLineInspector : STRUCT (*Daten an Lineinspector PC*)
udPartID : UDINT; (*Bauteil ID (zum Abgleich mit Linie)*)
strPartID : STRING[20]; (*Bauteilbezeichnung*)
bLifebeat : BOOL; (*Lifebeat (Toggle bit)*)
bLineAutomaticMode : BOOL; (*Automatik Produktionsline aktiv*)
bNoInspection : BOOL; (*Keine Inspektion - Zelle abgew<65>hlt*)
bPartActive : BOOL; (*Bauteil durch Lichtschranke erkannt*)
bVNCControl : BOOL; (*Lokale Bedienung <20>ber VNC*)
bVNCSetupmode : BOOL; (*Lokale Bedienung <20>ber VNC - Einrichtbetrieb (Cams Dauertrigger) sonst Einzelsequenz*)
END_STRUCT;
typ_FromLineInspector : STRUCT (*Daten vom Lineinspector PC*)
bLifebeat : BOOL;
bEnableSetupmode : BOOL; (*Freigabe f<>r Einrichtbetrieb*)
bReadyToInspect : BOOL; (*Bereit f<>r Inspektion*)
bErrorSum : BOOL; (*Sammelst<73>rung*)
bErrorParttype : BOOL; (*Teilefehler*)
bErrorConfiguration : BOOL; (*Konfigfehler*)
bErrorNetwork : BOOL; (*Kein Bildupload*)
bErrorERP : BOOL; (*Fehler ERP*)
bErrorVirtualConv : BOOL; (*Fehler ERP*)
bErrorCam : BOOL; (*Fehler Kamera*)
bErrorPC : BOOL; (*Fehler PC*)
bResultOk : BOOL; (*Pr<50>fergebnis OK*)
bResultNOk : BOOL; (*Pr<50>fergebnis NOK*)
bNotInspected : BOOL; (*Teil nicht gepr<70>ft*)
END_STRUCT;
END_TYPE

View File

@@ -0,0 +1,26 @@
VAR
lCurrentCamSegment : {REDUND_UNREPLICABLE} gtyp_RecipeCamSegment; (*Aktuelles Kamerasegment*)
bTest : BOOL;
bFoundPart : BOOL;
bDebug : BOOL;
bLatchPartFromRobot : BOOL;
usi : USINT; (*Z<>hler*)
usTemp : {REDUND_UNREPLICABLE} USINT; (*Z<>hler*)
usSegState : {REDUND_UNREPLICABLE} USINT; (*Z<>hler*)
diDebug : DINT;
udTemp : UDINT;
lrTemp : LREAL;
LineInspectorInterface : typ_LineinspectorInterface; (*Interface mit Lineinspector*)
END_VAR
VAR RETAIN
Status : typ_Status; (*Status*)
END_VAR
VAR
PartDetector : typ_PartDetection; (*Bauteilerkennung*)
Parameter : REFERENCE TO gtyp_Parameter; (*Anlagenparameter*)
ParameterAsArray : REFERENCE TO ARRAY[0..40] OF USINT; (*Anlagenparameter*)
Times : typ_Times; (*Zeiten*)
Times_Latch : typ_Times; (*Speicher Zeiten*)
FUBs : typ_FUBs; (*FUBs*)
VCButtons : typ_VCButtons; (*Buttons etc. f<>r Visu*)
END_VAR

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Package xmlns="http://br-automation.co.at/AS/Package">
<Objects>
<Object Type="File" Description="Global data types">Global.typ</Object>
<Object Type="File" Description="Global variables">Global.var</Object>
<Object Type="Program" Language="IEC" Description="Liniensteuerung">LineCtrl</Object>
<Object Type="Program" Language="IEC" Description="Rezepte">Recipe</Object>
<Object Type="Program" Language="IEC" Description="DMX Ansteuerung LED Leiste">DMX</Object>
</Objects>
</Package>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio FileVersion="4.9"?>
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
<Files>
<File Description="Init, cyclic, exit code">Main.st</File>
<File Description="Local data types" Private="true">Types.typ</File>
<File Description="Lokale Variablen" Private="true">Variables.var</File>
<File Description="I/Os" Private="true">IOs.var</File>
</Files>
</Program>

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