Элементы OPC не создаются на сервере

Я пытаюсь создать клиент opc, который подключается к серверу ofs opc.

Код для клиента ниже.

Этот код успешно создает группу на сервере, но не создает никаких элементов и не выдает ошибок.

    hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IUnknown, (LPVOID*)&pUnkn);

    if(SUCCEEDED(hr))
    {
        hr = pUnkn->QueryInterface(IID_IOPCServer, (LPVOID*)&m_pOpcServer);
        hr = pUnkn->QueryInterface(IID_IOPCBrowseServerAddressSpace,       (LPVOID*)&m_pOpcBrowse);   
        hr = m_pOpcServer->QueryInterface(IID_IConnectionPointContainer, (void**)&pCPC);

        OPCHANDLE hClientGroup = 0;
        DWORD dwUpdateRate = 0;
        hr = m_pOpcServer->AddGroup(L"Group1", true, dwUpdateRate, hClientGroup, 0,0, 0, &hClientGroup, &dwUpdateRate, IID_IOPCGroupStateMgt, (IUnknown**)&pInterface);


        OPCITEMDEF idef[1] = {{ /*szAccessPath*/ L"",
                                /*szItemID*/ ITEM_ID,
                                /*bActive*/ FALSE,
                                /*hClient*/ 1,
                                /*dwBlobSize*/ 0,
                                /*pBlob*/ NULL,
                                /*vtRequestedDataType*/ VT,
                                /*wReserved*/0
                             }};

        hr=0;
        hr = pInterface->QueryInterface(IID_IOPCItemMgt,  reinterpret_cast<LPVOID*>(&ptrItMgm));
        if(SUCCEEDED(hr))
        {
            hr = ptrItMgm->AddItems(1, idef, &pResults, &pErrors);
        }

'''


opc
person ppp456878    schedule 02.09.2013    source источник
comment
Вы не проверяете ошибки AddItems (ни hr, ни pErrors), так как же узнать?   -  person Jouni Aro    schedule 02.09.2013
comment
Вам также следует взглянуть на CComPtr и CComQIPtr, они сделают вашу жизнь проще. Вы сначала использовали какой-нибудь OPC-клиент (например, Matrikon Explorer) для проверки путей и т. Д.?   -  person AndersK    schedule 02.09.2013


Ответы (2)


Вы настроили файл таблицы символов с информацией о псевдонимах для вашего Schnider OPC Factory Server? Если вы попытаетесь добавить элементы, которые не настроены на сервере, вы получите ошибки (если вы их проверяете). Если вы не проверяете ошибки, вы ничего не увидите. Убедитесь, что определения ваших псевдонимов соответствуют элементам, которые вы пытаетесь добавить.

person Scott Solmer    schedule 20.09.2013
comment
Спасибо за ответ. теперь он работает после того, как вы сделали то, что вы сказали - person ppp456878; 27.11.2013

Есть 3 способа создать элементы на сервере OPC:

1. С помощью Dll

2. Использование регистрации данных

3. Использование программирования на C #, VB.NET

Должна использоваться Dll: (Используйте любую) 1.opcdaauto.dll 2.ClientAce от Kepware Technologies 3. Используйте dll, предоставленную поставщиком оборудования OPC

Укажите имя сервера OPC. Я подробно расскажу о решении.

person Revan    schedule 10.02.2014