连续地址操作:

添加库SysMem(路径SysTem/Syslibs/SysMem),使用SysMemSet函数将连续地址变量设置为相同的值。 SysMem库还提供复制,比较,转换等操作,且与C语言用法一致,具体用法网上有很多资料。

1、复位多个连续SM、SD元件,M区、Q区、数组:

定义:

VAR

pSM0: POINTER TO BOOL;

pSD0: POINTER TO INT;

pMW0: POINTER TO WORD;

pQW0: POINTER TO WORD;

arr:ARRAY[0..500] OF INT;

parr: POINTER TO ARRAY [0..500] OF INT;

END_VAR

编程:

(示例复位Sm0~Sm99,SD0~SD99,%MW0~%MW99,%QW0~%QW99;)

//获取SM0地址

pSM0:=ADR(sm0);

//SysMemSet.pDest起始地址指针,SysMemSet.udiValue设置值,SysMemSet.udiCount赋值长度(byte)

SysMemSet(pDest:=pSM0 , udiValue:= 0, udiCount:= 100);

//获取SD0地址

pSD0:=ADR(SD0);

SysMemSet(pDest:=pSD0 , udiValue:= 0, udiCount:= 200);

//获取%MW0地址

pMW0:=ADR(%MW0);

SysMemSet(pDest:=pMW0 , udiValue:= 0, udiCount:= 200);

//获取%QW0地址

pQW0:=ADR(%QW0);

SysMemSet(pDest:=pQW0 , udiValue:= 0, udiCount:= 200);

//获取arr首地址

parr:=ADR(arr);

//SIZEOF(arr)获取数组占用长度

SysMemSet(pDest:=pQW0 , udiValue:= 0, udiCount:= SIZEOF(arr));

设置0就与复位效果一样,注意该指令按字节计算长度。也可以结合For循环、指针循环赋值。

2、数据结构初始化:

运行中可以使用隐藏的接口方法初始化结构体。帮助文档中查找FB_init有详细介绍。

演示步骤:

新建结构体DUT,内含元素a,b,c;

程序修改a,b,c的值;

调用FB_reinit,初始化元素;

新建结构DUT:

定义DUT类型的变量:

VAR

binitDUT: BOOL;

AM600_DUT:DUT;

END_VAR

初始化AM600_DUT:

IF binitDUT THEN

AM600_DUT.fb_init(TRUE,TRUE);

binitDUT:=FALSE;

END_IF

注意:如果没有用户定义fb_init方法,编译会提示fb_init未定义,不用管它能正常使用,功能块也可以使用同样的方法初始化,需要手动定义fb_init接口方法,使用方法在功能块中详细介绍。

Copyright © www.yanjuntech.cn 2018-2025 all right reserved,powered by Gitbook该文件修订时间: 2018-10-21 10:33:01

results matching ""

    No results matching ""