Using OpcCmd Utility as OPC A&E Client

From OPC Labs Knowledge Base
Revision as of 15:59, 10 March 2021 by User (talk | contribs) (→‎Tutorial)

For general information about the OpcCmd tool, see Category:OpcCmd Utility.

Tutorial

If you execute the commands listed in the tutorial below, you will get an overview of basic OPC A&E client operations.

This tutorial works with the OPC Kit Server, which is installed with QuickOPC, or available for download from the Tool Downloads page. You should be able to use the same tutorial with your own OPC A&E Server, by modifying the server ProgID and in the commands.


  1. Start the OpcCmd utility in interactive mode. The interactive mode is always in effect e.g. when you use ClickOnce, or when running the utility from QuickOPC Launcher/Start menu. In other cases, you need to use the -i (or --interactive) option on the command line.

  2. At the OpcCmd> prompt, enter aeClient, or shortened: aec.
    The program responds with a list of technologies supported ("Com").

    All following commands are entered at the aeClient> prompt. You can enter -?, -h or --help (possibly preceded by the command name) at any time to obtain help for this prompt (or its commands).

  3. In order to obtain a list of OPC A&E servers registered on your computer, enter browseServers (browseServers can be shortened to bs).
    The command displays a table of available servers and their descriptions. The "URL String" columns contains URLs that start with "opcae:", and the first part of the URL path is a ProgID of the server (ProgID is a symbolic name given to the OPC A&E server, and OPC clients use it to connect to the server). Here is an example output from the command:
    Command output of: OpcCmd aeClient browseServers
    In this example, "OPCLabs.KitEventServer.2" is the ProgID of the (Alarms&Events part of the) OPC Kit Server. The remaining part of the URL path contains server's CLSID. The CLSID can also be used to establish a connection to the server, but ProgIDs are more "user friendly".

  4. Display the areas and sources inside the OPC A&E Server by entering browseNodes OPCLabs.KitEventServer.2 --tree (shortened: bn OPCLabs.KitEventServer.2 -t). Here is an example output from the command:
    Opccmd-aeclient-browsenodes-tree.png

  5. In order to query the server for the event categories it supports, enter queryEventCategories OPCLabs.KitEventServer.2 (queryEventCategories can be shortened to qec). Here is an example output from the command:
    Opccmd-aeclient-queryeventcategories.png

Commands, Arguments and Options

Command: aeClient subscribeEvents

Example:

OpcCmd -i
aeclient
subscribeEvents OPCLabs.KitEventServer.2

Command: aeClient acknowledgeCondition

The acknowledgeCondition command (can be shortened to ac) acknowledges a condition in the events server.

Acknowledging a condition requires an event to be identified by a precise combination of several pieces of information. In order to make the acknowledging easier, the acknowledgeCondition command allows you to pick the event from those collected during previous event subscriptions. Using the --eventIndex option (can be shortened to -ei), you specify the index of the event you want to acknowledge.

When event output is on, the event indexes appear in front of every displayed event in angle brackets, such as "[2]". You can also use the events? command (ev?) to display the events previously collected.

Example:

OpcCmd -i
aeclient
subscribeEvents OPCLabs.KitEventServer.2 -sqn Simulation.ConditionState1
events?
acknowledgeCondition --eventIndex 2

In order to trigger an acknowledgeable event for the previous example, you can start a second instance of the OpcCmd utility and pass it a corresponding command, like this:

OpcCmd daClient writeItem OPCLabs.KitServer.2 SimulateEvents.ConditionState1.Activate [Boolean]True

Other commands

Other commands at the aeClient> prompt, not individually described or used in the tutorial, include:

  • getConditionState
  • querySourceConditions

Using OPC NET API implementation

If you want to use the OPC NET API implementation instead of the native implementation (in OpcCmd for .NET Framework), you can do it interactively as in the following example:

OpcCmd -i
aeclient --property InstanceParameters.EnableNativeClient=[Boolean]false
subscribeEvents subscribeEvents OPCLabs.KitEventServer.2

If you want to use such setting permanently, you can modify one of the OpcCmd Intrinsic Component Configuration files (JSON, INI or XML). For example, with the JSON format, put the following into the appsettings.json or appsettings.production.json file:

{
  "OpcLabs.EasyOpc.AlarmsAndEvents.EasyAEClient": {
    "InstanceParameters": {
      "EnableNativeClient": false
    }
  } 
}