贝加莱DatObj数据模块进行memmove操作 点击:251 | 回复:2



xyzw1023

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 14回
  • 年度积分:5
  • 历史总积分:86
  • 注册:2013年9月04日
发表于:2018-01-11 23:16:31
楼主

我新建了一个数据模块,用来存放一些数组。新的数组永远放在数据模块的开头位置,所以每次存放数据之前都需要将数据模块中的数据向后移sizeof(数组)的长度。我的操作方式是这样的

memmove(p数据模块+sizeof(数组),p数据模块,模块长度-sizeof(数组))。运行程序,先执行memmove指令,然后再将数据模块中的数据读到数组变量,发现数据模块中的数确实按照意图改变。但大概30s到1分钟之后plc到serv模式,故障代码是6403,模块校验和错误。这期间没有其他程序在运行。不知道问题处在哪里,请各位帮分析一下原因。

PROGRAM _INIT

FOR index0 := 0 TO 99 DO

Array0[index0] := index0;

END_FOR;

sName := ADR('obj01');

END_PROGRAM



PROGRAM _CYCLIC


CASE StartStep OF

0:

DatObjCreate_0.enable := 1;

DatObjCreate_0.grp := 0;

DatObjCreate_0.len := SIZEOF(ReadArray);

DatObjCreate_0.MemType := doUSRROM;

DatObjCreate_0.pName := sName;

DatObjCreate_0.pCpyData := ADR(Array0);

DatObjCreate_0.Option := 1;

DatObjCreate_0();

IF DatObjCreate_0.status = 0 OR DatObjCreate_0.status = 20601 THEN

StartStep := 1;

END_IF;

1:

DatObjInfo_0(enable := 1, pName := sName);

IF DatObjInfo_0.status=0 THEN

StartStep := 2;

END_IF;

2:

END_CASE;

IF MoveOffset=1 THEN

MoveOffset := 0;

memmove(DatObjInfo_0.pDatObjMem + SIZEOF(Array0),DatObjInfo_0.pDatObjMem,DatObjInfo_0.len - SIZEOF(Array0));

END_IF;

IF CommandRead=1 THEN

CommandRead := 0;

DatObjRead_0.enable := 1;

DatObjRead_0.ident := DatObjInfo_0.ident;

DatObjRead_0.len := SIZEOF(ReadArray);

DatObjRead_0.Offset := 0;

DatObjRead_0.pDestination := ADR(ReadArray);

DatObjRead_0();

END_IF;


IF CommandWrite=1 THEN

CommandWrite := 0;

DatObjWrite_0.enable := 1;

DatObjWrite_0.ident := DatObjInfo_0.ident;

DatObjWrite_0.len := SIZEOF(ReadArray);

DatObjWrite_0.Offset := 0;

DatObjWrite_0.pSource := DatObjInfo_0.pDatObjMem;

DatObjWrite_0();

END_IF;

END_PROGRAM





李东泽

  • [版主]
  • 精华:7帖
  • 求助:25帖
  • 帖子:1209帖 | 6375回
  • 年度积分:216
  • 历史总积分:44409
  • 注册:2010年3月25日
发表于:2018-01-14 14:04:08
1楼

请发求助帖,这样可以提高你的帖子点击率

xyzw1023

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 14回
  • 年度积分:5
  • 历史总积分:86
  • 注册:2013年9月04日
发表于:2018-01-14 20:57:52
2楼

已解决,事实证明无法用处理内存的方式对数据模块进行操作。


热门招聘
相关主题

官方公众号

智造工程师