
®
Plessey Bar Code Specification Page 

This Visit Brought To You By 
Plessey Code was developed by the Plessey Company in England with formal specifications first dated March 1971. Plessey Code has been extensively used in libraries. A variation of Plessey Code and the associated scanning equipment was provided by Plessey to the ADS Company and this variation is known as Anker Code. Anker Code was used in European point of sale systems prior to the advent of EAN. The basic encoding principle in Plessey Code was used by MSE Data Corporation to construct its MSI barcode, sometimes known as modified Plessey Code. The primary application for MSI Code is marking of retail shelves and subsequent scanning with portable devices to accomplish inventory reordering. More information about MSI code is available here.
Basic Code RuleEach decimal digit will be represented by a Binary coded decimal number (BCD) of 4 bits according to the table below :
0 0000
1 1000
2 0100
3 1100
4 0010
5 1010
6 0110
7 1110
8 0001
9 1001
Alphabetic or other symbols may be assigned to the remaining 6 possible four bit combinations, e.g.
A 0101
B 1101
C 0011
D 1011
E 0111
F 1111
Check Code
This will be an 8 bit code block and may be identified by two 4 bit numbers using the same representation as the data.In the case of labels which are read from either left to right or right to left, the check code is followed by a single thick bar.
Reverse Start Code
In the case of bidirectionally read labels, the termination bar is followed by a 4 bit reverse start code pattern such that 1101 is generated if the block is scanned from right to left.
Margins
A white margin at least 4 bits wide must be provided at both left and right hand ends of the barcode.
Bit Definition and Dimensions
Each data bit of the label is made up of a black bar followed by a white space each of defined widths. The sum of these two widths equals the nominal pitch. The tolerances shown in the following tables are governed by the following conditions :
a/b < 1 Subject to 'b' < 0.009 ins. or 0.229 mm
c/d > 0.33 Subject to 'c' > 0.005 ins. or 0.127 mm
Table 1 defines the dimensions of bars and spaces in terms of millimeters for different code densities.
Binary '1'  Binary '0'  

bits/inch  Nom. Pitch 'p'  Width of "1"  Min.  Nom.  Max.  Width of "0"  Min.  Nom.  Max. 
40  0.635  Bar 'a'  0.305  0.343  0.381  Bar 'c'  0.114  0.127  0.152 
Space 'b'  0.254  0.292  0.305  Space 'd'  0.471  0.508  0.533  
32  0.787  Bar 'a'  0.394  0.432  0.470  Bar 'c'  0.127  0.152  0.173 
Space 'b'  0.318  0.356  0.394  Space 'd'  0.584  0.635  0.685  
25 (Standard) 
1.02  Bar 'a'  0.533  0.584  0.635  Bar 'c'  0.127  0.178  0.229 
Space 'b'  0.381  0.432  0.483  Space 'd'  0.787  0.838  0.889 
Spots and Voids
Black spots in white areas should be less than 0.038 mm {0.0015 ins) across in any direction. In addition, any such spot should be farther than 0.051 mm (0.002 ins) from the nominal edge of an adjacent bar and not less than 0.203 mm (0.008 ins) from the next spot.
Voids (i.e. white spots in black areas) should be less than 0.051 mm across in any direction. In addition, any such spot should be farther than 0.051 mm (0.002 ins) from the nominal edge of an adjacent bar and not less than 0.203 mm (0.008 ins) from the next void.
Reflectance Measurements
The operation is dependent upon the difference in reflected light from black and white areas in the code pattern. The following parameters are required to quantify reflectance properties.
Measurements refer to diffuse reflectance in the nearinfrared spectrum between 850 and 1025 nm (nanometers).
The primary white standard will be "Bristol Board". The reflectance of this is taken as 100%. Absence of reflected light in the band is taken as 0%.
Bar Reflectance
The reflectance of the black print areas should be less than 10% of the average reflectance in the white areas.
PLESSEY CODE Cyclic Check Code (CRC)
For all data capture systems, it is necessary to minimize the number of incorrect entries, especially when data is being collected in a noisy environment by unsophisticated operators. In addition, if this data is to be transmitted, it is essential to detect any error that may occur.
Techniques to overcome these problems range from simple parity and check digit techniques, to the very sophisticated error detection and correction codes. All these techniques have one factor in common  they introduce redundant information into the message, and the error detection "power" of the technique bears a relation to the amount of redundant information introduced.
The Plessey Company have adopted a cyclic (or polynomial) check code technique which is applied to the reading of barcode labels and transmission of data. This technique is adjudged to be a fair compromise between the extra redundancy  8 bits per message  and the error detecting power roughly one undetected error per hundred million 6 digit transactions.
Between system modules, messages are transmitted as a string of 4 bit characters, starting with the most significant character. Within each character, the least significant bit comes first. Example:
1049 is 1000 0000 0010 1001
767 is 1110 0110 1110
The cyclic check code is attached at the end of the message, and is recomputed and checked at each transfer.
Computer Generation of Check Code
The "logical division" principle of check code generation is an awkward algebraic manipulation to perform on a computer. A far simpler technique is to use a table lookup for each polynomial coefficient Consider the previous example, 10000, The equivalent polynomial is
d (x) = x^19 + x^12 + x^4
and the logical remainder can be found logically adding the remainders of each individual term.
i.e. r (x) = r19 (x) + r12 (x) + f4 (x)
Thus all that is necessary to calculate the logical remainders for each coefficient for the particular polynomial being used, and as successive bits come in, they logically add in the remainder or not (depending on whether it is a nonzero coefficient). The properties of logical addition are 1 + 1 = 0 + 0 = 0
1 + 0 = 0 + 1 = 1 which is the same as an exclusive or function.
The algorithm becomes:
Step 1 Set r = 0, counter  20
Step 2 Input next data bit
Step 3 If data = 0, go to step 6
Step 4 Fetch r from table
Step 5 Exclusive or r with R. Store in r
Step 6 Decrease n by i. If not zero go to Step 2
Step 7 Remainder in r
The test example would require :
r19 dec 134 10000110
r12 dec 186 10111010
exor 00111100
R4 dec 49 00110001
exor 00001101
= x^3 + x^2 + 1 as previously
Principle of Cyclic Check Generation
If the data is represented by a polynomial d(x) and the cyclic check polynomial (generally known as the generating polynomial) by g(x), then the cyclic check code r(x) is the remainder after logical division of x^n.d(x) by g(x), where n = the highest order of g(x).
(x^n.d(x))/g(x) = (q(x) + r(x))/g(x)
Example:
If g(x) = x^8 + x^7 + x^6 + x^5 + x^3 + 1 then n = 8
For encoding a number 18080, the binary equivalent is 10000001000000010000
d(x) = x^19 +x^12 + x^4
(x^8.d(x))/g(x) = (x^27 + x^20 + x^12)/(x^8 + x^7 + x^6 + x^5 + x^3 + 1)
or
(x^8.d(x))/g(x) = (x^19 + x^18 + x^15 + x^11 + x^10 + x^6 + x^2 + 1 + x^3 + x^2 + 1)/(x^8 + x^7 + x^6 + x^5 + x^3 + 1)
f(x) = x^3 + x^2 + 1 = 00001101
Hence the complete code as one would find on a label is :
1 d(x) 1 r(x) 1 or 1000000100000001000000001101
The Plessey Code never had a formal code specification, and documentation has been out of print for many years. Mr. Paul Bergé was kind enough to supply the above information to BarCode1.
Barcode Mill from Altek Instruments allows you to issue unique, identifiable documents from your own web site, dynamically and in real time! This service can produce Plessey bar codes and other codes.