我使用CodeSys中的库将变量写入带有C ++程序的PLC。
这就是我给PLC写一个数字的方法:
void PLCconnection::WriteVariable(int a_value, int a_listPosition)
{
unsigned long ulStart;
PlcSymbolDesc *pSymbols;
unsigned long ulNumOfSymbols = 0;
int iNumOfVars = 28;
int i;
char **ppszVars = new char*[iNumOfVars];
for (i = 0; i < iNumOfVars; i++)
ppszVars[i] = new char[255];
long lResult = RESULT_FAILED;
lResult = pPLCHandler->GetAllItems(&pSymbols, &ulNumOfSymbols);
if (lResult == RESULT_OK)
{
strcpy(ppszVars[0], pSymbols[a_listPosition].pszName); //getting the variable name
//ppszVar;
/* Write variables value to check, if variables can be written */
unsigned char **ppbyValues = new unsigned char*[2];
ppbyValues[0] = (unsigned char *)new unsigned long;
*(unsigned long *)ppbyValues[0] = a_value;
ulStart = CAL_SysTimeGetMs();
if (pPLCHandler->SyncWriteVarsToPlc(ppszVars, 1, ppbyValues) == RESULT_OK)
{
//writing succeeded
}
else
{
//writing failed
}
delete ppbyValues[0];
delete[] ppbyValues;
}
else
{
// Couldn't retrieve symbols
}
for (i = 0; i < iNumOfVars; i++)
delete[] ppszVars[i];
delete[] ppszVars;
}
现在,我想发送int a_value
而不是string
。
如何使用string
您可以在下面找到有关方法SyncWriteVarsToPLC
的一些信息:
此方法可用于将变量值列表传输到PLC。这些值直接写入PLC。
ppszSymbols:变量名称的指针列表。这些变量将被写入PLC一次。
ulNumOfSymbols:列表中的变量数
ppbyValues:应该写入PLC的变量值的指针列表。注意:必须与指定变量的列表匹配!