Datasource Unit Handling
When Seeq syncs with signals from a datasource such as a historian, it applies any units of measure set by the datasource. When a signal's unit is not recognized, Seeq sets the units to unitless.
Seeq does make an attempt to find the best Seeq match for the datasource unit name. To check the units, look in the log file appserver-units.log
for messages like these:
Log messages
DEBUG 2017-11-04T22:31:26.942-07:00 [G_2] c.s.a.q.v.s.SeriesQueriesV1 - Datasource: OSIsoft PI c29fb683-86c9-4a74-b0af-95b6b9f528fb Signal: AFEnumerationTest 19648 Unit 'C' parsed as '°C'
DEBUG 2017-11-04T22:31:29.015-07:00 [G_2] c.s.a.q.v.s.SeriesQueriesV1 - Datasource: OSIsoft PI c29fb683-86c9-4a74-b0af-95b6b9f528fb Signal: B.LEVEL.403 19629 Unable to parse a unit from 'Ton', defaulting to unitless
In the log example, "Ton" was not mapped because Seeq doesn't know if a short ton, long ton, or metric ton was intended.
To fix any incorrect mappings or unrecognized units, use a Connector Property Transform. For example, if a short ton was intended for signal B.LEVEL.403, "Ton" could be mapped to "ston" using a Connector Property Transform. This unit transform could be applied to just one signal, a group of signals, or the entire datasource.
If the datasource units are unrecognized, Seeq still displays the units throughout the UI. Note that unrecognized units appear in grey italics.
It is always a good idea to check the unit parsing log messages especially if your datasource is lax about case or doesn't use parentheses in units. For example:
Is US intended to be microSiemens (uS) or microseconds (us)?
$/H is $/henry but perhaps hour (h) was intended instead of henry (H).
m/s/s is m/s² which is probably what was intended. $/bbl/d = $/(bbl*d) but perhaps $/(bbl/d) = ($*d)/bbl was intended. Unit of measure expressions are evaluated according to the order of operations.