:: 진공에 대해 알려주마.

PLC ACCESS하기 (MELSECNET/H) 본문

진공/노하우

PLC ACCESS하기 (MELSECNET/H)

하이백 2020. 9. 5. 22:14
MELSECNET-G, MNET-G, NET-G 전부 동일한 명칭이다. 
H는 10H를 뜻하며 10M의 전송 속도를 가지고 요즘 사용되는 NET-G는 100M 속도를 의미한다. 
MNET, NET-G 카드는 PC당 4개까지 설치되며 ID가 강제 활당 된다.
H시리즈는 51~54, NET-G는 151~154로 활당된다. 간혹 이상으로 PC Slot을 옮기는 경우 ID는 재 할당되므로 프로그램에서 ID를 변경하여야 한다.

 

보통의 PLC에 접근하여 memory의 값을 가져오기 위해서 여러 가지 방법을 제공하는데 일반적으로 사용하는 장치를 이용하여 값을 가져오는 범용의 방법과 해당 메이커에서 유료로 제공하는 장치를 추가하여 값을 가져오는 전용의 방법을 제공한다.

MX Component를 PC에 설치하고 lan cable을 이용하여 PLC의 데이터를 가져오는 방법은 범용에 속하고 전용 통신 보드인 MELSECNET-H 혹은 MELSECNET-G Board를 설치하고 전용 라이브러리를 이용하여 PLC에 접근하는 방식을 전용이라 하겠다. 

당연하게도 범용은 비용이 적고 간단하지만 상대적으로 느리고 전용의 경우에는 고가의 비용을 지불하고 그 비용만큼 효율적이고 빠른 접근을 제공한다.

PC에 MELSECNET Board가 설치되었다면 굳이 MX Component를 사용하지 않고 board와 같이 제공되는 라이브러리를 이용하여 빠르게 값을 읽어 올 수 있다. 물론 MX Component를 설치하고 이것을 통해 board의 값을 읽어 올 수 있다. 이렇게 하면 속도는 조금 떨어지지만 PLC 전 영역의 값을 읽어올 수 있는 장점이 있다.  

MELSECNET Interface board를 PC에 설치하고 PLC에도 해당 기능을 하는 모듈을 설치하여 서로 optic cable을 연결하고 Link parameter를 설정해 주면 지정된 어드레스의 값을 실시간으로 내 interface board에 업데이트해준다. 우리는 내 interface board에 업데이트된 값을 읽어 내면 된다. 상호 간 업데이트는 하드웨어가 알아서 해주므로 전혀 관여할 필요가 없다.

MELSECNET INTERFACE BOARD

 


아래는 디스플레이 설비에서 사용하는 설비 간 통신 방식으로 MELSECNET Board를 사용하여 hand shaking signal을 주고받을 때 사용하는 신호를 모니터링하기 위해 만든 것이다. 

 

이것은 Index와 설비가 통신하는 내용을 확인할 수 있는 프로그램이다. 설비에 명확한 화면이 없어서 상호 간 주고받는 신호를 모니터링하기 위하여 만들었다. 물론 해당 hand shaking의 시나리오를 알고 있어야 이해할 수 있다.

이것은 MELSEC Board가 PC에 설치되어 있어서 굳이 MX Component가 필요 없고 이미 설치된 melsec dll을 이용하여 바로 PLC에(정확한 표현의 Net-H 보드에 업데이트된 PLC의 값들) 메모리 값을 가져올 수 있다. 

시작 주소만 지정하면 16개의 값을 가져와 화면에 표시한다. 주소와 항목을 외부로 내보내 config file로 구성하면 여러모로 유용할 것이다. 

 

//
// DLL Import하기. 필요한 함수를 가져온다.
//
[DllImport("MDFUNC32.DLL", EntryPoint = "mdopen", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern short mdOpen(short Chan, short mode, ref int path);

[DllImport("MDFUNC32.DLL", EntryPoint = "mdclose", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern short mdClose(int path);

[DllImport("MDFUNC32.DLL", EntryPoint = "mdsend", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern short mdSend(int path, short Stno, short Devtyp, short DevNo, ref short Size_Renamed, ref short Buf);

[DllImport("MDFUNC32.DLL", EntryPoint = "mdreceive", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern short mdReceive(int path, short Stno, short Devtyp, short DevNo, ref short Size_Renamed, ref short Buf);

...

//
// Define
//
const short m_CHANNEL = 51;		// for NET-H   // for NET-G 151
private int m_Path;

const short m_ownerStn = 0xFF;		// Read from owner station
const short m_otherStn = 0x102;		// Read from remote station

const short DevB = 23;			// Bit
const short DevW = 24;			// Word

private short m_ReadSize = 4;		// 4 Word

...

//
// 통신열기
//
res = mdOpen(m_CHANNEL, -1, ref m_Path);

//
// 통신닫기
//
res = mdClose(m_Path);

//
// 값 읽어오기
//
ret = mdReceive(m_Path, m_ownerStn, DevB, (short)(startAddr % 65536), ref m_ReadSize, ref readBuffer[0]);

 

ViewPIO4DRE.zip
0.14MB

'진공 > 노하우' 카테고리의 다른 글

GAS VALVE  (0) 2020.12.10
설비 제어 소프트웨어 엔지니어의 이해  (12) 2020.11.19
PHENOMENON 003  (0) 2020.08.26
PHENOMENON 002  (0) 2020.08.26
PHENOMENON 001  (0) 2020.08.20
Comments