본문 바로가기
PLC 자동제어 학습/CiMon Scada 수업

CiMon에서 경보를 울리는 법과, 스크립트 작업을 하는 법

by 인터넷떠돌이 2017. 10. 23.
반응형

안녕하세요?


어느덧 PLC 자동제어 과정을 배우면서 3주의 마지막 수업을 정리하는 단계까지 왔는데, 여기서는 CiMon에서 경보라고 해서, 무슨 기계나 공장을 돌리면서 이상이 발생하면 경보를 울려야 하는데, 그런 경고신호를 울리는 것이 바로 경보이며, 더 다양한 작업이라고 해야 할까요? CiMonD가 기본적으로 제공해 주지 않는 기능을 구현하기 위해서는 스크립트라는 작업을 해야 하는데, 이번 포스팅에서는 그 일부를 소개하고자 합니다.




먼저 새로운 프로젝트를 생성한 다음, Main과 ALARM이라는 페이지를 만들도록 합니다. 

 


먼저 태그를 만들어서 이름을 DIG라고 지정을 하고, 그 다음에는 경보태그로 지정이라는 항목을 지정하면 됩니다. 그러면 이 경보태그가 작동을 할 경우 어떤 동작을 할 것인지 '명령식'으로 지정을 할 수 있으며, 또한 상황에 걸맞는 문구를 띄울 수 있습니다. 



그리고 다음은 이전에 했던 적이 있는 것처럼, 토글 스위치 역할을 하는 버튼을 만들어 주도록 합니다. 당연 ON일때는 OFF를 할 수 있는 도형이 나타나게 하고, 반대로 OFF일때는 ON역할을 할 수 있는 도형이 나타날 수 있도록 합니다.



그렇게 CiMonD 상에서 다음과 같이 만들었습니다. 이제 제대로 동작을 하는 지 여부를 알아보아야 하니까, CiMonX를 실행시켜 보도록 합니다.



경보를 울리는 버튼을 누르면, 경보창이 열리는 것을 확인할 수 있었습니다. 그리고 화면 아래를 보면 경보가 울리면 붉은색으로 글씨가 뜨는 것을 볼 수 있는데, 이게 경보태그를 지정하면서 적어놓은 문구가 뜨는 것을 볼 수 있었습니다.



다음은 경보요약이라는 항목을 CiMonD에서 추가를 하도록 합니다. 여기서는 일단 여기서는 어느정도 경보에 관계된 정보가 보이기는 하지만, 이것도 모든 정보가 다 보이는 것이 아닙니다.



이 정도로 크게 키워야만 제대로 된 정보가 다 나오는 것을 볼 수 있었습니다. 이제 이 경보요약을 가지고서 어떻게 설정하는 지를 알아보겠습니다.



경보 요약에 새로운 것을 추가하도록 합니다. 그리고 나서 이런 설정이 제대로 동작을 하는 지 여부를 CiMonX에서 실행을 시켜 보았습니다.




먼저 CiMonX에서 실행을 시켜 보도록 합니다.



이제는 제대로 경보요약에 경보가 울리고 해제가 된 이력이 모두 나오는 것을 볼 수 있습니다. 아무튼 이걸로 디지털 태그의 경보는 어떻게 하는 데 성공했습니다. 이제 아날로그 태그를 가지고서 경보를 울리는 것을 한번 실습해 보아야 합니다.



먼저 일련의 과정을 거치면서 아날로그 태그의 경보에 대해서 설정을 하는데, 여기서 가장 중요한 것이 경보감도입니다. 우선 이 경보감도는 0이라면 아마 바로 온도가 70도가 되면 그 즉시 경보가 울리겠지만, 2라고 주면 72.9가 될때까지도 경보가 울리지 않습니다. 다만 73가 되는 순간 울리는데, 이 처럼 감도의 숫자가 크면 클수록 느슨하게 감지를 한다고 보시면 됩니다. 



다음으로는 온도가 내려가는 경우인데, 60도를 기준으로 경보감도가 2라고 하면, 59가 되었다고 바로 경보가 해제되지 않습니다. 2를 초과해서 내려간 온도인 57도가 되어서야 경보가 해제되는 것을 볼 수 있었습니다. 이처럼 경보감도가 있으면, 감소숫자만큼 더한 수치를 초과해야 경보가 울리고, 해제가 될 때는 경보감도의 숫자를 뺀 수치 미만이 되어야만 경보가 해제가 된다는 특징이 있습니다.



그리고 나서 태그값을 하나 CiMonD에서 추가한 다음, 이번에는 방금 추가한 아날로그 경보태그의 값을 변경할 수 있도록 설정을 하도록 합니다. 그리고 나서, CiMonX에서 제대로 동작을 하는 지 여부를 살펴 보도록 합니다.



CiMonX에서 제대로 작동하는 것을 확인하였습니다. 이제 경보가 일어난 데이터를 수집할 필요가 있습니다. 그래서 이 수집하는 작업을 하고자 합니다.




먼저 태그편집에서 데이터 수집의 체크박스를 체크하고, 새로운 데이터 수집 모듈이라고 해야 할까요? 이를 작성해서 저장하는 파일을 만들어야 할 필요성이 있습니다.



그러면 데이터 수집 모델이 나오는데, 저장할 경로까지 지정해 둘 수가 있습니다. 



이렇게 경로까지 다 지정한 다음에, 이제 CiMonD로 가서 보고서라를 이름의 도형을 만든 다음에, 이를 누르면 보고서를 보여주는 기능을 구현해 보고자 합니다.


먼저 버튼까지 만드는 데 성공했습니다. 이제 버튼의 도형서식을 가지고서 기능이 나오도록 명령식을 설정하는 것이 중요합니다.



명령식에는 logfiledialog()라는 것을 입력하면 알아서 버튼을 누르면 보고서를 보여주는 기능으로 구현이 됩니다. 이 부분은 정말 이것만 입력하면 된다고 합니다.



실제로 CiMonX에서 실행시키자, 위 스크린샷과 같은 화면이 나오는 것을 볼 수 있었습니다. 이걸 가지고서 이제 파일변환이라는 것을 클릭해 보았습니다.



실제로 특정한 경로에 txt파일로 저장을 하면, 지금까지 데이터 모델이 수집한 경보에 관련된 정보를 모두 보여주는 기능을 합니다. 이제 경향감시라고 해서, 실시간으로 아날로그 태그의 값의 변화를 추세선으로 보여준다고 해야 할까요? 이러한 것을 보여주는 기능이 있는데, 이를 구현하는 실습으로 넘어갔습니다.



위 스크린샷에 보이는 것처럼 경향감시라는 메뉴를 그리기에서 누르도록 합니다.



맨 처음에는 아무것도 없이 XY라는 것을 했는데, 이게 실수가 되었다는 것을 처음에는 몰랐습니다. 아무튼 이렇게 진행을 하였습니다.



어떻게 가지가지 시도를 하기는 했지만, 뾰족한 수가 없었습니다. 그래서 하는 수 없이, 다시 처음부터 이를 진행해야만 했습니다.



위 스크린샷에 보이는 것처럼 YT를 가지고서 한번 경향감시를 다시 만들도록 합니다.



아날로그 태그의 최대값을 너무 크게만 지정하지 않으면, 이렇게 위 스크린샷에 보이는 것처럼 제대로 된 그래프가 시간이 변함에 따라서 나오는 것을 볼 수 있습니다. 이것으로 경향감시까지 어떻게 하는 데는 성공했습니다.




이제 드디어 스크립트 연습에 들어가야 하기에, 새로운 프로젝트를 생성하도록 합니다. 특이하게도 CiMon의 스크립트를 만들기 위해서는 다른 것도 아닌 Visual basic, 비쥬얼 베이직이라는 것을 사용한다고 합니다. 이를 이용해서 사용자가 정의하는 함수를 만드는 과정입니다. 이 스크립트를 만들기 위해서는 우선 CiMonD에서 스크립트라는 아이콘을 눌러서 화면을 띄워야 합니다.



먼저 위 스크린샷에 보이는 Script라는 것에 선택표시가 되어 있는데, 이게 바로 스크립트의 이름을 지정하는 곳입니다. 맨 뒤에 있는 ()는 언제나 붙는 상수이기는 하지만, 이름에는 포함되는 것은 아니라고 보시면 됩니다. 


이를 CiMonD의 명령식......... 절대로 스크립트와 명령식은 같은 것이 아닙니다. 명령식에서 스크립트를 다음과 같이 실행시킬 수 있습니다.


runscript("함수이름")


그리고 반대로 정지시킬 때는 다음과 같은 명령식을 입력합니다.


stopscript("함수이름")



이제 스크립트의 이름을 Main이라고 지정을 하고, 그 다음에는 위 스크린샷에 나와 있는 것처럼 mgs "문자열" 이라는 식으로 대화상자를 띄우도록 하는 것입니다.



저로서는 이 비주얼 베이직에 대해서 잘 모르기 때문에 정확하게 어떻게 해서 이게 CiMonX를 실행하자 마자 이게 나오는 지는 잘 모릅니다. 다만, 일단 첫 걸음을 떼면서 어떻게 성공하기는 성공했다는 생각이 듭니다.



다음은 변수를 선언하는 것인데, 여기 비주얼 베이직은 무언가 C#과는 다르게 변수를 선언하는 방식도 다르기는 다르다는 생각이 듭니다. 기본적으로 다음과 같은 형식을 따른다고 합니다.


dim 변수이름 As 타입



일단 첫 실습은 성공이라는 생각이 듭니다. 우선 비주얼 베이직에서 Asc()라는 함수는 ()안에 분자열이 오면 아스키 코드의 10진수인 숫자로 환산해 주는 함수입니다. Chr(숫자) 라는 함수는 ()안에 들어가 있는 숫자에 해당하는 아스키 코드의 특수문자로 바꿔주는 것입니다. 위 스크린샷에 나오는 실습결과는 바로 이러한 두 함수를 이용해서 나온 결과입니다.



다음으로는 아날로그 태그에 초기값을 쓰는 역할을 하는데, 여기서 사용되는 함수는 바로 settagval()이라는 함수입니다.


settagval "태그이름", 태그에 넣을 값


그리고 반대로 이런 태그의 값을 데이터 베이스에서 가져와야 하는데 그때 쓰이는 함수는 바로 gettagval()이라는 함수를 사용합니다.


gettagval("태그이름")


이 두개의 함수를 이용해서 데이터 베이스에 있는 함수의 값을 가져오고, 그 값을 스크립트 상에서 더하거나 빼고, 그 다음에는 데이터베이스에 쓸 수가 있는 것입니다.



실습결과 어떻게 성공적으로 나왔다는 것을 알 수 있었습니다. 이것으로 첫 비주얼 베이직을 사용한 CiMon에서 나오는 스크립트 프로그래밍을 하는 데 성공했는데, 이후로도 이렇게 부드럽게 일이 잘 풀렸으면 합니다.

반응형