Hi I am trying to create a block to set a bit in a datablock. My problem is the final Set statment which generates an error.
Esentially FC1 is given an integer value which is the number of the bit to set in DB1
Esentially FC1 is given an integer value which is the number of the bit to set in DB1
DATA_BLOCK DB 1
TITLE =
VERSION : 0.1
STRUCT
Step01 : BOOL ;
Step02 : BOOL ;
Step03 : BOOL ;
Step04 : BOOL ;
Step05 : BOOL ;
Step06 : BOOL ;
Step07 : BOOL ;
Step08 : BOOL ;
Step09 : BOOL ;
Step10 : BOOL ;
Step11 : BOOL ;
Step12 : BOOL ;
Step13 : BOOL ;
Step14 : BOOL ;
Step15 : BOOL ;
Step16 : BOOL ;
END_STRUCT ;
BEGIN
Step01 := FALSE;
Step02 := FALSE;
Step03 := FALSE;
Step04 := FALSE;
Step05 := FALSE;
Step06 := FALSE;
Step07 := FALSE;
Step08 := FALSE;
Step09 := FALSE;
Step10 := FALSE;
Step11 := FALSE;
Step12 := FALSE;
Step13 := FALSE;
Step14 := FALSE;
Step15 := FALSE;
Step16 := FALSE;
END_DATA_BLOCK
FUNCTION FC 1 : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
StepNumber : INT ;
END_VAR
VAR_TEMP
ILoopCount : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
OPN DB 1; // open data block
L 0;
T DB1.DBW 0; // Clear the step coils in the DB
L 0; //Load start bit into AR1.
LAR1 ;
L #StepNumber; //which bit (+1)
NEXT: T #ILoopCount; // Loop Counter
+AR1 P#0.1; //increment to next bit
L #ILoopCount;
LOOP NEXT;
S DBX [AR1,P#0.0]; // Set Bit
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 =
CALL FC 1 (
StepNumber := 2);
NOP 0;
END_ORGANIZATION_BLOCK