Jump to content
OMRON Forums

Accessing Sys.Idata[xxx] form bgcplc


JeffLowe

Recommended Posts

I have created the following background cplc for test. Upon enabling with UserAlgo.BgCplc[0]=1 I monitor the p variable testpvar and Sys.Idata[50000] in a watch window. The p variable increments correctly and continiously, but the variable accessed by pushm does not. Any ideas as to what I am missing here?

 

// CPLCs/bgplc00/bgcplc.c

#include

#define _PPScriptMode_

#include "../../Include/pp_proj.h"

 

void user_plcc()

{

int *sos_tmp;

sos_tmp = (int *)pushm + 50000; // pointer to Sys.Idata[50000]

*sos_tmp++; // increment for test

testpvar++; // testpvar is declared as global testpvar in blobal definitions.pmh

}

Link to comment
Share on other sites

  • Replies 1
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

I have created the following background cplc for test. Upon enabling with UserAlgo.BgCplc[0]=1 I monitor the p variable testpvar and Sys.Idata[50000] in a watch window. The p variable increments correctly and continiously, but the variable accessed by pushm does not. Any ideas as to what I am missing here?

 

// CPLCs/bgplc00/bgcplc.c

#include

#define _PPScriptMode_

#include "../../Include/pp_proj.h"

 

void user_plcc()

{

int *sos_tmp;

sos_tmp = (int *)pushm + 50000; // pointer to Sys.Idata[50000]

*sos_tmp++; // increment for test

testpvar++; // testpvar is declared as global testpvar in blobal definitions.pmh

}

 

Replace "*sos_tmp++;" with "(*sos_tmp)++;". In your code, just the target address was shifted, not the value ++.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...