Supported device types and versions of devices
Communication line configuration
Communication station configuration
I/O tag configuration
Browsing of the OPC server address space
Historical Data Access
DCOM configuration for connecting a remote OPC server
Errors and problems
Changes and modifications
The protocol supports the client side of a communication with OPC (OLE for Process Control) DA (Data Access) servers according to the OPC DA specification ver. 2.05A and 3.0. It also supports the client side of communication with OPC HDA (Historical Data Access) servers according to OPC HDA specifications ver. 1.20.
Following communication line parameters can be configured for protocol "OPC Data Access 2.05 & 3.0":
Tab. No. 1
OPC HDA: Server if Available
|OPC HDA server name (ProgID), if it is available. OPC HDA functions not to be activate use empty text.||-|
OPC HDA: Max. Number of Values
|Sets the parameter NumItems at synchronous reading of historical "raw" values. The implicit value 0 (zero) means all values in the given interval.||-||0|
|Starts the sequencing of calling the function Refresh2 of interfaces Async I/O 2.0 and Async I/O 3.0. The calling executes after the first calling has been finished (after it gets the values).||YES/NO||NO|
Repeat Failed Group Activation
|Failed OPC group activations will be attempted again after a delay specified by parameter "Group reactivation delay".||YES/NO||YES|
Group Reactivation Delay
|A delay after which a failed OPC group activations is repeated if repetition is enabled by parameter "Repeat failed group activation".||sec||30|
Reconnect After Failed Group Activation
|When an OPC group activation fails, KOM disconnects from OPC server and reestablishes a connection. Parameter is relevant in a configuration of redundant OPC servers (after a disconnect from an OPC server follows a reconnect to alternate OPC server where group activation may be successful).||YES/NO||NO|
|Period of executing the call of GetGroupState of interface IOPCGroupStateMgt. This synchronous call is repeated periodically and detects the problems which could occur in communication with OPC Server.||sec||10|
Accept All GetGroupState Errors
All the errors returned by calling of "GetGroupState" of interface IOPCGroupStateMgt are considered to be fatal (they will result in disconnect from the OPC server and reconnect or in restart of the KOM process).
An example of error message returned by "GetGroupState":
Stop KOM When OPC Server Fails
|Allows to stop KOM process when the fatal error occurs in communication. See the Note.||YES/NO||NO|
Disconnect On Passive
|Only the active KOM process (i.e., the active instance connected to the HOT server) communicates with the OPC server. The KOM process, which becomes passive (by changing the active instance or switching the redundancy), closes the connection to the OPC server.|
Note: This parameter allows to reduce the OPC server load in redundant D2000 systems as well as to solve roblems with license limitation of the number of OPC clients.
Fatal abort of communication with OPC Server causes the COM/OPC errors at callings:
Communication protocol: OPC Data Access 2.05 & 3.0.
Station address requires:
The following station protocol parameters can be defined:
Do Read after Write
|Allows to verify the value after the recording by synchronous reading.||YES/NO||NO|
Prefer Synchronous Write
|Allows to write data into OPC Server only by synchronous interface IOPCSyncIO2.||YES/NO||NO|
Prefer VQT Write
|Using the Async I/O 3 option allows to write data by WriteVQT function of IOPCASyncIO3 interface (i.e. the write that transfers the quality and the timestamp together with the value).||YES/NO||NO|
|Activates the debug list. It increases the number of information about the communication operation. It is recommended to use only in detection of the problems and debugging.||YES/NO||NO|
Merz OPC Server Type
|Special mode for communication with OPC Servers made by Merz company. The conversion to/from MS DOS Date Time Format (2 x WORD) is used for values of TiA and ToA type.||YES/NO||NO|
|Delay which is artificial inserted between the AddItems callings to slow down the initialisation phase.||ss:mss||0|
|Integer value of "ERROR" state for conversion into Qi - quaternary input.||0,1,2,3||3|
|Integer value of "OFF" state for conversion into Qi - quaternary input.||0,1,2,3||2|
|Integer value of "ON" state for conversion into Qi - quaternary input.||0,1,2,3||1|
|Integer value of "TRANS" state for conversion into Qi - quaternary input.||0,1,2,3||0|
Keep Values Valid as Weak
|If the quality of OPC item changes into "BAD", the value of I/O tag will be valid with Weak flag.||YES/NO||NO|
Don't Repeat Failed AddItems
|Blocks the effort to call AddItems which still repeats after its failure.||YES/NO||NO|
Do AddItems in Single Call
|Activates all the items of group by one calling. It can quicken the OPC communication start.||YES/NO||NO|
|Keeps files of all callings of Write and Refresh2 functions as separate transactions. If they do not end up (successful or unsuccessful) to this timeout, the error message will occur in trace file of communication.||sec||120|
|Timeout, which delays the repeat of failed operation:||sec||5|
Do Sync Read Before Write If Unk. Type
|Enables a synchronous reading of the item value before the writing in case that KOM process do not know correct item data type (i.e. if there is an default value of data type "Empty/Default (VT_EMPTY)", the value must be written).||YES/NO||YES|
Status Item Name
|Address of OPC Item (OPC Item ID), which contains the OPC server or OPC group error status (e.g. depending on the state of communication). An I/O tag with this address must also be configured.|
If the status reports error, it will affect the values of all I/O tags on the station (they will have the Weak flag set). The Status Item Inverted Operation parameter specifies what value corresponds to the error status.
Status Item Inverted Operation
|Interpretation of the OPC Item Status Item Name with error status of OPC server or OPC group.|
The NO value means that the False or 0 reports the correct state and True respectively non-zero value reports an error.
The YES value means that the False or 0 means the error state and True respectively non-zero value reports correct status.
Map NonSpecific as Flag
|Mapping the OPC DA flag of quality Non Specific into the attributes of I/O tag value.||None, FA, FB, FC, FD, FE, FF, FG, FH, FI, FJ, FK, FL, FM, FN, FO, FP||None|
Map LocalOverride as Flag
|Mapping the OPC DA flag of quality LocalOverride into the attributes of I/O tag value.|
Map ConfigError as Flag
|Mapping the OPC DA flag of quality Config Error into the attributes of I/O tag value.|
Map NotConnected as Flag
|Mapping the OPC DA flag of quality Not Connected into the attributes of I/O tag value.|
Map DeviceFailure as Flag
|Mapping the OPC DA flag of quality Device Failure into the attributes of I/O tag value.|
Map SensorFailure as Flag
|Mapping the OPC DA flag of quality Sensor Failure into the attributes of I/O tag value.|
Map LastKnown as Flag
|Mapping the OPC DA flag of quality Last Known into the attributes of I/O tag value.|
Map CommFailure as Flag
|Mapping the OPC DA flag of quality Comm Failure into the attributes of I/O tag value./td>|
Map OutOfService as Flag
|Mapping the OPC DA flag of quality Out Of Service into the attributes of I/O tag value.|
Map WaitingForInitData as Flag
|Mapping the OPC DA flag of quality Waiting For Initial Data into the attributes of I/O tag value.|
Map LastUsable as Flag
|Mapping the OPC DA flag of quality Last Usable into the attributes of I/O tag value.|
Map SensorCal as Flag
|Mapping the OPC DA flag of quality Sensor Cal into the attributes of I/O tag value.|
Map EGUExceeded as Flag
|Mapping the OPC DA flag of quality EGU Exceeded into the attributes of I/O tag value.|
Map SubNormal as Flag
|Mapping the OPC DA flag of quality Sub Normal into the attributes of I/O tag value.|
Reconnect After Error Count
|If consecutive number of errors during reading equals to the value of this parameter, reinitialisation of OPC connection will be performed. Value of zero means that reinitialisaton will not be performed (default behaviour). Current implementation handles only errors in synchronous mode (type setting to "Synchronous I/O" in tab Address of Station object).||-||0|
Possible I/O tag types: Ai, Ao, Ci, Co, Di, Qi, Dout, TiA, ToA, TiR, ToR, TxtI, TxtO.
I/O tag address requires to define OPC Item ID (maximum string: 200 characters). If OPC server supports interface IOPCBrowseServerAddressSpace, the address OPC Item ID may be selected directly from the address list supported by OPC server (it is needed to click on button "Browse Items...", see the section Browsing of OPC server address space.
Note: if I/O tag's address is specified as %IGNORE, such an I/O tag will be ignored.
Further required parameters (OPC Item Parameters) are:
The protocol supports the configuration of tab Destination of I/O tag. If the value of OPC item is of Array type, the communication protocol copies the values of array from the item ArrayIndex into column of structured variable. The size of structured variable is taken into consideration. If the array VARIANT is smaller than number of structured variable rows the empty rows of structured variable will be invalid. If the number of structured variable rows is smaller than array VARIANT, the values which are remaining are ignored.
Clicking on button "Browse Items..." in the Address tab of I/O tag dialog box opens another dialog window "OPC Item Browser".
Here the user can choose the items from the OPC server address space. The item representation can be "Hierarchical" or "Flat". Some of the OPC servers do not support the "Hierarchical" representation (the button "Hierarchical" is disabled). If both the representations are supported the "Hierarchical" may be switched over to "Flat" and vice-versa.
OPC Item ID may be selected by double click on it. This item then occurs in the text field OPC Item ID in tha Address tab of I/O tag dialog box and "OPC Item Browser" dialog window will be closed. To close the window without changes click on button "Cancel".
On the top part of the dialog window there are filter options. Text "Filter" allows to show only the items according to mask (some of the OPC servers supports so-called star convention).
"Data Type Filter" allows to show the items containing a suitable data type. The option "Empty/Default" is default and enables to view all the items.
User must define whether the filter should be applied on the hierarchical tree structure (check button "Apply to the branches") or also on the OPC items (check button "Apply to the items").
According to the access rights, only readable items are displayed (check button "Browse readable items") or writable one (check button "Browse writeable items"). Default settings - both possibilities are enabled.
The changed conditions come into effect by clicking on "Refresh" button.
Note: In versions from 20th December 2018 and newer, recycling of browser dialog has been implemented. If the dialog is closed by the Close button or after selecting a tag, it is actually only hidden and it is available for browsing by another I/O tag within the same station so that the tree structure of the browsed objects is preserved. Clicking on the close icon at the top right corner will cause the dialog to be really closed.
Implementation of this protocol partially supports the specification of OPC HDA (Historical Data Access). The synchronous reading of raw data is supported. TELL command GETOLDVAL activates the reading of historical values. The asynchronous option IOPCAsyncIO of mode for OPC DA should be set to continuously read both the historical data and current one.
|STWATCH||STWATCH StationName||Tell command sends commands for synchronous reading of values of all configured I/O tag (regardless of whether data access type is set to “Async I/O 2.0”, "Async I/O 3.0" or “Synchronous I/O”)|
|STCOMMAND||STCOMMAND StationName DISCONNECT||Tell command encloses immediately the active OPC connection of line (the parent of "StationName"). Then, the system is restarted and connection reinitiated. If the remote access is used and backup OPC host is configured, the servers are interchanged ("OPC Host" for "Backup Host" or vice-versa).|
|STCOMMAND StationName CONNECT_PS||Closes the active OPC connection and enforces connection to primary OPC server "OPC Host". It is important only for remote access.|
|STCOMMAND StationName CONNECT_BS||Closes the active OPC connection and enforces connection to backup OPC server "Backup Host". It is important only for remote access.|
D2000 KOM Process (version 7.01.020 rel. 055 and higher) supports the getting GUID OPC Servers from ProgID on remote computers through the DCOM interface by OPCENUM utility (remote browsing). The local registration of OPC server at client is not required if the utility/windows service OPCENUM has been installed on the local PC with D2000 KOM process as the OPC client and on the remote PC as the OPC server and the access rights allows the remote browsing. The utility OPCENUM is a part of package OPC Core Components Redistributable available on http://www.opcfoundation.org/ or as the part of OPC Server installation package.
If this error occurs (see the section COM/OPC errors record):
ERROR: OPCServerName caused COM/OPC error 80040153H on CoCreateInstanceEx(IID_OpcServerList), Error string : Invalid value for registry
it is necessary to install the OPC Core Components Redistributable also on the OPC client (KOM process). The registration of OPC Server is optional. To register use one of the two ways:
Always study the OPC server manual from its manufacturer in details and confront it with the procedures described above.
As OPC DA standard uses COM/DCOM technology, the connecting to the remote OPC server is checked for Windows operating system access rights. On both the local (OPC client) and remote (OPC Server) computer, there must be created the same user (with the same password) and the user must be logged on the client side or the KOM process (running as Windows service) must start up under the account of this user.
Wrong setting of access rights will probably causes an error (see the section Errors and problems - COM/OPC error reports):
|E|> ERROR: ServerProgID caused COM/OPC error 80070005H on CoCreateInstanceEx(CLSCTX_REMOTE_SERVER), Error string : Access is denied.
Watch logs in the Event Viewer.
The problem can be partially solved when you add the Everyone group into Launch Permissions and Access Permissions. To ensure, that the OPC server will be run under some user (not under SYSTEM account), open the tab Identity and define the data for the option This user. In this case, the OPC server is not safe.
If the KOM process runs as Windows service it cannot use the parameters /X1 or /X2, because it does not work under the logged on user but under SYSTEM account and access rights verification executed by the OPC server fails. Use the start up parameter /X4".
If it is not possible to start up the KOM process with parameter /X4, check the user to be included in Policy Log on as a service. Open the Control Panel -> Administrative Tools -> Local Security Policy -> Local Policies -> User Rights Assignment -> Log on as a service.
For users working under Windows XP with ServicePack2 or later operating systems, it is recommended to change the parameter Network access: Let Everyone permissions apply to anonymous users (Local Security Policy -> Local Policies -> Security Options) to the value of Enabled.
If there occurs similar error like this:
|E|> ERROR: ServerName caused COM/OPC error 80070005H on Advise(IID_IOPCDataCallback), Error string : E_ACCESSDENIED Access is denied.
there is necessary to add a user in context of whose the communication runs. In "Component Services" on the computer with OPC client (KOM process) add this user to the list of users on the "COM Security" tab -> "Edit Limits", for both the parameters "Access Permissions" and "Launch and Activation Permissions" and enable "Remote Access" / "Remote Activation". It is problem connected with the establishing the call-back connection with OPC server. In this case, the roles are reversed and OPC client (i.e. KOM process) works as DCOM server. Adding this user and enabling the remote access enables establishing the call-back procedures between OPC client and OPC server. Call-back procedures are necessary for acquiring the values from OPC server in the asynchronous mode "Async I/O 2.0" and "Async I/O 3.0".
If the OPC server is configured to run under "The interactive user" on the last tab Identity of the "Properties" dialog window, it may cause the OPC server to be available only when a user is logged on the computer. We recommend to change this setting to "The launching user", "This user", resp. "The system account".
In the specific case for the OPC communication to work, it was required:
When starting or during the course of communication, the following error reports could occur. For an easier identification of the problem, set the communication tracking level at least to the level Monitor, or temporarily to the level Monitor & disk in the configuration dialog box of particular communication line. If you select the level Monitor & disk, the file line_name.LOG containing all debug and error logs will be created in the subdirectory /TRACE of the application directory on the computer with running process D2000 KOM.
|Error:||WriteAsync - FAILED (transactionID) - Item : 'OPCItemID'|
|Description:||Attempt to write the value using the Write function call of the OPC interface IOPCAsyncIO2 failed.|
|Error:||ShutDown OPC Server : 'ServerProgID' !|
|Description:||The OPC server was stopped, probably in a correct way even though it has active clients.|
|Error:||OPC Server 'ServerProgID' is unavailable !|
|Description:||The remote DCOM OPC server is unavailable. Process D2000 KOM as a client is still attempting to connect the server. Check the PC with installed OPC server (if it is running and is correctly connected to the local network).|
|Error:||SetCallBack - FAILED, Group : 'OPCGroupName', Server : 'ServerProgID' !|
|Description:||Fatal error - call-back procedures of the OPC interface OPCDataCallback could not have been initialized for the OPC group. Contact the Ipesoft's technical support.|
|Error:||SetGroupState - FAILED, Group : 'OPCGroupName', Server : 'ServerProgID' !|
|Description:||Fatal error - SetStatefunction call of the OPC interface IOPCGroupStateMgt failed. Contact the Ipesoft's technical support.|
|Error:||EnableSubscribe - FAILED, Group : 'OPCGroupName',Server : 'ServerProgID' !|
|Description:||Fatal error - SetEnable function call of the OPC interface IOPCAsyncIO2 failed. Contact the Ipesoft's technical support.|
|Error:||RefreshAllAsync - FAILED, Group : 'OPCGroupName', Server : 'ServerProgID' !|
|Description:||Fatal error -Refresh2 function call of the OPC interface IOPCAsyncIO2 failed. Contact the Ipesoft's technical support.|
|Error:||OPCConnectToServer - FAILED, Server : 'ServerProgID' !|
|Description:||Fatal error - it is not possible to connect to the OPC server. Check the OPC server parameters - the tab OPC in the configuration dialog box of the communication line and the tab Address in the configuration dialog box of the communication stations.|
|Error:||OPCAddGroup - FAILED, Group : 'OPCGroupName', Server : 'ServerProgID' !|
|Description:||Fatal error - the OPC group did not managed to create by calling the AddGroup function of the OPC interface IOPCServer. Contact the Ipesoft's technical support.|
|Error:||ReadSync - FAILED, Item : 'OPCItemID' !|
|Description:||Read call of the OPC interface IOPCSyncIO failed.|
|Error:||AddItems - FAILED (Group not connected), Item : 'OPCItemID' !|
|Description:||The OPC item could not have been initialized, because creating the OPC group has failed. Contact the Ipesoft's technical support.|
|Error:||Write - FAILED (transactionID) , Item : 'OPCItemID' !|
|Description:||Writing the value into the OPC server failed. Writing is performed by the Write function called by the interfaces IOPCSyncIO or IOPCAsyncIO2 according to the parameter Type (data access type) of the OPC group.|
|Error:||Write - FAILED, OPC Server is disconnected, Item :'OPCItemID' !|
|Description:||The value could not have been written into the OPC server, because the OPC server is disconnected.|
|Error:||Group parameters error, Group: 'OPCGroupName', Server : 'ServerProgID' !|
|Description:||OPC group configuration parameters are wrong. Check the OPC parameters - the tab Address in the configuration dialog box of particular communication station.|
The error report described in the section Errors and problems are generated on a high level of OPC client. Most of the errors will also contain an error report on the COM/OPC level. Format of such error reports is as follows:
WARNING/ERROR: ServerProgID caused COM/OPC error ErrorCodeHexadecimal on CallDescription, Error string : ErrorDescription
WARNING: Matrikon.OPC.Simulation.1 caused COM/OPC error 80010108H on IOPCGroupStateMgt::GetState(), Error string : The object invoked has disconnected from its clients.
ERROR: Matrikon.OPC.Simulation.1 caused COM/OPC error 800706BAH on IOPCSyncIO::Read(), Error string : The RPC server is unavailable.
The error reports are important for the problem analysis and will be required by the Ipesoft's technical support if any problem occurs.
The documents are available on http://www.opcfoundation.org/.