문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
comfilehmi:hmi_connection_moacon:index [2020/02/22 13:32] Comfile Technology [모아콘에서 실수사용예] |
comfilehmi:hmi_connection_moacon:index [2023/03/30 23:47] Comfile Technology [동작 동영상] |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== 모아콘과의 연결방법 ====== | ||
+ | RS232C는 다음과 같이 3가닥으로 연결합니다. (모아콘은 채널0, 1, 2중 하나에서만 MODBUS-RTU 을 지원합니다.) | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:connectionmoacon.png?nolink |}} | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:dsc04034.jpg?nolink&500 |}} | ||
+ | |||
+ | 모아콘 악세사리중 <[[http://www.comfile.co.kr/shop/goods/goods_view.php?goodsno=88&category=004002|RS232 터미널블록 CONTACT]]> 제품을 사용하여 연결하세요. | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:dsc04033.jpg?nolink&500 |}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | RS485로 연결시에는 다음과 같이 연결합니다. | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:rs485.png?nolink |}} | ||
+ | |||
+ | ===== HMI의 프로젝트 통신 구성 ====== | ||
+ | |||
+ | 제조사는 <COMFILE> 모델명은 <MOACON>으로 하세요. | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:moasetting1.png?nolink |}} | ||
+ | ====== 모아콘 기본소스 ====== | ||
+ | |||
+ | 모아콘 스튜디오는 최신버젼을 사용하세요. | ||
+ | |||
+ | RS232C 채널0과 MODBUS-RTU를 활성화 시키는 최소한의 소스는 다음과 같습니다. | ||
+ | |||
+ | <code c> | ||
+ | #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(;;) { | ||
+ | // 무한루프 | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ===== 주의사항 ===== | ||
+ | |||
+ | * 모아콘은 단 한개의 채널에서만 모드버스 슬레이브를 지원합니다. 동시에 2개 채널에서 모드버스 슬레이브를 사용할 수 없습니다. | ||
+ | |||
+ | * 만약 여러분이 작성한 모아콘 소스에서 통신이 잘 안된다면, 위 소스를 이용해서 점검을 해보시기 바랍니다. 모아콘 프로그램에서 문제가 있을 경우에도 HMI와의 통신이 잘 안될 수 있습니다. | ||
+ | |||
+ | ===== coil함수, coilSet함수 ===== | ||
+ | |||
+ | 다음은 편의기능을 넣은 소스코드입니다. 코일영역 (비트 어드레스)을 쉽게 접근하기 위한, coil함수와 coilSet함수를 포함하고 있습니다. | ||
+ | |||
+ | * coil(어드레스) : 모드버스의 어드레스(비트영역)에서 한 비트를 읽어와서 0 또는 1을 반환 | ||
+ | * coilSet(어드레스,값) : 모드버스의 어드레스(비트영역)에 한 비트를 기입 (값은 0또는 1) | ||
+ | |||
+ | <code c> | ||
+ | #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); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 이 프로그램으로 아래의 동영상을 만들었습니다. | ||
+ | |||
+ | ====== 동작 동영상 ====== | ||
+ | |||
+ | <html> | ||
+ | <center> | ||
+ | <iframe width="560" height="315" src="https://www.youtube.com/embed/3eWGlo67NHI" frameborder="0" allowfullscreen></iframe> | ||
+ | </center> | ||
+ | </html> | ||
+ | |||
+ | [[http://www.comfile.co.kr/download/hmi/MOACON_TEST.zip|위 동영상에서 사용한 ComfileHMI용 프로젝트 파일]] <= 폴더를 하나 만들어서 그안에 압축파일을 풀어서 사용하세요. | ||
+ | |||
+ | {{ :comfilehmi:hmi_connection_moacon:moacontest2.png?nolink |}} | ||
+ | |||
+ | ====== 모아콘에서 실수사용예 ====== | ||
+ | |||
+ | [[https://blog.naver.com/cubloc/221075342066|HMI와 모아콘 실수 교환방법 ]] | ||
+ | |||
+ | |||
+ | [[comfilehmi:index#ComfileHMI_하드웨어|상위 페이지로 가기]] |