WLAN을 통한 Modbus(1부): 하드웨어 및 프로그래밍
Modbus 프로토콜은 시스템과 컨트롤러 간의 통신을 위해 산업 부문에서 널리 사용됩니다. 이는 일반적으로 검증된 RS485 인터페이스와 기존 구리선을 사용하여 수행됩니다. 여기에서는 무선 근거리 통신망(WLAN)을 통해 Modbus 프로토콜을 사용할 수 있는 모듈을 제시합니다. 이 모듈은 ESP8266 마이크로컨트롤러가 장착된 Espressif NodeMCU 보드를 중심으로 구축되었습니다. 추가 Modbus 베이스보드를 사용하면 산업 환경에서 일반적인 전압 레벨인 24V 신호로 작업할 수 있습니다. 이 모든 것이 어떻게 작동하는지 보여주기 위해 저자는 간단한 리프트 도어 컨트롤러를 만들었습니다. 대부분의 Elektor 독자는 이미 Espressif NodeMCU 모듈과 Arduino IDE에 익숙할 것입니다. 해당 범주에 해당하는 경우 이 소개를 건너뛰고 Modbus TCP 보드에 대한 설명으로 바로 이동할 수 있습니다. 다른 모든 사람들을 위해 알아야 할 사항은 다음과 같습니다. 이 프로젝트는 NodeMCU 모듈(Elektor Store에서 구매 가능)을 중심으로 구축되었습니다. 이 모듈에는 우표 크기 정도이고 WLAN 인터페이스와 함께 제공되는 Espressif ESP8266 마이크로컨트롤러가 장착되어 있습니다. 작은 크기에도 불구하고 엄청난 처리 능력을 갖추고 있습니다. ESP8266 마이크로컨트롤러의 주요 기능은 다음과 같이 요약되어 있습니다.1 번 테이블.
NodeMCU 보드는 ESP8266용 공급 전압을 생성하고 마이크로 컨트롤러용 프로그래밍 인터페이스를 관리합니다.그림 1Modbus 회로에 사용되는 NodeMCU 보드의 핀아웃에 대한 개요를 보여줍니다.
Arduino IDE는 NodeMCU 보드 프로그래밍에 매우 적합합니다. Arduino 웹사이트에서 컴퓨터 운영 체제에 맞는 Arduino IDE 버전을 무료로 다운로드하고 사이트의 지침에 따라 설치할 수 있습니다. IDE를 처음 실행하면 그림 2와 같은 창이 나타납니다. . 프로그램 코드 창에는 미리 정의된 두 가지 함수가 포함되어 있습니다. 맨 위에는 프로그램이 시작될 때 한 번만 실행되고 마이크로컨트롤러 인터페이스 초기화와 같은 작업을 처리하는 setup() 함수가 있고, 맨 아래에는 일반적으로 프로그램의 소스 코드가 포함된 loop() 함수가 있습니다. .
loop() 함수는 setup() 함수가 완료된 후에 실행됩니다. 프로그램이 loop() 함수의 끝에 도달하면 처음부터 다시 시작됩니다. ESP8266은 loop() 기능의 종료와 재시작 사이의 WLAN 인터페이스를 관리합니다. 이는 loop() 함수에서 무한 루프를 생성하지 않아야 함을 의미합니다. 그렇지 않으면 ESP8266이 불가피하게 충돌할 수 있습니다. 대신, loop() 함수의 코드는 순환 방식으로 실행될 수 있도록 설계되어야 합니다. ESP8266의 겉보기에 알 수 없는 많은 충돌은 프로세서가 작업을 관리할 만큼 충분한 CPU 시간을 얻지 못하기 때문에 발생합니다. WLAN 인터페이스. 예를 들어 대규모 루프에서 프로그램 코드가 장기간 실행될 가능성이 있는 경우, 항복() 함수 또는 지연() 함수를 사용하여 ESP8266에 WLAN 관리를 위한 충분한 시간을 제공할 수 있습니다. NodeMCU 모듈을 Modbus 보드에 삽입하려면 이를 컴퓨터의 USB 포트에 연결해야 하지만 그 전에 모든 것을 준비하기 위해 몇 가지 작업을 수행해야 합니다. ESP8266은 Arduino IDE에서 표준으로 지원되지 않으므로 먼저 IDE를 업데이트해야 합니다. 이렇게 하려면 파일 -> 기본 설정을 선택하고 추가 보드 관리자 URL 상자에 다음 URL을 입력하세요:http://arduino.esp8266.com/stable/package_esp8266com_index.json확인을 클릭한 다음 도구 -> 보드... ->를 선택하세요. ESP8266을 찾은 다음 ESP8266 커뮤니티 보드를 설치해야 하는 보드 관리자 창을 엽니다. 설치 후 도구 -> 보드 > NodeMCU 1.0(ESP-E12 모듈) 보드가 표시되고 도구 아래에 - > Port > NodeMCU 보드가 연결된 포트가 표시됩니다(Linux에서는 /dev/ttyUSBx, Windows에서는 COMx). 이제 NodeMCU 모듈에서 첫 번째 간단한 테스트 프로그램을 시작할 수 있습니다. 이를 위해 파일 -> 예제 -> ESP8266 -> Blink에서 'Blink' 예제 프로그램을 엽니다. 에 표시된 프로그램 >1);/p>