T-PRINT
LS PLC IO 컨벤션
Ds2 Sequence Modeling Tutorial · Handout 4 / 4
LS XGI IO 주소 형식 · 시나리오 베이스 매트릭스 · InSymbol/OutSymbol 규칙
Ds2 Tutorial · DualSoft 2026
1. LS XGI IO 주소 형식
| 유형 | 형식 | 범위 | 의미 |
| 입력 비트 | %IX0.0.0.0 ~ %IX0.0.0.31 | BOOL | 물리 입력 1 비트 (DI) |
| 출력 비트 | %QX0.0.0.0 ~ %QX0.0.0.31 | BOOL | 물리 출력 1 비트 (DO) |
| 입력 워드 | %IW0.0.0 ~ %IW0.0.7 | WORD (16bit) | 아날로그 입력 / 인코더 |
| 출력 워드 | %QW0.0.0 ~ %QW0.0.7 | WORD (16bit) | 아날로그 출력 / 좌표 |
| 메모리 비트 | %MX100.0 ~ %MX65535.31 | BOOL | 내부 비트 변수 |
| 메모리 워드 | %MW100 ~ %MW65535 | WORD | 내부 워드 변수 |
| 메모리 더블워드 | %MD200 ~ %MD32767 | DWORD (32bit) | 내부 더블워드 (REAL/DINT) |
| 타이머 | %T0 ~ %T255 | TON/TOF | PLC 타이머 인스턴스 |
| 카운터 | %C0 ~ %C255 | CTU/CTD | PLC 카운터 인스턴스 |
형식: %[I/Q/M][X/W/D]base.slot.module.bit · 비트 주소는 끝에 .bit 포함, 워드는 생략.
2. 시나리오별 IO 베이스 매트릭스 (S01-S20)
| ID | Scenario |
%IX (DI) | %QX (DO) |
%IW/%QW (Ana) | %MW (Mem) |
| S01 | Cylinder | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 .. %QX0.0.0.1 | — | %MW100 |
| S02 | Indexer | %IX0.0.0.2 .. %IX0.0.0.3 | %QX0.0.0.2 .. %QX0.0.0.3 | — | — |
| S03 | Clamp | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S04 | Conveyor | %IX0.0.0.0 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S05 | ButtonLamp | %IX0.0.0.10 .. %IX0.0.0.13 | %QX0.0.0.10 | — | — |
| S06 | Drilling | %IX0.0.0.0 | %QX0.0.0.0 .. %QX0.0.0.3 | — | — |
| S07 | PickAndPlace | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 | %QW0.0.0 .. %QW0.0.1 | — |
| S08 | IndexerLine | %IX0.0.0.0 .. %IX0.0.0.10 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S09 | VisionInspect | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S10 | Diverter | %IX0.0.0.0 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S11 | Robot6Axis | %IX0.0.0.0 .. %IX0.0.0.1 | — | %QW0.0.0 .. %QW0.0.2 | — |
| S12 | DualRobotCell | %IX0.0.0.0 .. %IX0.0.0.3 | %QX0.0.0.0 | — | — |
| S13 | LaserMarking | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S14 | AGVDocking | %IX0.0.0.0 .. %IX0.0.0.1 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S15 | SafetyHMI | %IX0.0.0.13 .. %IX0.0.0.21 | %QX0.0.0.20 | — | — |
| S16 | CartonSealing | %IX0.0.0.0 | %QX0.0.0.0 .. %QX0.0.0.1 | — | — |
| S17 | PressFit | — | %QX0.0.0.0 .. %QX0.0.0.1 | %IW0.0.0 .. %IW0.0.1 | — |
| S18 | Dispensing | %IX0.0.0.0 | %QX0.0.0.0 | %QW0.0.0 .. %QW0.0.2 | — |
| S19 | PartsWashing | — | %QX0.0.0.0 .. %QX0.0.0.2 | %IW0.0.0 | — |
| S20 | LeakTest | — | %QX0.0.0.0 .. %QX0.0.0.2 | %IW0.0.0 | — |
실제 프로젝트에서는 시나리오마다 base offset (예: S01=0, S02=32, S03=64...) 을 부여하여 충돌 회피 권장.
3. 비트 vs 워드 vs 더블워드 사용 가이드
| 데이터 | 권장 폭 | 주소 | 적용 예 |
| 단일 ON/OFF (센서·솔레노이드·버튼) | BOOL (1 비트) | %IX·%QX·%MX | S01 Cyl1_AdvCmd · S05 BtnStart · S15 EStop_Btn |
| 아날로그 0-10V / 4-20mA 입력 | WORD (16 비트) | %IW | S17 Force · S20 Pressure · S19 Temp |
| 아날로그 출력 (좌표 명령) | WORD (16 비트) | %QW | S07 X/Y · S18 X/Y/Z · S11 Robot6 X/Y/Z |
| 고정밀 좌표 / Encoder Count | DWORD (32 비트) | %MD | S13 Encoder · S11 Robot6 정밀 좌표 |
| REAL (부동소수) | DWORD (32 비트) | %MD | S17 Force_REAL · S20 Pressure_REAL |
| 상태 머신 enum | INT (16 비트) | %MW | S01 Cyl1_State (0=Home,1=Adv,2=Ret) |
| 알람 플래그 / 비트 묶음 | BOOL · WORD | %MX·%MW | S01 Cyl1_Alarm · S15 SafetyFlags |
4. InSymbol / OutSymbol 명명 규칙
| 패턴 | 형식 | 예시 |
| 입력 (센서) Alias | <Device>_<Action>OK | Cyl1_AdvOK · Idx1_HomeOK · Vision_OK |
| 출력 (명령) Alias | <Device>_<Action>Cmd | Cyl1_AdvCmd · Spindle_Cmd · Pump_Cmd |
| 아날로그 값 | <Device>_<Quantity> | Pressure · Temp · Force · Depth |
| 상태 워드 | <Device>_State | Cyl1_State · Mode_State |
| 알람 플래그 | <Device>_Alarm | Cyl1_Alarm · Safety_Alarm |
| Safety 신호 | EStop_* · LC_* · Safety_* | EStop_Btn · LC_OK · Safety_Reset |
| HMI 버튼 | Btn<Action> | BtnStart · BtnStop · BtnReset |
| HMI 램프 | Lamp<State> | LampReady · LampRunning · LampError |
권장: 영문 + 카멜케이스 또는 PascalCase. 한글 코멘트는 Description 필드에 별도 작성. 동일 패턴 유지로 도구 자동 생성 (Promaker / AAStoPLC) 호환성 확보.