リクエストパス
変数名を指定するときのリクエストパスの書き方
Request Path Length |
Segment1 | Segment2 | Segment3 | ... | |||||||||||||||||||||||||
Type | Format | Data | Type | Format | Data | Type | Format | Data | |||||||||||||||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Type | 説明 | ||
7 | 6 | 5 | |
0 | 0 | 0 | Port Segment |
0 | 0 | 1 | Logcal Segment |
0 | 1 | 0 | Network Segment |
0 | 1 | 1 | Symbolic Segment |
1 | 0 | 0 | Data Segment |
1 | 0 | 1 | Data Type |
1 | 1 | 0 | Data Type |
1 | 1 | 1 | Reserved |
ここではData Segment(変数へのアクセス)とLogical Segment(CIPオブジェクトへのアクセス)を使って変数へアクセスします
Type | Sub Type | HEX表記 | 説明 | ||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x80 | Simple Data Segment |
1 | 0 | 0 | 0 | 1 | 0x91 | ANSI Extended Symbol Segment |
Type | Logical Type | Logical Format | HEX表記 | 説明 | |||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x20 | Class ID |
0 | 0 | 1 | 0 | 0 | 0x24 | Instance ID | |||
0 | 1 | 0 | 0 | 0 | 0x28 | Member ID | |||
0 | 1 | 1 | 0 | 0 | 0x2C | Connection Point | |||
1 | 0 | 0 | 0 | 0 | 0x30 | Attribute ID |
Logical Formatの内容 (後に続くデータのビット数)
Logical Format | 説明 | |
1 | 0 | |
0 | 0 | 8bit logical address |
0 | 1 | 16bit logical address |
1 | 0 | 32bit logical address |
変数の指定の仕方
対象の変数名 | testInt |
Data Segmentを使って変数名のバイト数と名称を指定します
Request Path Length(word) |
Segment | ||||||||||
Type | Sub Type | Data | |||||||||
Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | (pad) | |||||||
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | ||||
0x05 | 0x91 | 0x07 | "testInt" | 0x00 |
対象の変数名 | testStruct.int16 |
Data Segmentを使ってSegment1に構造体とSegment2にメンバをそれぞれバイト数と名称を指定します
Request Path Length (word) |
Segment1 | Segment2 | |||||||||||||||||||
Type | Sub Type | Data | Type | Sub Type | Data | ||||||||||||||||
Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | (pad) | |||||||||||||
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | ||||||
0x0a | 0x91 | 0x0a | "testStruct" | 0x91 | 0x05 | "int16" | 0x00 |
または
Request Path Length (word) |
Segment1 | |||||||||
Type | Sub Type | Data | ||||||||
Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | |||||||
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | |||
0x09 | 0x91 | 0x10 | "testStruct.int16" |
対象の変数名 | aryInt[1] |
Data Segmentを使ってSegment1に変数名とSegment2にLogcal Segmentを使って要素番号を指定します
Request Path Length (word) |
Segment1 | Segment2 | |||||||||||||||||||
Type | Sub Type | Data | Type | Logical Type | Logical Format | Data | |||||||||||||||
Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | Logical Segment | Member ID | 8bit address | Index | ||||||||||||||
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | ||||||
0x0a | 0x91 | 0x06 | "aryInt" | 0x28 | 0x01 |
または
Request Path Length (word) |
Segment1 | ||||||||||
Type | Sub Type | Data | |||||||||
Data Segment | ANSI Extended Symbol Segment | Variable Length | Variable Name | ||||||||
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | pad | |||
0x06 | 0x91 | 0x09 | "aryInt[1]" | 0x00 |