OK, I created a Tag list consisting of 2 digital input (boolean) Opto tags. For both tags in the "operations" section of the tag configuration editor, the "Update Engine Database" is checked "Always"
I then created a new program that did the following:
Outer Sequence: Frame 0: Start Tag engine
Outer Sequence: Frame 1: Do While loop with Inner Sequence
Inner Seguence: Frame 0: Turn off [all] tags; Frame 1: Turn on Tag #1 [SCAN ON]; Frame 2: Wait 1500 ms; Frame 3: GET SCAN ON attribute for Tag #1; Frame 4: READ Tag value for Tag #1 and decode error using STATUS
Outer Sequence: Frame 2: STOP Tag Engine.
Test results:
Tag #1 status is returned as ON, Tag value and "no error" is returned correctly on first loop pass. On second and subsequent passes, Tag #1 status is ON but tag "off-scan" error 70 is returned. If the input value is changed (physically switch the hardware state), a "no error" message is again returned on only the first read and "off-scan" is returned on subsequent reads. The tag status was always returned as ON.
If [all] tags are turned on in Inner Frame 0, no errors are returned. Tag Value follows input correctly.
Increasing the wait in Inner Frame 2 to 3000 ms does not change the behavior.
Adding a time out of 1.5s to the READ in Inner Frame 4 does not change the behavior.
Moving the [all] Tags OFF and Tag #1 ON frames to the outer sequence appears to make everything work properly even without the time delays. (This actually is closer to what I am actually doing in my program, so the results are even more confusing.)
I can e-mail you the routine if you would like.
T-Ray