Modbus 프로토콜은 하나의 마스터 제어 유닛에 여러 대의 슬레이브 제어 유닛을 연결할 경우 가장 널리 사용되는 프로토콜이다. 그러나 Modbus 프로토콜에서는 SCU의 상태 값을 읽는 서로 다른 서비스 요청 메시지에 대해 결과 값만을 응답하기 때문에 어떤 전송 메시지에 대한 응답인지 식별할 수 없었다. 따라서 MCU 프로그램 작성 시 하나의 서비스 요청 메시지를 전송하고 이를 처리한 후에 다음 메시지를 전송하도록 프로그램을 작성하였다. 본 논문에서는 위 문제를 해결하기 위해 메시지의 전송 순서를 확인할 수 있는 Index 코드 및 응답한 메시지의 서비스 유형을 판단하기 위한 Service 코드를 추가한 Modbus응용 프로토콜을 설계하고 이를 제안하였다. 실험 결과, MCU에서 전송한 서비스 요청 메시지에 대한 처리가 완료되지 않은 상태에서 다음 서비스 요청 메시지의 전송이 가능하였으며, 통신 에러 발생 시 에러 검색 알고리즘을 이용해 어떤 종류의 에러가 발생했는지 식별할 수 있었다. 또한, 다중의 동시적인 서비스 요청의 경우에 전송 메시지들의 처리시간이 기존의 Modbus 프로토콜보다 약 66.2% 향상되었다.
Modbus 프로토콜은 하나의 마스터 제어 유닛에 여러 대의 슬레이브 제어 유닛을 연결할 경우 가장 널리 사용되는 프로토콜이다. 그러나 Modbus 프로토콜에서는 SCU의 상태 값을 읽는 서로 다른 서비스 요청 메시지에 대해 결과 값만을 응답하기 때문에 어떤 전송 메시지에 대한 응답인지 식별할 수 없었다. 따라서 MCU 프로그램 작성 시 하나의 서비스 요청 메시지를 전송하고 이를 처리한 후에 다음 메시지를 전송하도록 프로그램을 작성하였다. 본 논문에서는 위 문제를 해결하기 위해 메시지의 전송 순서를 확인할 수 있는 Index 코드 및 응답한 메시지의 서비스 유형을 판단하기 위한 Service 코드를 추가한 Modbus 응용 프로토콜을 설계하고 이를 제안하였다. 실험 결과, MCU에서 전송한 서비스 요청 메시지에 대한 처리가 완료되지 않은 상태에서 다음 서비스 요청 메시지의 전송이 가능하였으며, 통신 에러 발생 시 에러 검색 알고리즘을 이용해 어떤 종류의 에러가 발생했는지 식별할 수 있었다. 또한, 다중의 동시적인 서비스 요청의 경우에 전송 메시지들의 처리시간이 기존의 Modbus 프로토콜보다 약 66.2% 향상되었다.
The Modbus protocol is the most widely used protocol for connecting multiple slave control units (SCUs) in the master control unit. However, the Modbus protocol does not identify which SCU response message corresponds to the service request message. Therefore, when using the Modbus protocol, one ser...
The Modbus protocol is the most widely used protocol for connecting multiple slave control units (SCUs) in the master control unit. However, the Modbus protocol does not identify which SCU response message corresponds to the service request message. Therefore, when using the Modbus protocol, one service request message can be transmitted after processing the previous message. In this paper, we propose a Modbus application protocol with an index code and a service code to solve the problem. As a result of experimentation, it is possible to transmit the next service request message without processing the previous service request message. And when a communications error occurs, it is possible to identify what type of error occurred using an error detection algorithm. Also, with simultaneous multiple service requests, the proposed protocol can improve processing time by about 66.2%, compared to the original Modbus protocol.
The Modbus protocol is the most widely used protocol for connecting multiple slave control units (SCUs) in the master control unit. However, the Modbus protocol does not identify which SCU response message corresponds to the service request message. Therefore, when using the Modbus protocol, one service request message can be transmitted after processing the previous message. In this paper, we propose a Modbus application protocol with an index code and a service code to solve the problem. As a result of experimentation, it is possible to transmit the next service request message without processing the previous service request message. And when a communications error occurs, it is possible to identify what type of error occurred using an error detection algorithm. Also, with simultaneous multiple service requests, the proposed protocol can improve processing time by about 66.2%, compared to the original Modbus protocol.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이런 문제를 해결하기 위해 Index 코드 및 Service 코드를 추가한 Modbus 응용 프로토콜을 제안하였다. 제안한 프로토콜에서 Index 코드는 메시지의 전송 순서를 파악하기 위한 코드로 해당 코드를 추가함으로써 이전 전송한 서비스 요청 메시지가 처리되지 않은 상태에서도 또 다른 서비스 요청 메시지를 전송할 수 있도록 하였다.
본 논문에서는 이런 문제점을 개선하기 위해 에러 발생 위치 및 응답 메시지에 대한 식별이 용이하고 서비스 처리 속도를 향상시킬 수 있도록 기존 Modbus 프로토콜에 Index 코드와 Service 코드를 추가한 응용 프로토콜을 설계하고 이를 구현하였다.
본 실험에서는 서론에서 제시한 SCU의 응답 메시지가 어떤 서비스 요청 메시지에 대한 응답인지 식별할 수없는 문제점을 확인하기 위해 Modbus 프로토콜 및 제안 프로토콜에서 아래와 같은 시나리오를 작성하여 실험을 진행하였다.
제안 방법
본 논문에서 제안하는 프로토콜은 기존 Modbus 프로토콜에 두 개의 필드를 추가하였다. Index 코드를 추가 하여, 통신 장애 등으로 인한 에러 검출 및 서비스 요청 메시지를 연속적으로 전송할 수 있도록 하였으며, Service 코드를 추가함으로써 SCU의 응답 메시지가 어떤 서비스 요청에 대한 응답 메시지인지 식별할 수 있도록 하였다. Fig.
또한, Send Thread에서는 전송 시점에 Index Code Definition Table (ICDT)을 작성하고, 일정 주기 간격으로 ICDT의 정보를 이용하여 통신 에러를 검색하도록 한다. 통신 에러 발생 시 에러 정보와 함께 EVENT를 통해 MCU 응용 프로그램 내의 MainFrame.
제안한 프로토콜에서 Index 코드는 메시지의 전송 순서를 파악하기 위한 코드로 해당 코드를 추가함으로써 이전 전송한 서비스 요청 메시지가 처리되지 않은 상태에서도 또 다른 서비스 요청 메시지를 전송할 수 있도록 하였다. 또한, Service 코드를 추가함으로써 응답한 메시지가 어떤 서비스에 대한 응답 메시지인지 식별할 수 있도록 하였다.
본 논문에서 제안하는 프로토콜은 기존 Modbus 프로토콜에 두 개의 필드를 추가하였다. Index 코드를 추가 하여, 통신 장애 등으로 인한 에러 검출 및 서비스 요청 메시지를 연속적으로 전송할 수 있도록 하였으며, Service 코드를 추가함으로써 SCU의 응답 메시지가 어떤 서비스 요청에 대한 응답 메시지인지 식별할 수 있도록 하였다.
본 실험은 기존 Modbus 프로토콜과 제안한 프로토콜의 처리 성능을 비교·분석하기 위해 혈액 검사 시 사용되는 진공 채혈관 조립 설비의 운영 환경을 토대로 실험을 실시하였으며, ⓛ MCU의 연속적인 서비스 요청 시 SCU의 처리 과정에 대한 비교 실험, ② SCU 장치의 서비스 처리 에러 또는 통신 중 발생하는 에러에 대한 처리 과정과 전체적인 서비스 처리 시간을 비교 실험하였다.
본 실험은 통신 처리시간에 관한 실험으로 Table 7과 같이 현재 온도 값 읽기는 1000 msec 간격, 진공 값 읽기는 60 msec 간격, 인버터의 Air speed 읽기는 500 msec 간격으로 5초 동안 서비스 요청 메시지를 전송하도록 프로그램을 작성하여 실험하였다.
본 실험은 특정 SCU에서 에러가 발생할 경우 처리 과정에 관한 실험으로, Table 6과 같은 순서 및 조건으로 실험을 진행하였다.
실험은 총 10회에 걸쳐 반복 실험을 하여 평균 처리 시간을 구했다. Fig.
제안한 프로토콜에서 Index 코드는 MCU 응용 프로그램에서 서비스 요청 메시지 전송 시 통신 클래스 내부 에서 자동으로 설정하였으며, 본 실험에서 사용된 Service 코드는 Table 4와 같이 정의하여 실험을 진행하였다.
본 논문에서는 이런 문제를 해결하기 위해 Index 코드 및 Service 코드를 추가한 Modbus 응용 프로토콜을 제안하였다. 제안한 프로토콜에서 Index 코드는 메시지의 전송 순서를 파악하기 위한 코드로 해당 코드를 추가함으로써 이전 전송한 서비스 요청 메시지가 처리되지 않은 상태에서도 또 다른 서비스 요청 메시지를 전송할 수 있도록 하였다. 또한, Service 코드를 추가함으로써 응답한 메시지가 어떤 서비스에 대한 응답 메시지인지 식별할 수 있도록 하였다.
성능/효과
실험은 총 10회에 걸쳐 반복 실험을 하여 평균 처리 시간을 구했다. Fig. 9의 (C)는 실험 결과를 나타내는 것으로, Modbus 프로토콜 사용 시 평균 처리 시간은 8.589 sec가 소요되었으며, 제안한 프로토콜 사용 시 평균 처리 시간은 5.166 sec가 소요되어 제안한 프로토콜 사용 시 약 66.2% 처리속도가 향상되었음을 확인하였다. 이는 Modbus 프로토콜에서는 하나의 메시지 완료 후 다음 메시지를 보내는 반면, 제안한 프로토콜 메시지는 이전에 전송한 메시지에 대한 응답이 없는 경우에도 다음 메시지를 전송할 수 있기 때문이다.
그러나 SCU의 응답 메시지는 요청한 서비스에 대한 처리 결과 값만을 반환하기 때문에 어떤 종류의 서비스 요청에 대한 응답인지 식별할 수 없었다. 따라서 MCU 통신 프로그램 작성 시 하나의 서비스 요청 메시지를 전송 하고 해당 메시지 처리가 완료된 후에 다음 메시지를 전송할 수 있었다.
실험 결과, 제안한 프로토콜에서는 하나의 서비스 요청 메시지 전송 후 응답 메시지 처리가 완료되지 않은 상태에서 다음 서비스 요청 메시지의 전송이 가능하였으며, 에러 발생 시 Index 코드 및 Service 코드를 이용하여 에러가 발생한 SCU 위치 및 어떤 서비스 요청 메시지인지를 확인할 수 있었다. 또한, 다중의 동시적인 서비스 요청 메시지 전송 처리시간에 관한 실험에서는 기존 Modbus 프로토콜보다 약 66.2%의 처리 시간이 향상된 것을 확인하였다.
실험 결과, 제안한 프로토콜에서는 하나의 서비스 요청 메시지 전송 후 응답 메시지 처리가 완료되지 않은 상태에서 다음 서비스 요청 메시지의 전송이 가능하였으며, 에러 발생 시 Index 코드 및 Service 코드를 이용하여 에러가 발생한 SCU 위치 및 어떤 서비스 요청 메시지인지를 확인할 수 있었다. 또한, 다중의 동시적인 서비스 요청 메시지 전송 처리시간에 관한 실험에서는 기존 Modbus 프로토콜보다 약 66.
후속연구
향후 연구에서는 스마트 제어를 위한 다중 IoT 장치 연결 시 취약한 보안 문제를 해결하기 위한 경량화 인증 방식 및 메시지 암호화 방법에 관한 연구를 수행하고자 한다.
질의응답
핵심어
질문
논문에서 추출한 답변
Modbus 프로토콜은 무엇인가?
Modbus 프로토콜은 다양한 종류의 SCU를 연결하기 위해 일반적으로 사용되는 프로토콜로써 Address와 Function 코드 메시지 포맷을 이용하여 하나의 통신 회선을 통해 여러 SCU들에 대한 서비스를 처리할 수 있다. 또한, SCU에 전송된 메시지에 대한 응답 메시지가 항상 존재하기 때문에 응답 메시지를 통해 서비스 요청 메시지가 정상적으로 전달되었는지를 확인할 수 있다.
Modbus 프로토콜의 한계점은?
또한, SCU에 전송된 메시지에 대한 응답 메시지가 항상 존재하기 때문에 응답 메시지를 통해 서비스 요청 메시지가 정상적으로 전달되었는지를 확인할 수 있다. 그러나 SCU의 응답 메시지는 요청한 서비스에 대한 처리 결과 값만을 반환하기 때문에 어떤 종류의 서비스 요청에 대한 응답인지 식별할 수 없었다. 따라서 MCU 통신 프로그램 작성 시 하나의 서비스 요청 메시지를 전송 하고 해당 메시지 처리가 완료된 후에 다음 메시지를 전송할 수 있었다.
Modbus 프로토콜의 역할은 무엇인가?
Modbus 프로토콜은 다양한 종류의 SCU를 연결하기 위해 일반적으로 사용되는 프로토콜로써 Address와 Function 코드 메시지 포맷을 이용하여 하나의 통신 회선을 통해 여러 SCU들에 대한 서비스를 처리할 수 있다. 또한, SCU에 전송된 메시지에 대한 응답 메시지가 항상 존재하기 때문에 응답 메시지를 통해 서비스 요청 메시지가 정상적으로 전달되었는지를 확인할 수 있다.
참고문헌 (11)
Soo Jeong, Jong Jin Lee, Won Ki Jung, "A Indoor Management System using Raspberry Pi," Journal of the KAIS, vol. 17, no. 9, pp. 745-752, 2016. DOI: https://doi.org/10.5762/KAIS.2016.17.9.745
Martin Wollschlaeger, Thilo Sauter, Juergen Jasperneite, "The Future of Industrial Communication: Automation Networks in the Era of the Internet of Things and Industry 4.0," IEEE Industrial Electronics Magazine, vol. 11, no. 1, pp. 17-27, 2017. DOI: https://doi.org/10.1109/MIE.2017.2649104
DaeHeon Park, "A Study on Integrated Operation Systems of Plant Factory based on Internet of Things," Ph.D Thesis, SunChon University, 2015.
Bo-Hun Kim, "A Design and Implementation of PC-based Control System for Efficiency Improvement of Industrial Equipments," Ph.D Thesis, KongJu University, 2017.
Jeyasingam Nivethan, Mauricio Papa, "A SCADA Intrusion Detection Framework that Incorporates Process Semantics," ACM CISRC '16 Proceedings of the 11th Annual Cyber and Information Security Research Conference, 2015.
Sungmo Jung, Jae-gu Song, Taihoon Kim, Yohwan So, Seoksoo Kim, "Design of Idle-time Measurement System for Data Spoofing Detection," Journal of the Korea Academia-Industrial cooperation Society, vol. 11, no. 1, pp. 151-158, 2010. DOI: http://doi.org/10.5762/KAIS.2010.11.1.151
Saptarshi Naskar, Krishnendu Basuli, Samar Sen Sarma, "ASerial port data communication using Modbus protocol," Journal of ACM Ubiquity, vol. 2008, no. 1, 2008.
Bo-Heon Kim, Jeong-Ho Song, Hwang-Rae Kim, "A Study on Enhancement of the MOD-BUS RTU Protocol for Multi-Device Connection," Proceedings of the KAIS Fall Conference, 2016.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.