유저 여러분께서는 별도의 통신 코드를 작성할 필요없이 지원되는 라이브러리를 사용해서 간편하게 ComfileHMI의 모든 기능을 이용하실 수 있습니다.
CPU모듈에 있는 RS232C와 ComfileHMI를 아래 그림처럼 연결하세요.
CPU모듈에는 2개의 RS232C 포트가 있는데 이중 아무거나 사용하셔도 됩니다. 아례 예제에서는 CH2를 사용한 것으로 하겠습니다.
cfSimpleModbusRTU 라이브러리를 다운받아 문서>Arduino>Librares 아래에 폴더 자체를 옮겨 놓으세요.
#include "CFMEGA.h" #include "cfSimpleModbusRtu.h" CFNET cfnet; uint16_t incvalue; uint16_t Lword[99]; uint8_t Lbit[99]; void setup() { startModbusServer(2, 1, Lword, Lbit); // uartCh, ModbusSlaveAdr, WordArea, BitArea } u16 ltemp; void loop() { u16 out0 = cfnet.digitalRead(0); cfnet.digitalWrite(0,out0); Lword[1] = incvalue++; }
void startModbusServer(u8 comCh, u8 modSlaveadr, u16 * modbusBufferRegister, u8 * modbusBufferCoil)
comCh : 통신 채널 (1,2,3 사용가능) |
modSlaveadr : 모드버스의 슬레이브 어드레스 (1~255) |
modbusBufferRegister : 16비트 레지스터 링크배열 시작번지 |
modbusBufferCoil : 1비트 코일 링크배열 시작번지 |
MODBUS RTU 슬레이브의 시작을 알리는 함수입니다.
uint16_t Lword[99]; // setup 함수 바깥에서 선언하였으므로 전역 변수가 된다. uint8_t Lbit[99]; void setup() { startModbusServer(2, 1, Lword, Lbit); // uartCh, ModbusSlaveAdr, WordArea, BitArea }
comCh 위치에 사용할 채널을 기입합니다. CFMEGA2의 경우 총 3 개의 통신포트를 사용할 수 있습니다. 이 중 한 곳에서만 MODBUS RTU 슬레이브 기능을 활성화 시킬수 있습니다.
modSlaveadr 에 슬레이브 어드레스를 기입합니다. 1 부터 255 사이 값을 사용할 수 있습니다.
MODBUS RTU 를 사용하기 위해서는 두 종류의 링크배열 공간이 필요합니다.
이렇게 라이브러리에 있는, startModbusServer를 동작만 시켜두면, 알아서 ComfileHMI와 CPU모듈간 통신이 이루어 집니다.
ComfileHMI 로 부터 오는 통신데이터를 알아서 한 바이트씩 내부버퍼에 넣고, 쌓인 내용을 처리하는 방식입니다.
따라서, 유저는 MODBUS 통신에 신경쓸 필요없이, 링크배열에 데이터를 넣거나 읽기만 하면 됩니다. 해당 링크배열은 결국 ComfileHMI 화면에 있는 위젯 (통신기능이 내장된 화면 구성요소 : 버튼, 램프등등)과 연결되며, 이를 통해 동작실행여부 및 상태확인등을 할 수 있습니다.
Comfile Studio (ComfileHMI 작화 소프트웨어) 에서 프로젝트 생성하실때, 아래와 같이 선택하세요.
simpleModbus는 최초 공개된 ComfileHMI용 라이브러리 소스입니다. 여기에서 몇가지 사항을 개선하여 cfsimpleModbus를 만든 것입니다.
simpleModbus | cfsimpleModbus | |
---|---|---|
개요 | MCU용 모드버스 라이브러리 | 수정된 모드버스 라이브러리 |
사용 가능 MCU | STM32, AVR, PIC | Modular FADUINO |
보레이트 | 별도의 openCom함수 에서 조정가능 | openCom 사용할 필요없음, 57600으로 고정됨 |
링크배열 1비트 저장방법 | 한 바이트에 8개 비트 정보 저장 | 한 바이트에 1비트만 정보 저장 |
배열 번지 (베이스) | 원 베이스: HMI에서 40001는 링크 배열0번지를 억세스 | 제로 베이스 : HMI에서 40001는 링크 배열1번지 |
부연설명 | 최초 버전 | 사용상의 편의성을 감안한 수정 |