定义里面说了,共享数据块和背景数据块的区别是共享数据块不附属于任何任何逻辑块,可在程序任何地方调用.而背景数据块则附属于某一个功能块如FB.
有个疑问,如下程序:
DATA_BLOCK DB 100
TITLE =
VERSION : 0.1
STRUCT
jjyy : ARRAY [1 .. 10 ] OF INT ;
END_STRUCT ;
BEGIN
jjyy[1] := 0;
jjyy[2] := 0;
jjyy[3] := 0;
jjyy[4] := 0;
jjyy[5] := 0;
jjyy[6] := 0;
jjyy[7] := 0;
jjyy[8] := 0;
jjyy[9] := 0;
jjyy[10] := 0;
END_DATA_BLOCK
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1
VAR_IN_OUT
inout_1 : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L #inout_1;
L 1;
+I ;
T #inout_1;
L DBNO;
T MW 20;
L DINO;
T MW 22;
END_FUNCTION_BLOCK
DATA_BLOCK DB 1
TITLE =
VERSION : 0.0
FB 1
BEGIN
inout_1 := 0;
END_DATA_BLOCK
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 =
OPN DB 100;
CALL FB 1 , DB 1 (
inout_1 := MW 10);
L DBNO;
T MW 30;
L DINO;
T MW 32;
END_ORGANIZATION_BLOCK
执行后监控MW20=0,MW22=1,MW30=1,MW32=0,也就是说背景数据块和共享数据块编号倒了,怎么会这样的呢?