AdrDT_Of_Offs

返回带有偏移量的输入或输出的DT地址

此函数从输入/输出Offs中的值在输入/输出AdrDTDT区域中生成16位地址。此输入必须直接连接到基本函数的16位输入/输出。输入/输出Offs中的值代表DT数据区域内的地址偏移量。使用GetPointer可以将其与内存区的数值一起传输到用户函数或功能块。

参数

输入

AdrDT (INT)

得出16位DT偏移量地址

此引脚必须连接到允许数据类型为INTWORD的基本函数的输入/输出

输出

Offs (WORD, INT, UINT)

地址DT0的偏移量

标注

  • 记住,通过将EN输入处变量的内存区值赋予函数Is_AreaDT,确定是否执行使用DT区域中创建的地址的基本函数。

  • 此函数在内部访问其中一个也用于数组计算的索引寄存器。

  • 仅限LD和FBD编辑器:使用[指令]窗格中的[输入指令][输出指令]将所需指令插入编程窗口。

示例

DUT

POU头

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

	VAR
		start: BOOL:=FALSE;
			(*activation of the function*)
		DutNonBoolean: @'Dut_NonBoolean';
			(*structured data type*)
		ActualPosition: DINT:=0;
			(*beginning position from which the data should be read to the IC card*)
	END_VAR

这里声明了在上述DUT中分配的数据类型的变量DutNonBoolean。由于执行函数ReadFromIcCard之后,变量DutNonBoolean的值被覆盖,因此未执行对变量DutNonBoolean的元素赋予值。

POU本体

当变量startFALSE变为TRUE时,执行函数ReadFromIcCard。此函数读取IC卡上以地址ActualPosition开头的值并将信息写入变量DutNonBoolean。请勿忘记必须通过菜单[在线] > [IC存储卡管理(C)...]正确格式化IC卡,而且如有必要,以地址ActualPosition开头的值应在IC卡上出现。

LD本体

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_CONTACT,,start,6,1,8,3,);
B(B_F,ReadFromIcCard!,Instance,18,1,27,8,,?DEN?DArea?DOffset?DSize?DPosition?AENO?C);
B(B_VARIN,,2,16,4,18,6,);
B(B_VARIN,,ActualPosition,16,6,18,8,);
B(B_VAROUT,,ActualPosition,27,3,29,5,);
B(B_F,GetPointer!,Instance,11,3,18,5,,?D?C);
B(B_VARIN,,Dut_NonBoolean,7,3,9,5,);
B(B_F,Size_Of_Var!,Instance,9,5,16,7,,?D?C);
L(18,2,18,3);
L(8,2,18,2);
L(1,2,6,2);
L(9,4,11,4);
L(9,4,9,6);
L(16,6,18,6);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

示例:编程用户自定义函数ReadFromIcCard

POU头

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

	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

POU本体

如果通过调用程序传送AreaOffset的值的变量位于DT或FL区域(因为变量p32Pointer的地址被编译器分配到了DT或FL区域),将从IC卡的p32ActualPosition开始读取数据。位置根据此变量的大小而提升并返回。

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
相关主题

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