Как исправить ошибку BadServiceUnsupported при попытке получить исторические данные с Opc Server

Я пытаюсь получить исторические данные для тега с сервера opc, но получаю ошибку «BadServiceUnsupported». Я уже настроил Opc Server и Local Historian для определенного тега в KepserverEX V6.

Я использую эту библиотеку opc https://github.com/OPCFoundation/UA-.NETStandard.

Я успешно прочитал значения тегов, но у меня проблемы с историческими данными, именно тогда, когда вызывается метод HistoryRead:

m_Session.HistoryRead( null, new ExtensionObject(details), TimestampsToReturn.Source, false, nodesToRead, out results, out diagnosticInfos);

получение исключения BadServiceUnsupported.

Я также включил HDA-соединение в настройках проекта в KepserverEx, но, похоже, это не решило проблему.

Как я могу исправить эту проблему?


person AntGalMos    schedule 14.02.2019    source источник


Ответы (2)


В этом случае исправлять нечего. Kepserver поддерживает только HDA из OPC Classic (COM / DCOM), но не OPC UA.

person Kevin Herron    schedule 14.02.2019

Чтобы обойти это, вы можете запустить OPC UA Wrapper Server: https://github.com/OPCFoundation/UA-.NETStandard/blob/master/ComIOP/README.md

Сервер Wrapper будет мостом между вашим приложением и KepServerEX. Это выглядит так:

[Your Application] --- (OPC-UA) ---> [OPC UA Wrapper Server] --- (OPC-HDA) ---> [KepServerEX]

Я протестировал описанный выше сценарий, используя m_Session.HistoryRead(). Я могу успешно читать исторические значения из KepServerEX v6.6.

Чтобы Server Wrapper открывал соединение HDA с KepServerEX, откройте Opc.Ua.ComServerWrapper.Config.xml и включите ComClientConfiguration для HDA. Это должно выглядеть примерно так:

<ComClientConfiguration i:type="ComHdaClientConfiguration">
    <ServerUrl>opc.com://localhost/Kepware.KEPServerEX_HDA.V6/{5C905440-YOUR_CLSID_HERE}</ServerUrl>
    <ServerName>HDA</ServerName>
    <MaxReconnectWait>10000</MaxReconnectWait>
    <SeperatorChars></SeperatorChars>
    <AddCapabilitiesToServerObject>true</AddCapabilitiesToServerObject>
    <AttributeSamplingInterval>1000</AttributeSamplingInterval>
    <TreatUncertainAsBad>true</TreatUncertainAsBad>
    <PercentDataBad>0</PercentDataBad>
    <PercentDataGood>100</PercentDataGood>
    <SteppedSlopedExtrapolation>false</SteppedSlopedExtrapolation>
</ComClientConfiguration>
person Aswin Trisnadi    schedule 05.04.2019