안녕하세요. 도움이 되고자 팁을 작성하려고 해요.
경력이 얼마 안되어 부족한 부분이 있을 수 있어요.
■ 주제 : GX Works2로 시리얼통신 프로그램 연습하기
■ 모듈
- Q63P DC24V전원
- Q03UDECPU
- Q38B 베이스
- QJ71C24N-R2(또는 QJ71C24N) 시리얼통신모듈
- 시리얼 통신을 할 모듈 : Leuze RF리더기 RFM62SL200
■ 프로토콜 확인
- 시리얼 통신을 하기 위해서는 제일먼저 시리얼 통신을 할 모듈의 매뉴얼(사양서)을 찾는 것 입니다.
- 찾는방법 : 구글링(http://www.google.co.kr), 제조사 홈페이지에서 다운받기, 모듈 구입업체에 문의하여 받기
- 찾은결과
- 매뉴얼을 찾아보니 송신 프로토콜이 위와 같네요.
송신프로토콜 : <STX>+<CR><LF>
수신프로토콜 : <STX>수신내용<CR><LF>
■ 아스키코드표 참조
- 구글에서 아스키코드 치면 많이 나와요. 원하는거로 보시면 돼요.
- 아래 표를 참조해서 송신프로토콜을 HEX값으로 바꿔보았어요.
- HEX값으로 바꾼 송신프로토콜 : 02 2B 0D 0A
이제 실제로 연결을 해야합니다.
■ D-Sub 선 준비
- PLC 시리얼통신모듈에 연결할 D-Sub 커넥터 통신선을 준비해야합니다.
- 4,6번과 7,8번은 Jump로 연결해줍니다.
- 2,3번은 Direct 또는 Cross로 연결해줍니다.(모듈마다 다름. 다이렉트일수도 있고 크로스일수도 있고)
■ GX Works2 파라미터 설정하기
- New Project를 하시고, PLC Parameter를 설정합니다.
- I/O Assignment에서 Read PLC Data로 연결된 모듈의 정보를 불러오고요.
- 저같은경우 시리얼통신모듈을 2개 꽂아놔서 2개가 검색되었어요.
- Start XY를 원하는 값으로 설정합니다.
■ Intelligent Function Module 설정
- 인텔리전트 모듈에서 마우스 우측 클릭 후 New Module을 눌러요.
- 시리얼통신 모듈을 선택하고요.
- 모듈 이름을 맞게 선택하고요.
- 꽂혀있는 슬롯번호에 맞게 넣어줍니다.
- CPU옆칸부터 0,1,2... 순서예요.
- 좌측에 QJ71C24N-R2를 클릭하시고, Switch Setting을 눌러요.
- 매뉴얼에 나와있는대로 통신설정을 해줍니다.
- Communication protocol setting을 Predefined protocol로 바꿔줍니다.
- Various_Control_Spec에서 Word/byte units spec을 1:Byte Unit으로 변경해줘요.
- 메뉴에서 Tool - Predefined Protocol Support Funcion - Serial Communication Module을 선택합니다.
- 왼쪽상단의 New 아이콘을 눌러주세요.
- 그리고 아래에 Protocol No의 Add를 눌러줘요.
- Type에서 Add New를 눌러요.
- 그리구 OK를 누릅니다.
- 송신프로토콜을 입력하기 위해 Element Unset을 눌러줍니다.
- 아래에 Add New를 누르고 Static Data를 선택하고 OK를 누릅니다.
- Element Name에는 아무거나 쓰시고
- Code Type은 Hex를 선택
- Setting Value는 Hex값 송신프로토콜을 적어주어요.
- OK를 누릅니다.
- Close를 누릅니다.
- 수신프로토콜을 입력하기 위해 Element Unset을 눌러요.
- Add New를 누르고 Non-conversion Variable을 선택하고 OK를 눌러요.
- Element Name에는 아무말이나 쓰시고요.
- Fixed Length는 고정값인지 변하는값인지 선택하고요.
- Data Length는 수신데이터길이를 써줍니다. 넉넉하게 쓰셔도 돼요.
- Receive Data Storage Area는 수신데이터 영역을 써줍니다.
- 결론. 수신한 데이터가 D100~D127에 저장돼요.
- OK를 누르고 Close를 누릅니다.
- Module Read/Write 메뉴에서 Write to Module을 합니다.
- 만약 에러가뜨면? PLC 통신설정을 했는지 확인하세요.(빼먹었네용)
- 위와 같이 이더넷(랜선) 또는 USB로 연결하면 돼요.
■ 프로그램 짜기
- 에 앞서 시리얼통신모듈을 Slot 0번(CPU의 바로옆)에 꽂았다면,
- 시리얼통신모듈 에러는 X0E 입니다.
- 에러리셋은 Y0E를 ON하면 에러리셋됩니다.
- 먼저 사전정의프로토콜에 숫자1을 MOV합니다.
- D2는 어떻게 결정되는지 아래에 보시면 돼요.
- 자세한 내용은 매뉴얼을 참조해주세요^^
- M100은 그냥 통신 수신할 때 테스트하려고 아무거나 쓴거고요.
- G.CPRTCL이라는 명령어가 위에서 설정했던 것을 실행하는 명령어예요.
- U0은 슬롯번호(CPU바로옆부터 0,1,2...) 정확히 말하자면 선두어드레스 번호예요. (예: 선두어드레스가 00C0이면 UC)
- K1은 위에서 설정했던 Protocol No를 뜻합니다.(아래 그림 참조)
- D0은 에러코드가 저장되고요. D0을 다른것으로 바꾸시면 사전정의프로토콜 D2도 같이 바꾸셔야해요.
- M20은 수신이 정상적으로 완료되었을시 한번 ON 됩니다.
■ 프로그램 최종
- 끝입니다. 딱 2줄~
- M100을 누르면 시리얼통신을 합니다.
■ 실행해보면..
Alt키 + O + M + B 를 눌러서 Device/Buffer Memory를 확인해보면
- 위와같이 수신한 값이 D100이후로 저장되는 것을 볼 수 있습니다.
■ 수신 받은 데이터를 가공하는 것만 남았습니다~
이 글 보시면서 따라하시는분이 있을까 모르겠네요 ^^
제가 찾을 땐 정보가 워낙 없어서..
막막하고 또 막막하고 물어볼 곳도 없고 해서 매뉴얼만 들여다 보느라고 답답했었는데요...
시리얼통신에 막막한 분께 도움이 조금이나마 되었으면 합니다.
지적할 부분은 지적해주시면 감사하겠습니다.
^^
- 17.4.14 추가
485 배선 방법
1번 5번 점프선 연결
3번 7번 점프선 연결
485 배선 연결방법입니다.
댓글