SharedIT | 묻고 답하기(AMP)

PLC 연동

현장에 용접로봇이 있고, 이를 PLC로 제어합니다.

로봇이 1 Cycle의 용접이 완료되면 PLC가 신호를 보내주고, 이를 받아서 DB에 저장하였으면 합니다.

1Cycle 완료 신호이므로 단순 실적 Count용 자료입니다. 

H/W,  S/W의 전체 적인 구성을 어떻게 진행하여야 할지 문의드립니다. 



8개의 답변이 있습니다.

hgp33
  0 추천 | 3달 전

PLC 업체에서 일단 다이렉트로 서버 연결을 꺼리고 한다해도 그냥 포트만 열어주고 알아서 뽑아가라는 식입니다. 또한 PLC 특성을 보면 PLC에서 DB로 바로 연결되는지도 의문이며 서버에 단순 TCP통신 연결을 요청했지만 해주는 업체를 경험한 적이없습니다. 

여튼 PLC와 DB를 연결해줄 중간 매개체가 어떤식으로든 필요합니다. (PC와 처리프로그램)

중간 매개체가 거즘 PC일텐데 대략적은 H/W 구성은 이렇습니다.

PLC -> PC (Tcp , serial 통신) -> DB 서버 (Tcp)

PLC화면에서 1싸이클이 끝나고 카운트 되는 화면이 있으면 해당 메모리 번지를 알려달라하고 접근할 수 있도록 해달라 하셔야 합니다. 그게 아니고 신호를 준다고 하면 신호를 PC로 받아야 합니다. (요즘은 시리얼 거의 안쓰고 소켓을 통해 처리합니다. 해서 기본적으로 PLC와 통신 랜카드 , DB서버와 통신할 랜카드 총 2개가 필요합니다.) 어떤식으로든 PC로 신호가 들어온다면 이를 받아서 변환해 DB로 다시 쏴주면 됩니다. 

만약 PLC 업체에서 비협조적으로 나온다면..

위의 내용과 같이 1싸이클이 끝나는 시점에 카운트되는 화면이 없을경우에는 1싸이클 끝나는 시점에 설

비에서 접점을 따야합니다.

일반 릴레이는 단순 on/off 접점으로 신호를 받는거라 안되고 변환 릴레이를 사용하셔서 PC와 연결하셔

야합니다.

싸이클 끝나는 시점에 카운트가 되는 화면이 있다면 PLC 프로그램의 모니터링 기능을 이용해서 해당 메

리 번지를 찾고 이를 오픈시켜야 외부에서 접근이 가능합니다. (PLC 담당자 문의)

직접 통신프로그램을 만드실 예정이라면 카운트되는 화면이 있을경우 PLC의 IP를 알아내여 주기적으로

해당 메모리번지에 Read 신호를 보내야 값 리턴을 받아처리하시면 됩니다.

요점은 PLC업체에 1싸이클 완료시 신호를 보내주도록 요청 혹은 이를 판단할 수 있는 영역이 있다면 

해당 메모리번지를 알려달라고 하시면되고 PC에서는 PLC 정보를 어떤식으로 접근을 할지 구성하면

됩니다. (주기적 Read냐 signal wait냐) 그리고 이러한 정보를 DB에 저장하시면 됩니다. 

hgp33 | 3달 전

아참 PLC와 통신구현하실때 PLC 제조사 메뉴얼 꼭 참고하셔야합니다. 미쯔비시 , LS산전 그리고 모델에 따라서 명령어가 다릅니다. 또한 PLC로 부터 들어오는 패킷은 거의 역패킷입니다. 원하고자 정보의 바이트 확인하여서 뒤에서 부터 재조합해주셔야합니다. 

topkslee
  0 추천 | 3달 전

얼마전에 동일하게 요건이 있어 진행했는데요.

서버에 SNMP log 수집하는 것과 동일하게 PLC 관리 프로그램에도 이벤트 통신이 가능하도록 설계됩니다.

PLC 벤더에 문의하시면 어떤 포트, 또는 어떤 이벤트가 있는지 알려주실겁니다.

필요하면 이벤트를 발생시킬 수도 있구요.

그 이벤트를 수집하는 프로그램을 개발해서 DB에 insert 하시면 됩니다.  

명동쓰레빠
  0 추천 | 3달 전

plc 제어 소프트웨어에서 카운터 값을 데이터 베이스에 연결 하여 저장 해야 합니다.

plc제작 업체에 문의 해 보시길 바랍니다.

wansoo
  0 추천 | 3달 전

여러 가지 방식을 고려해 볼 수 있을 것 같은데요.

특정 포트로 해당 정보를 내 보내는 기능이 이미 탑재되어 있을 가능성이 있기 때문에...

용접 로봇 납품한 회사의 엔지니어와 협의해 보는 것이 우선적으로 필요할 것 같네요.

특정 포트로 값을 내보내고 있다면 그 값을 받을 수 있게 연결해서 처리하면 되는 내용이라 할 수 있겠고...


PLC도 하나의 컴퓨터 이기 때문에 프로그래밍을해서 구동을 하게 되겠는데...

직접 구동하는 소프트웨어를 만들어 PLC에 집어 넣을 수 있을 경우라면,

구동하는 소프트웨어를 만들때 RS-232나 I2C, SPI 등의 통신 방법으로 신호를 보내 줄 수 있게 만들어 집어 넣어서 PC와 직접 연결해서 신호를 받아 온다거나... 아두이노, 라즈베리 등의 기기로 연결해서 신호 처리를 할 수도 있겠고요.


이것도 저것도 아니라면...

전기적인 방법이나

물리적인 방법으로 접근해야 하겠고요.

만약... 릴레이나 스위치 등을 통해서 한 사이클에 대한 전기적 신호를 얻을 수 있다면...

라즈베리파이 GPIO 포트와 해당 릴레이나 스위치를 연결해서 스위치  ON/OFF에 대한 신호를 얻어서 처리하면 될 것 같고요.


앞에 방법이 모두 안된다면...

초음파 센서 등을 이용해서 한 사이클이 끝날때마다 행해지는 액션을 감지해서 감지한 액션을 기준으로 카운트를 하면 될 것 같고요.


초음파 등의 센서를 라즈베리 파이 같은 기기에 연결시켜서 한사이클 완료한 것을 감지해 내고, 라즈베리파이에서 DB에 직접 연결해서 처리하면 되겠네요.

라즈베리 파이에서 파이썬을 기본적으로 지원하기 때문에...

MySQL, MS-SQL이라면... pymysql, pymssql 라이브러리를 설치해서 DB에 접근할 수 있겠고...

라즈베리파이에서 Oracle DB에 접근하는 문제가 까다로운 문제일 수가 있겠는데...

Oracle에서 제공하는 java 기반의 오라클 클라이언트인 sqlcl을 이용한다면, 조금 번거롭긴하지만 큰 문제없이 Oracle과 연동해서 데이터 처리를 할수 있겠고요.

Genghis Khan
  0 추천 | 3달 전

https://www.sharedit.co.kr/board/solutions

개발과 시스템 도입 부분이라 솔루션 상담실에 요청 하시는게 좋을것 같습니다.

차바라기
  0 추천 | 3달 전

이거는 개발 업체가 만들어야 할듯합니다.~솔루션상담실 견적게시판에 문의 해보세요

에이스퐝
  0 추천 | 3달 전

이건 말그대로 PLC라.. 로직을 짜는거라 솔루션상담실을 통하는게 좋을 것 같습니다.



앵그리파파
  0 추천 | 3달 전

왠지 숙제를 대신 해주는 느낌적인 느낌은 뭘까요? 저도 궁금합니다. 알려주세요. 여러분 ~~~

앵그리파파 | 3달 전

PLC에 데이터베이스 통신 기능이 내장되어 있는 경우(일반적이지 않음) 이를 데이터베이스에 직접 연결할 수도 있습니다. 그렇지 않다면, PLC와 데이터베이스 간의 통신을 용이하게 하기 위해 게이트웨이와 같은 중간 장치가 필요할 수 있습니다.

PLC<->DB 또는 

PLC <-> (게이트웨이) <-> DB

완료 신호를 받아 DB에 밀어넣어주는 게이트웨이 역할을 할 수 있는 SW와 신호를 저장할 테이블는 별도로 구성해줘야하고 필요에 따라 데이터 형식 변환도 해야 합니다.