C.3 generation of signature – Campbell Scientific CR7 Measurement and Control System User Manual
Page 169

APPENDIX C. BINARY TELECOMMUNICATIONS
C-5
BITS, 1ST BYTE,
1ST PAIR
DESCRIPTION
CDEF = 0111
Code designating 1st byte pair of four byte number.
B
Polarity , 0 = +, 1 = -.
G,H,A,
Decimal locator as defined below.
2nd byte
16th - 9th bit (left to right) of 17 bit binary value.
ABCDEF = 001111
Code designating 2nd byte pair of four byte number.
G
Unused bit.
H
17th and MSB of 17 bit binary value.
2nd byte
8th - 1st bit (left to right) of 17 bit binary value.
CAMPBELL SCIENTIFIC defines the largest
allowable range of a high resolution number to
be 99999.
Interpretation of the decimal locator for a 4 byte
data value is given below. The decimal
equivalent of bits GH is the negative exponent
to the base 10.
BITS
DECIMAL FORMAT
G H A
5 digits
0 0 0
XXXXX.
0 0 1
XXXX.X
0 1 0
XXX.XX
0 1 1
XX.XXX
1 0 0
X.XXXX
1 0 1
.XXXXX
C.3 GENERATION OF SIGNATURE
At the end of a binary transmission, a signature
is sent. The signature is a 2 byte integer value
which is a function of the data and the
sequence of data in the output array. It is
derived with an algorithm that assures a
99.998% probability of detecting a change in the
data or its sequence. The CR7 calculates the
signature using each transmitted byte except
the 2 byte signature itself. By calculating the
signature of the received data and comparing it
to the transmitted signature, it can be
determined whether the data was received
correctly.
SIGNATURE ALGORITHM
-
S1,S0
represent the high and low bytes
of the signature, respectively
-
M
represents a transmitted data
byte
-
n
represents the existing byte
-
n+1
represents the new byte
-
T
represents a temporary location
-
C
represents the carry bit from a
shift operation
1.
The signature is initialized with both bytes
set to hexadecimal AA.
S1(n) = S0(n) = AA
2.
When a transmitted byte, M(n+1), is
received, form a new high signature byte by
setting it equal to the existing low byte.
Save the old high byte for later use.
T1 = S1(n)
S1(n+1) = S0(n)
3.
Form a temporary byte by shifting the old
low signature byte one bit to the left and
adding any carry bit which results from the
shift operation. A "shift left" is identical to a
multiply by 2. Ignore any carry bit resulting
from the add.
T2 = shift left (S0(n)) + carry
4.
Form the new low signature byte by adding
the results of operation 3 to the old high
signature byte and the transmitted byte.
Ignore any carry bits resulting from these
add operations.
S0(n+1) = T2 + S1(n) + M(n+1)
As each new transmitted byte is received, the
procedure is repeated.