JeffLowe Posted January 28, 2019 Share Posted January 28, 2019 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 More sharing options...
lovu Posted January 29, 2019 Share Posted January 29, 2019 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 More sharing options...
Recommended Posts