콘텐츠로 이동
무료 평가 시작

가상 시리얼 관리자

가상 시리얼 관리자(pdcomm-vserial-manager)는 랩을 화면에서 편집하고 실행하는 GUI입니다. 내부에서는 pdcomm-vserial run을 실행하고 같은 제어 명령을 보냅니다. 그래서 GUI에서 만든 랩 파일을 명령줄과 MCP 서버에서도 그대로 씁니다.

관리자는 자기와 같은 폴더의 pdcomm-vserial을 실행합니다. 다른 위치의 프로그램을 쓰려면 관리자를 시작하기 전에 환경 변수 PDCOMM_VSERIAL_BIN에 경로를 지정합니다.

널 모뎀으로 이은 plc, hmi 두 포트를 19200bps 짝수 패리티로 설정한 가상 시리얼 관리자 창널 모뎀으로 이은 plc, hmi 두 포트를 19200bps 짝수 패리티로 설정한 가상 시리얼 관리자 창
영역 내용
도구 모음 Open은 랩 파일을 열고, Save는 아래 JSON 편집기의 내용을 저장합니다. Load JSON into form은 편집기에서 고친 JSON을 양식에 다시 읽어 들입니다.
Lab Pacing(진행 방식), Wiring(배선), Trace(추적 파일)를 정합니다.
포트 표 포트마다 Port(노드 이름), Endpoint type, Endpoint, Baud, Data bits, Parity, Stop bits, Receive FIFO를 정합니다.
Add port, Remove port 포트를 추가하거나 선택한 포트를 지웁니다.
상태와 Start lab 상태(Stopped, Starting, Running, Stopped with an error)를 보여 주고 랩을 시작하거나 멈춥니다.
실행 포트 표 실행 중인 랩의 Port, Endpoint type, Open with(응용 프로그램이 열 경로나 주소)를 보여 줍니다.
Faults and cables 실행 중인 랩에 결함을 주입하고 케이블을 분리하거나 연결합니다.
JSON 편집기와 로그 왼쪽은 양식이 만든 랩 JSON, 오른쪽은 실행 결과와 오류입니다.

Wiring에서 고르는 배선은 포트 표의 순서에 적용합니다.

Wiring 연결
Null-modem cable (RS-232 / RS-422) 첫째와 둘째 포트
Two-wire RS-485 bus 모든 포트
Four-wire RS-422 / RS-485 bus 첫째 포트가 마스터, 나머지가 슬레이브
Loopback plug 첫째 포트

Endpoint type과 Endpoint는 다음과 같이 씁니다.

Endpoint type Endpoint
Pseudo terminal 비워 두거나 링크 경로(예: /tmp/pdcomm-plc)
Port driver 드라이버 포트 번호(예: 0)
RFC 2217 server, Raw TCP server 수신 대기 주소(예: 127.0.0.1:7001). 비워 두면 127.0.0.1:0입니다.

Receive FIFO의 **16550 (14 / 4 idle)**은 16550 UART처럼 모아서 전달하고, Per character는 문자마다 전달합니다.

  1. 관리자를 시작합니다. 기본 양식에는 의사 터미널 포트 a, b가 널 모뎀으로 이어져 있습니다.

  2. 포트 이름, 속도, 형식을 바꿉니다. 바꿀 때마다 JSON 편집기의 내용이 갱신됩니다.

  3. 추적 기록이 필요하면 Write a trace를 선택하고 파일 경로를 입력합니다.

  4. Start lab을 누릅니다. 상태가 Running으로 바뀌고 실행 포트 표의 Open with에 응용 프로그램이 열 경로가 나타납니다. 로그에는 Lab started with 2 ports가 나타납니다.

    실행 중인 랩과 포트별 의사 터미널 경로를 보여 주는 실행 포트 표실행 중인 랩과 포트별 의사 터미널 경로를 보여 주는 실행 포트 표
  5. 응용 프로그램에서 Open with의 경로를 엽니다.

  6. 끝나면 Stop lab을 누릅니다. 상태가 Stopped로 바뀌고 로그에 Lab stopped가 나타납니다.

랩이 실행 중일 때는 양식과 JSON 편집기, Open, Load JSON into form을 쓸 수 없습니다. 실행 중인 랩은 시작할 때의 설정을 유지하기 때문입니다. Faults and cables는 랩이 실행 중일 때만 쓸 수 있습니다.

hmi 포트에 패리티 오류를 주입하고 plc 포트의 케이블을 분리한 결과hmi 포트에 패리티 오류를 주입하고 plc 포트의 케이블을 분리한 결과
  • Port에서 포트를 고르고 결함 종류를 고른 뒤 Inject를 누릅니다. 그 포트가 다음에 받는 문자 하나에 적용합니다.

    결함 효과
    Drop next character 문자를 버립니다.
    XOR next character 오른쪽 숫자(0~255)로 비트를 뒤집습니다.
    Parity error, Framing error, Overrun, Break 해당 수신 오류를 표시합니다.
    Noise character 오른쪽 숫자의 잡음 문자 하나를 프레이밍 오류와 함께 즉시 전달합니다.
  • Cable에서 포트를 고르고 Unplug나 Plug in을 누릅니다. 분리한 포트는 송신하지도 수신하지도 않습니다.

명령이 성공하면 로그에 Done이, 거부되면 Refused: <원인>이 나타납니다.

Add port로 포트를 추가하고 Wiring을 Two-wire RS-485 bus로 바꿉니다. 모든 포트가 반이중 쌍 하나를 공유합니다. RTU처럼 문자 간격이 중요한 프로토콜은 Pacing을 **Realistic (character time)**으로 둡니다.

master, drive1, drive2 세 포트를 2선식 RS-485 버스로 연결한 양식master, drive1, drive2 세 포트를 2선식 RS-485 버스로 연결한 양식

버스에서 Modbus RTU를 실행하는 과정은 가상 RS-485 버스에서 Modbus RTU 시험하기에서 설명합니다.

양식에는 자주 쓰는 설정만 있습니다. 결함 확률, RS-485 드라이버 제어, 브리지 같은 설정은 JSON 편집기에서 직접 고치거나 Open으로 랩 파일을 엽니다. 설정은 pdcomm-vserial 명령과 랩 파일에서 설명합니다. 편집기의 JSON에 문법 오류가 있으면 랩을 시작하지 않고 로그에 Invalid lab JSON: <원인>을 표시합니다.

JSON 문법 오류 때문에 랩을 시작하지 않고 로그에 오류를 표시한 화면JSON 문법 오류 때문에 랩을 시작하지 않고 로그에 오류를 표시한 화면

문법은 맞지만 랩 파일이 잘못되었으면 상태가 Stopped with an error로 바뀌고, 로그에 pdcomm-vserial: <원인>을 표시합니다. 원인별 해결 방법은 랩 파일 오류를 참고합니다.