You are on page 1of 4

Process Envelope Problematic Tag Issue Investigation Report

Issue
Configure list of tags in SH process envelope in one SH report. When reading tags’ value
from the Historian server (IP21), if one of the tags having ResultID as E_FAIL (problematic
tag), then the whole tag list will be affected.
No tag value will be retrieved successfully even if other tags are having good quality and
proper tag value in historian server.

Root Cause
SH Process Envelope use ReadAtTime method to read SystemValue from historian. SH
Process Envelope make one call only to read SystemValue for all tags configured (e.g. if 10
tags are configured, SH Process Envelope make only one call to historian to get all 10 tags’
SystemValue for configured tags).
During this process, if one of the tag in the tag list having “E_FAIL” status, then
ReadAtTime method will return the whole list of tags with “E_FAIL” result. Therefore,
causing all other tags to be failed to read even though those tags are having good quality and
value in historian.

Work Around
#1 Use ReadAtTime method – but make each call to each tag to retrieve tag value from
server (if 10 tags is configured, then need to make 10 calls to historian server to get tag value)
Advantages – able to ensure one fail tag does not affect other good tags.
Disadvantages – performance is slower compare to ReadAtTime reading taglist method.

#2 Use ReadRaw method – when using ReadRaw method, one fail tag in a tag list does not
affect others tag result.
Advantages – able to ensure one fail tag does not affect other good tags. Besides, its
performance is faster as compare to ReadAtTime method.
Disadvantages – it is different from ReadAtTime method, ReadAtTime read at a specific
time. However, ReadRaw read list of value of the given interval. Then we need to take the
last available from the list as the System Value.
SH Process Envelope columns and its method used

Read Method SH Process Envelope Column


ReadAtTime SystemValue, TargetValue, Status,
ExceedingNo
ReadProcessed AverageValue, MinimumValue,
MaximumValue
ReadAttribute LowerLimit, UpperLimit

Behaviour test result


Below is behaviour test result with mixed of 10 good and 10 bad (problematic) tags (total 20
tags):

Method Result
ReadAtTime (Taglist) Bad
ReadAtTime (TagByTag) Good & Bad
ReadRaw (Taglist) Good & Bad
ReadRaw (TagByTag) Good & Bad
ReadProcessed (Taglist) Good & Bad
-Average value
ReadProcessed (TagByTag) Good & Bad
-Average value
ReadProcessed (Taglist) Good & Bad
-Max value
ReadProcessed (TagByTag) Good & Bad
-Max value
ReadAttribute (TagByTag) -

Note:
Bad = All tags return bad result (incorrect behaviour)
Good = All tags return good result (correct behaviour)
Good & Bad = Good tags return good result, bad tags return bad result (correct behaviour)
Performance
Below is performance test result with 10 good and 10 bad (problematic) tags (total 20 tags):

Method Time (3 Reads)


ReadAtTime (Taglist) 00:00:02.4627302
00:00:02.8694985
00:00:03.3847934
ReadAtTime (TagByTag) 00:00:17.3980763
00:00:16.4211887
00:00:22.6094183
ReadRaw (Taglist) 00:00:00.1514201
00:00:00.1524121
00:00:00.1785082
ReadRaw (TagByTag) 00:00:02.5629061
00:00:01.9241641
00:00:02.0332300
ReadProcessed (Taglist) 00:00:05.7221795
-Average value 00:00:05.6960401
00:00:05.4767543
ReadProcessed (TagByTag) 00:00:07.3542388
-Average value 00:00:06.9020218
00:00:07.1505905
ReadProcessed (Taglist) 00:00:01.2730199
-Max value 00:00:01.2740155
ReadProcessed (TagByTag) 00:00:03.1564894
-Max value 00:00:03.1566752
ReadAttribute (TagByTag) 00:00:01.9301932
00:00:01.5676304
00:00:01.5447116
Below is performance test result with 25 good tags:

Method Time (3 Reads)


ReadAtTime (Taglist) 00:00:02.4784065
00:00:02.2904057
00:00:02.3851398
ReadAtTime (TagByTag) 00:00:07.0718916
00:00:05.5274457
00:00:06.4166202
ReadRaw (Taglist) 00:00:00.2156693
00:00:00.2891684
00:00:00.4031236
ReadRaw (TagByTag) 00:00:02.7015350
00:00:02.3902513
00:00:02.5614353

You might also like