Baumer Electric OIS-W-WR300303 RF-Identification System User Manual Interface
Baumer Electric AG RF-Identification System Interface
Contents
- 1. Installation
- 2. Interface
- 3. Maintenance
Interface
Application Note OIS-W Interface Specification OIS-W Reader Communication Interface PROJECT PROJECT: AUTHOR: ATTN: CC: COMMUNICATION INTERFACE W. STEHLING SYSTEM INTEGRATORS 2000 Baumer Ident AG Switzerland DOCUMENT CREATED: LAST CHANGE: VERSION: FILE: 08. DECEMBER 1999 27. SEPTEMBER 2000 VERSION 1.1 SPWR-2101-0001.DOC OIS-W Interface Specification Baumer Ident AG Content History Related documents About the document Disclaimer Introduction Hardware requirements Reader operating modes 3.1 3.2 3.3 Automatic Data Transmission Communication upon request Code lookup table rotocol overview 4.1 4.2 General message structure Data coding and byte order Communication messages 10 5.1 Automatically transmitted messages 10 5.1.1 TAG_ID_IND: Send code information 5.1.2 PARAM_DATA_REP: Send extended code information 5.1.3 RESET_IND: Reset indication of reader 10 11 12 5.2 5.3 5.4 Request Information from reader 12 5.2.1 VERSION_REQ: Get software version information from reader 12 Information transmitted to the reader 13 5.3.1 DOWNLOAD_REQ: Download lookup table to reader 13 Auxiliary Port Information and Settings 15 Appendix A: CRC calculation 16 Appendix B: OIS-W messages 17 Automatically transmitted messages ......................................................................................17 Request information from the reader ......................................................................................17 Information transmitted to the reader......................................................................................19 Appendix C: date: author: C/C++ header definitions 20 Global Definitions ....................................................................................................................20 Size definition of variables.......................................................................................................21 Structure definitions ................................................................................................................21 Definition of message numbers ..............................................................................................23 Error numbers .........................................................................................................................24 20.02.2001 wst file: Interface.doc version 1.0 page: 2 / 2 OIS-W Interface Specification Baumer Ident AG History 9HUVLRQ 'DWH &KDQJH $XWKRU 1.0 99/12/08 first draft wst 1.1 00/09/27 modification on AUX_REP message and auxiliary heg Related documents [1]: Kühn, I., STAR2 SW Interface Specification, V 1.05 (1999/11/03), Elektrobit AG [2]: Zehnder, C., OIS-W User's Manual, V 3.0E (1999/09/28), Baumer Ident AG, MSGY-2001-305 About the document This application note describes the communication protocol of the OIS-W reader unit. It is intended for system integrators who need to set up the host's part of the communication. The protocol used with the serial interfaces will be explained in detail. Disclaimer The information contained in this document is believed to be accurate and reliable. It is based on the protocol stack version 2.28. However, no responsibility is assumed by Baumer Ident for its use, nor for any infringements of patents or other rights of third parties which may result from its use. No license is granted by implication or otherwise under any patent or patent rights of Baumer Ident. © Baumer Ident AG, 2000 date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 3 / 3 OIS-W Interface Specification Baumer Ident AG 1 Introduction The OIS-W reader is fully programmable, i.e. there are no switches or jumpers to set, everything can be configured by software. Configuration parameters as well as the operating system itself may be downloaded in the field. A host computer may be connected to each of the two serial interfaces of the basic reader unit. The main application of the serial interfaces is to transmit status information to a host computer. If the reader detects a valid code ID the information may be sent automatically or on request. The reader can be configured to run continuously or to start a measurement triggered by a switch or by computer. The protocol used to communicate with the reader is similar to the popular Siemens 3964R protocol. It will be described in subsequent chapters. 2 Hardware requirements The two serial interfaces of the reader are functional identical. Each may be used to connect to a host. They differ in the physical signal levels only: the upper one corresponds electrically to RS 232, the lower one to RS 422 levels (Table 2-1 and Table 2-2, respectively). Signal Level Baud rates default optional Parameter Connector Pin Assignment RS232 9600 baud 115'200 baud 8 bit, 1stop bit, no parity 9-Pin D-Sub, male (DTE) DSR RTS CTS RI Signal level: Baud rates: default optional Parameter Plug Pin assignment DCD RxD TxD DTR GND Only RxD and TxD are currently supported. Internally connected to GND via 195 Ω. date: author: 20.02.2001 wst 9600 baud 115'200 baud 8 bit, 1stop bit, no parity 9-Pin D-Sub, female (DTE) RxDRxD+ TxD+ TxD- Table 2-1: RS 232 serial interface of the basic OIS-W reader unit1 RS422 GND2 GND2 Table 2-2: RS 422 serial interface of the basic OIS-W reader unit file: Interface.doc version 1.0 page: 4 / 4 OIS-W Interface Specification Baumer Ident AG 3 Reader operating modes Basically, the reader may operate in one of two main modes: triggered or free running. In triggered mode a new measurement starts as soon as an external signal is supplied or a trigger message from the host is received. In free running mode the reader is looking continuously for a valid identification. An identification message (or an appropriate error message in triggered mode) can be sent to a host in two ways: automatically or on request by the host. Usually, the automatic ID data message is sufficient in most applications. The functionality of the reader is controlled by a configuration file that allows setting of all parameters. Figure 3-1 shows the part of the configuration file dealing with the communication. The other parts of the file are not subject of this documentation. For further details see [2]. // // // // BAUMER IDENT SAW tag reader STAR2 configuration data date: 09.06.1999 time: 10:03:45 // settings serial interface Bdrate RS422 1152 Baud rate RS422 IF [ 12.. 1152] Bdrate RS232 1152 Baud rate RS232 IF [ 12.. 1152] Msg Type ID 11 select type of notification after successful reading [ 0.. 19] TidF 2 s time const ID filter (res:.5s) [0.5..32767] ID Msg Retry max. number transmissions of ID Msg(0=no maximum) [ 0.. 255] ID Msg Timeout 2 s time until ID msg is retransmitted (res:0.5s, 0=no limit) [ 0..127.5] // settings auxiliary ports Aux over RS 422 choose RS422 interface for Aux [ 0.. 1] Aux over RS 232 choose RS232 interface for Aux [ 0.. 1] Aux IN 1 Rep Aux State Indication mask (0 = Aux IN 2 Rep Aux State Indication mask (0 = Aux OUT 1 Rep Aux State Indication mask (0 = Aux OUT 2 Rep Aux State Indication mask (0 = State Indication message (0 = OFF; 1 = ON) State Indication message (0 = OFF; 1 = ON) OFF; OFF; OFF; OFF; ON) ON) ON) ON) 0.. 0.. 0.. 0.. 1] 1] 1] 1] Figure 3-1: The section of the reader configuration file dealing with communication 3.1 Automatic Data Transmission Several parameters of the configuration file describe the automatic messaging (Figure 3-1): • The MsgTypeID entry of the configuration file defines the way how and where an automatic ID message will be sent. The first digit designates the interface (0: RS 422, 1: RS 232), the second digit indicates the message type (0: no message, 1: TAG_ID_IND, 2: PARAM_DATA). The message details will be explained below. • TidF is a filter time constant. The same message is sent again after this time has elapsed, if the same ID code is detected repeatedly. • IDMsgRetry gives the number of repetitions the message will be transmitted, if the host does not acknowledge the telegram. The parameter is set to 0, if an acknowledge is mandatory; it is set to 1, if an acknowledge might be missing. • IDMsgTimeout is the time to wait for acknowledge between the repetitions. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 5 / 5 OIS-W Interface Specification Baumer Ident AG Note: The host can define the readout rate by delaying the acknowledge of the previous message appropriately. • Aux over RS 422 if the value is set to ”1” the reader sends its AUX_REP message to the RS 422 interface • Aux over RS 232 if the value is set to ”1” the reader sends its AUX_REP message to the RS 232 interface • Aux IN 1 Rep represents the digital input from antenna 1. If the value is set to ”1” the reader sends its AUX_REP message if a change of state on this pin is detected, the flag for this pin is set if any change since the former message is detected • Aux IN 2 Rep represents the digital input from antenna 2. If the value is set to ”1” the reader sends its AUX_REP message if a change of state on this pin is detected, the flag for this pin is set if any change since the former message is detected • Aux OUT 1 Rep represents the digital output from antenna 1. If the value is set to ”1” the reader sends its AUX_REP message if a change of state on this pin is detected, the flag for this pin is set if any change since the former message is detected • Aux OUT 2 Rep represents the digital output from antenna 2. If the value is set to ”1” the reader sends its AUX_REP message if a change of state on this pin is detected, the flag for this pin is set if any change since the former message is detected Note: If no interface is set, no AUX_REP message is sent, until the host sends an AUX_REQ message. The further parameters have no effect in case of inactive serial interfaces. For further information see table 5-12. There are four messages that can be transmitted automatically by the reader. The first one is the reset indicator (RESET_IND), which is sent through both interfaces simultaneously. The host's software must be aware that a reset message may arrive any time to indicate that the reader has been initialized. The next two messages are TAG_ID_IND and PARAM_DATA_REP. One of them (not both) may be sent to any serial interface (not both) as described by MsgTypeID (see above). While TAG_ID_IND sends the ID code information only, PARAM_DATA_REP gives additional information about the measurement. Both messages may also be requested by the host (TAG_ID_REQ and DATA_REQ respectively). The last message to be transmitted automatically, is the AUX_REP. Conditions for sending the information without request by the host, are as follows. The parameters Aux over RS422 and / or Aux over RS232 are set. Further, minimum one of the Aux…Rep must be set. Now a message will be sent by the reader, if one of the desired auxiliary ports changes. In case of setting both interfaces, the message is send on each simultaneously. If no desired Aux State is set (all port parameters to zero and any interface set to “1”) a message won’t be sent in no case. If AUX_REP is sent, you get information of all actual auxiliary port states. You get also information about which state did change since the last message was sent. 3.2 Communication upon request All other messages are generally initiated by the host. They can be grouped into request messages (for instance status of the reader) or commands to the reader (for instance download of configuration data). Depending on the application a host's application software may not be concerned with these messages at all. Usually they are used at installation time to configure a reader properly. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 6 / 6 OIS-W Interface Specification Baumer Ident AG 3.3 Code lookup table Basically, each tag returns a decimal number between 0 and 10x-1 with "x" defined by the tag specification Dx. Tags of the D4 range, for instance, allow for 10'000 individual codes. The reader unit can transfer an identified number in two ways: • unchanged and exactly as read from the tag • converted by using a code lookup table to give more freedom in adapting an application All readers will be delivered with lookup table enabled, even if it holds a one to one code translation only. Figure 3-2 shows an example of a code lookup table. Simple text files of this kind are, for instance, used by Baumer Idents basic service software. table type output coding output length input length 154 157 111000 987654 Figure 3-2: Example of a code lookup table Only table type 0 is currently supported. It means that only one to one entries will be accepted. Only output coding 0 is currently supported. It means that each output character will be coded internally in packed binary format (4 bit) and only the hex values 0x0 … 0xf are allowed. The output length may be selected between 1 and 255. The basic service software currently supports output lengths up to 16 characters. The input length must correspond to the range of the tags in use. If D3 tags are installed, input length must be set to 3, otherwise no valid reading can take place. The remainder of the file holds lookup entries line by line. The output code is separated from the input code by white space characters. While the input codes must be unique the same output code may be assigned to various input codes. If the reader identifies an input code not contained in the lookup table, the readers output depends on its main operating mode. In free running mode no message will be sent3. In triggered mode the reserved output code NO_READ will be transmitted. NO_READ is coded as 0xffffff (number of characters = output length). This is true for the TAG_ID_IND message. The PARAM_DATA_REP message will transmit the input code instead. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 7 / 7 OIS-W Interface Specification Baumer Ident AG 4 rotocol overview The communication protocol is similar to the Siemens 3964R protocol. 4.1 General message structure The general structure of a message is shown in Table 4-1. Following the START byte the MSG_NR indicates unambiguously the message. The next two bytes hold the length of an optional data array (high and low byte of a 16-bit number respectively). The message ends with a checksum byte and an END of message indicator. The checksum is calculated over all bytes except START, CRC and END. The calculation of the cyclic redundancy check is detailed in appendix 0. The data fields are optional and may be omitted. byte offset message bytes comment START = 0x02 start of message indicator MSG_NR message number HI MSG_LEN high byte message length Cyclic LO MSG_LEN low byte message length Redundancy [DATA (0)] first data byte [optional] check 3 + MSG_LEN [DATA (MSG_LEN-1)] last data byte [optional] CRC 4 + MSG_LEN ~CRC logically inverted CRC checksum 5 + MSG_LEN END = 0x03 end of message indicator Table 4-1: General structure of a message Usually, a message sent by the reader or by the host must be acknowledged by the other one. The reader may be configured to repeat an automatic message a number of times, if the acknowledge is missing (see chapter 3.1). Two forms of acknowledge messages are possible depending on the type of the primary message: • Often a general acknowledge message type as shown in Table 4-2 will be used. The host replies in this way to automatically transmitted messages. The same type of acknowledge is sent in most cases by the reader as reply to commands from the host. • On requests of the host the reader answers with an explicit reply message. An additional acknowledge will not be sent, neither by the host nor by the reader. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 8 / 8 OIS-W Interface Specification Baumer Ident AG byte offset message bytes example comment START 0x02 start of message indicator MSG_ACK 0x11 message acknowledge number Cyclic HI MSG_LEN 0x00 high byte message length Redundancy LO MSG_LEN 0x01 low byte message length check MSG_NR 0x22 number of primary message CRC ~CRC 0x68 logically inverted CRC checksum END 0x03 end of message indicator Table 4-2: General message acknowledge The general acknowledge message as shown in Table 4-2 replies the message number of the primary message in the data field. In the example the reader has acknowledged a «set mode request» message (SET_MODE_REQ = 0x22) of the host. In many messages an ANTENNA parameter is transmitted. It distinguishes between antenna 1 and antenna 2 of a dual channel OIS-W reader model. 4.2 Data coding and byte order Unfortunately, the coding of data, especially of numbers, is not consistent. For instance, each message header holds the message length that should be interpreted as a 16-bit binary number (cf. bytes #2 and #3 in Table 4-2). This number is transmitted by sending the most significant byte (MSB) first followed by the least significant byte (LSB). On the other hand, the TAG_ID_IND message uses a different coding of the tag code. As an example the decimal ID number 157 is transmitted as 0x07 0x05 0x01, that is a binary code with one byte per digit and the least significant digit (LSD) going first. Appendix B lists all defined messages and their parameters. The corresponding C/C++ type definitions are given in Appendix C3. To avoid any confusion due to data coding and byte order all examples will be broken down to byte level. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 9 / 9 OIS-W Interface Specification Baumer Ident AG 5 Communication messages This chapter gives typical examples of the most important messages in full detail. A complete list of all messages is given in appendix Appendix B: . Table 5-1 shows the definitions used to describe the basic data type sizes (cf. Appendix C2). type description size range type description size range UINT8 unsigned byte 1 byte 0 … 255 INT8 signed byte 1 byte -128 … 127 UINT16 unsigned word 2 byte 0 … 65'535 INT16 signed word 2 byte -32'768 … 32'767 UINT32 unsigned long 4 byte 0 … 4'294'967'295 INT32 signed long 4 byte -2'147'483'648 … 2'147'483'647 Table 5-1: Data size definitions 5.1 Automatically transmitted messages 5.1.1 TAG_ID_IND: Send code information This message is a short version of PARAM_DATA_REP. byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN ANTENNA LO_ID … HI_ID ~CRC END basic type UINT8 UINT8 UINT16 UINT8 UINT8 [length-1] UINT8 UINT8 example 0x02 0x50 0x00 0x04 0x01 0x07 0x05 0x01 0x42 0x03 comment start of message indicator TAG_ID_IND message length of data field 4 bytes to transmit channel number (ANT_1 = 1, ANT_2 = 2) least significant digit of ID code (example code = 157) logically inverted CRC end of message indicator Table 5-2: Automatically transmitted tag ID message from the reader Note: This message is of variable length. The ID may have up to 16 digits. Therefore the message length is limited to 2 ≤ length ≤ 17. byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN MSG_NR ~CRC END basic type UINT8 UINT8 UINT16 example 0x02 0x11 0x00 0x01 0x50 0x5c 0x03 UINT8 UINT8 UINT8 comment start of message indicator MSG_ACK message length of data field 1 byte to transmit message to acknowledge: TAG_ID_IND logically inverted CRC end of message indicator Table 5-3: Acknowledge of TAG_ID_IND message from the host date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 10 / 10 OIS-W Interface Specification Baumer Ident AG 5.1.2 PARAM_DATA_REP: Send extended code information byte … 20 21 22 23 24 25 26 27 28 … 44 45 46 47 48 … 60 61 62 variable START MSG_NR HI_MSG_LEN LO_MSG_LEN INVALID LO_ID … … … … HI_ID AF_AGC NOISE_LEVEL CAL_MAGNITUDE CAL_SHIFT FIRST_TAP_POS DELTA_LAST_TAP_POS ANTENNA BLOC … … BLOC_MAGNITUDE … … … … … ~CRC END basic type UINT8 UINT8 UINT16 UINT8 UINT8 [CODE_MAX_LEN] UINT8 UINT8 UINT8 INT8 UINT8 UINT8 UINT8 UINT8 [CODE_MAX_LEN+1] … … UINT8 [CODE_MAX_LEN] UINT8 UINT8 example 0x02 0x45 0x00 0x39 0x01 0x07 0x05 0x01 0xff … 0xff 0x00 0x20 0x48 0x01 0x3d 0x36 0x01 0x00 … 0x00 0x46 0x46 0x48 0x00 … 0x00 0xda 0x03 comment start of message indicator PARAM_DATA_REP message length of data field 57 bytes to transmit set to 1 if data are invalid least significant digit of ID code (example code = 157) unused bytes are filled with 0xff automatic gain control maximum noise level in spectrum signal strength of calibrator (in 0.5 dBr) description of tag properties channel number (ANT_1 = 1, ANT_2 = 2) description of tag properties signal strength of code blocs (in 0.5 dBr) i.e. 0x46 hex → 70 decimal → 35 dBr ignore unused blocs (set to 0) logically inverted CRC end of message indicator Table 5-4: Parameter data reply message The interesting data fields are CAL_MAGNITUDE and BLOC_MAGNITUDE that give an idea of the received signal strengths. Note: This message uses fixed length records. Unused bytes are filled appropriately. byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN MSG_NR ~CRC END basic type UINT8 UINT8 UINT16 example 0x02 0x11 0x00 0x01 0x45 0xff 0x03 UINT8 UINT8 UINT8 comment start of message indicator MSG_ACK message length of data field 1 byte to transmit message to acknowledge: PARAM_DATA_REP logically inverted CRC end of message indicator Table 5-5: Acknowledge of PARAM_DATA_REP message from the host date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 11 / 11 OIS-W Interface Specification Baumer Ident AG 5.1.3 RESET_IND: Reset indication of reader byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN RESET_NR ~CRC END basic type UINT8 UINT8 UINT16 example 0x02 0x51 0x00 0x01 0x00 0xd2 0x03 UINT8 UINT8 UINT8 comment start of message indicator RESET_IND message length of data field 1 byte to transmit eventually holds initialization error number logically inverted CRC end of message indicator Table 5-6: Reset indication from reader The RESET_NR is 0 if the reader was reset successfully. Possible error numbers are 0xf1 and 0xf2 (see appendix C5). Note: This message is sent to both interfaces simultaneously and must not be acknowledged. 5.2 Request Information from reader 5.2.1 VERSION_REQ: Get software version information from reader byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN ~CRC END basic type UINT8 UINT8 UINT16 UINT8 UINT8 example 0x02 0x3a 0x00 0x00 0xd5 0x03 comment start of message indicator VERSION_REQ message length of data field (no data field) logically inverted CRC end of message indicator Table 5-7: Host asks for reader software version Note: This message has no data field. The request is acknowledged by sending the version information. byte 10 variable START MSG_NR. HI_MSG_LEN LO_MSG_LEN V_DAY V_MONTH V_YEAR VERSION REVISION ~CRC END basic type UINT8 UINT8 UINT16 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 example 0x02 0x4a 0x00 0x05 0x19 0x0a 0x63 0x02 0x1c 0x65 0x03 comment start of message indicator VERSION_REP message length of data field 5 byte to transmit day of release (19) month of release (10) year of release (99) version (2) revision (28) logically inverted CRC end of message indicator Table 5-8: Version reply from reader Only the lower 7 bits of REVISION are used to express the revision number. The MSB indicates whether this message contains version information of the OIS-W boot loader (bit 7 = 1) or of the DSP date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 12 / 12 OIS-W Interface Specification Baumer Ident AG operating system (bit 7 = 0). The boot loader does only respond if the DSP cannot find a valid program to execute following reset or power up. 5.3 Information transmitted to the reader 5.3.1 DOWNLOAD_REQ: Download lookup table to reader The download request is a fixed length message that is used to transmit DSP software (type = 0), ramp controller software (type = 1), or a lookup table (type = 2). The data array is broken into blocks of size DOWNLOAD_MSG_SIZE byte each (currently set to 32). Unused bytes are filled appropriately. byte 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 … 40 41 42 variable START MSG_NR HI_MSG_LEN LO_MSG_LEN TYPE LO_BLOCKS HI_BLOCKS LO_BLOCK_NR. HI_BLOCK_NR. MAGIC_WORD basic type UINT8 UINT8 UINT16 TABLE_TYPE OUTPUT_CODING OUTPUT_LENGTH INPUT_LENGTH LO_NUM_OF_ENTRIES HI_NUM_OF_ENTRIES UINT8 UINT8 UINT8 UINT8 UINT32 ~CRC END UINT8 UINT16 UINT16 UINT8[16] UINT8 UINT8 example 0x02 0x10 0x00 0x25 0x02 0x02 0x00 0x01 0x00 0x63 0x6f 0x64 0x65 0x20 0x74 0x61 0x62 0x6c 0x65 0x20 0x70 0x63 0x20 0x20 0x20 0x00 0x00 0x06 0x03 0x02 0x00 0x00 0x00 0x00 … 0x00 0x1c 0x03 comment start of message indicator DOWNLOAD_REQ message length of data field fixed length: 37 byte to transmit download lookup table (type = 2) total number of blocks to transmit number of blocks that will follow this message space space space space space number of entries in table fill bytes set to 0 logically inverted CRC end of message indicator Table 5-9: Download lookup table to reader. The first block describes the table parameters. The first block transmitted contains the table parameters as described in chapter 3.3. The example corresponds to Figure 3-2. Note: UINT16 and UINT32 values in the data field use a different byte order than the message length field. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 13 / 13 OIS-W Interface Specification Baumer Ident AG The reader responds with a download reply message that echoes the TYPE field: byte variable START MSG_NR HI_MSG_LEN LO_MSG_LEN TYPE ~CRC END basic type UINT8 UINT8 UINT16 example 0x02 0x15 0x00 0x01 0x02 0x09 0x03 UINT8 UINT8 UINT8 comment start of message indicator DOWNLOAD_REP message length of data field 1 byte to transmit reply to lookup table download (type = 2) logically inverted CRC end of message indicator Table 5-10: Download reply message from reader. The next block(s) transmit the actual lookup table entries: byte 10 11 12 13 14 15 16 17 18 … 40 41 42 variable START MSG_NR HI_MSG_LEN LO_MSG_LEN TYPE LO_BLOCKS HI_BLOCKS LO_BLOCK_NR. HI_BLOCK_NR PACKED_DATA ~CRC END basic type UINT8 UINT8 UINT16 UINT8 UINT16 UINT16 UINT8 [DOWNLOAD_MSG_SIZE] UINT8 UINT8 example 0x02 0x10 0x00 0x25 0x02 0x02 0x00 0x00 0x00 0x45 0x10 0x00 0x11 0x17 0x51 0x45 0x67 0x89 0x00 … 0x00 0x97 0x03 comment start of message indicator DOWNLOAD_REQ message length of data field fixed length: 37 byte to transmit download lookup table (type = 2) total number of blocks to transmit number of blocks that will follow this message packed binary (4 bit per digit), least significant nibble goes first: 451 000111 751 456789 should be interpreted as: 154 111000 157 987654 unused nibbles set to 0 logically inverted CRC end of message indicator Table 5-11: Download lookup table to reader. The remaining blocks transmit the table entries in packed form. The reader acknowledges using again the message shown in Table 5-10. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 14 / 14 OIS-W Interface Specification Baumer Ident AG 5.4 Auxiliary Port Information and Settings The required coding for sending correct messages to the reader and getting the desired information correctly are described in the table below. Name of variable Description Range Def auxchind_cfg.aux_chinden Enable/disable indication about change of state at AUX ports on RS422 or RS232 serial interface. (Set corresponding bit to enable AUX state change indication on an interface) 0..3 bit 0: RS422 (=LSB) bit 1: RS232 Remarks auxchind_cfg.aux_ chindmsk AUX state change indication mask (Set bit to enable indication of state change of corresponding input or output. Has no effect if AuxChIndEn is 0) 0..31 bit 0: bit 1: bit 2: bit 3: bit 4: AUX 1_IN (=LSB) AUX 2_IN AUX 1_OUT AUX 2_OUT SYNC_IN (not used) Table 5-12: Description of aux port scan encoding Note: For software structures the paramter SYNC_IN exists, but it’s not used at the moment. date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 15 / 15 OIS-W Interface Specification Baumer Ident AG Appendix A: CRC calculation The CRC polynomial is x + x + 1. CRC is calculated over the MSG_NR, MSG_LEN and DATA fields, "~CRC" means that the calculated CRC byte is transmitted as the ones-complement (bit wise negated). The DATA field is optional as some messages do not contain data. The message length is equal to the number of bytes in the data field. Figure A-1 shows a subroutine to calculate CRC using a lookup table. This is a fast method for speed critical applications. Figure A-2 shows a subroutine to calculate CRC in the classical way. Figure A-3 shows an example how to calculate CRC of a message. void Msg_CRC(UINT8 in, INT16* state) /*--------------------------------------------------------------------------+ | Description: Does 8-bit cyclic redundancy check on one data byte CRC polynomial is x^7 + x^3 + 1 Returns the current state +--------------------------------------------------------------------------*/ static const crc_tab[16] = { 0, 18, 36, 54, 72, 90, 108, 126, 144, 130, 180, 166, 216, 202, 252, 238}; *state = crc_tab[(*state ^ in) & 0xF] ^ (*state >> 4); in >>= 4; *state = crc_tab[(*state ^ in) & 0xF] ^ (*state >> 4); Figure A-1: CRC calculation using a lookup table void Msg_CRC(unsigned char in, int* state) /*--------------------------------------------------------------------------+ | Description: Does 8-bit cyclic redundancy check on one data byte CRC polynomial is x^7 + x^3 + 1 Returns the current state +--------------------------------------------------------------------------*/ #define CRC_POLYN 0x120 //Note that MSB is state input (0x90 << 1) INT16 j; for (j = 0; j < 8; j++) { if ((*state ^ in) & 1) *state ^= CRC_POLYN; in >>= 1; *state >>= 1; Figure A-2: CRC calculation using algorithm void Calc_CRC() INT16 crc=0; Msg_CRC(MSG_NR,&crc); Msg_CRC(HI_MSG_LEN,&crc); Msg_CRC(LO_MSG_LEN,&crc); Msg_CRC(DATA_BYTE[0],&crc); // ... Msg_CRC(DATA_BYTE[N-1],&crc); crc = ~crc; // state register of CRC // CRC checksum is now contained in crc // logically invert Figure A-3: Application example for CRC calculation date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 16 / 16 OIS-W Interface Specification Baumer Ident AG Appendix B: OIS-W messages In the following descriptions only the message number MSG_NR and the data field(s) are listed. Start byte, length, CRC and end byte must be added to get the full message (see Table 4-1 for complete message structure). The initiator message is listed on the first lines followed by the response. The identifiers are defined in appendix Appendix C: . 1 Automatically transmitted messages from host from reader TAG_ID_IND UINT8 antenna UINT8 id[tlen] MSG_ACK UINT8 msg_nr PARAM_DATA_REP struct TINFO tag_info MSG_ACK UINT8 msg_nr AUX_REP struct AUX aux_status MSG_ACK UINT8 msg_nr✠ RESET_IND UINT8 reset_nr comment tag identification number and the antenna where it is received tlen = length of Tag or length of output code in code table general message acknowledge on message msg_nr (msg_nr = TAG_ID_IND) tag identification number, antenna and further information about the tag general message acknowledge on message msg_nr (msg_nr = TAG_ID_IND) contains present aux port settings general message acknowledge on message msg_nr (msg_nr = AUX_REP) contains number for possible error during initialization, zero on success Note that the RESET_IND is sent to both interfaces at the same time! Table B-12: Automatically transmitted messages by the reader The reader can be configured to send either a TAG_ID_IND message or a PARAM_DATA_REP message automatically. The RESET_IND message is always sent by the reader after a successful initialization. Please note that no acknowledge for RESET_IND is expected. 2 Request information from the reader A host can get information from the reader as described in Table B-13. Please note that the automatic PARAM_DATA_REP (Table B-12) leads to the same message as the reply to a DATA_REQ with parameter PARAM_DATA_REP. ✠ MSG_ACK is optional, but flags for actual state change report will not be reset when an acknowledge on an AUX_REP message isn’t send date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 17 / 17 OIS-W Interface Specification Baumer Ident AG from host VERSION_REQ from reader comment Ask for SW Version Reply SW version number and release date VERSION_REP UINT8 version [5] CONFIG_REQ get tag structure and reader configuration contains requested configuration CONFIG_REP struct CONFIG act_conf SER_CONFIG_REQ SER_CONFIG_REP struct SER_CONFIG act_conf AUX_REQ get present state of aux port contains present aux port settings AUX_REP struct AUX aux_status MODE_REQ get present main mode and sub-modes MODE_REP UINT8 main UINT8 tx_untriggered UINT8 biased UINT8 synch UINT8 random UINT8 Tm UINT8 Nmess UINT8 Tdmin[2] UINT8 Tdlen[2] UINT8 Tsleep[2] UINT8[CODE_MAX_LEN]biased_id UINT8[CODE_MAX_LEN]analyz_id UINT8 CwChannel UINT8 TxEnable CODE_PP_REQ CODE_PP_REP PP_SETTINGS codes AUX_CONFIG_REQ AUX_CONFIG_REP AUXALL_CONFIG[2] aux_config TAG_ID_REQ TAG_ID_IND UINT8 code.antenna UINT8code.num[CODE_MAX_LEN] IF_ERROR_REQ IF_ERROR_REP UINT32 [if_error_array] DATA_REQ UINT8 data_msg CODE_TABLE_REQ UINT8 block_nr get interface configuration contains requested configuration contains present mode, sub modes, biased id number, analyze id number, settings for Test mode random = 0: random mode off, 1: random mode on Tm: number of iterations in trigger loop Nmess: number of measurements in Random triggered mode Tdmin, Tdlen, Tsleep: initial delay, random time, sleep time in random mode CwChannel = 0: Test mode off, 2..81: valid continuous wave channel TxEnable = 0: transmitter in test off, 1: transmit antenna 1, 2: transmit antenna 2 request installation and family code actual installation and family code request output port configuration actual output port configuration get last valid ID last valid tag id at antenna 1 or 2 In case there has never been received a valid tag id, the reader responses with a data field containing NO_READ request interface errors of both interfaces Errors on both interfaces, cumulative counting get data vector: time, frequency, save or/and parameter contains data time vector, data save vector, data freq vector or data param vector (1 up to 3 messages can be received according to the data_msg value in DATA_REQ) TIME_DATA_REP INT8[SBUF_LEN] or/and SAVE_DATA_REP INT16 SBUF_LEN INT16[SBUF_LEN] INT16 PARAM_LEN INT16 AF_AGC INT16 ANTENNA or/and FREQ_DATA_REP UINT8[ABUF_LEN] or/and PARAM_DATA_REP struct TINFO tag_info CODE_TABLE_REP UINT16 blocks UINT16 block_nr UINT8[DOWNLOAD_MSG_SIZE] ANALYZ_RESULT_REQ TINFO contains information on Valid/Invalid tag, Tag ID number, Tag Errors during detection, Antenna information, AF attenuation (AGC) values Upload complete postprocessing code table Blockwise request of code table addressed by block_nr get analyze mode results contains analyze mode results ANALYZ_RESULT_REP struct ANALYZ ERROR_ARRAY_REQ ERROR_ARRAY_REP UINT8 error_array[ERR_MAX] get error array contains error array, every position of error_array despite position zero contains a counter that indicates how many times the error has occurred since the last reset Table B-13: Messages that request information from the reader date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 18 / 18 OIS-W Interface Specification Baumer Ident AG 3 Information transmitted to the reader from host SET_CONFIG_REQ struct CONFIG new_conf SET_SER_CONFIG_REQ struct SER_CONFIG new_conf SET_AUX_REQ UINT8 aux_out SET_MODE_REQ UINT8 main UINT8 tx_untriggered UINT8 biased UINT8 sync UINT8 random UINT8 Tm UINT8 Nmess UINT8 Tdmin[2] UINT8 Tdlen[2] UINT8 Tsleep[2] SET_BIASED_ID_REQ UINT8[CODE_MAX_LEN] biased_id from reader meaning set tag structure and reader configuration parameter(s) general message acknowledge msg_nr = SET_CONFIG_REQ set interface configuration parameter(s) general message acknowledge msg_nr = SET_SER_CONFIG_REQ set aux port general message acknowledge msg_nr = SET_AUX_REQ set main mode and sub-modes MSG_ACK UINT8 msg_nr MSG_ACK UINT8 msg_nr MSG_ACK UINT8 msg_nr MSG_ACK UINT8 msg_nr general message acknowledge msg_nr = SET_MODE_REQ set id for biased mode general message acknowledge msg_nr = SET_BIASED_ID_REQ triggers reader (SW trigger) antenna = 1, trigger antenna 1 antenna = 2, trigger antenna 2 antenna = 3, tirgger both antennas general message acknowledge msg_nr = SET_TRIGGER_REQ set installation and family code general message acknowledge msg_nr = SET_CODE_PP_REQ Host trigger output AOUT1 or AOUT2 general message acknowledge msg_nr = SET_AUX_TRIG_REQ set output port configuration for AOUT1 and AOUT2 as for the information about the complete auxiliary port ; resets aux flags general message acknowledge msg_nr = SET_AUX_CONFIG_REQ set id for analyze mode and reset counter general message acknowledge msg_nr = SET_ANALYZ_ID_REQ contains new downloadable file DOWNLOAD_MSG_SIZE=32 possible types are DSP_SW=0, FPGA_SW=1, CODE_TABLE=2 after reception of the all blocks an automatic reset is issued for DSP_SW and FPGA_SW, block_nr counts from blocks-1 down to zero MSG_ACK UINT8 msg_nr SET_TRIGGER_REQ UINT8 antenna MSG_ACK UINT8 msg_nr SET_CODE_PP_REQ PP_SETTINGS codes SET_AUX_TRIG_REQ UINT8 aux_host_trigger MSG_ACK UINT8 msg_nr MSG_ACK UINT8 msg_nr SET_AUX_CONFIG_REQ AUXALL_CONFIG[2] aux_config SET_ANALYZ_ID_REQ UINT8[CODE_MAX_LEN] MSG_ACK UINT8 msg_nr MSG_ACK UINT8 msg_nr DOWNLOAD_REQ UINT8 type UINT16 blocks UINT16 block_nr UINT8[DOWNLOAD_MSG_SIZE] DOWNLOAD_REP UINT8 type SET_TEST_REQ UINT8 cw_channel UINT8 tx_enable MSG_ACK UINT8 msg_nr SET_MONITOR_REQ UINT8 antenna UINT8 beeper MSG_ACK UINT8 msg_nr RESET_REQ RESET_IND UINT8 reset_nr acknowledge for each block enters or leaves test mode CwChannel = 0 leaves test mode; CwChannel = 2..81 enters test mode, TxEnable = 0: TX off, 1: antenna 1 on, 2: antenna 2 on general message acknowledge msg_nr = SET_TEST_REQ Sets Display filter in antenna alternating mode, sends only DATA_REP messages from ANT_1 or ANT_2 or both antennas (default). Beeper can be enabled =1, beeps on every valid tag ID. This setting is volatile, after reset the default setting is assumed. general message acknowledge msg_nr = SET_DISPLAY_REQ reset DSP SW contains number for possible error during initialization, zero on success Table B-14: Messages that the host may send to the reader date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 19 / 19 OIS-W Interface Specification Baumer Ident AG Appendix C: C/C++ header definitions 1 Global Definitions /*** general definitions sorted alphabetically ***/ #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define date: author: ABUF_LEN ABUF_NUM ANT_1 ANT_2 ANT_ALTERNATING AUX_DELAYED_IMPULSE AUX_DELAYED_TURN_OFF AUX_HOST_TRIG AUX_ID_TRIG_FILT AUX_ID_TRIG_TRANSP AUX_TAG_ACK BOTH_IF CODE_MAX_LEN CODE_MAX_LEN1 CORRECTION_ERROR DATA_IF DOWNLOAD EMPTY_BUFFER EVENT_DRIVEN_ID FREQ_DATA FULL_BUFFER ID_FIFO_LEN INVALID_ELSE INVALID_INSTALLATION_C INVALID_NOFM MASTER MULTIPLE_PEAKS OFF ON PARAM_DATA PEAK_BELOW_SNR RMOD_EXPONENTIAL RMOD_GAUSS RMOD_UNIFORM SAVE_DATA SBUF_LEN SBUF_NUM SERVICE_IF SLAVE TAP_CORRECTED TIME_DATA TIME_OUT TIME_OUT2 TOO_MANY_CORRECTIONS TRIG1 TRIG2 TRIGB TRIGGERED_ID TYP_PARID_DA TYP_PARID_SI TYP_TAGID_DA TYP_TAGID_SI VALID_TAG ZERO_IF 20.02.2001 wst 300 16 17 0x04 0xEE 0x2 0xFF 0x003 0x002 0x001 0x02 0x4 0x01 0x8 512 0x80 0x1 0xFD 0xFC 0x08 02 12 01 11 0x000 file: Interface.doc version 1.0 page: 20 / 20 OIS-W Interface Specification Baumer Ident AG 2 Size definition of variables /*** Size Definition of Variables ***/ typedef typedef typedef typedef typedef typedef unsigned char unsigned int unsigned long char int long UINT8; UINT16; UINT32; INT8; INT16; INT32; 3 Structure definitions /*** structure definitions ***/ typedef struct { UINT8 *start; INT16 len; volatile in; volatile out; typedef enum typedef enum } BUFOBJ; { RAND_OFF, RAND_TD_MIN, RAND_GENERATE, RAND_RUN, RAND_SLEEP } RANDOM_STATE; { TRIG_OFF, TRIG_PREP, TRIG_IND, TRIG_IND1, TRIG_RUN } TRIG_STATE; typedef struct { UINT8 flag; float array[ABUF_LEN]; } ABUF; typedef struct { UINT32 Total_ids; UINT32 Invalid_ids; UINT32 Wrong_but_valid_ids;} ANALYZ; typedef struct { UINT8 aux_chinden; UINT8 aux_chindmsk; typedef struct { UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 typedef struct { UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 } AUXCHIND_CONFIG; aux_mode; aux_function; aux_inv; aux_tdon; aux_tdoff; aux_tauxf[2]; } AUX_CONFIG; aux_in; aux_out; aux_sync_in; aux_sync_out; aux_flag; aux_in_trig; aux_sync_trig; aux_random_trig; } AUX; typedef struct { AUX_CONFIG port[2]; AUXCHIND_CONFIG auxchind_cfg;} AUXALL_CONFIG; typedef struct { UINT8 antenna; UINT8 num[CODE_MAX_LEN];} CODE; date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 21 / 21 OIS-W Interface Specification Baumer Ident AG typedef struct { UINT8 Tslot; UINT8 Ncodebloc; UINT8 Ncodeslot; UINT8 Ncalrefl; UINT8 Ncoderef; UINT8 Ncheckrefl; UINT8 Nextrefl; UINT8 Nmesrefl; UINT8 Tcode00[2]; INT8 Tcal; UINT8 Nnoisebin; UINT8 Tmes0[2]; UINT8 Puseguard; UINT8 Channel; UINT8 Ant; UINT8 Navg[2]; UINT8 Na; UINT8 Nequ; UINT8 Pposinst; UINT8 Ninst; UINT8 Pposfam; UINT8 Nfam; UINT8 Pposuser; UINT8 Nuser; UINT8 Ntab; UINT8 Afagc; UINT8 SNR; UINT8 DSNRCal; UINT8 DMultiTag; UINT8 InitDelay1; UINT8 InitDelay2; UINT8 DelayRange1; UINT8 DelayRange2; } CONFIG; typedef struct { UINT8 message; UINT8 data_msg; UINT8 interface; INT16 length; BUFOBJ *buf; } DS_MSG; typedef struct { BUFOBJ BUFOBJ BUFOBJ BUFOBJ } DS_PTR; si_rx; si_tx; da_rx; da_tx; typedef struct { UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 main; tx_untriggered; biased; sync; random; Tm; Nmess; Tdmin[2]; Tdlen[2]; Tsleep[2]; analyz_id[CODE_MAX_LEN]; biased_id[CODE_MAX_LEN]; CwChannel; TxEnable; } MODE; typedef struct { UINT8 UINT8 UINT8 UINT8 UINT8 Instal_code_len; Table_lookup_On; Family_code_len; Instal_code[CODE_MAX_LEN]; Family_code[CODE_MAX_LEN];} PP_SETTINGS; typedef struct { UINT8 INT16 UINT8 UINT8 flag; array[SBUF_LEN]; Afagc; antenna; } SBUF; typedef struct { UINT8 UINT8 UINT8 UINT8 UINT8 UINT8 SerSpeedDA; SerSpeedSI; MsgTypeID; TidF[2]; ID_Msg_Retry; ID_Msg_Timeout; date: author: 20.02.2001 wst } SER_CONFIG; file: Interface.doc version 1.0 page: 22 / 22 OIS-W Interface Specification Baumer Ident AG typedef struct { UINT8 Invalid; UINT8 Num[CODE_MAX_LEN]; UINT8 AF_Agc; UINT8 Noise_Level; UINT8 Cal_Magnitude; INT8 Cal_Shift; UINT8 First_Tap_Pos; UINT8 Delta_Last_Tap_Pos; UINT8 Cur_Ant; UINT8 Bloc[CODE_MAX_LEN1]; UINT8 Bloc_Magnitude[CODE_MAX_LEN];} TINFO; typedef struct { TINFO tag[ID_FIFO_LEN]; CODE data[ID_FIFO_LEN]; INT16 in_idx; INT16 out_idx; } TJD_FIFO; typedef struct { TRIG_STATE state; INT16 count[2]; RANDOM_STATE rnd; INT16 meas_count; } TRIGGER; 4 Definition of message numbers /*** definition of message numbers ***/ #define #define #define #define #define #define DOWNLOAD_REQ MSG_ACK RESET_REQ TEST_SER_REQ TEST_SER_REP DOWNLOAD_REP 0x10 0x11 0x12 0x13 0x14 0x15 #define #define #define #define #define #define #define #define #define #define #define #define #define SET_CONFIG_REQ SET_AUX_REQ SET_MODE_REQ SET_TRIGGER_REQ SET_ANALYZ_ID_REQ SET_BIASED_ID_REQ SET_TEST_REQ SET_CODEPP_REQ SET_MONITOR_REQ SET_AUX_CONFIG_REQ SET_AUX_TRIG_REQ SET_ADDR_REQ SET_SER_CONFIG_REQ 0x20 0x21 0x22 0x23 0x25 0x26 0x27 0x28 0x29 0x2A 0x2B 0x2C 0x2D #define #define #define #define #define #define #define #define #define #define #define #define #define CONFIG_REQ AUX_REQ MODE_REQ DATA_REQ TAG_ID_REQ ANALYZ_RESULT_REQ CODE_TABLE_REQ ERROR_ARRAY_REQ VERSION_REQ CODEPP_REQ IF_ERROR_REQ AUX_CONFIG_REQ SER_CONFIG_REQ 0x30 0x31 0x32 0x33 0x34 0x37 0x38 0x39 0x3A 0x3B 0x3C 0x3D 0x3E date: author: 20.02.2001 wst // not handled by DSP SW // response TAG_ID_IND file: Interface.doc version 1.0 page: 23 / 23 OIS-W Interface Specification Baumer Ident AG #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define CONFIG_REP AUX_REP MODE_REP TIME_DATA_REP FREQ_DATA_REP PARAM_DATA_REP SAVE_DATA_REP ANALYZ_RESULT_REP CODE_TABLE_REP ERROR_ARRAY_REP VERSION_REP CODEPP_REP IF_ERROR_REP AUX_CONFIG_REP SER_CONFIG_REP 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4A 0x4B 0x4C 0x4D 0x4E #define TAG_ID_IND #define RESET_IND 0x50 0x51 #define #define #define #define #define #define 0x10 0x20 0x30 0x40 0x50 0xF0 SYS_MSG_MASK SET_MSG_MASK REQ_MSG_MASK REP_MSG_MASK IND_MSG_MASK MSG_GROUP_MASK #define FIRST_MSG #define LAST_MSG DOWNLOAD_REQ RESET_IND /*** download message definers ***/ #define DSP_SW #define FPGA_SW #define CODE_TABLE 5 Error numbers /*** error array indices ***/ #define #define #define #define #define #define #define #define #define #define #define #define #define #define ERR_RESET_NR ERR_SBUF ERR_SI_RXFULL ERR_SI_TXFULL ERR_DA_RXFULL ERR_DA_TXFULL ERR_SI_NOT_RDY ERR_DA_NOT_RDY ERR_CLIPPING_ANT1 ERR_CLIPPING_ANT2 ERR_MSGD ERR_FLASH_TMO ERR_FLASH_DATA ERR_MAX 10 11 12 13 /*** ERR_RESET_NR. ***/ #define XILINX_LOAD_ERROR 0xF1 #define XILINX_WRONG_CHANNEL 0xF2 date: author: 20.02.2001 wst file: Interface.doc version 1.0 page: 24 / 24
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.2 Linearized : No Page Count : 24 Create Date : 1910:10:22 01:34:12 Producer : Acrobat Distiller 3.0 f r WindowsEXIF Metadata provided by EXIF.tools