미쓰비스 iQ-F 시리즈 FX5UC 모델 READ 불가ㅠㅠ 도와주세요!!!
- 으흠
- 152
- 9
PLC 기종 | 미쓰비시 / iQ-F 시리즈 / FX5UC |
---|
안녕하세요. 가입하고 첫글입니닷 앞으로도 잘 부탁드리겠습니다^^
현재 iQ-F 시리즈 FX5UC, 이더넷, 바이너리로 통신으로 데이터 읽어오기 프로그램을 개발중입니다.(C#)
PLC 와 연결은 됐지만 READ 메세지를 보내도 읽어오는 데이터가 없습니다ㅠㅠ 데이터가 있는건 확실합니다!
아래는 제가 메뉴얼을 참조하여 작성한 전송 프로토콜입니다.
혹시 잘못되어 수정할 부분 알려주시면 감사하겠습니다!
//arrHeader[0] = (byte)(Convert.ToChar(0X35)); //5 서브헤더
//arrHeader[1] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[2] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[3] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[4] = (byte)(Convert.ToChar(0X30)); //0 네트워크번호
//arrHeader[5] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[6] = (byte)(Convert.ToChar(0X46)); //F 요구대상국번
//arrHeader[7] = (byte)(Convert.ToChar(0X46)); //F
//arrHeader[8] = (byte)(Convert.ToChar(0X46)); //F 요구대상유니트I/O번호
//arrHeader[9] = (byte)(Convert.ToChar(0X46)); //F
//arrHeader[10] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[11] = (byte)(Convert.ToChar(0X33)); //3
//arrHeader[12] = (byte)(Convert.ToChar(0X30)); //0 요구대상멀티드롭국번호
//arrHeader[13] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[14] = (byte)(Convert.ToChar(0X31)); //1 요구데이터길이
//arrHeader[15] = (byte)(Convert.ToChar(0X38)); //8
//arrHeader[16] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[17] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[18] = (byte)(Convert.ToChar(0X30)); //0 1.리저브? 2.예비?
//arrHeader[19] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[20] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[21] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[22] = (byte)(Convert.ToChar(0X30)); //0 1.예비? 2.커맨드?
//arrHeader[23] = (byte)(Convert.ToChar(0X31)); //1
//arrHeader[24] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[25] = (byte)(Convert.ToChar(0X34)); //4
//arrHeader[26] = (byte)(Convert.ToChar(0X30)); //0 서브커맨드
//arrHeader[27] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[28] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[29] = (byte)(Convert.ToChar(0X30)); //0
// // 요구데이터부
//arrHeader[30] = (byte)(Convert.ToChar(0X35)); //5 디바이스번호(7000)
//arrHeader[31] = (byte)(Convert.ToChar(0X38)); //8
//arrHeader[32] = (byte)(Convert.ToChar(0X31)); //1
//arrHeader[33] = (byte)(Convert.ToChar(0X42)); //B
//arrHeader[34] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[35] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[36] = (byte)(Convert.ToChar(0X41)); //A 디바이스코드(D)
//arrHeader[37] = (byte)(Convert.ToChar(0X38)); //8
//arrHeader[38] = (byte)(Convert.ToChar(0X30)); //0 디바이스점수(1점)
//arrHeader[39] = (byte)(Convert.ToChar(0X31)); //1
//arrHeader[40] = (byte)(Convert.ToChar(0X30)); //0
//arrHeader[41] = (byte)(Convert.ToChar(0X30)); //0
댓글 9
설정과 오픈프로젝트는 잘 참고해보겠습니다 감사합니다 :)
1) 단지 물리적인 이더넷케이블 연결인지
2) PING 응답을 받은 상태까지의 연결인지
3) C#프로젝트 디버깅상태에서 요구패킷을 전송했을 때 오류메시지를 받은 상태까지의 연결인지
정확한 언급이 없어 상황판단이 안된다는 것이었습니다.
현재 502번 포트와 연결되어 있습니다. 혹시 SLMP 가 아닌 MODBUS 에 연결되어 있어서 READ 가 안되는 것일까요,,?ㅜㅠ
4999번 포트로 테스트해본 결과 해당 포트는 socket connection 이 되지 않습니다,,
SLMP 4999포트는 HMI와 접속하고 있으므로 추가로 PC와는 통신할 수 없으니
SLMP connection을 하나 더 추가하고 포트 4998로 통신하면 될 것같습니다.
PLC와 연결되었는데 어디까지인지 알 수 없네요.
SLPM connection 설정은 GX-Works3 프로젝트에서 Project - Parameter - Module Parameter - Ethernet Port - Basic Settings - External Device Configuration에서 할 수 있습니다.
"github c# SLMP"로 검색하면 학습할 수 있는 오픈프로젝트를 받을 수 있으니 참고하시기 바랍니다.