HPR4758: 프로그래밍 논리 제어 - 에피소드 6

출처: Hacker Public Radio원본 출처에서 열기 ↗
작성 Whiskeyjack28/10/2026 às 00:0051 조회
Foto: CC BY-SA / Hacker Public Radio
🎙 Whiskeyjack · Hacker Public Radio

이 쇼는 호스트에 의해 '청정'으로 표시되었습니다.

01 소개

이 에피소드는 8부 시리즈 중 6부입니다.

02

이전 에피소드에서 우리는 입출력 모듈을 살펴보았습니다. 그것들이 무엇인지, 어떻게 작동하는지, 그리고 시스템에서 그들이 수행하는 목적에 대해 논의했습니다.

또한 기계 안전 시스템에 대해 논의했으며, 특정 사람들이 주장하는 사이버 보안과 산업 안전 관련 주장에 대해서도 이야기했습니다.

이 에피소드에서는 PLC 네트워킹을 살펴보고, 모보스(Modbus)라는 네트워크 프로토콜에 대한 자세한 분석을 제공할 것입니다.

03 네트워크 유형

PLC 네트워크는 네트워크의 목적을 기준으로 세 가지 주요 범주로 나뉩니다.

이 범주들은

• PLC에서 IO로

• PLC에서 PLC로

• 그리고 PLC에서 PC 또는 개인용 컴퓨터로.

이 범주들 사이에는 중복이 많기 때문에, 이들이 깔끔한 분리된 상자에 들어갈 것이라고 기대하지 마세요.

04 다양한 프로토콜

논리적으로, 상호운용성의 장점이 너무 커서 모든 사람이 사용하는 몇 가지 네트워크 프로토콜이 있을 것이라고 생각할 수 있습니다.

현실은 반대입니다.

다양한 프로토콜이 너무 많아서 모두 나열하려 하지 않겠습니다.

산업 자동화는 공급업체의 통제 아래 있는 시장이며, 공급업체는 고객 잠금보다 사용자 혜택을 더 중요시합니다.

05

대신 시간에 따른 기술 발전에 초점을 맞추겠습니다. 이렇게 하면 여러분이 오늘날의 상황에 어떻게 도달했는지 이해할 수 있습니다.

이를 몇 가지 공급업체의 몇 가지 프로토콜로 설명하겠습니다. 그 후 특정 네트워크 가족에 대한 세부 사항을 다룰 것입니다.

06 기본 포인트 투 포인트 시리얼

첫 번째이자 가장 기본적인 네트워크는 단순한 포인트 투 포인트 시리얼 링크였습니다.

포인트 투 포인트 링크가 네트워크가 아니라고 주장할 수 있지만, 이 경우 PLC 네트워크의 시작이며, 오늘날 가장 중요한 산업 네트워크 프로토콜 중 하나는 초기 포인트 투 포인트 프로토콜의 직접적인 후손입니다.

07

이러한 포인트 투 포인트 링크는 초기에는 두 가지 주요 문제를 해결했습니다.

컴퓨터가 PLC를 프로그래밍하기 위해 사용될 때, PLC 프로그램 다운로드와 디버깅을 위한 수단이 필요했고, 이는 포인트 투 포인트 시리얼 링크를 통해 이루어졌습니다.

08

다른 하나는 마이크로프로세서 기반의 다양한 계측기 및 장치들이 PLC와 통신하여 측정값을 얻고, 설정값을 조정하며, 데이터를 교환하는 것이 바람직하다는 것이었습니다.

시리얼 링크는 이를 구현하기 위한 명백한 수단이었습니다.

물리적 및 전기적 매체는 일반적으로 RS-232, RS-422 또는 직류 루프였습니다.

09 RS-232

RS-232는 대부분의 청취자에게 익숙할 것입니다.

RS-232의 주목할 만한 특성은 데이터 및 제어 신호가 지면에 참조된다는 것, 또는 이 또한 알려진 "단말"입니다.

이는 단순했지만, 케이블 길이에 제한을 두었고, PLC와 다른 장치가 다른 전원원에 연결되어 공통 지면이 없을 때 문제가 되었습니다.

10 RS-422

RS-422는 RS-232와 달리 차분 신호를 사용하며, 공통 접지에 참조되지 않습니다.

신호 선은 쌍으로 오며, 쌍 내의 전압 차이로 제로와 원이 정의됩니다.

이는 10 Mbps의 데이터 전송률을 매우 짧은 거리에서, 그리고 1,200미터까지 훨씬 더 긴 케이블을 사용할 수 있게 해주지만, 데이터 전송률이 낮아집니다.

11

RS-422는 또한 동일한 와이어에 여러 수신기를 연결할 수 있게 해주었지만, 드라이버는 한 개만 허용되었습니다.

이는 여러 장치가 동일한 와이어 세트에서 "청취"할 수 있게 해주었지만, 노드 중 하나만 "대화"할 수 있었습니다.

12 시리얼 전류 루프 또는 TTY

일부 PLC, 특히 시멘스는 RS-232 또는 RS-422 대신 시리얼 전류 루프를 사용했습니다.

이것은 텔레타입(teletype)에서 유래한 TTY 인터페이스로 알려져 있습니다.

TTY라는 용어는 유닉스(unix)와 같은 운영 체제의 터미널 창을 설명하는 데 자주 사용됩니다.

13

이는 초기 컴퓨터가 운영자 터미널을 제공하기 위해 상용 텔레타입 장비를 채택했기 때문입니다.

이 장치는 전류 차가 아닌 전압 차이를 이용하여 신호를 전달합니다.

20mA가 흐를 때, 이것은 "1"을 나타냅니다.

0mA가 흐를 때, 이것은 "0"을 나타냅니다.

시리얼(serial) 전류 루프는 RS-232보다 높은 데이터 속도로 더 먼 거리까지 신뢰성 있게 작동할 수 있습니다.

14가지 일반적인 프로토콜

RS-232와 같은 전기 표준은 와이어를 통해 0과 1을 전송할 수 있게 합니다.

그러나 그것들이 무엇을 의미하는지는 정의하지 않습니다.

이를 위해서는 데이터 프로토콜이 필요합니다.

15

각 제조업체는 자체 프로토콜을 개발하는 경향이 있었습니다.

모디콘은 모두스(Modbus)를 개발했습니다.

앨런 브래들리(Allen Bradley)는 DF1을 개발했습니다.

지멘스(Siemens)는 3964R과 RK512를 만들었습니다.

다른 제조업체들은 일반적으로 각자 자체 프로토콜을 가지고 있었습니다.

모두스(Modbus)에 대해서는 나중에 자세히 설명하겠지만, 여기에서는 다른 프로토콜에 대해서는 자세히 다루지 않겠습니다.

16 멀티 드롭 시리얼

포인트 투 포인트 시리얼, 심지어 RS-422도 여러 수신기를 허용했지만, 여러 제한으로 인해 어려움을 겪었습니다.

가장 명백한 것은 양방향 통신을 원한다면 각 지점 사이에 별도의 케이블과 전용 통신 포트 또는 포트 멀티플렉서가 필요하다는 것입니다.

시스템이 커지고 복잡해지면 이 방법은 다루기 어려워집니다.

17 RS-485

여러 시리얼 장치가 시리얼 통신 링크를 공유할 수 있는 방법을 원합니다.

이 문제의 해결책은 RS-485입니다.

RS-422와 마찬가지로 차등 신호화를 사용합니다.

또한 동일한 와이어에 여러 수신기를 허용합니다.

그러나 RS-422와 달리, RS-485는 여러 전송기를 허용합니다.

동일한 RS-485 케이블에 최대 32 노드를 연결할 수 있습니다.

이 한계는 케이블과 전송기 및 수신기 칩의 전기적 특성에 의해 결정됩니다.

18개의 새로운 프로토콜

PLC 제조업체는 기존 프로토콜을 적응시키거나 새로운 것을 개발했습니다.

Allen Bradley는 시리얼 DF1 프로토콜을 Data Highway, Data Highway Plus, 그리고 Data Highway 485로 적응시켰습니다.

시멘스는 L1, 프로피버스, 프로피버스-DP를 개발했습니다.

마스터-슬레이브 대 다중-마스터

이러한 네트워크 중 많은 것은 엄격히 마스터-슬레이브 시스템이었습니다.

노드 중 하나가 네트워크 마스터로 지정되고, 다른 모든 노드, 즉 슬레이브를 조회합니다.

이러한 구성은 PLC가 네트워크 마스터로 작용하고 원격 위치에 있는 다양한 장치를 조회할 수 있는 많은 응용 분야에 적합했습니다.

20

초기 응용 프로그램 중 하나는 IO 랙을 PLC CPU에서 일정 거리 떨어진 곳에 위치시키는 것이었습니다.

이는 매우 큰 기계에서 IO 랙을 연결된 스위치, 밸브 또는 릴레이와 더 가깝게 위치시킬 수 있게 하여 케이블과 배선 요구량을 줄였습니다.

21

이러한 개발의 결과로 기계 직접 장착이 가능한 블록 형태의 IO가 개발되었습니다.

이러한 것들은 공통 플레넘을 공유하는 밸브 집합인 밸브 뱅크에 직접 통합될 수도 있습니다.

22

그러나 여러 PLC를 네트워크화하여 서로 조정할 수 있도록 하는 목표를 가질 때는 한계가 있었습니다.

엄격히 마스터-슬레이브 시스템을 사용할 경우, PLC 중 하나가 마스터로 지정되어야 하며, PLC 프로그램은 다른 PLC들 간의 메시지 전달을 처리해야 합니다.

23

이 문제의 해결책은 다중 마스터 네트워크였습니다.

물리적 배선은 일반적으로 RS-485 또는 그 특허를 받은 변형이 여전히 사용됩니다.

그러나 프로토콜은 여러 마스터를 허용하도록 적응되어야 합니다.

이는 보통 토큰 패싱 프로토콜로, "토큰"이라는 데이터 조각이 노드 간에 전달되어 각 노드가 일시적으로 마스터가 될 수 있도록 합니다.

24 장치 레벨 네트워크

케이블과 와이어의 감소가 설치 노동 비용 절감으로 이어져, 스위치나 단일 밸브와 같은 개별 장치까지 네트워크를 확장하는 데 추가적인 인센티브가 생겼습니다.

이들에 대해 많은 세부 사항을 언급하지 않겠지만, 대신 일반적인 예시를 몇 가지 언급하겠습니다.

시멘스 ASI와 같이 순수하게 특허된 시스템들이 있었습니다.

25

또한 CAN(컨트롤러 영역 네트워크)을 기반으로 한 시스템들이 여러 개 있었습니다.

CAN은 자동차 산업에서 유래했으며, 자동차의 다양한 부품을 네트워크화하기 위해 설계되었습니다.

아마도 여러분의 차에는 인식하지 못하더라도 CAN 네트워크가 있을 것입니다.

26

산업 자동화 산업은 상용 CAN 표준과 칩셋을 가져와 자신의 프로토콜을 추가하여 장치 수준 네트워크를 만들었습니다.

이의 일반적인 예로는 Canbus와 Allen Bradley Devicenet가 있습니다.

이더넷의 부상 (The Rise of Ethernet)

네트워크 기술은 공장의 현장에서 사무실의 일반적인 것보다 훨씬 전에 등장했습니다.

이와 함께 산업 자동화 산업의 매우 분산된 특성은 네트워킹 하드웨어를 제조할 때 규모 경제를 달성하기 어렵다는 것을 의미했습니다.

또한 각 회사는 다른 곳에서 이미 존재하는 기능을 중복하는 것을 개발하기 위해 R&D 노력을 할애해야 했습니다.

28

한편 네트워킹 기술은 사무 환경에서 확산되었고, 서서히 이더넷과 TCP/IP 주위에 통합되었습니다.

이 시장의 엄청난 규모와 잘 개발된 표준은 공급자 간의 경쟁과 규모 경제로 인해 비용이 크게 감소했습니다.

29

IT 산업의 이러한 발전을 목격한 자동화 회사들은 물리적 배선 및 저수준 프로토콜에 있어 IT 네트워킹 표준을 전체적으로 채택하기로 결정했습니다.

그들은 여전히 응용 수준 프로토콜을 사용할 수 있으며, 공급자 잠금 상태를 유지했습니다.

30

이러한 프로토콜의 몇 가지 일반적인 예는 시멘스 프로넷, 앨런 브래들리 이더넷/IP, 모두스/TCP로, 이는 모두 이더넷에서 작동하도록 기존 프로토콜의 적응입니다.

지금까지 요약

지금까지 이 에피소드에서 다룬 것은 산업 자동화에서의 네트워킹의 기원부터 시작해

포인트 투 포인트 시리얼 링크

멀티드롭 시리얼 마스터 슬레이브 네트워크

멀티드롭 시리얼 멀티 마스터 네트워크

이더넷의 채택

이 시점에서 산업 내에서 네트워킹이 어떻게 작동하는지와 그것이 어떻게 사용되는지에 대한 몇 가지 아이디어를 가지게 되었을 것입니다.

다음에는 모두브스(Modbus)에 대해 자세히 논의할 예정입니다.

모두브스 32

배경

모두브스는 1979년에 모디콘(Modicon)에 의해 만들어졌습니다.

이전 에피소드에서 기억하실 테니, 모디콘은 현재 슈나이더 일렉트릭(Schneider Electric)의 일부로, PLC(프로그램 가능 논리 컨트롤러)를 개발한 첫 회사 중 하나였습니다.

33

모디콘은 제3자가 이를 구현할 수 있도록 사양을 공개하여, 로열티 없이 진정으로 개방된 산업 자동화 표준 중 하나로 만들었습니다.

"진정으로 개방된"이라고 말한 이유는 자동화 산업이 브랜드 이름에 "개방"이라는 단어를 사용하는 것을 좋아하지만, 그들에게 "개방"은 라이선스 신청, 그들의 승인을 받음, 로열티나 회원 수수료 지불, 그리고 승인된 공급업체로서 인증 비용 지불을 의미하기 때문입니다.

34

그러나 누구나 모두브스 사양을 다운로드하고 구현하며, 원하는 대로 사용할 수 있습니다.

모두스 라이브러리의 무료 소프트웨어 구현이 여러 개 있습니다.

모두스 35가지 버전 또는 변종

물리적 매체 또는 응용 프로그램에 따라 모두스의 여러 변종이 있습니다.

이것들은

• 모두스 RTU

• 모두스 ASCII

• 모두스 플러스

• 그리고 모두스 TCP

36 모두스 RTU

이것은 모두스의 원본 버전이며, 포인트 투 포인트 시리얼 통신 프로토콜입니다.

RTU는 "원격 터미널 장치"를 의미하며, 필드 계측 장비에 대한 인터페이스 역할을 하는 산업용 장치의 이름입니다.

일반적인 예는 파이프라인 상의 유량계일 수 있습니다.

이 프로토콜은 제3자들에 의해 매우 널리 구현되었습니다.

37

시리얼 데이터 형식은 다음과 같습니다.

• 8비트 이진수

• 1개 시작 비트

가장 낮은 비트부터 8비트 데이터

1개의 오류 검출 비트

1개의 정지 비트

메시지에 16비트 순환 중복성 검사 필드 포함

38 Modbus ASCII

Modbus RTU는 시리얼 프로토콜로 설계되었으며 매우 정확한 비트 단위 시간 사양을 가지고 있음

그러나 이는 라디오 링크를 통해 물 공급 시스템, 석유 채굴 현장 및 다른 분산 애플리케이션에 안정적으로 작동하지 못함을 의미했음

또한, Modbus RTU는 이진 프로토콜이며, 이는 전송 또는 수신 하드웨어가 일부 값을 제어 코드로 해석할 수 있음을 의미함

39

이 문제의 해결책은 모두스 ASCII였습니다.

이는 ASCII 형식으로 데이터를 전송했으며, 각 바이트는 2개의 16진수 바이트로 변환되었습니다.

시리얼 타이밍 제한은 하드웨어가 견딜 수 있는 효과적인 수준으로 완화되었습니다.

40

시리얼 형식은 다음과 같습니다.

• 16진수, ASCII 문자 0-9 및 A-F

• 1 시작 비트

• 7 데이터 비트, 가장 낮은 비트가 먼저 전송됩니다.

• 1 패리티 비트

1 비트 정지

41

콜론은 새로운 메시지의 시작을 알리고, 캐리지 리턴과 라인 피드 쌍은 메시지의 끝을 표시합니다.

장축 중복 검사는 ASCII 인코딩 데이터로 포함되었고, 종단 문자 바로 전에 배치되었습니다.

42

Modbus ASCII 메시지는 Modbus RTU의 두 배의 바이트 수를 사용했기 때문에 데이터 전송 속도가 절반으로 줄어들었습니다. 이는 Modbus ASCII의 사용이 라디오 통신 링크와 같은 원래 목적에 제한되었음을 의미합니다.

43 Modbus 플러스

Modbus 플러스는 RS-485 시리얼 멀티드롭 네트워크에서 작동하도록 적응된 Modbus입니다.

그러나 이는 Modbus 사양에 결코 포함되지 않았고, Modicon의 독점 기술이었습니다.

더 이상 설명하지 않겠습니다.

44 모보스 TCP

모보스 TCP는 TCP/IP 위에서 터널링된, 특히 이더넷을 위한 모보스 RTU의 약간 수정된 버전입니다.

이는 매우 널리 채택되었으며, 심지어 자체 프로토콜을 가진 주요 공급업체들도 이를 대안으로 제공하여 다른 장치와 통신할 수 없었던 경우와 같이 제공했습니다.

45

모보스 TCP는 포트 502를 사용합니다.

이는 공식적으로 할당된 포트이며, 공식 TCP 포트 목록을 참조하면 모보스가 502로 나열되어 HTTP가 포트 80이고 SMTP 이메일이 포트 25인 것과 동일합니다.

46

모보스 표준 위원회는 IT 산업 표준과 관행을 가능한 한 많이 채택하기로 의식적으로 결정했으며, 고유한 자동화 산업 표준과 관행 세트를 유지하기보다는 이를 참조하기로 했습니다.

이는 여러 가지 매우 실용적인 이유 때문이었습니다.

47

그 중 하나는 표준 작업에 참여하는 사람이 매우 적었고, 그들이 필요로 하는 작업을 줄이는 방법을 찾고 있었기 때문입니다.

산업 현장에서 일하는 사람들이 용어의 중복이 매우 혼란스럽고 IT 용어가 산업 자동화 용어로 어떻게 번역되는지 파악하기 어렵다고 느꼈습니다.

48

이러한 결과로 마스터-슬레이브 시리얼 통신 용어가 클라이언트-서버라는 IT 네트워크 용어로 대체되었습니다.

따라서 이 에피소드에서 나머지 부분은 Modbus TCP 용어를 사용할 것입니다. 이는 오늘날 가장 많이 접하는 Modbus 형태이기 때문입니다.

49 Modbus UDP

이는 단순히 데이터를 UDP가 아닌 TCP로 전송하는 비공식적인 Modbus TCP 버전이었습니다.

실제 Modbus 데이터 형식이 전송되는 데는 변화가 없었습니다.

이는 주로 이를 수행할 수 있음을 보여주기 위해 이루어졌습니다.

주장되는 장점은 UDP에 비해 TCP의 더 낮은 오버헤드와 지연 시간이었지만, 이는 이 방법에 대한 관심도를 높일 만큼 충분한 장점이 아니었습니다.

50개의 모두스(Modbus) 전용 확장 기능

여러 회사가 모두스의 확장 기능을 자체적으로 개발했으며, 특히 모두스 RTU를 확장하는 데 중점을 두었습니다.

이러한 기능들은 특정 분야의 응용 프로그램에서만 사용되었습니다.

가장 일반적인 것 중 하나는 엔론 모두스(Enron Modbus)로, 미국 엔론 회사에서 개발했습니다.

이 기능은 프로토콜에 32비트 데이터 확장 기능을 추가했습니다.

51개의 모두스 데이터 모델

모두스 데이터 모델은 PLC 스타일의 데이터 테이블을 중심으로 합니다.

이는 메모리 배열과 해당 메모리에 읽기 및 쓰기 명령을 포함하는 집합입니다.

52

네 가지 종류의 메모리 존재합니다.

• 이산 입력

• 코일

• 입력 레지스터

• 보유 레지스터

53

네 가지 종류의 각 메모리 주소는 최대 65,536개까지 가능합니다.

각 메모리 유형은 0개에서 최대 개수까지 가질 수 있으며, 주소 개수는 구현에 따라 결정됩니다.

메모리 주소는 1부터 시작하므로, "1"은 첫 번째 주소를 의미합니다.

케이블을 통해 전송된 실제 주소는 "0"으로 시작합니다.

54

디스크릿 입력과 입력 레지스터는 읽기 전용 메모리입니다.

코일과 홀딩 레지스터는 읽기/쓰기 메모리입니다.

디스크릿 입력과 코일은 각각 1비트입니다.

즉, 각 주소는 메모리 1비트를 나타냅니다.

55

입력 및 홀딩 레지스터는 16비트 단어입니다.

네트워크를 통해 전송될 때, 단어는 "빅 엔디안"입니다.

즉, 단어의 상단 바이트가 먼저 전송되고 하단 바이트가 두 번째로 전송됩니다.

56

다른 유형의 메모리를 중첩할 수 있습니다.

예를 들어, 코일 메모리는 홀드 레지스터 메모리에 중첩될 수 있습니다. 예를 들어, 첫 16개의 코일은 첫 번째 홀드 레지스터가 됩니다. 등등.

57개의 Modbus 기능

Modbus TCP는 클라이언트-서버 프로토콜입니다.

클라이언트는 메모리 읽기 또는 쓰기를 요청하는 명령을 보내고, 서버는 인정 또는 요청된 데이터가 포함된 다른 메시지 또는 오류 코드를 응답합니다.

각 명령은 "기능"이라고 불립니다.

각 기능은 번호로 참조됩니다.

58

모든 기능을 나열하지는 않겠습니다. 단지 가장 일반적으로 사용되는 것들만 나열하겠습니다.

모두스(Modbus) 인스턴스는 모든 가능한 기능을 구현할 필요가 없습니다. 오직 사용 중인 기능만 구현하면 됩니다.

59

기능 1은 "코일 읽기"입니다.

2는 이산 입력 읽기입니다.

3은 홀딩 레지스터 읽기입니다.

4는 입력 레지스터 읽기입니다.

5는 단일 코일 쓰기입니다.

6은 단일 레지스터 쓰기입니다.

15는 다중 코일 쓰기입니다.

16은 여러 등록을 작성할 수 있습니다.

60

각 명령에 대해 단일 거래에서 사용 가능한 데이터 요소의 양에 대한 제한 사항은 다음과 같습니다.

기능 1은 1에서 2000까지입니다.

2 - 1에서 2000까지

3 - 1에서 125까지

4 - 1에서 125까지

5 - 없음

6 - 없음

1968년 1월 1일부터 15까지

123까지 1월 1일부터 16까지

61 Modbus 메시지 형식

완전한 Modbus 메시지는 애플리케이션 데이터 단위(ADU)라고 불립니다.

ADU 내에는 프로토콜 데이터 단위(PDU)가 있습니다.

PDU에는 Modbus 명령어와 연관된 데이터가 포함되어 있습니다.

ADU에는 추가 정보가 포함되어 있으며, Modbus 유형에 따라 다를 수 있습니다.

여기서는 Modbus TCP에 대해 설명하겠습니다.

62 MBAP 헤더

Modbus TCP에서 PDU는 Modbus 애플리케이션 프로토콜 헤더인 MBAP 헤더로 선행됩니다.

다음은 그 형식입니다.

• 첫 2바이트는 트랜잭션 식별자입니다.

• 두 번째 2바이트는 프로토콜 식별자입니다.

• 세 번째 2바이트는 길이입니다.

• 다음 1바이트는 단위 식별자입니다.

63

트랜잭션 식별자는 단순히 클라이언트 요청에서 서버 응답으로 복사될 정수입니다.

클라이언트는 응답을 요청과 일치시켜 확인할 수 있습니다.

응답이 순서가 뒤섞일 가능성이 있는 경우에만 유용합니다.

64

프로토콜 식별자는 항상 0이며, 프로토콜이 Modbus임을 나타냅니다.

길이는 단위 식별자와 데이터 필드를 포함한 다음 바이트의 개수입니다.

65

단위 식별자는 Modbus TCP와 시리얼 Modbus, 예를 들어 Modbus RTU 간에 메시지가 전달될 수 있도록 사용됩니다.

예를 들어, Modbus TCP 네트워크에 있는 게이트웨이에는 여러 Modbus RTU 장치가 연결될 수 있습니다.

이 경우 단위 식별자는 요청이 전달되는 Modbus RTU 장치의 시리얼 라인 주소 또는 시리얼 포트 번호와 일치합니다.

66

길이 필드는 요청의 경우 클라이언트에 의해 설정되거나 응답의 경우 서버에 의해 설정됩니다.

모든 다른 필드는 서버가 요청에서 응답으로 복사한 내용입니다.

67 예시 - 기능 1

여기 기능 1, 읽기 코일을 위한 Modbus PDU 메시지 예시가 있습니다.

68

요청은 다음 형식입니다.

• 첫 번째 바이트는 기능 코드이며, 이 경우 "1"입니다.

• 다음 두 바이트는 0에서 65535 사이의 시작 주소를 포함합니다.

• 다음 두 바이트는 1에서 2000 사이의 코일 수를 포함합니다.

69

응답은 다음 형식입니다.

첫 번째 바이트는 함수 코드이며, 이 경우 "1"입니다.

두 번째 바이트는 다음에 오는 데이터 바이트 수입니다.

다음 바이트들은 데이터를 포함하는 시리즈로, 각 바이트에 8개의 코일이 패킹되어 필요한 바이트 수만큼 이어집니다.

마지막 바이트의 사용되지 않은 비트들은 제로(0)로 패딩됩니다.

70

오류가 있을 경우, 응답은 다음과 같은 형식입니다.

첫 번째 바이트는 함수 코드에 128 또는 80(16진수)을 더한 것으로, 바이트의 고비트를 효과적으로 설정합니다.

두 번째 바이트는 오류 코드를 포함하며, 오류의 종류를 나타냅니다. 이는 1, 2, 3 또는 4가 될 수 있습니다.

71 예외 코드

요청 오류 발생 시, 함수 코드에 128을 더한 값이 반환되며, 고비트가 설정됩니다.

유효한 함수 코드는 모두 128 미만이므로, 128 이상으로 시작하는 모든 응답은 오류를 나타냅니다.

오류 코드 뒤에 예외 코드가 따릅니다.

1 - 지원되지 않는 함수 코드.

2 - 범위를 벗어난 주소.

3 - 양이 범위를 벗어났거나, 함수 5와 6의 경우 잘못된 값.

4 - 기타 오류.

함수 6(단일 레지스터 쓰기)의 경우 모든 가능한 단어 값이 유효하므로, 기술적으로 예외 3은 발생할 수 없지만, 사양에는 포함되어 있습니다.

72

보실 수 있듯이, Modbus TCP는 산업 제어에 적합한 매우 단순하고 잘 정의된 응용 프로토콜입니다.

이러한 기본 명령어는 대부분의 응용 프로그램에서 필요한 거의 모든 것을 수행할 것입니다.

이 프로토콜은 무료로 제공되고 구현하기 쉽기 때문에 특히 소규모 또는 전문 공급업체 사이에서 광범위한 지원을 받고 있습니다.

73 결론

이 에피소드에서는 PLC 네트워킹에 대해 간략히 살펴보고, Modbus라는 네트워크 프로토콜에 대해 자세히 살펴보았습니다.

다음 에피소드에서는

• 산업 내 개인용 컴퓨터, 전문 하드웨어를 포함,

• SCADA 시스템,

HMI 시스템들

테스트 및 측정 시스템

74

이 것은 8부 시리즈 중 6번째 에피소드입니다.

제공피드백이 에피소드를 대상으로.

출처
Hacker Public Radio
원본 열기 ↗

⚙콘텐츠가 기계 번역되었습니다.

이 뉴스가 유용했나요?

토론 0

Seja o primeiro a contribuir com o debate.

정보를 공유하고 논거를 홍보하세요

유용한 정보나 데이터를 게시하는 것을 주저하지 마세요.

토론에 참여하려면 로그인하거나 무료 계정을 만드세요.