SECS Message Language
SECS Message Language (SML)
SML is a general notation to describe individual SECS Data Items and complete SECS messages. As a benefit to the semiconductor industry, PEER Group donated all intellectual property rights in SML to the public domain for use without license, attribution, or fee. See our press release for details.
Message format
The format of a complete SECS message is:
The components are:
Component | Description |
---|---|
SxFy | The Stream and Function Codes (for example, S1F1). |
W | The W-Bit, if set. Omitted if not set. If the W-Bit is optional, it is coded within brackets “[W]”. |
Items | Each message may contain any number of SECS-II Data Items. The Data Items are described using the format defined in the next section. |
. | A period (.) ends the message definition. |
For example, the S1F1 message (which has no Data Items) can be represented as follows:
Data item format
For SECS messages that contain individual Data Items, the items portion of the SML description is used to define these Data Items. The format for describing a SECS-II Data Item in SML is as follows:
The components are:
Component | Description |
---|---|
< > | Angle Brackets. Each Data Item is enclosed within angle brackets. This notation implies that each Data Item has a Data Item Format and Data Item Length as required by SECS-II. |
type | The SECS-II Data Item type (Integer, ASCII, Binary, and so forth) is represented by symbols in SML, but the SEMI standards documentation uses an octal notation for the format code; the complete 8-bit code is usually represented in the software in hexadecimal notation.
SECS Data Items can vary in length from 0-7,995,144 bytes, so the number of Length Bytes required to represent the total length ranges from 1-3 bytes. The standard octal notation represents only the high-order 6-bits of the format code byte. The low-order 2-bits determine the number of length bytes. So the full 8-bits (hexadecimal value) of the format code byte represent both the type of Data Item and the number of length bytes. Any given Data Item type can be represented by 3 different hexadecimal values: 1 length byte (LB), 2-LB, and 3-LB. See Table 1: Notation Types for the relationship among these different notation styles. |
count | The array count of the element values that make up the item. If present, the count is enclosed within square brackets “[ ]”. The count may be omitted, in which case the square brackets are also omitted. If count is omitted, then the length of the Data Item is implied by the value that follows.
The count specifies the number of value elements in the Data Item. For String formats (ASCII, Binary, JIS-8), count specifies the number of characters in the string. For Numeric formats (I1, I2, I4, I8, U1, U2, U4, U8, F4, F8, BOOLEAN), count specifies the number of values in the array. For simple scalar numeric values, count is usually “1”. For LIST Items, count specifies the number of items in the list. Where count can range between known limits, it can also be specified as minimum and maximum counts separated by two dots. For example, a Data Item that is an array of ASCII characters (a string) with a valid length of 1 to 8 characters can be represented as follows: The count specifier indicates the number of value elements in the array, which is not necessarily the same as the length of the Data Item. |
value | The value of a single item element. Values are shown in a notation that depends on the item type. For example, ASCII values are shown as characters enclosed in quotes, Unspecified Binary values are shown in hexadecimal notation. Numeric values shown for Integer Data Items are considered decimal Integers unless otherwise indicated. Negative values are shown with a leading minus sign “-”. Hexadecimal values are shown in C-Language convention, with a leading “0x”.
Where a value is not fixed, the SECS data item name is used directly: |
… | Ellipsis (…) is used to indicate that additional elements may occur (for example, where substructures may repeat in a List structure). |
Table 1: notation types
Format | SEMI octal |
Hexadecimal | SML | ||
---|---|---|---|---|---|
1-LB | 2-LB | 3-LB | |||
List | 00 | 01 | 02 | 03 | L |
Binary | 10 | 21 | 22 | 23 | B |
Boolean | 11 | 25 | 26 | 27 | BOOLEAN |
ASCII | 20 | 41 | 42 | 43 | A |
JIS-8 | 21 | 45 | 46 | 47 | J |
8-byte Signed Integer | 30 | 61 | 62 | 63 | I8 |
1-byte Signed Integer | 31 | 65 | 66 | 67 | I1 |
2-byte Signed Integer | 32 | 69 | 6A | 6B | I2 |
4-byte Signed Integer | 34 | 71 | 72 | 73 | I4 |
8-byte Floating-Point | 40 | 81 | 82 | 83 | F8 |
4-byte Floating-Point | 44 | 91 | 92 | 93 | F4 |
8-byte Unsigned Integer | 50 | A1 | A2 | A3 | U8 |
1-byte Unsigned Integer | 51 | A5 | A6 | A7 | U1 |
2-byte Unsigned Integer | 52 | A9 | AA | AB | U2 |
4-byte Unsigned Integer | 54 | B1 | B2 | B3 | U4 |
Special notation rules
The following section describes the notation rules for SML, SECS Message Language.
ASCII
ASCII Data Item values must be defined with double-quotes (“ ”). It is possible to have long values which would span multiple lines on a printed page. In this case, you would need to use double quotes around each line, for example:
It is also possible to add whitespace characters, such as carriage returns and linefeed characters. These special characters must be added in hexadecimal notation and cannot be included in quotes:
Binary
Binary Data Item values are usually specified in hexadecimal notation and must be preceded by “0x”. For example, the value 16 in a Binary Data Item would be written as:
Lists
Lists do not contain values themselves; they contain other Data Items instead. Normally, separate Data Items within a list are displayed on separate lines. Each of the component Data Items is indented. The closing “>” character for the list Data Item is placed alone on a separate line at the same indentation level as the initial “<L”.
For Example:
It is also possible to have sub-lists embedded within lists. In this case, each sub-list is displayed on a separate level.
For example:
Zero-length
Data Items can have a length of zero. This simply means that the Data Item has no value and contains only a format code (1-byte) and 1 length byte (whose value is zero). Many SECS-II messages use zero-length items for special purposes. For example, the S1F3 Status Variable Request uses a zero-length List Item to indicate that all Status Variables are requested, instead of listing all the SVIDs separately.
A zero-length item is shown in SML using an open bracket “<“ and a close bracket “>”. Adding a zero count specifier “[0]” is not required. Below are some examples of how a zero-length Data Item would be written in SML.
Complete messages
Combining the generic message formatting rules with the Data Item formatting rules, you can now use SML to completely describe any SECS message.
For example, the generic format for S5F1 (Alarm Report) would be described in SML as follows:
A specific S5F1 sent by the Equipment might be described in SML as follows: