RS232C는 다음과 같이 3가닥으로 연결합니다. (모아콘은 채널0, 1, 2중 하나에서만 MODBUS-RTU 을 지원합니다.)
모아콘 악세사리중 <RS232 터미널블록 CONTACT> 제품을 사용하여 연결하세요.
RS485로 연결시에는 다음과 같이 연결합니다.
제조사는 <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(;;) { // 무한루프 } }
다음은 편의기능을 넣은 소스코드입니다. 코일영역 (비트 어드레스)을 쉽게 접근하기 위한, coil함수와 coilSet함수를 포함하고 있습니다.
#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); } }
이 프로그램으로 아래의 동영상을 만들었습니다.