ReadDataFromFileRegisterBank

从文件寄存器库1或2读取数据

此指令从以BankOffset开头的BankNumber所指定的文件寄存器组1或2中读取DataNumberOfWords指定的字数,并将其写入DataStartAddress

参数

输入

BankNumber (INT)

指定库编号

BankOffset (INT)

指定库编号偏移量

DataNumberOfWords (INT)

要从文件寄存器库读取的字单元数

输出

DataStartAddress (WORD, INT, UINT)

指定从文件寄存器库读取的数据的起始地址

标注

使用此函数无法读取FL区域(文件寄存器库0)中的数据,即,应用到DataStartAddress的变量不得位于FL区域。

示例

POU头

所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。

_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR
	VAR_INPUT
		p32Pointer: POINTER32;
			(*area, offset and size of data values*)
		diPosition: DINT:=0;
			(*beginning position from which the data should be read from the IC card*)
	END_VAR
	VAR_OUTPUT
		p32ActualPosition: POINTER32;
			(*shows the area, offset and size where the data of the IC card is stored*)
	END_VAR
	VAR
	END_VAR

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_VARIN,,2,20,3,22,5,);
B(B_VARIN,,1000,20,4,22,6,);
B(B_VARIN,,awProcessDataToGet[0],10,5,12,7,);
B(B_CONTACT,,bGetData,5,2,7,4,R);
B(B_F,Size_Of_Var!,Instance,12,5,19,7,,?D?C);
B(B_F,E_ReadFromIcCard!,Instance,22,1,37,7,,?DEN?DBankNumber?DBankOffset?DDataNumberOfWords?AENO?CDataStartAddress);
B(B_F,Adr_Of_Var_O!,Instance,37,3,45,5,,?D?C);
B(B_VAROUT,,awProcessDataToGet,45,3,47,5,);
L(1,3,5,3);
L(19,6,22,6);
L(1,0,1,9);
L(7,3,22,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST本体

if (DF(bGetData)) then
    ReadDataFromFileRegisterBank(BankNumber := 2, 
    BankOffset := 1000, 
    DataNumberOfWords := Size_Of_Var(awProcessDataToGet), 
    DataStartAddress => Adr_Of_Var(awProcessDataToGet));
end_if;

最后更新日期: 此页面上的反馈松下热线