Table of Contents
Modport를 이용한 ComfilePi 어플리케이션
MODPORT는 데이터 수집용 필드 I/O 제품입니다. ComfilePi와 결합하여 산업현장의 각종 데이터 수집및 제어를 할 수 있습니다. 또한 모듈형식의 슬롯 보드로 구성되어 있어 사용자가 필요에따라 모듈을 확장하여 사용할 수있습니다.
본 장에서는 ComfilePi를 이용하여 MODPORT의 모듈 사용법, 제어, 상태값을 표시하는 내용을 다루고 있습니다.
구성및 인터페이스
- Modport는 RS485로 통신합니다. ComfilePI에 RS232-TO-RS485 컨버터를 사용해 통신합니다.
- Modbus RTU 프로토콜를 사용합니다.
- 보레이트도 57600,8,N,1 고정입니다
- 각 모듈별로 고유의 Start address가 있습니다. 모듈의 시작 어드레스와 펑션코드
- 모듈의 로터리 스위치로 Slave ID를 설정할 수 있습니다.
예제1) In/Output 제어
- 사용모듈 : MD-DIDC8-디지털 입력, MD-DORL8- 릴레이 출력
- MD-DIDC8 : SlaveID → 1, StartAddress → 0~7
- MD-DORL8 : SlaveID → 1, StartAddress → 3200 ~ 3207
- 예제프로그램 다운로드 ex1_modport_io_example.zip
위 소스는 참고용으로 배포합니다. 저희 회사는 이에 대한 기술지원은 제공하고 있지 않은점 양해부탁드립니다.
Serial통신 설정은 아래와같이 프로그램합니다. ComfilePi의 COM0은 /dev/serial0로 설정합니다.
string portName = Environment.OSVersion.Platform == PlatformID.Win32NT ? "COM1" : "/dev/serial0"; SerialPort port = new SerialPort(portName, 57600); port.ReadTimeout = 50; port.WriteTimeout = 50; port.Open();
MD-DORL8 출력 비트값을 제어합니다.
master.WriteMultipleCoils(1, 3200, outputs);
MD-DIDC8 입력 상태값을 읽어옵니다.
var inputs = master.ReadCoils(1, 0, 8);
예제2) ADIn/Temp
- 사용모듈 : MD-ADIN4- AD 입력, MD-THRT4- 온도센서
- MD-ADIN4 : SlaveID → 1, StartAddress → 40101 ~ 40104
- MD-THRT4 : SlaveID → 1, StartAddress → 40301 ~ 40304
- 예제프로그램 다운로드. modport_adin_temp_example.zip
MD-ADIN4 아날로}}그 상태값을 읽어옵니다.
var AD_CH = master.ReadHoldingRegisters(1, 100, 4);
MD-THRT4 온도값을 소수 1자리와 영하(-)의 값으로 읽어옵니다..
var TEMP_CH = master.ReadHoldingRegisters(1, 300, 4); double[] Ftemp = new double[4]; for (int i = 0; i < 4; i++){ Ftemp[i] = Convert.ToDouble(TEMP_CH[i]); if ((Ftemp[i] > 0x8000) ){ Ftemp[i] = Ftemp[i] - 0x8000; Ftemp[i] = Ftemp[i] * (-1); } Ftemp[i] = Ftemp[i] / 10.0; }



