Skip to content

Commit 3fefe4d

Browse files
authored
Merge pull request #1 from thomas-v2/master
Sync with master
2 parents f363801 + 21a0648 commit 3fefe4d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+3060
-700
lines changed

README.md

Lines changed: 111 additions & 4 deletions
Large diffs are not rendered by default.

plc/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# S7commPlusDriver
2+
3+
Kommunikationstreiber für den Datenaustausch mit S7-1200/1500 Steuerungen.
4+
5+
## Testprogramme mit allen Datentypen
6+
7+
Im Unterordner s7-1500 liegen Quelldateien für das TIA-Portal, aus denen sich ein Testprogramm
8+
generieren lässt in dem alle möglichen Datentypen vorhanden sind.
9+
10+
- .scl = SCL-Quelldateien (Text)
11+
- .db = Datenbaustein Quelldateien (Text)
12+
13+
Die einfachen Datentypen sind in einzelnen Datenbausteinen gemäß ihrer Kategorie zusammengefasst.
14+
Bei Zahlenwerten ist dabei immer eine Variable mit dem kleinst- und größtmöglichen Wert (Min/Max) vorhanden.
15+
Zudem je nach Bedarf einige Testwerte.
16+
17+
Um die Parametertypen und Zeiger zu generieren, ist für jeden dieser Typen ein FB mit zugehörigem Instanz-DB vorhanden.
18+
19+
Zu beachten ist, dass die S7-1200 nicht alle in der S7-1500 möglichen Datentypen unterstützt.
20+
21+
## Lizenz
22+
23+
Soweit nicht anders vermerkt, gilt für alle Quellcodes die GNU Lesser General Public License,
24+
Version 3 oder später.
25+
26+
## Authors
27+
28+
* **Thomas Wiens** - *Initial work* - [thomas-v2](https://github.com/thomas-v2)

plc/s7-1200/DB_Binary.db

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
DATA_BLOCK "DB_Binary"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Bool_False : Bool; // Bool: False
7+
Bool_True : Bool; // Bool: True
8+
END_VAR
9+
10+
11+
BEGIN
12+
Bool_True := TRUE;
13+
14+
END_DATA_BLOCK
15+

plc/s7-1200/DB_BitStrings.db

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
DATA_BLOCK "DB_BitStrings"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Byte_Min_0x00 : Byte; // Byte: Min
7+
Byte_Max_0xFF : Byte; // Byte: Max
8+
Byte_0xAB : Byte; // Byte: Testvalue 1
9+
Word_Min_0x0000 : Word; // Word: Min
10+
Word_Max_0xFFFF : Word; // Word: Max
11+
Word_0xCAFE : Word; // Word: Testvalue 1
12+
DWord_Min_0x00000000 : DWord; // DWord: Min
13+
DWord_Max_0xFFFFFFFF : DWord; // DWord: Max
14+
DWord_0xCAFEBABE : DWord; // DWord: Testvalue 1
15+
END_VAR
16+
17+
18+
BEGIN
19+
Byte_Max_0xFF := 16#00FF;
20+
Byte_0xAB := 16#00AB;
21+
Word_Max_0xFFFF := 16#FFFF;
22+
Word_0xCAFE := 16#CAFE;
23+
DWord_Max_0xFFFFFFFF := 16#FFFF_FFFF;
24+
DWord_0xCAFEBABE := 16#CAFE_BABE;
25+
26+
END_DATA_BLOCK
27+

plc/s7-1200/DB_CharacterStrings.db

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
DATA_BLOCK "DB_CharacterStrings"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Char_Space : Char; // Char: Space
7+
Char_A : Char; // Char: Capital A
8+
Char_auml : Char; // Char: Lowecase german a Umlaut
9+
String_Empty : String; // String: Empty
10+
String_Hello_World : String; // String: "Hello World"
11+
String_Moumltoumlrhead : String; // String: "Mötörhead"
12+
String_Len4_Test : String[4]; // String: Fix len[4] "Test"
13+
WChar_Space : WChar; // WChar: Space
14+
WChar_auml : WChar; // WChar: Lowecase german a Umlaut
15+
WChar_X : WChar; // WChar: Capital X
16+
WChar_GreekSigmaBig : WChar; // WChar: Greek capital Sigma
17+
WString_Empty : WString; // WString: Empty
18+
WString_Moumltoumlrhead : WString; // WString: "Mötörhead"
19+
WString_Greek1 : WString; // WString: String with greek chars
20+
WString_Len4_Test : WString[4]; // WString: Fix len[4] "Test"
21+
END_VAR
22+
23+
24+
BEGIN
25+
Char_A := 'A';
26+
Char_auml := 'ä';
27+
String_Hello_World := 'Hello World';
28+
String_Moumltoumlrhead := 'Mötörhead';
29+
String_Len4_Test := 'Test';
30+
WChar_auml := WCHAR#'ä';
31+
WChar_X := WCHAR#'X';
32+
WChar_GreekSigmaBig := WCHAR#'Ʃ';
33+
WString_Moumltoumlrhead := WSTRING#'Mötörhead';
34+
WString_Greek1 := WSTRING#'Test Greek ΣΛΔ end.';
35+
WString_Len4_Test := WSTRING#'Test';
36+
37+
END_DATA_BLOCK
38+

plc/s7-1200/DB_DateAndTime.db

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
DATA_BLOCK "DB_DateAndTime"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Date_Min_1990_01_01 : Date; // Date: Min
7+
Date_Max_2169_06_06 : Date; // Date: Max
8+
Date_2023_10_28 : Date; // Date: Testvalue 1
9+
Date_1991_02_03 : Date; // Date: Testvalue 2
10+
Time_Of_Day_Min_00_00_00d000 : Time_Of_Day; // Time_Of_Day: Min
11+
Time_Of_Day_Max_23_59_59d999 : Time_Of_Day; // Time_Of_Day: Min
12+
Time_Of_Day_01_02_03 : Time_Of_Day; // Time_Of_Day: Testvalue 1
13+
Time_Of_Day_23_58_59 : Time_Of_Day; // Time_Of_Day: Testvalue 2
14+
Time_Of_Day_12_13_14d123 : Time_Of_Day; // Time_Of_Day: Testvalue 3
15+
DTL_Min_1970_01_01_00_00_00d000000000 {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // DTL: Min
16+
DTL_Max_2262_04_11_23_47_16d854775807 {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // DTL: Max
17+
DTL_2008_10_25_08_12_34d567 {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // DTL: Testvalue 1
18+
END_VAR
19+
20+
21+
BEGIN
22+
Date_Max_2169_06_06 := D#2169-06-06;
23+
Date_2023_10_28 := D#2023-10-28;
24+
Date_1991_02_03 := D#1990-02-03;
25+
Time_Of_Day_Max_23_59_59d999 := TOD#23:59:59.999;
26+
Time_Of_Day_01_02_03 := TOD#01:02:03;
27+
Time_Of_Day_23_58_59 := TOD#23:58:59;
28+
Time_Of_Day_12_13_14d123 := TOD#12:13:14.123;
29+
DTL_Max_2262_04_11_23_47_16d854775807.YEAR := 2262;
30+
DTL_Max_2262_04_11_23_47_16d854775807.MONTH := 4;
31+
DTL_Max_2262_04_11_23_47_16d854775807.DAY := 11;
32+
DTL_Max_2262_04_11_23_47_16d854775807.WEEKDAY := 6;
33+
DTL_Max_2262_04_11_23_47_16d854775807.HOUR := 23;
34+
DTL_Max_2262_04_11_23_47_16d854775807.MINUTE := 47;
35+
DTL_Max_2262_04_11_23_47_16d854775807.SECOND := 16;
36+
DTL_Max_2262_04_11_23_47_16d854775807.NANOSECOND := 854775807;
37+
DTL_Max_2262_04_11_23_47_16d854775807 := DTL#2262-04-11-23:47:16.854775807;
38+
DTL_2008_10_25_08_12_34d567.YEAR := 2008;
39+
DTL_2008_10_25_08_12_34d567.MONTH := 10;
40+
DTL_2008_10_25_08_12_34d567.DAY := 25;
41+
DTL_2008_10_25_08_12_34d567.WEEKDAY := 7;
42+
DTL_2008_10_25_08_12_34d567.HOUR := 8;
43+
DTL_2008_10_25_08_12_34d567.MINUTE := 12;
44+
DTL_2008_10_25_08_12_34d567.SECOND := 34;
45+
DTL_2008_10_25_08_12_34d567.NANOSECOND := 567000000;
46+
DTL_2008_10_25_08_12_34d567 := DTL#2008-10-25-08:12:34.567;
47+
48+
END_DATA_BLOCK
49+

plc/s7-1200/DB_FloatingPoint.db

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
DATA_BLOCK "DB_FloatingPoint"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Real_MinNeg_n3d402823e38 : Real; // Real: Min negative value
7+
Real_MaxNeg_n1d175495en38 : Real; // Real: Max negative value
8+
Real_MinPos_1d175495en38 : Real; // Real: Min positive value
9+
Real_MaxPos_3d402823e38 : Real; // Real: Max positive value
10+
Real_0d0 : Real; // Real: Zero
11+
Real_987d125 : Real; // Real: Testvalue 1
12+
Real_n123d5 : Real; // Real: Testvalue 2
13+
LReal_MinNeg_n1d7976931348623157e308 : LReal; // LReal: Min negative value
14+
LReal_MaxNeg_n2d2250738585072014en308 : LReal; // LReal: Max negative value
15+
LReal_MinPos_2d2250738585072014en308 : LReal; // LReal: Min positive value
16+
LReal_MaxPos_1d7976931348623157e308 : LReal; // LReal: Max positive value
17+
LReal_0d0 : LReal; // LReal: Zero
18+
LReal_987d125 : LReal; // LReal: Testvalue 1
19+
LReal_n123d5 : LReal; // LReal: Testvalue 2
20+
LReal_1d23456789012346e18 : LReal; // LReal: Testvalue 3
21+
END_VAR
22+
23+
24+
BEGIN
25+
Real_MinNeg_n3d402823e38 := -3.402823E+38;
26+
Real_MaxNeg_n1d175495en38 := -1.175495E-38;
27+
Real_MinPos_1d175495en38 := 1.175495E-38;
28+
Real_MaxPos_3d402823e38 := 3.402823E+38;
29+
Real_987d125 := 987.125;
30+
Real_n123d5 := -123.5;
31+
LReal_MinNeg_n1d7976931348623157e308 := -1.7976931348623157E+308;
32+
LReal_MaxNeg_n2d2250738585072014en308 := -2.2250738585072014E-308;
33+
LReal_MinPos_2d2250738585072014en308 := 2.2250738585072014E-308;
34+
LReal_MaxPos_1d7976931348623157e308 := 1.7976931348623157E+308;
35+
LReal_987d125 := 987.125;
36+
LReal_n123d5 := -123.5;
37+
LReal_1d23456789012346e18 := 1.23456789012346E+18;
38+
39+
END_DATA_BLOCK
40+
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
DATA_BLOCK "DB_HardwareDataTypes"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
AOM_IDENT_0x1 : AOM_IDENT; // AOM_IDENT: Testvalue 1
7+
CONN_ANY_0x2 : CONN_ANY; // CONN_ANY: Testvalue 1
8+
CONN_OUC_0x3 : CONN_OUC; // CONN_OUC: Testvalue 1
9+
CONN_PRG_0x4 : CONN_PRG; // CONN_PRG: Testvalue 1
10+
DB_ANY_1001 : DB_ANY; // DB_ANY: Testvalue 1
11+
DB_DYN_1002 : DB_DYN; // DB_DYN: Testvalue 1
12+
DB_WWW_1003 : DB_WWW; // DB_WWW: Testvalue 1
13+
EVENT_ANY_0x6 : EVENT_ANY; // EVENT_ANY: Testvalue 1
14+
EVENT_ATT_0x7 : EVENT_ATT; // EVENT_ATT: Testvalue 1
15+
EVENT_HWINT_0x8 : EVENT_HWINT; // EVENT_HWINT: Testvalue 1
16+
HW_ANY_1004 : HW_ANY; // HW_ANY: Testvalue 1
17+
HW_DEVICE_1005 : HW_DEVICE; // HW_DEVICE: Testvalue 1
18+
HW_DPSLAVE_1007 : HW_DPSLAVE; // HW_DPSLAVE: Testvalue 1
19+
HW_HSC_1008 : HW_HSC; // HW_HSC: Testvalue 1
20+
HW_IEPORT_1009 : HW_IEPORT; // HW_IEPORT: Testvalue 1
21+
HW_INTERFACE_1010 : HW_INTERFACE; // HW_INTERFACE: Testvalue 1
22+
HW_IO_1011 : HW_IO; // HW_IO: Testvalue 1
23+
HW_IOSYSTEM_1012 : HW_IOSYSTEM; // HW_IOSYSTEM: Testvalue 1
24+
HW_PTO_1014 : HW_PTO; // HW_PTO: Testvalue 1
25+
HW_PWM_1015 : HW_PWM; // HW_PWM: Testvalue 1
26+
HW_SUBMODULE_1016 : HW_SUBMODULE; // HW_SUBMODULE: Testvalue 1
27+
OB_ANY_1017 : OB_ANY; // OB_ANY: Testvalue 1
28+
OB_ATT_1018 : OB_ATT; // OB_ATT: Testvalue 1
29+
OB_CYCLIC_1019 : OB_CYCLIC; // OB_CYCLIC: Testvalue 1
30+
OB_DELAY_1020 : OB_DELAY; // OB_DELAY: Testvalue 1
31+
OB_DIAG_1021 : OB_DIAG; // OB_DIAG: Testvalue 1
32+
OB_HWINT_1022 : OB_HWINT; // OB_HWINT: Testvalue 1
33+
OB_PCYCLE_1023 : OB_PCYCLE; // OB_PCYCLE: Testvalue 1
34+
OB_STARTUP_1024 : OB_STARTUP; // OB_STARTUP: Testvalue 1
35+
OB_TIMEERROR_1025 : OB_TIMEERROR; // OB_TIMEERROR: Testvalue 1
36+
OB_TOD_1026 : OB_TOD; // OB_TOD: Testvalue 1
37+
PIP_1027 : PIP; // PIP: Testvalue 1
38+
PORT_1028 : PORT; // PORT: Testvalue 1
39+
RTM_1029 : RTM; // RTM: Testvalue 1
40+
END_VAR
41+
42+
43+
BEGIN
44+
AOM_IDENT_0x1 := 16#0001;
45+
CONN_ANY_0x2 := 16#0002;
46+
CONN_OUC_0x3 := 16#0003;
47+
CONN_PRG_0x4 := 16#0004;
48+
DB_ANY_1001 := 1001;
49+
DB_DYN_1002 := 1002;
50+
DB_WWW_1003 := 1003;
51+
EVENT_ANY_0x6 := 16#0006;
52+
EVENT_ATT_0x7 := 16#0007;
53+
EVENT_HWINT_0x8 := 16#0008;
54+
HW_ANY_1004 := 1004;
55+
HW_DEVICE_1005 := 1005;
56+
HW_DPSLAVE_1007 := 1007;
57+
HW_HSC_1008 := 1008;
58+
HW_IEPORT_1009 := 1009;
59+
HW_INTERFACE_1010 := 1010;
60+
HW_IO_1011 := 1011;
61+
HW_IOSYSTEM_1012 := 1012;
62+
HW_PTO_1014 := 1014;
63+
HW_PWM_1015 := 1015;
64+
HW_SUBMODULE_1016 := 1016;
65+
OB_ANY_1017 := 1017;
66+
OB_ATT_1018 := 1018;
67+
OB_CYCLIC_1019 := 1019;
68+
OB_DELAY_1020 := 1020;
69+
OB_DIAG_1021 := 1021;
70+
OB_HWINT_1022 := 1022;
71+
OB_PCYCLE_1023 := 1023;
72+
OB_STARTUP_1024 := 1024;
73+
OB_TIMEERROR_1025 := 1025;
74+
OB_TOD_1026 := 1026;
75+
PIP_1027 := 1027;
76+
PORT_1028 := 1028;
77+
RTM_1029 := 1029;
78+
79+
END_DATA_BLOCK
80+

plc/s7-1200/DB_Integers.db

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
DATA_BLOCK "DB_Integers"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
Int_Min_n32768 : Int; // Int: Min
7+
Int_Max_32767 : Int; // Int: Max
8+
Int_12345 : Int; // Int: Testvalue 1
9+
Int_n9876 : Int; // Int: Testvalue 2
10+
USint_Min_0 : USInt; // USInt: Min
11+
USInt_Max_255 : USInt; // USInt: Max
12+
USInt_123 : USInt; // USInt: Testvalue 1
13+
UInt_Min_0 : UInt; // UInt: Min
14+
UInt_Max_65535 : UInt; // UInt: Max
15+
UInt_12345 : UInt; // UInt: Testvalue 1
16+
UDInt_Min_0 : UDInt; // UDInt: Min
17+
UDInt_Max_4294967295 : UDInt; // UDInt: Max
18+
UDint_1234567890 : UDInt; // UDInt: Testvalue 1
19+
SInt_Min_n128 : SInt; // SInt: Min
20+
SInt_Max_127 : SInt; // SInt: Max
21+
SInt_123 : SInt; // SInt: Testvalue 1
22+
SInt_n123 : SInt; // SInt: Testvalue 2
23+
END_VAR
24+
25+
26+
BEGIN
27+
Int_Min_n32768 := -32768;
28+
Int_Max_32767 := 32767;
29+
Int_12345 := 12345;
30+
Int_n9876 := -9876;
31+
USInt_Max_255 := 255;
32+
USInt_123 := 123;
33+
UInt_Max_65535 := 65535;
34+
UInt_12345 := 12345;
35+
UDInt_Max_4294967295 := 4_294_967_295;
36+
UDint_1234567890 := 1_234_567_890;
37+
SInt_Min_n128 := -128;
38+
SInt_Max_127 := 127;
39+
SInt_123 := 123;
40+
SInt_n123 := -123;
41+
42+
END_DATA_BLOCK
43+

plc/s7-1200/DB_SystemDataTypes.db

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
DATA_BLOCK "DB_SystemDataTypes"
2+
{ S7_Optimized_Access := 'TRUE' }
3+
VERSION : 0.1
4+
NON_RETAIN
5+
VAR
6+
CREF_1 {InstructionName := 'CREF'; LibVersion := '1.0'} : CREF; // CREF: All values default
7+
ErrorStruct_1 {InstructionName := 'ErrorStruct'; LibVersion := '1.0'} : ErrorStruct; // ErrorStruct: All values default
8+
IEC_COUNTER_1 {InstructionName := 'IEC_COUNTER'; LibVersion := '1.0'} : IEC_COUNTER; // IEC_COUNTER: All values default
9+
IEC_DCOUNTER_1 {InstructionName := 'IEC_DCOUNTER'; LibVersion := '1.0'} : IEC_DCOUNTER; // IEC_DCOUNTER: All values default
10+
IEC_SCOUNTER_1 {InstructionName := 'IEC_SCOUNTER'; LibVersion := '1.0'} : IEC_SCOUNTER; // IEC_SCOUNTER: All values default
11+
IEC_TIMER_1 {InstructionName := 'IEC_TIMER'; LibVersion := '1.0'} : IEC_TIMER; // IEC_TIMER: All values default
12+
IEC_UCOUNTER_1 {InstructionName := 'IEC_UCOUNTER'; LibVersion := '1.0'} : IEC_UCOUNTER; // IEC_UCOUNTER: All values default
13+
IEC_UDCOUNTER_1 {InstructionName := 'IEC_UDCOUNTER'; LibVersion := '1.0'} : IEC_UDCOUNTER; // IEC_UDCOUNTER: All values default
14+
IEC_USCOUNTER_1 {InstructionName := 'IEC_USCOUNTER'; LibVersion := '1.0'} : IEC_USCOUNTER; // IEC_USCOUNTER: All values default
15+
NREF {InstructionName := 'NREF'; LibVersion := '1.0'} : NREF; // NREF: All values default
16+
END_VAR
17+
18+
19+
BEGIN
20+
21+
END_DATA_BLOCK
22+

0 commit comments

Comments
 (0)