2023. 3. 14. 20:41ㆍplc 시뮬레이션 제작 (Unity)
작업일기 4일차 (23.03.12 일요일) 완성한줄 알았던 .Net winform 코드 수정.
전날 술을 오지게 먹고와서 아침에 일어나긴 했지만 제정신이 아니었다.
이제 거의 끝이 보였기에, 그래도 꾸역꾸역 마무리 작업에 들어갔다.
어제 말미에 시뮬레이터에서 서버로 data를 전달하고, 서버에서 data를 받을때, 내가 미리 나눠놨던 인덱스 값(bit)에 맞게 값이 배치되지 않고, word값으로 한번에 날아와서 넣어지는 문제를 확인했었다.
.Net winform 만 가지고 시험구동했을때는 문제없이 동작하는 것처럼 보였는데, 시뮬레이터와 같이 사용하니 문제가 생긴다는 것을 알게되었다. 그래서 다시 winform으로 돌아와서 중단점을 잡아가며 변수에 어떤 값이, 어떻게 들어가는지 확인해 보았다.
기존에 짠 코드의 의도는 유니티에서 서버로 data가 전달되면, 인덱스 값에 맞는, 해당 Row에 들어가게하고, Row 값의 인덱스에 맞춰서 gx-works2로 data를 그대로 보내는 방식이었다. 하지만 정작 시뮬레이터를 돌려보니, 시뮬레이터에서 보내는 X입력 값이 워드값으로 바뀌어 10진수로 winform에 0번, 1번 인덱스에 모조리 들어갔었다.
유니티에서 서버로 전달하는 data값을 서버에서 수신할때는 data가 워드값을 가지고 있어서, 이걸 받아서 이진수화 시킨뒤 배열에 넣고, 배열을 DatagridView 인덱스 값에 맞춰서 다시 넣어주는 처리 과정이 필요해 보였다.
코드는 중첩 for문을 사용하였다.
날라오는 값을 임시 저장소에 저장하고, 10진수 형식의 임시저장소 정수값을 이진수화 시킨뒤, 임시 문자열에 저장했다. 그리고 문자열의 자릿수를 인덱스값으로 정해서 일종의 비트 형식으로 만든뒤, 임시 배열에 넣고, wfToPlc Row의 인덱스 값에 맞춰서 임시 배열의 값을 넣었다.
그래서 유야무야 해결되는 듯 했는데, 또 문제가 발생하였다.
시뮬레이터에서 전송하는 x입력 배열에서 8번째 변수부터는 값을 0에서 1로 변동시키는 것은 정상적으로 동작하는반면, 1에서 0으로 바뀌었을때는 정상적으로 서버값에 반영되지 않았다.
0에서 1로 값이 바뀔때는 0 -> 1000 0000 로 되어서 함수가 정상적으로 작동하는데,
1에서 0으로 바뀔때는 1000 0000 -> 0 이 되면서 값이 변동하지 않았다고 판단하는 것이었다.
이는 임시 저장소를 임시 문자열로 만드는 코드 쪽에 PadLeft를 추가해 주는 것으로 해결하였다.
그리고 실제 plc와 시뮬레이터 컨베이어의 속도차이 때문에, 실제 plc에서는 공작물이 끝까지 이동하는 래더 프로그램을 짰는데도, 시뮬레이터에서는 도중에 멈추는 경우가 발생하였는데, 그러한 문제를 해결하기 위해 배출 실린더를 기준으로 공작물이 그것보다 더 멀리가면(배출이 되지 않는 공정일때), Y출력 값과 무관하게 컨베이어 끝까지 공작물을 이동시키는 것으로 수정하였다.
작업 4일차인 오늘로 기존 시뮬레이터 프로그램 개선을 완료하였다.
.Net winform을 서버로 사용하는 Modbus 통신 프로토콜을 이용하여, gx-works2 와 유니티 시뮬레이터를 연결할 수 있었다. 그리고 이전에는 Mx-component가 64bit .dll을 지원하는 v5 이상 버전일때만 시뮬레이터가 정상 작동했던 것을 개선하여, 배포 버전인 v4에서도 동작할 수 있도록 하였다.
시뮬레이터 제작을 완료했으니 이제는 이 프로그램을 어떻게 배포할지 생각해봐야겠다.
'plc 시뮬레이션 제작 (Unity)' 카테고리의 다른 글
이전에 만들었던 UNITY 3D, MODBUS, PLC 시뮬레이터 링크 저장용 (0) | 2023.06.24 |
---|---|
(Unity 3d) Plc시뮬레이터 작업 일기 ④ Unity 스크립트 수정 (2) | 2023.03.14 |
(Unity 3d) Plc시뮬레이터 작업 일기 ③ Visual Studio .Net winform제작 (0) | 2023.03.13 |
(Unity 3d) Plc시뮬레이터 작업 일기 ② modbus 통신 연결로 전환 (0) | 2023.03.13 |
(Unity 3d) Plc시뮬레이터 작업 일기 ① 기존 제작 프로그램 (0) | 2023.03.13 |