[설비통신] 지멘스설비(840D PL)와의 통신 문제

2020. 12. 8. 10:47프로그래밍/기타등등

반응형

기록용

 

지멘스 설비모델: 840D PL

 

히스토리

설비가 오래된 모델이라 PLC모듈이 없음.

보통 지멘스설비에 통신모듈로 CP343-1 모듈을 사용하는데  
이 설비(가공기)는 오래된 설비라 PLC가 없어서 PCU50이 PLC역할을 대신 함. 

 

설비의 데이터를 가져오기 위해서 PCU50에서 설비와 통신해서 데이터를 수집하는 데몬을 돌리고 있는데

Prodave 라이브러리를 사용해서 MPI통신으로 가져옴.

 

문제

가끔씩 설비와 연결이 안되는 현상 발생. 데몬을 재시작해도 연결이 안됨.

Error Code: 00CA

Error Message: 'no resources available'

 

-해결을 위한 시도 1

 의심: C++로 작성된 dll에서 메모리 누수

 

 Prodave라이브러리 참조해서 사용할 때 프로그램에서 바로 참조해서 쓰는 것이 아니라

 C++로 CLR 만들어서 프로그램에서 dll로 참조해서 사용. (C#데몬프로그램 → C++CLR.dll → w95_s7.dll) 

 

 여기서 C++로 작성된 CLR역할을 하는 dll에서 메모리 누수가 의심되어 C++CLR.dll 을 거치지 않고 

 w95_s7.dll 을 직접 참조하는 것으로 수정. (connection하는 부분만.)

 

 결론: 참조는 잘 하는데 여전히 에러발생.

 

-해결을 위한 시도 2

 의심: PCU50과 설비간의 통신세션 문제  

 멜섹 Q시리즈 PLC의 설정중에 세션관리하는 기능이 있는데 
 일정기간동안(?) 사용되지 않는 세션에 대해서 알아서 정리해주는 기능있다고 함. (Session Closing) 

 CP343-1 의 셋팅중에 세션관리하는 기능이 있는지 확실하지는 않지만

 어쨌든 이 설비에는 PLC모듈이 없기때문에...

 설비내의 Controller역할을 하는 것과 PCU50사이의 이더넷통신이 어떻게 이루어지는지에 대해서 확인해봐야한다.

 

 결론: 840D PL, PCU50, MPI통신 메뉴얼의 네트워크 통신 쪽을 면밀히 살펴보아야한다..

반응형