사용자 도구

사이트 도구

English

modularfaduino:cfmodbus:index

ComfileHMI

유저 여러분께서는 별도의 통신 코드를 작성할 필요없이 지원되는 라이브러리를 사용해서 간편하게 ComfileHMI의 모든 기능을 이용하실 수 있습니다.

ComfileHMI 와 연결 방법

CPU모듈에 있는 RS232C와 ComfileHMI를 아래 그림처럼 연결하세요.

CPU모듈에는 2개의 RS232C 포트가 있는데 이중 아무거나 사용하셔도 됩니다. 아례 예제에서는 CH2를 사용한 것으로 하겠습니다.

라이브러리

Modular FADUINO Library

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++;
 }

함수 사용법

startModbusServer

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 를 사용하기 위해서는 두 종류의 링크배열 공간이 필요합니다.

  • 16 비트 워드 데이터를 저장하는 “레지스터 (Register)” 전역 배열
  • 1 비트 데이터를 저장하는 “코일(Coil)” 전역 배열, 1 비트 영역 (Coil)은 바이트형 배열로 선언하십시오. 1바이트에 1비트의 정보만 보관됩니다.

동작 원리 설명

이렇게 라이브러리에 있는, startModbusServer를 동작만 시켜두면, 알아서 ComfileHMI와 CPU모듈간 통신이 이루어 집니다.

ComfileHMI 로 부터 오는 통신데이터를 알아서 한 바이트씩 내부버퍼에 넣고, 쌓인 내용을 처리하는 방식입니다.

따라서, 유저는 MODBUS 통신에 신경쓸 필요없이, 링크배열에 데이터를 넣거나 읽기만 하면 됩니다. 해당 링크배열은 결국 ComfileHMI 화면에 있는 위젯 (통신기능이 내장된 화면 구성요소 : 버튼, 램프등등)과 연결되며, 이를 통해 동작실행여부 및 상태확인등을 할 수 있습니다.

Comfile Studio 프로젝트 생성

Comfile Studio (ComfileHMI 작화 소프트웨어) 에서 프로젝트 생성하실때, 아래와 같이 선택하세요.

관련해서 자주 하시는 질문과 답변

  • Q : CPU에 3개 채널을 동시에 MODBUS SERVER로 사용할 수 없나요?
  • A : 1개만 사용하실 수 있습니다.
  • Q : 타사 HMI를 사용할 수 있나요?
  • A : 불가능합니다.
  • Q : 특정 동작에서 ComfileHMI와 통신 연결이 끊어집니다. 이유는 무엇인가요?
  • A : 유저 코드안에서 인터럽을 금지시키면 안됩니다.
  • Q : 보레이트가 무엇인가요?
  • A : 57600 으로 고정되어 있어서 유저가 변경할 수 없습니다.

기존 라이브러리 simpleModbus와의 차이점

simpleModbus는 최초 공개된 ComfileHMI용 라이브러리 소스입니다. 여기에서 몇가지 사항을 개선하여 cfsimpleModbus를 만든 것입니다.

simpleModbus cfsimpleModbus
개요 MCU용 모드버스 라이브러리 수정된 모드버스 라이브러리
사용 가능 MCU STM32, AVR, PIC Modular FADUINO
보레이트 별도의 openCom함수 에서 조정가능 openCom 사용할 필요없음, 57600으로 고정됨
링크배열 1비트 저장방법 한 바이트에 8개 비트 정보 저장 한 바이트에 1비트만 정보 저장
배열 번지 (베이스) 원 베이스: HMI에서 40001는 링크 배열0번지를 억세스 제로 베이스 : HMI에서 40001는 링크 배열1번지
부연설명 최초 버전 사용상의 편의성을 감안한 수정

Modular FADUINO

modularfaduino/cfmodbus/index.txt · 마지막으로 수정됨: 2024/11/02 01:49 저자 Comfile Technology