Beta, release 1, of the Phasor Data Quality Tracker - v0.8.11
See important usage notes for beta release below
This release includes the following updates and fixes:
- Fixed exception on the manager home screen.
- Improved alarm configuration and monitoring screens to provide better usability and feedback.
- New “CountOnlyMappedMeasurements” configuration setting for synchrophasor inputs that will only count measurements that are enabled so that disabled measurements that are not received will not count against expected measurements and skew daily report numbers.
- Message throttling in the 1.0 Historian for data with bad timestamps.
- Issue where leaving Manager running on the home screen and connected to the service would keep allocated pinned buffers manifesting as a slow memory leak. Occurred due to use of the .NET FileSystemWatcher as a class member and parent class would not get a dispose call. In this case backup finalizer would not get called since watcher maintains a dangling reference to parent class via its internal pinned buffer. This can occur even with a properly implemented IDisposable pattern. Implemented and globally applied a SafeFileWatcher wrapper that uses weak references to correct.
- Removed reusable memory streams in GEP engine to allow system to properly reclaim memory resources after periods of stress.
- Confusing message in synchrophasor parser when receiving an exception related to data received on the command channel.
- Error messages in the DataPublisher’s UpdateCertificateChecker during reconfiguration due to null subscriber identities.
- Issue in GSF.StringExtensions.ParseKeyValuePairs where certain character encodings would be decoded automatically by the parser.
- Issue where the TLS remoting server never properly disconnected unauthenticated clients.
- Cleared the wait handle upon completion of any successful send operations in the TlsServer.
- Updated the status of the TlsServer to include client send queue sizes so resource utilization can be better monitored.
- Using a SQLite database is not yet fully tested and may cause exceptions from within the Manager application, SQL Server is recommended for the moment
- With large synchrophasor deployments, report generation can be slow - openHistorian 2.0 integration is being developed to help with performance, however with nightly report generation this may not be an issue
- If there are many alarms defined, the system will perform better if alarm states are not being logged to the database. To disable this feature, follow these steps:
- Open the PDQTracker Manager application
- Navigate to the Advanced / Actions / Manage Custom Actions screen
- Select the ALARM!SERVICES adapter in the list at the bottom of the page
- In the Connection String Parameters list, scroll down until you see UseAlarmLog
- Select the UseAlarmLog property in the list and set the value to False
- Click the Save button then click the Initialize button
- Logging alarm states to the database should now be disabled
- You can use the following SQL statement to automatically add alarms for your current inputs so that Correctness Report will have data to report on:
INSERT INTO Alarm(
(SELECT ID FROM Node) AS NodeID,
(CASE WHEN Operation.Name = 'GreaterThan' THEN 'HIGH'
WHEN Operation.Name = 'LessThan' THEN 'LOW'
WHEN Operation.Name = 'Flatline' THEN 'FLATLINE'
WHEN Operation.Name = 'Equal' THEN 'EXEMPT'
END) + ':' + Measurement.PointTag AS TagName,
NULL AS AssociatedMeasurementID,
'' AS Description,
CASE WHEN Operation.Name = 'Equal' THEN 0
WHEN Operation.Name = 'Flatline' THEN 980
END AS Severity,
Operation.ID AS Operation,
CASE WHEN Operation.Name = 'Equal' THEN 0
WHEN Operation.Name = 'Flatline' THEN NULL
WHEN Operation.Name = 'GreaterThan' THEN
CASE WHEN SignalType.Acronym = 'IPHM' THEN 6000
WHEN SignalType.Acronym = 'IPHA' THEN 180
WHEN SignalType.Acronym = 'VPHM' THEN 750000
WHEN SignalType.Acronym = 'VPHA' THEN 180
WHEN SignalType.Acronym = 'FREQ' THEN 65
WHEN Operation.Name = 'LessThan' THEN
CASE WHEN SignalType.Acronym = 'IPHM' THEN 0
WHEN SignalType.Acronym = 'IPHA' THEN -180
WHEN SignalType.Acronym = 'VPHM' THEN 0
WHEN SignalType.Acronym = 'VPHA' THEN -180
WHEN SignalType.Acronym = 'FREQ' THEN 55
END AS SetPoint,
0 AS Tolerance,
CASE WHEN Operation.Name = 'Flatline' THEN 10 ELSE 0 END AS Delay,
0 AS Hysteresis,
0 AS LoadOrder,
1 AS Enabled
SignalType ON Measurement.SignalTypeID = SignalType.ID CROSS JOIN
(SELECT 12 AS ID, 'GreaterThan' AS Name UNION SELECT 22 AS ID, 'LessThan' AS Name UNION SELECT 3 AS ID, 'Flatline' AS Name UNION SELECT 1 AS ID, 'Equal' AS Name) AS Operation
SignalType.Acronym IN ('IPHM', 'VPHM', 'FREQ') OR
(SignalType.Acronym IN ('IPHA', 'VPHA') AND Operation.Name <> 'Equal') OR
(SignalType.Acronym = 'ALOG' AND Operation.Name = 'Flatline') OR
(SignalType.Acronym = 'ALOG' AND Operation.Name = 'Equal')