Smart OPC DA плъгин се зарежда от Smart OPC XML DA модула. Предназначението на този плъгин е да осигури връзка с класически OPC DA сървъри.
Структура на директориите
<InstallDir> - Инсталационна директория на приложението;
Plugins - Директория на плъгините;
OpcDa - OPC DA плъгин;
Bin - библиотеки специфични за плъгина;
AddIns - ад-ини на плъгина;
Slot0 - слот 0;
Slot1 - слот 1;
...
Slot14 - слот 14;AddInSideAdapters - ад-ин адаптери;
AddInViews - ад-ин вю-та;
Contracts - контракти;
HostSideAdapters - хост адаптери;Config - Конфигурация на плъгина;
Logs - лог файли;
Конфигуриране на OPC DA връзка
Конфигурацията на Smart OPC DA плъгина се намира във файл
<InstallDir>\Plugins\OpcDa\Config\Smart.OpcXml.Plugin.Configuration.xml.
Плъгина поддържа връзки до различни OPC DA сървъри. Всяка връзка се
конфигурира чрез отделна "OpcServer" секция.
Пример:
<!-- EPKS-ESVR-1 -->
<OpcServer Enabled="true" CheckConnectionStateInterval="3000" RequestExecutionTimeout="60000" MaxLongRunningRequests="1">
<LoggerName>Smart.OpcXml.Plugins.OpcDa.AddIn.EPKS-ESVR-1</LoggerName>
<SupportBrowse>true</SupportBrowse>
<SupportGetProperties>true</SupportGetProperties>
<SupportRead>true</SupportRead>
<SupportWrite>true</SupportWrite>
<SupportSubscribe>true</SupportSubscribe>
<SupportGetStatus>true</SupportGetStatus>
<SupportsContinuationPoint>true</SupportsContinuationPoint>
<Alias>EPKS-ESVR-1</Alias>
<PathSeparator>.</PathSeparator>
<MinSubscriptionSamplingRate>1000</MinSubscriptionSamplingRate>
<DefaultSubscriptionSamplingRate>3000</DefaultSubscriptionSamplingRate>
<MaxSubscriptionItemBufferSize>10</MaxSubscriptionItemBufferSize>
<DefaultSubscriptionPingRate>60000</DefaultSubscriptionPingRate>
<MaxSubscribedItems>0</MaxSubscribedItems>
<MaxSubscriptions>1000</MaxSubscriptions>
<MaxItemsPerSubscription>4000</MaxItemsPerSubscription>
<!-- Maximum allowed number of items per read list. 0 if no restrictions -->
<MaxItemsPerRead>0</MaxItemsPerRead>
<!-- Maximum allowed number of items per write list. 0 if no restrictions -->
<MaxItemsPerWrite>0</MaxItemsPerWrite>
<!-- Maximum allowed number of items per get properties list. 0 if no restrictions -->
<MaxItemsPerGetProperties>0</MaxItemsPerGetProperties>
<!-- The maximum items returned per browse request.
If value is greater than 0, and MaxElementsReturned is 0 or greater than MaxItemsPerBrowse it will be forced to this value.
If 0 there is no constraint.
SupportsContiunationPoint must be set to "true" in order the restriction to be taken into account for this gateway.
-->
<MaxItemsPerBrowse>0</MaxItemsPerBrowse>
<CleanExpiredSubscriptionsInterval>3000</CleanExpiredSubscriptionsInterval>
<MaxHoldTime>50000</MaxHoldTime>
<MaxHoldAndWaitTime>50000</MaxHoldAndWaitTime>
<ReadBufferCacheInitialCapacity>1000</ReadBufferCacheInitialCapacity>
<ReadBufferCacheMaxSize>2000</ReadBufferCacheMaxSize>
<ReadBufferCacheCountersEstimationInterval>60000</ReadBufferCacheCountersEstimationInterval>
<SubscriptionsManagerCountersEstimationInterval>60000</SubscriptionsManagerCountersEstimationInterval>
<PerformanceCountersEstimationInterval>60000</PerformanceCountersEstimationInterval>
<MaxReadAfterSnapshot>0</MaxReadAfterSnapshot>
<MaxWriteAfterSnapshot>0</MaxWriteAfterSnapshot>
<MaxSubscribeAfterSnapshot>0</MaxSubscribeAfterSnapshot>
<MaxPolledRefreshAfterSnapshot>0</MaxPolledRefreshAfterSnapshot>
<MaxBrowseAfterSnapshot>0</MaxBrowseAfterSnapshot>
<MaxGetStatusAfterSnapshot>0</MaxGetStatusAfterSnapshot>
<MaxGetPropertiesAfterSnapshot>0</MaxGetPropertiesAfterSnapshot>
<MaxSubscriptionCancelAfterSnapshot>0</MaxSubscriptionCancelAfterSnapshot>
<MaxRequestsAfterSnapshot>0</MaxRequestsAfterSnapshot>
<!-- <DebugTraceFirstChanceExceptions>true</DebugTraceFirstChanceExceptions> -->
<!-- <DebugTraceUnhandledExceptions>true</DebugTraceUnhandledExceptions> -->
<!-- <DebugTraceIgnoreInvalidCastFirstChanceExceptions>true</DebugTraceIgnoreInvalidCastFirstChanceExceptions> -->
<IntitalizeCOMSecurity>true</IntitalizeCOMSecurity>
<OpcConnection Url="opcda://EPKS-ESVR-1A/HWHsc.OPCServer" Enabled="true" Priority="2000" UseDuplicates="true" Username="mngr" Password="****"/>
<OpcConnection Url="opcda://EPKS-ESVR-1B/HWHsc.OPCServer" Enabled="true" Priority="1000" UseDuplicates="true" Username="mngr" Password="****"/>
<!-- <SyncTokens Read="1" Write="1" Browse="1" Subscribe="1" SubscriptionCancel="1" GetProperties="1" GetStatus="1"></SyncTokens> -->
<!--
<SourceCodePage>1252</SourceCodePage>
<DestinationCodePage>1251</DestinationCodePage>
-->
</OpcServer>
Внимание:
-
Уверете, че сте разрешили "Write" операции (
<SupportWrite>true</SupportWrite>), ако смятате да пишете; -
Псевдонима (
<Alias>EPKS-ESVR-1</Alias>) трябва да е уникален, той влиза като част от пътя на параметъра в последствие, така че въвеждайте смислени имена за псевдоним. Ако има дублирания, дублираните връзки няма да се заредят; -
Задайте адекватно име на логъра
(<LoggerName>Smart.OpcXml.Plugins.OpcDa.AddIn.EPKS-ESVR-1</LoggerName>), името на псевдонима да участва в него, по този начин ще се ориентиране в логовете, кой за коя връзка отговаря.
[IntitalizeCOMSecurity]
Ако е "true" се извиква CoInitializeSecurity, което спира Schannel COM автентикацията.
Внимание: Използвайте тази опция, ако Smart OPC XML Server
процеса работи под акаунт , който няма достъп до класическия OPC DA
сървър. В случай, че е опцията е включена, трябва да посочите потребител
и парола за връзка класически OPC DA server, като потребителя на
Smart OPC XML Server процеса няма да се използва за
имеперсонализация на DCOM заявките.
[Enabled]
Ако е "true" връзка е разрешена, в противен случай спряна;
[OpcConnection]
Описание на крайна точка за свързване с класически OPC DA съръвър. Може да въведете няколко връзки и да ги приоритизирате с "Priority" атрибута. По-голяма стойност означава по-голям приоритет. Специфицирането на повече от една връзка се използва за резервираност (примерно ако имате 2 EPKS сървъра A и B).
Url - адрес на OPC DA сървъра (opcda://computer name or ip address/DCOM service name or GUID).
Enabled - Ако е "true", връзката е разрешена;
Priority - Приоритет на връзката. По-голяма стойност - по-голям приоритет;
Username - Потребител за имперсонализация (само ако InitializeCOMSecurity е включено; за временна бърза връзка до EPKS ползвайте mngr акаунта);
Password - Парола за имперсонализация (само ако InitializeCOMSecurity е включено; за временна бърза връзка до EPKS ползвайте mngr акаунта);
Domain - Домейн за имперсонализация (само ако InitializeCOMSecurity е включено; за временна бърза връзка до EPKS ползвайте mngr акаунта);
ProxyUri - адрес на прокси за връзката, ако има такова;
AlwaysUseDA20 - Ако е "true" използва само OPC DA 2.0 независимо дали DCOM сървъра поддържа OPC DA 3.0;
LicesneKey - Лицензен ключ, ако OPC DA server го изисква;
UseDiplicates - Ако "true" и протокола е OPC DA 2.0, тогава при браузване на адресното пространстово на сървъра ще се отваря нова връзка, след което ще я затваря. По този начин е възможно конкурентно бразуване, в противен случай заявките ще се изчакват;
MaxDuplicates - Максимнален борй на дублираните връзки за браузване. След изчерпване потребителите се изчакват. 0 няма ограничение.
Слотове
Всяка конфигурирана и разрешена връзка до OPC DA сървър, описана в OpcServer секция, използва един слот. По подразбиране има 15 слота (Slot0-14). Ако сте конфигурирали повече разрешени връзки до OPC DA сървъри от колкото слотовете имате, част от връзките няма да работят. Може да увеличите броя на слотовете, като създадете нова под-директория в AddIns и да я именувате следваща поредна, например Slot15, и да копирате съдържанието на Slot0 в нея.