ConnectionTrack.g — changes a point when a connection is made or broken.
The code for this and other example scripts can be found in the DataHub distribution archive, typically at one of these locations: C:\Program Files\Cogent\OPC DataHub\scripts\ C:\Program Files\Cogent\Cascade DataHub\scripts\ Please refer to Section 3.1, “How to Run a Script” for more information on using scripts. |
/* * This script watches the quality on an indicator point and sets * an output to 0 if the quality is NOT CONNECTED and 1 otherwise. * This effectively produces a synthetic point that changes according * to whether a data connection to the source of the indicator point * is made or broken. * * To use this script: * 1) Adjust the poll_rate to the desired number of seconds. This can * be fractional, such as 0.25. * 2) Set track_time to t or nil. If set to t, the time stamp of the * indicator point will be updated on each poll, causing a value * change event to all attached clients, OPC servers, etc. * 3) In the constructor, make one or more calls to .BeginTracking * to set up a mapping between the point being watched and the * indicator point. The watched_point * * Once this script is running, you can use the output point as a * trigger to send email, write to a database, update a PLC, write * to Excel or perform some other custom action through scripting. */ require ("Application"); class ConnectionTrack Application { poll_rate = 1; // polling rate in seconds track_time = nil; // set to t to adjust the output time stamp on each poll } method ConnectionTrack.BeginTracking(indicator_point, output_point) { datahub_command(format("(create %a 1)", indicator_point), 1); datahub_command(format("(create %a 1)", output_point), 1); .TimerEvery(.poll_rate, `(@self).CheckQuality(@indicator_point, @output_point)); } method ConnectionTrack.CheckQuality(!indicator_point, !output_point) { local quality = PointMetadata(indicator_point).quality; local active = 1; if (quality == OPC_QUALITY_NOT_CONNECTED) active = 0; datahub_write(string(output_point), active, .track_time); } method ConnectionTrack.constructor () { .BeginTracking(#$default:indicator, #$default:active); // default:indicator = the point you want to monitor // default:active = the point used to trigger the notification } ApplicationSingleton (ConnectionTrack);
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.