In a SECS/GEM communication session, numerical values are important because they are used by the equipment to report results in the form of process variable values or inspection data to a factory host system, and by the factory host to update configuration data, recipe parameters, and other variables on the equipment.
This blog post describes how the item formats in SEMI E5 (SECS-II) map to the specific numerical values used in an equipment application. 
Item Format for numerical values in SEMI E5
The SEMI E5 (Specification for SEMI Equipment Communications Standard 2 Message Content (SECS-II)) standard document defines the following Item Format Codes for numerical values. Note that the table also includes the SEMI E173 (Specification for XML SECS-II Message Notation (SMN)) XML element type for each format code.
SEMI E5 Item Format Code | E173 | Value Type | Value Range | ||
Octal |
Meaning |
SMN |
C# |
C++ |
Minimum ~ Maximum |
10 |
Binary |
BIN |
byte |
unsigned char |
0 ~ 255 |
30 |
8 byte Signed Integer |
SI8 |
long |
long long |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
31 |
1 byte Signed Integer |
SI1 |
sbyte |
char |
-128 ~ 127 |
32 |
2 byte Signed Integer |
SI2 |
short |
short |
-32,768 ~ 32,767 |
34 |
4 byte Signed Integer |
SI4 |
int |
int, long |
-2,147,483,648 ~ 2,147,483,647 |
40 |
8 byte Floating Point |
FP8 |
double |
double |
-1.79769313486232e+308 ~ 1.79769313486232e+308 |
44 |
4 byte Floating Point |
FP4 |
float |
float |
-3.402823e+38 ~ 3.402823e+38 |
50 |
8 byte Unsigned Integer |
UI8 |
ulong |
unsigned long long |
0 ~ 18,446,744,073,709,551,615 |
51 |
1 byte Unsigned Integer |
UI1 |
byte |
unsigned char |
0 ~ 255 |
52 |
2 byte Unsigned Integer |
UI2 |
ushort |
unsigned short |
0 ~ 65,535 |
54 |
4 byte Unsigned Integer |
UI4 |
uint |
unsigned int, unsigned long |
0 ~ 4,294,967,295 |
An item format for a numerical value is usually chosen as the same value type used by the equipment application when it defines the variable internally.
There are the other Item Format Codes defined in SEMI E5; for further details, refer to the SEMI E5 standard document.
Big-Endian and Little-Endian
Computer memories primarily use a little-endian system in which the least significant byte of a numerical value is stored at the smallest memory address and the most significant byte at the largest.
In contrast, SEMI E5 uses a big-endian system in which the most significant byte of a numerical value is transmitted first and the least significant byte last.
For example, the decimal value 123,456,789 is represented by 0x075BCD15 in hexadecimal.
In a computer’s little-endian system, the least significant byte 0x15 is stored at a memory address X, and the most significant byte 0x07 is stored at X + 3.
In the SEMI E5 big-endian system, the most significant byte (0x07) is transmitted first, and the least significant byte (0x15) is transmitted last.
123,456,789 (= 0x075BCD15 | ||||
Memory address |
X |
X + 1 |
X + 2 |
X + 3 |
Computer memory |
0x15 |
0xCD |
0x5B |
0x07 |
|
|
|
|
|
Time course |
T |
T + 1 |
T + 2 |
T + 3 |
SEMI E5 (SECS-II) |
0x07 |
0x5B |
0xCD |
0x15 |
This endian conversion should be handled automatically by a SECS driver in compliance with SEMI E5—the equipment application does not need to take care of it.
Minimum and Maximum number of bytes for one item
In SEMI E5, the number of bytes for a single item is called the length bytes and its valid range is a minimum of zero (0) bytes up to a maximum of 16,777,215 bytes (0xFFFFFF in hexadecimal). A zero-length (0 bytes) item means that the item is empty (NULL). In general, a one-length (1 byte) item is used to represent a single item with a single value. Items with more than a 1 byte length usually contain array values with up to 16,777,215 elements for a 1 byte item in the array (total 16,777,215 bytes), 8,388,607 elements for a 2 byte item (total 16,777,214 bytes), 4,194,303 elements for a 4 byte item (total 16,777,212 bytes) and 2,097,151 elements for an 8 byte item (total 16,777,208 bytes).
Difference between Signed Integer and Unsigned Integer
Unsigned integer values are usually used for an identifier like an ID value. Specifically in the superior standard document, SEMI E30 (Specification for the Generic Model for Communications and Control of Manufacturing Equipment (GEM)), an identifier item should be defined as an unsigned integer format in SEMI E5. Examples include ALID, CEID, DATAID, ECID, PRTID, SVID, TRID, VID.
Difference between Binary format and 1-byte Unsigned Integer
There are two Item Format Codes—Binary format (Octal 10) and the 1 byte Unsigned Integer (Octal 51)—whose values can range from 0 - 255.
The Binary format with 1 byte length is specifically used for acknowledge codes. For example, 0 = Accepted, 1 = Error (not accepted), and so on.
Binary format with more than 1 byte is usually used to transmit a binary array such as binary file data.
How to choose between 4-byte Floating Point and 8-byte Floating Point
The precision of floating point numbers is different between float type and double type.
The precision of the float type is about 7 decimal digits, which corresponds to the single floating point, 4 byte Floating Point (Octal 44) in SEMI E5.
The precision of the double type is about 16 decimal digits, corresponding to the double floating-point, 8 byte Floating Point (Octal 40) in SEMI E5.
For further information, refer to IEEE 754 Standard for Floating-Point Arithmetic.
Conclusion
This blog post has summarized how the item format is defined for numerical values in SEMI E5 (SECS-II). To learn more about SEMI standards, you can purchase and read the SEMI standard documents themselves, and feel free to contact the Cimetrix Support team by clicking the button below.