sparkysliderz
Member
I'm still really trying to get to terms with S7 indirect addressing and I found a piece of code that I thought would help with a practical example, i can go online in OB1 with no problem but whenever I go online to FB100 the plc faults with "STOP caused by priority class system" and "Cycle time exceeded" so I'm guessing its getting stuck in the loop somewhere, but I dont know where!
Here is the code for FB100
FUNCTION_BLOCK FB 100
TITLE =
VERSION : 0.1
VAR_INPUT
x0 : BOOL ;
x1 : BOOL ;
x2 : BOOL ;
x3 : BOOL ;
x4 : BOOL ;
x5 : BOOL ;
x6 : BOOL ;
x7 : BOOL ;
x8 : BOOL ;
x9 : BOOL ;
x10 : BOOL ;
x11 : BOOL ;
x12 : BOOL ;
x13 : BOOL ;
x14 : BOOL ;
x15 : BOOL ;
x16 : BOOL ;
x17 : BOOL ;
x18 : BOOL ;
x19 : BOOL ;
x20 : BOOL ;
x21 : BOOL ;
x22 : BOOL ;
x23 : BOOL ;
x24 : BOOL ;
x25 : BOOL ;
x26 : BOOL ;
x27 : BOOL ;
x28 : BOOL ;
x29 : BOOL ;
x30 : BOOL ;
x31 : BOOL ;
tV_TIMER : TIMER ;
tV_LAST : S5TIME ;
END_VAR
VAR_OUTPUT
y0 : BOOL ;
y1 : BOOL ;
y2 : BOOL ;
y3 : BOOL ;
y4 : BOOL ;
y5 : BOOL ;
y6 : BOOL ;
y7 : BOOL ;
y8 : BOOL ;
y9 : BOOL ;
y10 : BOOL ;
y11 : BOOL ;
y12 : BOOL ;
y13 : BOOL ;
y14 : BOOL ;
y15 : BOOL ;
y16 : BOOL ;
y17 : BOOL ;
y18 : BOOL ;
y19 : BOOL ;
y20 : BOOL ;
y21 : BOOL ;
y22 : BOOL ;
y23 : BOOL ;
y24 : BOOL ;
y25 : BOOL ;
y26 : BOOL ;
y27 : BOOL ;
y28 : BOOL ;
y29 : BOOL ;
y30 : BOOL ;
y31 : BOOL ;
END_VAR
VAR
hsp : BOOL ;
END_VAR
VAR_TEMP
SLZ : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##x0;
TAR2 ;
SLD 8;
SRD 8;
+D ;
LAR1 ;
L #tV_LAST;
A #tV_TIMER;
R #hsp;
A #hsp;
SE #tV_TIMER;
L 32;
xyz0: T #SLZ;
T #SLZ;
A [AR1,P#0.0];
AN [AR1,P#8.0];
AN #hsp;
S #hsp;
S [AR1,P#8.0];
AN [AR1,P#0.0];
R [AR1,P#8.0];
+AR1 P#0.1;
L #SLZ;
LOOP xyz0;
SET ;
SAVE ;
END_FUNCTION_BLOCK
Thanks (again!) for your help guys
Here is the code for FB100
FUNCTION_BLOCK FB 100
TITLE =
VERSION : 0.1
VAR_INPUT
x0 : BOOL ;
x1 : BOOL ;
x2 : BOOL ;
x3 : BOOL ;
x4 : BOOL ;
x5 : BOOL ;
x6 : BOOL ;
x7 : BOOL ;
x8 : BOOL ;
x9 : BOOL ;
x10 : BOOL ;
x11 : BOOL ;
x12 : BOOL ;
x13 : BOOL ;
x14 : BOOL ;
x15 : BOOL ;
x16 : BOOL ;
x17 : BOOL ;
x18 : BOOL ;
x19 : BOOL ;
x20 : BOOL ;
x21 : BOOL ;
x22 : BOOL ;
x23 : BOOL ;
x24 : BOOL ;
x25 : BOOL ;
x26 : BOOL ;
x27 : BOOL ;
x28 : BOOL ;
x29 : BOOL ;
x30 : BOOL ;
x31 : BOOL ;
tV_TIMER : TIMER ;
tV_LAST : S5TIME ;
END_VAR
VAR_OUTPUT
y0 : BOOL ;
y1 : BOOL ;
y2 : BOOL ;
y3 : BOOL ;
y4 : BOOL ;
y5 : BOOL ;
y6 : BOOL ;
y7 : BOOL ;
y8 : BOOL ;
y9 : BOOL ;
y10 : BOOL ;
y11 : BOOL ;
y12 : BOOL ;
y13 : BOOL ;
y14 : BOOL ;
y15 : BOOL ;
y16 : BOOL ;
y17 : BOOL ;
y18 : BOOL ;
y19 : BOOL ;
y20 : BOOL ;
y21 : BOOL ;
y22 : BOOL ;
y23 : BOOL ;
y24 : BOOL ;
y25 : BOOL ;
y26 : BOOL ;
y27 : BOOL ;
y28 : BOOL ;
y29 : BOOL ;
y30 : BOOL ;
y31 : BOOL ;
END_VAR
VAR
hsp : BOOL ;
END_VAR
VAR_TEMP
SLZ : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##x0;
TAR2 ;
SLD 8;
SRD 8;
+D ;
LAR1 ;
L #tV_LAST;
A #tV_TIMER;
R #hsp;
A #hsp;
SE #tV_TIMER;
L 32;
xyz0: T #SLZ;
T #SLZ;
A [AR1,P#0.0];
AN [AR1,P#8.0];
AN #hsp;
S #hsp;
S [AR1,P#8.0];
AN [AR1,P#0.0];
R [AR1,P#8.0];
+AR1 P#0.1;
L #SLZ;
LOOP xyz0;
SET ;
SAVE ;
END_FUNCTION_BLOCK
Thanks (again!) for your help guys