= Mainboard Protocol = 2008-02-14 Don Wilson Messages needed, expressed as communications from OPI board to main board Message format information: Messages are encoded as variable length binary data with CRC-16 validation Mainboard will provide acknowledgement response. If nak reponse or no response after timeout OPI board may request again. Record format (records to and from mainboard): Byte 1 Multidrop address (record length) ... (record length – 2) CRC-16 [[BR]]Message formats: (If mainboard detects CRC fail for any request response message will be 15h (eeee = error code)) (Second byte of request identifies scale/analog, serial port number, option card slot number for many requests) Summary: ||Hex||Char||Description|| ||~~~~~~41~~~~~~||~~~~~~A~~~~~~||~~~~~~Get wt with audit~~~~~~|| ||__32__||__2__||__Get number of chars in COM queue and handshake status__|| ||__33__||__3__||__Set COM port baud rate__|| ||__34__||__4__||__Set COM port RTS__|| ||__35__||__5__||__Set COM port data bits, parity, and stop bits__|| ||__36__||__6__||__Get COM port baud rate, data bits, parity, and stop bits__|| ||__37__||__7__||__Set default scale for serial port formats__|| ||42||B||Calibrate specified step|| ||43||C||Repeat wt specified interval or upon weight change|| ||44||D||Set date/time|| ||45||E||Set tare for specified scale to specified weight|| ||46||F||Set tare for specified scale to current scale weight|| ||47||G||Set specified serial port record format|| ||48||H||One time output to serial port|| ||49||I||Get I/O status|| ||4A||J||Repeat I/O status at specified interval|| ||4B||K||Repeat I/O status at specified interval or upon status change|| ||4C||L||Set I/O output|| ||4D||M||Repeat specified output format at specified interval to specified serial port|| ||4E||N||Set output condition for specified serial port|| ||4F||O||Get calculated calibration values|| ||50||P||Get standard calibration parameters|| ||51||Q||Set standard calibration parameters|| ||52||R||Repeat wt specified interval|| ||53||S||Get mainboard time/date|| ||~~~~~~54~~~~~~||~~~~~~T~~~~~~||~~~~~~Get audit trailing beginning and ending IDs~~~~~~|| ||~~~~~~55~~~~~~||~~~~~~U~~~~~~||~~~~~~Get weight, time/date for specified audit ID~~~~~~|| ||56||V||Get version|| ||57||W||Get one time scale wt|| ||58||X||Get multiple-interval calibration parameters|| ||59||Y||Set multiple-interval calibration parameters|| ||5A||Z||Zero specified scale|| ||5B||[||Set condition for I/O output|| ||5C||\||One time output specified format to serial port|| ||5D||]||Repeat time/date at specified interval|| ||5E||!^||Switch mainboard to update mode|| ||60||`||Erase flash except boot loader__ (only available when in update mode)__|| ||61||a||Next block binary data__ (only available when in update mode)__|| ||62||b||Switch from boot program to main program|| ||63||c||Set scale current units|| ||64||d||~~~~~~Get number of events in event log~~~~~~__Increment calibration counter__|| ||65||e||__Increment configuration counter__~~~~~~Get current event counter value~~~~~~|| ||66||f||__Read calibration and configuration counters__~~~~~~Read entry from event log~~~~~~|| ||~~~~~~67~~~~~~||~~~~~~g~~~~~~||~~~~~~Add entry to event log~~~~~~|| ||68||h||Get serial port input buffer|| ||69||i||Set !DeviceNet params|| ||6A||J||Get !DeviceNet params|| ||6B||k||Adjust span – Up|| ||6C||l||Adjust span – Down|| ||__6D__||__m__||__Enable/disable opi debug mode__|| ||__6E__||__n__||__Do single point calibration (must be preceded by Calibration step 1)__|| ||__6F__||__o__||__Set !DeviceNet serial number__|| ||__70__||__p__||__Read !DeviceNet serial number__|| ||__71__||__q__||__Set multipoint calibration parameters__|| ||__72~~~~1~~~~__||__r__||__Get multipoint calibration parameters__|| ||__73__||__s__||__Change mainboard/OPI board baud rate__|| ||__74__||__t__||__Change main board/OPI board multi-drop mode__|| = version four byte unsigned integer assumed decimal 2 places = mainboard status Byte 01h = 2-byte unsigned integer status (0000h no error, …) bit 15 = 1 = executing from boot area, = 0 = executing from main program area bit 14 = 1 = the checksum of the boot area failed bit 13 = 1 = the checksum of the main program area failed The program will not switch from the boot area unless both the boot area and the main program area checksums have passed. 03h = 1-byte unsigned integer total number of options cards installed 04h = 2-byte bit-mask identifying which card slots are occupied (card1 = bit0 …) (Following bytes are unsigned integer number of each type of option card) 06h Scale Interface Board (SIB)[[BR]]07h Dual Serial (SIO)[[BR]]08h Dual Parallel (PIO)[[BR]]09h Smart Scale Interface (SSI)[[BR]]0Ah Allen/Bradley interface (ABI)[[BR]]0Bh Network Interface Card (NIC)[[BR]]0Ch Digital Input/Output (DIO)[[BR]]0Dh Smart Cell (SCD)[[BR]]0Eh Digital to Analog Converter (DAC)[[BR]]0Fh Counter/Input (CIC)[[BR]]10h (CAN778)[[BR]]11h High-Speed Scale Interface Board (HSSIB)[[BR]]12h Modem (MODEM)[[BR]] = option card type and status Byte 01h = type of card (00h = no card installed, 01h = SIB, 02h = SIO, 03h = PIO, …) Byte 02h = 2-byte unsigned integer status (0000h no error, …) Byte 04h – card specific status … = calibration parameters Version of calibration parameters 0001h – 2 byte integer Capacity - 4 byte IEEE float Interval digit - 1 byte integer Motion range grads - 1 byte integer Sample rate - 1 byte integer Filter number - 1 byte integer Filter break range - 1 byte integer Filter value - 1 byte integer Zero tracking range - 1 byte integer (10=.5 grad, 1-9 = 1-9 grads) Interval decimal precision - 1 byte integer Units - 1 byte integer (1=lb only, 2=kg only, 3=lb and kg, 4=custom) Flags - 1 byte integer (bit 0 = 1 = zero limit, bit 1 = 1 = usa flag, bit 2 = 1 = 2nd order linearization) Conversion factor from primary units to secondary units - 4 byte IEEE float (usually set to .453592 for lb to kg) Secondary weight units interval digit - 1 byte integer Secondary weight units interval decimal precision - 1 byte integer Number of calibration points - 1 byte integer Totalizer – 1 byte integer[[BR]]Flags2 – 1 byte integer OIML=1 (0 = OIML no, 1 = OIML yes) (global – not per scale) Primary units label – 6 bytes null terminated Secondary units label – 6 bytes null terminated = multiple interval calibration parameters Version of multiple interval calibration parameters 0001h – 2 byte integer low interval range capacity - 4 byte IEEE float middle interval range capacity - 4 byte IEEE float middle interval range decimal precision - 1 byte integer high interval range decimal precision - 1 byte integer middle interval range interval digit - 1 byte integer high interval range interval digit - 1 byte integer middle interval range converted units decimal precision - 1 byte integer high interval range converted units decimal precision - 1 byte integer middle interval range converted units interval digit - 1 byte integer high interval range converted units interval digit - 1 byte integer __ = multipoint calibration parameters or 2^nd^ order linearization parameters or Guardian linearization parameters (variation of 2^nd^ order linearization)__ __ Version of parameters 0064h - 2 byte integer (0064h=1.00)__ __ conversion factor 1 or 2^nd^ order conversion factor or 0 for Guardian linearization - 4 byte IEEE float__ __ conversion factor 2 or Guardian linear coefficient - 4 byte IEEE float__ __ conversion factor 3 or Guardian 2^nd^ order coefficient - 4 byte IEEE float__ __ frequency 0 - 4 byte IEEE float__ __ frequency 1 - 4 byte IEEE float__ __ frequency 2 - 4 byte IEEE float__ __ intercept 0 or Guardian tweak low weight (in grads) - 4 byte IEEE float__ __ intercept 1 or Guardian tweak high weight (in grads) - 4 byte IEEE float__ __ intercept 2 or Guardian tweak weight (in grads) - 4 byte IEEE float__ __ __ = calculated calibration values Version of calculated calibration parameters 0001h – 2 byte integer Conversion factor ('C' numbers) - 4 byte IEEE float Calibrated dead load - 4 byte IEEE float 2nd conversion factor - 4 byte IEEE float (calculated as part of calibration if use multi-point cal or 2nd order linearization) 3rd conversion factor - 4 byte IEEE float (calculated as part of calibration if use multi-point cal or 2nd order linearization) 4th conversion factor - 4 byte IEEE float (calculated as part of calibration if use multi-point cal or 2nd order linearization) 1st calibration point frequency - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) 2nd calibration point frequency - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) 3rd calibration point frequency - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) 1st calibration point intercept - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) 2nd calibration point intercept - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) 3rd calibration point intercept - 4 byte IEEE float (calculated as part of calibration if use multi-point cal) dead load raw counts - 4 byte IEEE float (calculated during calibration) = time / date 2 bytes unsigned integer year 1 byte unsigned integer month 1 byte unsigned integer day of month 1 byte unsigned integer hour 1 byte unsigned integer minutes 1 byte unsigned integer seconds = error code – four byte unsigned integer = interval – 2 byte – first byte value, second byte decimal places = gross weight – four byte IEEE float = tare weight – four byte IEEE float = net weight – four byte IEEE float = specific weight – four byte IEEE float = units - one byte (00h= primary, 01h=secondary) = status – one byte – bitmapped 01h = motion 02h = overcap 04h = below zero 08h = center zero 10h = error 20h = keypad tare = audit trail ID – four byte unsigned long integer '''<'''bbbb> = beginning audit trail ID – four byte unsigned long integer = ending audit trail ID – four byte unsigned long integer = millisecond interval – 4 byte unsigned integer – zero stop repeat = digital input/output – 4 byte bit-field = digital output mask – 4 byte bit-field mask to designate which outputs are to be affected by the value = condition expression – variable length binary data – see explanation below = serial output format string – variable length ASCII character codes similar to “X” option 788 open command = raw bytes to send to serial port / or mainboard update – variable length ASCII character codes = single byte unsigned integer percent = single byte record format number <#> = single byte scale ID <@@@@@@> = mainboard update parameters 2 bytes unsigned integer version 4 bytes unsigned integer total bytes of binary data file to be sent = device net parameters 1 byte unsigned integer enable ( 0 = disabled, 1 enabled) 1 byte unsigned integer node address (0 – 63) 1 byte unsigned integer baud rate (0 = 125K, 1 = 250K, 2 = 500K) __ = 2-byte number of bytes in serial port receive queue__ __ __ __ = 1-byte mainboard serial port status (bit 0 = 1 = rts active, bit 1 = 1 = cts active, bit 2 = 0 = rs-485 rx enabled, bit 3 = 1 = rs-485 tx enabled)__ __ __ __ = baud rate (1152=115200, 576=57600, 384=38400, 288=28800, 192=19200, 144=14400, 96=9600, 48=4800, 24=2400, 12=1200)__ __ __ __=0=rts inactive,=1=rts active__ __ __ __ = number of serial port data bits (5, 6, 7 or 8) or 0 to leave data bits unchanged__ __ __ __

= serial port parity (‘n’=none, ‘e’=even, ‘o’=odd, ‘m’=mark, ‘s’=space) or 0 to leave parity unchanged__ __ __ __ = serial port stop bits (1/16ths of a bit) or 0 to leave parity unchanged__ __ for 5 data bits, can range from 17 through 32 (1.0625 stop bits through 2.0 stop bits)__ __ for 6-8 data bits, can range from 9 through 16 (0.5625 stop bits through 1.0 stop bits) or from 25 through 32 (1.5625 stop bits through 2.0 stop bits)__ __ __ __ = event counters version__ __ __ __ = event counters status: 00h if OK, 01h if event counters eeprom is corrupted__ __ __ __ = calibration event counter__ __ = configuration event counter__ __ __ __ - date and time of last calibration event__ __ 2 bytes unsigned integer year__ __ 1 byte unsigned integer month__ __ 1 byte unsigned integer day of month__ __ 1 byte unsigned integer hour__ __ 1 byte unsigned integer minutes__ __ 1 byte unsigned integer seconds__ __ __ __ - date and time of last configuration event__ __ 2 bytes unsigned integer year__ __ 1 byte unsigned integer month__ __ 1 byte unsigned integer day of month__ __ 1 byte unsigned integer hour__ __ 1 byte unsigned integer minutes__ __ 1 byte unsigned integer seconds__ __ __ __ - !DeviceNet serial number (in the range 0x10000000 through 0x1fffffff)__ __ __ __ OPI board comm. baud rate__ __ 0 = default 500,000 bps__ __ 1 = 250,000 bps__ __ 2 = 128,000 bps__ __ 3 = 115,200 bps__ __ __ __ OPI board comm.. multi-drop mode__ __ 0= default use multi-drop__ __ 1= No multi-drop mode simply first byte received is length of data to follow__ __ __ ||'''Description'''||'''Request'''||'''Response'''|| ||Get mainboard version and status||56h 30h||56h 30h 06h || ||Get version, type and status of option card in slot 1||56h 31h||56h 31h 15h (NAK error)[[BR]][[BR]]or[[BR]][[BR]]56h 31h 06h || ||Get version, type and status of option card in slot 2||56h 32h||56h 32h 15h (NAK error)[[BR]][[BR]]or[[BR]][[BR]]56h 32h 06h || ||…|| || || ||Get mainboard time/date||53h 30h||53h 30h 06h || ||Repeat time/date at s~~~~~~e~~~~~~pecified interv~~~~~~er~~~~~~__al__||5Dh 30h ||5Dh 30h 06h (immediate response)[[BR]][[BR]]or[[BR]][[BR]]5Dh 30h 06h (ack if interval is zero and stop repeat)[[BR]][[BR]]5Dh 30h 01h (repeat at specified interval)|| ||Set mainboard time/date||44h 30h ||44h 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]44h 30h 06h (ACK successfully changed time/date)|| ||Set current units for scale 1||63h 31h ||44h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]44h 31h 06h (ACK successfully changed units)|| ||…|| || || ||Get one time scale 1 wt||57h 31h||57h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]57h 31h 06h || ||Get one time scale 2 wt||57h 32h||57h 32h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]57h 32h 06h || ||…|| || || ||Get one time scale 12 wt||57h 3Ch||57h 3Ch 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]57h 3Ch 06h || ||Get one time total scale weight (if totalizing enabled)||57h 7Fh||57h 7Fh 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]57h 7Fh 06h …|| ||~~~~~~Get one time scale 1 wt with audit trail~~~~~~||~~~~~~41h 31h~~~~~~||~~~~~~41h 31h 15h (NAK error)~~~~~~[[BR]][[BR]]''~~~~~~or~~~~~~''[[BR]][[BR]]~~~~~~41h 31h 06h ~~~~~~|| ||…|| || || ||Repeat wt from scale 1 at specified interval||52h 31h ||52h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]52h 31h 06h (ACK if interval is zero and stop repeat weight)[[BR]][[BR]]''or''[[BR]][[BR]]52h 31h 06h [[BR]][[BR]](Initial response should be immediate – repeats will be same format except third character 06h ACK replaced by 01h SOH)|| ||…|| || || ||Repeat wt from scale 1 at specified interval or immediately upon weight change||43h 31h ||43h 31h 15h (NAK error[[BR]][[BR]]''or''[[BR]][[BR]]43h 31h 06h (ACK if interval is zero and stop repeat weight)[[BR]][[BR]]''or''[[BR]][[BR]]43h 31h 06h (repeat at requested interval or immediately when weight or status change occurs)[[BR]][[BR]](Initial response should be immediate – repeats will be same format except third character 06h ACK replaced by 01h SOH)|| ||…|| || || ||Zero scale 1||5Ah 31h||5Ah 31h 15h (NAK error)[[BR]][[BR]]or[[BR]][[BR]]5Ah 31h 06h (ACK, scale zeroed successfully)|| ||…|| || || ||Set tare for scale 1||45h 31h ||45h 31h 15h (NAK error)[[BR]][[BR]]or[[BR]][[BR]]45h 31h 06h (ACK, scale tared successfully)|| ||…|| || || ||Set tare scale 1 to scale 1 current wt||46h 31h||46h 31h 15h (NAK error)[[BR]][[BR]]or[[BR]][[BR]]46h 31h 06h (ACK, scale tared successfully)|| ||~~~~~~Get beginning and ending audit trail record IDs~~~~~~||~~~~~~54h 30h~~~~~~||~~~~~~54h 30h 15h (NAK error)[[BR]]''or''~~~~~~[[BR]][[BR]]~~~~~~54h 30h 06h ~~~~~~|| ||~~~~~~Get weight and time/date for audit ID~~~~~~||~~~~~~55h 30h ~~~~~~||~~~~~~55h 30h 15h (NAK error)[[BR]]''or''[[BR]]55h 30h 06h <#>~~~~~~|| ||Get standard calibration parameters for scale 1||50h 31h||50h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]]50h 31h 06h || ||…|| || || ||Set standard calibration parameters for scale 1||51h 31h ||51h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]51h 31h 06h (ACK successfully set parameters)|| ||…|| || || ||Get multiple-interval calibration parameters for scale 1||58h 31h||58h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]]58h 31h 06h || ||…|| || || ||Set multiple-interval calibration parameters for scale 1||59h 31h ||59h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]59h 31h 06h (ACK successfully set parameters)|| ||…|| || || ||Get calculated calibration values for scale 1||4Fh 31h||4Fh 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]]4Fh 31h 06h || ||…|| || || ||Calibration scale 1||42h 31h (wwww = wt on scale, s = step)||42h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]42h 31h 06h (ACK calibration step started)[[BR]][[BR]]''As progress completes''[[BR]][[BR]]42h 31h 01h (q = percent complete, p = 100d step complete)|| ||…|| || || ||Get one time I/O status record for I/O board 1||49h 31h||49h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]49h 31h 06h || ||…|| || || ||Repeat I/O status for board 1||4Ah 31h ||4Ah 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Ah 31h 06h (ACK, if interval 0 – stop repeat)[[BR]][[BR]]''or''[[BR]][[BR]]4Ah 31h 06h (repeat at specified interval)[[BR]][[BR]](Initial response should be immediate – repeats will be same format except third character 06h ACK replaced by 01h SOH)|| ||…|| || || ||Repeat I/O status for board 1 at specified interval or immediately if status change||4Bh 31h ||4Bh 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Bh 31h 06h (ACK, if interval 0 – stop repeat)[[BR]][[BR]]''or''[[BR]][[BR]]4Bh 31h 06h (repeat at specified interval or immediately upon status change – If interval FFFFFFFF only output on status change)[[BR]][[BR]](Initial response should be immediate – repeats will be same format except third character 06h ACK replaced by 01h SOH)|| ||…|| || || ||Set output status for I/O board 1||4Ch 31h ||4Ch 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Ch 31h 06h (ACK successfully set outputs)[[BR]][[BR]] || ||…|| || || ||Set output for I/O board 1 when specified condition is true||5Bh 31h ||5Bh 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]5Bh 31h 06h (ACK successfully set outputs)[[BR]][[BR]] || ||…|| || || ||Set serial port record format||47h 30h ||47h 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]47h 30h 06h (ACK successfully set format)[[BR]][[BR]] || ||One time output specified data to mainboard serial port||48h 30h ||48h 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]48h 30h 06h (ACK successfully sent data)[[BR]][[BR]] || ||One time output specified data to first option card serial port||48h 31h ||48h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]48h 31h 06h (ACK successfully sent data)[[BR]][[BR]] || ||…|| || || ||One time output specified data to mainboard CAN bus port__ (mainboard test software only)__||48h 7Fh ||48h 7Fh 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]48h 7Fh 06h (ACK successfully sent data)[[BR]][[BR]] || ||Get input buffer from mainboard serial port||68h 30h||68h 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]68h 30h 06h || ||Get input buffer from first option card serial port||68h 31h||68h 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]68h 31h 06h || ||…|| || || ||Get input buffer from mainboard CAN bus port__ (mainboard test software only)__||68h 7Fh||68h 7Fh 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]68h 7Fh 06h || ||One time output specified format to mainboard serial port||5Ch 30h ||5Ch 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]5Ch 30h 06h (ACK successfully sent data based on format)[[BR]][[BR]] || ||One time output specified format to first option card serial port||5Ch 31h ||5Ch 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]5Ch 31h 06h (ACK successfully sent data based on format)[[BR]][[BR]] || ||…|| || || ||Repeat output specified format to mainboard serial port at specified interval||4Dh 30h ||4Dh 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Dh 30h 06h (ACK mainboard repeats ouput to serial port at specified interval, or stop repeat if interval set to zero)|| ||Repeat output specified format to first option card serial port at specified interval||4Dh 31h ||4Dh 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Dh 31h 06h (ACK mainboard repeats ouput to serial port at specified interval, or stop repeat if interval set to zero)|| ||…|| || || ||Set output condition for specified format for mainboard serial port||4Eh 30h ||4Eh 30h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Eh 30h 06h (ACK mainboard monitors for condition specified and sends format 1 serial output when true)|| ||Set output condition for specified format for first option card serial port||4Eh 31h ||4Eh 31h 15h (NAK error)[[BR]][[BR]]''or''[[BR]][[BR]]4Eh 31h 06h (ACK mainboard monitors for condition specified and sends format 1 serial output when true)|| ||…|| || || ||Switch the main board to update mode||5Eh 30h||5Eh 30h 06h (ACK)|| ||Erase~~~~~~d~~~~~~ main board flash except for the boot loader__ (in update mode only)__||60h 30h <@@@@@@>||60h 30h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]60h 30h 06h (ACK from bootloader and setup for flash update)|| ||Send next block of binary data for mainboard flash__ (in update mode only)__||61h 30h ||60h 30h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]61h 30h 06h (ACK)|| ||Switch main board from boot program to main program||62h 30h||62h 30h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]62h 30h 06h (ACK)|| ||Set !DeviceNet parameters||69h 30h ||69h 30h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]69h 30h 06h (ACK)|| ||Get !DeviceNet parameters||6Ah 30h||6Ah 30h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]6Ah 30h 06h || ||Adjust scale 1 span up||6Bh 31h||6Bh 31h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]6Bh 31h 06h|| ||…|| || || ||Adjust scale 1 span down||6Ch 31h||6Ch 31h 15h (NAK if error)[[BR]][[BR]]or[[BR]][[BR]]6Ch 31h 06h|| ||…|| || || ||__Get number of chars inmain board serial portqueue and handshake status__||__32h 30h__||__32h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__32h 30h 06h __|| ||__...__||__ __||__ __|| ||__Set main board serial port baud rate__||__33h 30h __||__33h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__33h 30h 06h__|| ||__...__||__ __||__ __|| ||__Set or clear main board serial port rts__||__34h 30h __||__34h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__34h 30h 06h__|| ||__...__||__ __||__ __|| ||__Set main board serial port data bits, parity, and stop bits__||__35h 30h

__||__35h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__35h 30h 06h__|| ||__...__||__ __||__ __|| ||__Get main board serial port baud rate, data bits, parity, and stop bits__||__36h 30h__||__36h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__36h 30h 06h

__|| ||__...__||__ __||__ __|| ||__Set scale 1 as the default scale for serial port formats__||__37h 30h 31h__||__37h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__37h 30h 06h__|| ||__...__||__ __||__ __|| ||__Set totalizer as the default scale for serial port formats__||__37h 30h 7Fh__||__37h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__37h 30h 06h__|| ||__Increment calibration counter__||__64h 30h__||__64h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__64h 30h 06h__|| ||__Increment configuration counter__||__65h 30h__||__65h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__65h 30h 06h__|| ||__Read calibration and configuration counters__||__66h 30h__||__66h 30h 06h __|| ||__Enable/disable OPI debug mode__||__6Dh 30h 01 (enable)__[[BR]][[BR]]__or__[[BR]][[BR]]__6Dh 03h 00 (disable)__||__6Eh 30h 06h__|| ||__Single point calibration of scale 1__||__6Eh 31h__||__6Eh 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__6Eh 30h 06h__[[BR]][[BR]]__Note: calibration step 1 must be done first. If the calibration weightwas zero, then a new dead load will be established. If the calibration weight was not zero, then a new span will be calculated using the original dead load.__|| ||__...__||__ __||__ __|| ||__Set !DeviceNet serial number__||__6Fh 30h __||__6Fh 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__6Fh 30h 06h__|| ||__Get !DeviceNet serial number__||__70h 30h__||__70h 30h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__70h 30h 06h __|| ||__Set multipoint calibration parameters for scale 1__||__71h 31h __||__71h 31h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__71h 31h 06h__|| ||__...__||__ __||__ __|| ||__Get multipoint calibration parameters for scale 1__||__72h 31h__||__72h 31h 15h (NAK if error)__[[BR]][[BR]]__or__[[BR]][[BR]]__72h 32h 06h __|| ||__Change OPI board comm. baud rate__||__73h 30h __||__73h 30h 15h (NAK if error) [[BR]]or__[[BR]][[BR]]__73h 30h 06h (ACK sent before baud rate change)__|| ||__Change OPI board multi-drop mode__||__74h 30h __||__74h 30h 15h (NAK if error) [[BR]]or__[[BR]][[BR]]__74h 30h 06h (ACK sent before multi-drop change)__|| '''Error Codes:''' Low eight bits bitmapped for some responses ||'''Bit'''||'''Zero Scale'''||'''Get wt w/ audit'''||''' '''||''' '''||''' '''|| ||'''0'''||Motion||Motion|| || || || ||'''1'''||Below zero||Below zero|| || || || ||'''2'''||Over capacity||Over capacity|| || || || ||'''3'''||Out of range|| || || || || ||'''4'''|| || || || || || ||'''5'''|| || || || || || ||'''6'''|| || || || || || ||'''7'''|| || || || || || 00010000h = CRC error 00010100h = Unrecognized command 00010200h = Specified scale not present 00010300h = Parameter out of range 00010400h = Specified serial output format not defined 00010500h = Calibration timeout 00010600h = Calibration error 00010700h = Expression error 00010800h = Request to stop repeat when specified repeat is not in progress 00020100h = Hardware error '''Conditions:''' Infix expression such as: (gross weight of scale one greater than 5000 and digital I/O board one input 4 equal to one) GROSS1 > 5000 && DIO1-4 = 1 Converted to postfix: GROSS1 5000 > DIO1-4 1 = && Converted to binary: F1h (scale gross) 01h (scale number) F5h (literal float) ffff (4-byte IEEE 5000.0) FDh (operator) 3Eh (operator >) F4h (I/O) 0104h (dio 1-4) F6h (literal integer) nnnn (4-byte integer 1) FDh (operator) 3Dh (operator =) FDh (operator) 41n (operator logical AND) F1h 01h F5h FDh 3Eh F4h 01h 04h F6h FDh 3Dh FDh 41h F1h = scale ID gross wt 1-byte follows F2h = scale ID tare wt 1-byte follows F3h = scale ID net wt 1-byte follows F4h = dio ID 2-byte follows (first byte card number, second byte input number) F5h = literal float 4-bytes follow F6h = literal integer 4-bytes follow F7h = literal string follows – variable length first byte length FAh = comm port receive buffer port ID 1-byte follows (This allows on-demand to be configured such as: FAh 01h F7h 01h 05h FDh 3Dh = [comm 1 rcv = ENQ]) FDh = operator 1-byte follows 3Ch < 3Dh = (Eq~~~~a~~~~u__a__lity – not assignment) 3Eh > 4Ch ‘L’ <= 47h ‘G’ >= 4Eh ‘N’ != 41h ‘A’ && (Logical And) 4Fh ‘O’ || (Logical Or) 26h & (Bitwise And) 7Ch | (Bitwise Or) 2Ah * 2Bh + 2Dh – 2Fh /