Rockwell Automation 6008-SV2R VMEbus remote I/O Scanner User Manual
Page 51
Chapter
Communicating with Remote I/O
4
4Ć14
Important: Do not accidentally write data in the output image table in
global RAM of the scanner. Any data in an output byte for an intelligent
I/O module overrides the scanner block-transfer command and ruins any
block-transfer request. Such an error is detected as a bit being set in the
operating status word identifying an unsolicited block-transfer.
When the scanner is done with the block-transfer, it tests and sets the
semaphore, places the necessary data in the general data area, places a
completion code in the confirmation status byte, provides the
block-transfer tag number, and generates a VMEbus interrupt. If the
scanner sees that the semaphore is already set, it holds the block transfer
data until the semaphore is reset.
Your application should copy the block-transfer data from the general data
area and clear the semaphore.
BlockĆTransfer Timeout
If the block-transfer request does not complete within 4 seconds of the
VME master processor sending the request to the scanner, the scanner:
1.
tests and sets the semaphore
2.
dequeues the failed request
3.
places an error code in the confirmation status word
4.
copies the correct tag value
5.
optionally interrupts the VME master processor to indicate that the
block-transfer requests timed out.
The VME master processor then retrieves the result code and clears
the semaphore.
The most common failure of a block-transfer is a block timeout, error
code 23 (hex) in the confirmation status word. This error occurs if the
block-transfer does not complete within 4 seconds of the initial request.
This 4-second value is not variable.
Another frequent reason a block-transfer times out is because an incorrect
intelligent module address is given to the scanner. Another common
mistake is to put an incorrect value for the length of data words. The value
for the length of data words must equal the number of words the I/O
module expects to transfer. If these two values are not the same, the
transfer will never happen.
The best way to avoid a block-transfer timeout is to give the scanner a
transfer length of zero. This lets the I/O module decide how many words
to send. When the transfer completes, the I/O modules replaces the 0 in
the length of data words with the actual number of how many words
were transferred.