Code: Selecteer alles
DATA_BLOCK DB 20
TITLE =
VERSION : 0.1
STRUCT
ZendData : STRUCT //
IngangCPU1 : STRUCT
I124_0 : BOOL ;
I124_1 : BOOL ;
I124_2 : BOOL ;
I124_3 : BOOL ;
I124_4 : BOOL ;
I124_5 : BOOL ;
I124_6 : BOOL ;
I124_7 : BOOL ;
I125_0 : BOOL ;
I125_1 : BOOL ;
END_STRUCT ;
Reserve : STRING [46 ];
END_STRUCT ;
OntvangsData : STRUCT
IngangCPU2 : STRUCT
I0_0 : BOOL ;
I0_1 : BOOL ;
I0_2 : BOOL ;
I0_3 : BOOL ;
I0_4 : BOOL ;
I0_5 : BOOL ;
I0_6 : BOOL ;
I0_7 : BOOL ;
I1_0 : BOOL ;
I1_1 : BOOL ;
END_STRUCT ;
Reserve : STRING [46 ];
END_STRUCT ;
END_STRUCT ;
BEGIN
ZendData.IngangCPU1.I124_0 := FALSE;
ZendData.IngangCPU1.I124_1 := FALSE;
ZendData.IngangCPU1.I124_2 := FALSE;
ZendData.IngangCPU1.I124_3 := FALSE;
ZendData.IngangCPU1.I124_4 := FALSE;
ZendData.IngangCPU1.I124_5 := FALSE;
ZendData.IngangCPU1.I124_6 := FALSE;
ZendData.IngangCPU1.I124_7 := FALSE;
ZendData.IngangCPU1.I125_0 := FALSE;
ZendData.IngangCPU1.I125_1 := FALSE;
ZendData.Reserve := '';
OntvangsData.IngangCPU2.I0_0 := FALSE;
OntvangsData.IngangCPU2.I0_1 := FALSE;
OntvangsData.IngangCPU2.I0_2 := FALSE;
OntvangsData.IngangCPU2.I0_3 := FALSE;
OntvangsData.IngangCPU2.I0_4 := FALSE;
OntvangsData.IngangCPU2.I0_5 := FALSE;
OntvangsData.IngangCPU2.I0_6 := FALSE;
OntvangsData.IngangCPU2.I0_7 := FALSE;
OntvangsData.IngangCPU2.I1_0 := FALSE;
OntvangsData.IngangCPU2.I1_1 := FALSE;
OntvangsData.Reserve := '';
END_DATA_BLOCK
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
VAR_TEMP
Laddr : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =Hulp act bit hoogmaken
UN M 100.0;
L S5T#2S;
SE T 1;
NETWORK
TITLE =Act bit
O T 1;
O M 100.1;
= M 100.0;
NETWORK
TITLE =Adres CP naar hex (Word) formaat
L 256;
T #Laddr;
NOP 0;
NETWORK
TITLE =
//FC 5 staat in Bibliotheek SIMATIC_NET_CP - CP 330
U M 100.0;
= L 2.0;
BLD 103;
CALL FC 5 (
ACT := L 2.0,
ID := 1,
LADDR := #Laddr,
SEND := DB20.ZendData.IngangCPU1,
LEN := 2,
DONE := M 100.1,
ERROR := M 100.2,
STATUS := MW 102);
NOP 0;
NETWORK
TITLE =Data ontvangen
//FC 6 staat in Bibliotheek SIMATIC_NET_CP - CP 330
CALL FC 6 (
ID := 1,
LADDR := #Laddr,
RECV := DB20.OntvangsData.IngangCPU2,
NDR := M 104.0,
ERROR := M 104.1,
STATUS := MW 106,
LEN := MW 108);
NOP 0;
END_FUNCTION
ORGANIZATION_BLOCK OB 1
TITLE = "Main Program Sweep (Cycle)"
VERSION : 0.1
VAR_TEMP
OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
OB1_PRIORITY : BYTE ; //Priority of OB Execution
OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
OB1_RESERVED_1 : BYTE ; //Reserved for system
OB1_RESERVED_2 : BYTE ; //Reserved for system
OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
END_VAR
BEGIN
NETWORK
TITLE =Ingangswoord naar Zend data
//Eventueel bit voor bit overdragen
//In CPU 2 EW 0 ( IW0 ) nemen
L EW 124;
T DB20.DBW 0;
NOP 0;
NETWORK
TITLE =
CALL FC 1 ;
NOP 0;
NETWORK
TITLE =1ste byte van ontvangst data naar uitgangs byte
//Eventueel bit voor bit overdragen (Zijn maar 6 bit uitgangen
//In CPU 2 AB 0 ( QB 0 ) nemen
L DB20.DBB 50;
T AB 124;
NOP 0;
END_ORGANIZATION_BLOCK