페이지

2016년 3월 17일 목요일

pvbrowser를 이용해서 무엇을 하고 싶은가?

서론 겸 푸념...

오픈소스 프로그램인 pvbrowser를 이용하여 무엇을 하고싶은가? 다소 거창할 수 도 있지만 목표를 세우고 진행하는 것도 좋다.
처음 이 프로그램을 접했을 때에는 도무지 이해도 않되고, 어떻게 해야 할지 방향도 잡히지 않았다. 참조할 수 있는 거라고는 영어로 되어 있는 오래된 메뉴얼과 지금 생각해 보면 정말 요긴한 pvsexample 코드... 시간만 충분하다면 샘플 코드를 잘 들여다 보면 답이 보인다. 물론 메뉴얼도...OTL

리눅스파워 유저라면 아마 더 빠르게 접근할 수 도 있을 것이다. 기본적으로 LINUX에서 동작하던 것을 WINDOW OS로 포팅한 것 같은 느낌도 많이 들지만, 윈도우에서도 잘 동작한다. 설정하는 방법도 매우 간단하고...다운로드 페이지에 설명되어 있다.(인고의 시간을 많이 보냈다. 지금 생각해 보면 진짜 아무것도 아니지만, 이런 것들이 필요하면, 너가 열심히 공부해 하는 오픈 소스 생각인지는모르겠지만...)

사용자 위젯을 사용하고 싶다.... pvbrowser 소스코드를 Qt를 이용하여 컴파일하여 사용하는 것이 시간을 버는 방법이다. 배포, 설치판과 동일한 버전을 사용한다면 괜찮을 지도 모르지만 여하튼 본인의 경우 아직 그런 쪽은 초보이고, 본업도 아닌지라 속도도 별로 나지 않는 상황이다.

둘러보기

자, 그럼 pvbrowser 오픈 소스를 이용하면 어떤 것들을 할 수 있는지 알아보자. 어느 선까지 할 수 있는지 둘러보는 것도 나중에 절망하는 것 보다 나을 수도 있다.

그림 1. --
그림 1은pvbrowser에서 실행되고 있는 장비 제어화면이다. 화면이 별로 보기 좋지 않더라도 pvbrowser 프로그램을 비난하지는 말기 바란다. GUI 화면을 작성한 사람의 능력, 시간 투자에 비례해 화면은 점점 좋아진다. 그림 1은 inkscape를 이용하여 SVG 이미지를 만들어 실행시킨 화면이다. SVG 파일을 생성할 때 만들어지는 tag를 pvserver에서 변경하거나. 읽어들여 원하는 조작을 수행하도록 할 수 있다. 즉 버튼, 아이콘,... 능력에 따라 거의 위젯을 사용하지 않아도 충분히 GUI 화면을 만들 수 있다. 더 큰 장점은 SVG 자체가 vector 그래픽 방식이란 점이다. 창의 크기가 변경되어도 아무 문제없이(문제는 글자...) 잘 쓸 수 있다. .
참고로, 이 서버프로그램은 LS산전 XGI PLC에서 485 모드버스 방식으로 통신을 수행한다. 문제없이 잘 작동한다. XGI 시리즈의 경우 통신설정도 매우 쉽다. 약 400개의 레지스터 영역을 스캔, 연속적으로 읽는 경우는 약 240개의 레지스터(240x2 =480byte)를 연속적으로 읽어들이고 있는데 한번도 통신쪽에서 문제가 발생한 적은 없다
통신 사이클 정의시 한번에 통신할 수 있는 데이터는 120 Word(240byte), 정확하게는 통신 패킷의 길이가 250이상이면 데이터를 읽어버린다. 즉 문제가 발생한다는 것이다. 이것은 rlModubus 소스에서 변수 어레이를 이 이상 잡아 높지 않아서 발생하는 문제인 것 같다. 여하튼 패킷의 길이는 240byte 이하로 잡는 것이 정신 건강에 이롭다... 설명이 틀릴 수도 있습니다...

그림 2.그래프, 테이블 관련
그림 2는 pvbrowser 에서 지원하는 QwtPlot 위젯을 이용한 2차원 그래프와 테이블을 사용한 경우 이다. 2차원 그래프의 경우 여러개의 graph를 한꺼번에 표시할 수 있다. 이 경우 시인성은 많이 떨어진다. 필요한 경우 실시간 데이터 플롯도 잘 된다. 테이블의 경우 체크박스도 셀에 넣어줄 수 있다. 아직 사용방법을 잘 몰라 이 정도 밖에 되지는 않지만...

그림 3. SQL 사용예
그림 4. SQL데이터 테이블 사용 예
그림 3, 4 는pvbrowser에서 지원하는 SQL 관련 명령을 이용한 화면이다. 아직 이 부분은 많이 미진한 것 같다. 필요한 경우 아직 게을러서 시도는 해보지 않았지만, SQL 만 전담하는 서버 프로그램을 하나 만드는 것이 속 편할 것 같다. 본인이 SQL은 완전 초보여서 너무 많은 데이터를 처리하다보니 랙이 걸릴 수 도 있다. 하지만 속도도 느리고 많은 데이터를 읽어 들 일 경우 먹통이 된다....OTL
사용하는 DB는 mariaDB... mySQL을 사용하다 mariaDB로 DataBASE를 구축했더니, 뭐가 뭔지 모르겠다. mySQL도 거의 초보수준인데...
MariaDB를 관리하기 위해 사용하는  Heidi SQL도 손에 익지 않아서 그런지 이쪽은 영 재미없다... 어쨌든 Qt mySQL 라이브러리르 사용하기 때문에 sql을 사용하기 위해서는 project의 pro 파일에 QT +=sql 구문을 넣어주면 사용할 수 있다. 다시 한번 말하지만 pvserver 프로그램에서 지원하는 sql 함수는 매우 제한적이다. 단순히 sql Database에 데이터를 저장만 할 용도라면 사용하는데 불편은 없지만, sql 쿼리를 사용하여 데이터 처리를 하고자 한다면...OTL...

그림 5. 기타 위젯들 사용 예
그림 5는 pvbrowser에서 지원하는 위젯을 이용하여 만든 화면이다 그럭저럭 볼 만한다. 배경색 바꾸고 스케일바 간격 조절하고, 기타 등등... 아마 지금보다 훨씬 보기 좋은 화면을 만들 수 있을 것이다. 급하게 만들고, 제대로 작동하는 것만 확인하고 귀차니즘 때문에 더이상 손을 대고 있지 않은 상황이다.

그림 6. 알람 사용 예
알람 쪽은 pvsexample에 있는 코드를 좀 더 분석해 보아야 겠다. 목표는 SQL에 데이터를 저장하고 필요한 경우 데이터를 필터링하는 식으로 하고 싶은데... 아, 이상과 현실은 참 먼것같다...하지만 인내하자..

무엇을 하던, 익숙해지고, 파고들면 할 수는 있지만, 쉽게 찾아 볼 수 있는 자료가 없다. 본인 생각에는 중급자 이상을 대상으로 메뉴얼이 만들어 진 것이 아닌가하는 생각이 든다. 하지만 조금만 노력하면 활용할 수 있는 범위는 넓다.

댓글 없음:

댓글 쓰기