使用C ++将文本写入PLC

时间:2015-10-23 13:26:52

标签: c++ plc

我使用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的变量值的指针列表。注意:必须与指定变量的列表匹配!

0 个答案:

没有答案