사용자 도구

사이트 도구

English

comfilehmi:hmi_connection_moacon:index

모아콘과의 연결방법

RS232C는 다음과 같이 3가닥으로 연결합니다. (모아콘은 채널0, 1, 2중 하나에서만 MODBUS-RTU 을 지원합니다.)

모아콘 악세사리중 <RS232 터미널블록 CONTACT> 제품을 사용하여 연결하세요.


RS485로 연결시에는 다음과 같이 연결합니다.

HMI의 프로젝트 통신 구성

제조사는 <COMFILE> 모델명은 <MOACON>으로 하세요.

모아콘 기본소스

모아콘 스튜디오는 최신버젼을 사용하세요.

RS232C 채널0과 MODBUS-RTU를 활성화 시키는 최소한의 소스는 다음과 같습니다.

#include "moacon500.h"
void cmain(void)
{
	static u8 MDcoil[100];
	static u16 MDregister[100];
	openCom(0,115200, C8N1);                // RS232C 채널0을 115200으로 오픈
	startModbusRtu(0,1,MDregister, MDcoil); // MODBUS RTU의 시작, 슬레이브 어드레스는 1
 
	delay(100);
	for(;;) {
                   // 무한루프
		}
}

주의사항

  • 모아콘은 단 한개의 채널에서만 모드버스 슬레이브를 지원합니다. 동시에 2개 채널에서 모드버스 슬레이브를 사용할 수 없습니다.
  • 만약 여러분이 작성한 모아콘 소스에서 통신이 잘 안된다면, 위 소스를 이용해서 점검을 해보시기 바랍니다. 모아콘 프로그램에서 문제가 있을 경우에도 HMI와의 통신이 잘 안될 수 있습니다.

coil함수, coilSet함수

다음은 편의기능을 넣은 소스코드입니다. 코일영역 (비트 어드레스)을 쉽게 접근하기 위한, coil함수와 coilSet함수를 포함하고 있습니다.

  • coil(어드레스) : 모드버스의 어드레스(비트영역)에서 한 비트를 읽어와서 0 또는 1을 반환
  • coilSet(어드레스,값) : 모드버스의 어드레스(비트영역)에 한 비트를 기입 (값은 0또는 1)
#include "moacon500.h"
 
static u8 MDcoil[100];
static u16 MDregister[100];
 
//
// 모드버스 어드레스를 가지고 비트의 상태를 읽어오는 함수 
// a = coil(9); // 이렇게 하면 00009 비트 어드레스위치를 찾아서 해당 비트를 읽어온다.
 
u8 MDbitDecode[8] = {1,2,4,8,16,32,64,128};
 
u8 coil(u16 MDBSadr)
{
    MDBSadr--;
    if (MDcoil[MDBSadr>>3] & MDbitDecode[MDBSadr & 7]) return 1;
    return 0;
}
 
//
// 모드버스 어드레스로 비트의 상태를 변경
// coilSet(9,0); // 00009어드레스를 0으로 만든다.
// coilSet(9,1); // 00009어드레스를 1로 만든다. 
//
 
void coilSet(u16 MDBSadr, u8 MDBSdata)
{
    u16 arrayindex;
    MDBSadr--;
    arrayindex = MDBSadr>>3; // 배열에서의 위치 
    if (MDBSdata==0) {
        MDcoil[arrayindex] &= ~MDbitDecode[MDBSadr & 7];
        }
    else {
        MDcoil[arrayindex] |= MDbitDecode[MDBSadr & 7];
        }
}
 
void cmain(void)
{
   openCom(0,115200, C8N1);
	startModbusRtu(0,1,MDregister, MDcoil);
	clcdI2cInit(0);
	clcdPower(1);
	delay(100);
	portInit(3,0);
	for(;;) {
		MDregister[0]++;  // 증가하는것을 확인하기 위해서
		MDcoil[0]++;      // 코일 1~8까지 순차증가
 
		if (coil(17) != 0) portOn(30);
		else portOff(30);
		if (portIn(0)==0) coilSet(18,0);
		else coilSet(18,1);
	   delay(1);
		}
}

이 프로그램으로 아래의 동영상을 만들었습니다.

동작 동영상

위 동영상에서 사용한 ComfileHMI용 프로젝트 파일 ⇐ 폴더를 하나 만들어서 그안에 압축파일을 풀어서 사용하세요.

모아콘에서 실수사용예

comfilehmi/hmi_connection_moacon/index.txt · 마지막으로 수정됨: 2023/03/30 23:47 저자 Comfile Technology