PROGRAM SCAN
VAR_EXTERNAL

(*SCAN Program*)						
LBOX01_DS             :BOOL;
LBOX02_DS             :BOOL;
LBOX03_DS             :BOOL;
LBOX04_DS             :BOOL;
LBOX05_DS             :BOOL;
LBOX06_DS             :BOOL;
LBOX07_DS             :BOOL;
LBOX08_DS             :BOOL;
LBOX09_DS             :BOOL;
LBOX10_DS             :BOOL;
LBOX00_OR             :REAL; 
LBOX01_OR             :REAL; 
LBOX02_OR             :REAL; 
LBOX03_OR             :REAL; 
LBOX04_OR             :REAL; 
LBOX05_OR             :REAL; 
LBOX06_OR             :REAL; 
LBOX07_OR             :REAL; 
LBOX08_OR             :REAL; 
LBOX09_OR             :REAL; 
LBOX10_OR             :REAL; 

END_VAR

VAR_GLOBAL

END_VAR

VAR
Dev_Array                   :array[0..31] of byte;			
BOX01_DevScan               :BS_DevScan;
BOX02_DevScan               :BS_DevScan;
BOX03_DevScan               :BS_DevScan;
BOX04_DevScan               :BS_DevScan;
BOX05_DevScan               :BS_DevScan;
BOX06_DevScan               :BS_DevScan;
BOX07_DevScan               :BS_DevScan;
BOX08_DevScan               :BS_DevScan;
BOX09_DevScan               :BS_DevScan;
BOX10_DevScan               :BS_DevScan;

BOX01_TC					:INT;	(*箱体模块在线比例*)							
BOX02_TC					:INT;	
BOX03_TC             		:INT;	
BOX04_TC					:INT;	
BOX05_TC					:INT;								
BOX06_TC					:INT;	
BOX07_TC             		:INT;	
BOX08_TC					:INT;	
BOX09_TC					:INT;								
BOX10_TC					:INT;	

BOX01_EC					:INT;	(*箱体模块在线比例*)							
BOX02_EC					:INT;	
BOX03_EC             		:INT;	
BOX04_EC					:INT;	
BOX05_EC					:INT;								
BOX06_EC					:INT;	
BOX07_EC             		:INT;	
BOX08_EC					:INT;	
BOX09_EC					:INT;								
BOX10_EC					:INT;
         
BOX01_Hex			        :DWORD ; 
BOX02_Hex			        :DWORD ; 
BOX03_Hex			        :DWORD ; 
BOX04_Hex			        :DWORD ; 
BOX05_Hex			        :DWORD ; 
BOX06_Hex			        :DWORD ; 
BOX07_Hex			        :DWORD ; 
BOX08_Hex			        :DWORD ; 
BOX09_Hex			        :DWORD ; 
BOX10_Hex			        :DWORD ; 					

DEV00_R         AT%M8000.0  :BYTE;										
DEV01_R         AT%M8001.0  :BYTE;										
DEV02_R         AT%M8002.0  :BYTE;										
DEV03_R         AT%M8003.0  :BYTE;										
DEV04_R         AT%M8004.0  :BYTE;										
DEV05_R         AT%M8005.0  :BYTE;										
DEV06_R         AT%M8006.0  :BYTE;										
DEV07_R         AT%M8007.0  :BYTE;										
DEV08_R         AT%M8008.0  :BYTE;										
DEV09_R         AT%M8009.0  :BYTE;										
DEV10_R         AT%M8010.0  :BYTE;										
DEV11_R         AT%M8011.0  :BYTE;										
DEV12_R         AT%M8012.0  :BYTE;										
DEV13_R         AT%M8013.0  :BYTE;										
DEV14_R         AT%M8014.0  :BYTE;										
DEV15_R         AT%M8015.0  :BYTE;										
DEV16_R         AT%M8016.0  :BYTE;										
DEV17_R         AT%M8017.0  :BYTE;										
DEV18_R         AT%M8018.0  :BYTE;										
DEV19_R         AT%M8019.0  :BYTE;										
DEV20_R         AT%M8020.0  :BYTE;
DEV21_R         AT%M8021.0  :BYTE;	
DEV22_R         AT%M8022.0  :BYTE;	
DEV23_R         AT%M8023.0  :BYTE;	
DEV24_R         AT%M8024.0  :BYTE;	
DEV25_R         AT%M8025.0  :BYTE;	
DEV26_R         AT%M8026.0  :BYTE;	
DEV27_R         AT%M8027.0  :BYTE;	
DEV28_R         AT%M8028.0  :BYTE;	
DEV29_R         AT%M8029.0  :BYTE;	
DEV30_R         AT%M8030.0  :BYTE;	
DEV31_R         AT%M8031.0  :BYTE;	

END_VAR
(*模块地址分配设定,分别对应0~31号地址模块,从右起*)
            (* 3         2         1          *)
		    (*10987654321098765432109876543210*)
BOX01_Hex :=2#00000000000000000000000000011111 ; 
BOX02_Hex :=2#00000000000000000000001111100000 ;
BOX03_Hex :=2#00000000000000000000000000000000 ; 
(*模块扫描功能块关联*)
BOX01_DevScan( Dev_Array:= Dev_Array , Dev_Scan_Hex:= BOX01_Hex |  LBOX01_DS:= Dev_Ready, LBOX01_OR:= Dev_Ratio, BOX01_TC:= Dev_Total, BOX01_EC:= Dev_Error, RNQCMD00000_DHV:= Heartvavle );
BOX02_DevScan( Dev_Array:= Dev_Array , Dev_Scan_Hex:= BOX02_Hex |  LBOX02_DS:= Dev_Ready, LBOX02_OR:= Dev_Ratio, BOX02_TC:= Dev_Total, BOX02_EC:= Dev_Error );
BOX03_DevScan( Dev_Array:= Dev_Array , Dev_Scan_Hex:= BOX03_Hex |  LBOX03_DS:= Dev_Ready, LBOX03_OR:= Dev_Ratio, BOX03_TC:= Dev_Total, BOX03_EC:= Dev_Error );

(*总线在线数量计算*)
LBOX00_OR :=1.0-INT_TO_REAL(BOX01_EC+BOX02_EC+BOX03_EC)
               /INT_TO_REAL(BOX01_TC+BOX02_TC+BOX03_TC); 

(****************************************************默认段****************************************************)												
(*模块设备状态关联*)
Dev_Array[0] :=DEV00_R;													
Dev_Array[1] :=DEV01_R;													
Dev_Array[2] :=DEV02_R;													
Dev_Array[3] :=DEV03_R;													
Dev_Array[4] :=DEV04_R;
Dev_Array[5] :=DEV05_R;													
Dev_Array[6] :=DEV06_R;													
Dev_Array[7] :=DEV07_R;													
Dev_Array[8] :=DEV08_R;													
Dev_Array[9] :=DEV09_R;
Dev_Array[10]:=DEV10_R;													
Dev_Array[11]:=DEV11_R;													
Dev_Array[12]:=DEV12_R;													
Dev_Array[13]:=DEV13_R;													
Dev_Array[14]:=DEV14_R;
Dev_Array[15]:=DEV15_R;													
Dev_Array[16]:=DEV16_R;													
Dev_Array[17]:=DEV17_R;													
Dev_Array[18]:=DEV18_R;													
Dev_Array[19]:=DEV19_R;	
Dev_Array[20]:=DEV20_R;													
Dev_Array[21]:=DEV21_R;													
Dev_Array[22]:=DEV22_R;													
Dev_Array[23]:=DEV23_R;													
Dev_Array[24]:=DEV24_R;
Dev_Array[25]:=DEV25_R;													
Dev_Array[26]:=DEV26_R;													
Dev_Array[27]:=DEV27_R;													
Dev_Array[28]:=DEV28_R;													
Dev_Array[29]:=DEV29_R;
Dev_Array[30]:=DEV30_R;													
Dev_Array[31]:=DEV31_R;

END_PROGRAM