티스토리 뷰
PLC 공급업체에서 제공하는 HMI나 비싼 라이선스 비용을 지불하고 HMI(SCADA)를 사용하는 곳이 아니라면 한번쯤 무료 또는 오픈소스 HMI/SCADA를 검토해 보았을 것이다. 그렇지만 많은 경우 설명서가 충분하지 않거나 한글화 되어 있지 않고 설치 방법이 복잡하거나 필요한 드라이버가 없는 등 쉽사리 현업에 적용할 엄두가 나지 않는 경우가 많았을 것이다.
이번 포스팅은 윈도우 환경에서 쉽게 HMI(SCADA)시스템을 맛볼 수 있고 윈도우 개발자에게 익숙한 비주얼 스튜디오를 기반 환경으로 삼아 확장성 있는 HMI/SCADA를 구축할 수 있는 Advanced HMI(http://advancedhmi.com/)의 설치 및 간단한 사용법을 다루고자 한다. 본격적인 설치 및 사용법을 다루기 전에 Advanced HMI와 관련한 주요 특징을 정리하면 다음과 같다.
- 라이선스 : GPL2(GNU General Public License version 2.0)
- 비주얼 스튜디오 기반(무료인 Microsoft Visual Studio Express 사용 가능)
- 비주얼 베이직 사용 : DB 연결등 복잡한 작업이 없으면 코딩 없이도 작업할 수 있다.
- AB PLC(Allen Bradley), Beckhoff TwinCAT, Modbus/TCP, OPC Client 관련 기본 드라이버 제공
- 개발사는 확장팩 판매, 교육, 커스터마이징 서비스등으로 비즈니스하고 있다.
* 비주얼 스튜디오 환경 준비
이미 Visual Studio 2008 이상을 설치해서 사용중라면 이 단계는 필요없다.
Visual Studio 2008 이상이 설치되어 있지 않다면 Visual Basic Express 2010을 다운로드 받아 설치한다. 링크는 아래와 같다.(주의할 점은 Visual Studio Express 2012는 WIndows7, Windows8, Windows Server 2008, Windows Server 2012에서만 사용할 수 있기 때문에 해당 운영체제가 없다면 아래의 링크를 참조하여 Visual Basic Express 2010을 찾아 설치한다)
http://www.microsoft.com/visualstudio/kor/downloads#d-2010-express
Visual Basic 2010 Express 설치 파일을 다운로드 받아 실행시키면 아래와 같이 관련 정보를 추가로 다운로드 받는 화면이 나오다가 본격적으로 설치를 시작한다.
라이선스에 동의하고 [Next]를 클릭한다.
[INstall]을 클릭하면 본격적으로 설치를 시작한다. 설치 종료화면에서 [Exit]를 클릭하면 된다.
Visual Basic 2010 Express는 30일간 무료로 그냥 사용할 수 있고 30일 이후 또는 그 이전이라도 무료 등록키를 받아 무료로 제품을 계속 사용할 수 있다.
Visual Basic 2010 Express 설치가 끝나고 프로그램을 실행시키면 서비스 팩 설치 여부에 따라 아래와 같은 설치 안내 메시지가 나올 수 있다. 이런 경우에는 창에 있는 "here" 링크를 클릭하거나 http://www.microsoft.com/en-us/download/details.aspx?id=23691에서 Microsoft Visual Studio 2010 Service Pack 1을 다운로드 받아 설치한다.(서비스팩 설치에 5GB 정도의 디스크 공간을 필요로 한다)
* Advanced HMI 다운로드
http://sourceforge.net/projects/advancedhmi/files/advancedhmi/3.0/에서 최신 버전을 다운로드 받는다.
예제에서는 AdvancedHMIBetav330.zip를 다운로드 받았다.
다운로드 받은 파일은 아래의 그림과 같이 압축파일로 크게 HMI부분과 드라이버 부분으로 나뉘어져 있고 전체적인 빌드 정보를 담은 비주얼스튜디오 솔루션 파일로 구성되어 있다.
폴더 내용을 통해 Advanced HMI가 기본 제공하는 것들을 살펴보면
우선 AdvancedHMI\Controls에 있는 기본 컨트롤들은 다음과 같다.
- Annunciator.vb
- BarLevel.vb
- BasicButton.vb
- BasicIndicator.vb
- BasicLabel.vb
- BasicLight.vb
- DigitalPanelMeter.vb
- Gauge.vb
- GraphicIndicator.vb
- HydraulicCylinder.vb
- ImageDisplayByValue.vb
- MessageDisplayByBit.vb
- MessageDisplayByValue.vb
- Meter.vb
- Meter2.vb
- MomentaryButton.vb
- Motor.vb
- PilotLight.vb
- Pipe.vb
- PneumaticBallValve.vb
- SelectorSwitch.vb
- SelectorSwitch3Pos.vb
- SquareIlluminatedButton.vb
- StackLight.vb
- SubscriptionDetail.vb
- Tank.vb
- TempController.vb
- ThreeButtons.Designer.vb
- ThreeButtons.vb
- ThreeButtonsPLC.vb
- WaterPump.vb
AdvancedHMI\Documents에 있는 기본 문서들은 아래와 같다.
- ICommComponentInterface.pdf : ICommComponent 인터페이스를 통한 드라이버 작성 방법
- MatrikonSimulator.pdf : Matrikon OPC Simulator 드라이버 사용법
- MotorControlAppMicroLogix.pdf : Micrologix의 모터 컨트롤 사용 예제
- OPCCommUsage.pdf : OPC Client 설정 방법
- QuickStart.pdf : Quick Start Guide. 설치 및 사용을 위한 간단한 가이드
- TwinCATDriverSetting.pdf : TwinCAT system 설정 방법
- UsingAdvancedHMIwithRSLogixEmulator500.pdf : RSLogixEmulator500 설정 방법
AdvancedHMIDrivers에 있는 드라이버들은 다음과 같다.
- AllenBradleyPCCC.vb
- CLXAddressRead.vb
- DF1Comm.vb
- EthernetIPforCLXComm.vb
- EthernetIPforPLCSLCMicroComm.vb
- ModbusTCPCom.vb
- OPCComm.vb
- SiemensPPI.vb
- SNP-XComm.vb
- TwinCATComm.vb
* 첫 프로젝트 수행하기
비주얼스튜디오를 실행시키고 위에서 다운로드 받은 파일중에 AdvancedHMIv3.sln를 연다. 솔루션 안에 AdvancedHMI와 AdvancedHMIDrivers라는 두개의 프로젝트가 존재하는데 AdvancedHMI 프로젝트에 있는 MainForm.vb를 더블클릭하여 작업 공간에 불러들인다.
MainForm.vb를 불러들이면 프로젝트 작성에 필요한 절차를 기술해 놓고 있는데 아래와 같다.
- 1) Build the project (Ctrl+Shift+B)
Ctrl+Shift+B 또는 메뉴>Debug>Build AdvancedHMI로 프로젝트를 빌드한다.
좌측 하단에 "Build succeeded"를 확인한다. - 2) Add a driver component from ToolBox
성공적으로 빌드하면 Toolbox에 AdvancedHMI와 AdvancedHMIDrivers 컴포넌트가 생기는데 드라이버 컴포넌트 중 하나를 끌어다 놓아 드라이버를 추가한다.
3) Set properties of Comm component- 예제에서는 실제 PLC 처럼 동작하는 Modbus PLC Simulator(http://www.plcsimulator.org)를 설치하여 ModBUS TCP/IP 프로토콜을 선택했고 2)번에서는 ModbusTcpCom 드라이버를 끌어다 놓았다. 아래의 화면은 Modbus PLC Simulator를 실행시킨 화면이다.
드라이버의 IP주소를 설정하고(예제에서는 로컬 서버이므로 127.0.0.1을 입력했다), Modbus TCP/IP 포트를 확인한다(502)
4) Add a visual control (e.g. DigitalPanelMeter)- AdvancedHMI 컴포넌트에서 컨트롤을 가져다 배치한다. 예제에서는 Tank를 배치했다.
5) Set one of the PLCAddress properties- 추가한 탱크의 표시 텍스트와 PLC 주소를 입력한다. 예제에서는 PLCaddressValue 항목에 십진 주소를 입력했다.(Modbus PLC Simulator의 첫 항목)
6) Run the application (F5)- 프로그램을 실행시키면 현재 상태로는 PLC와 연결되어 있을뿐 별다른 변화가 없다. Modbus PLC Simulator에서 속성에서 지정한 주소값을 변경시키면 화면에서도 그대로 적용됨을 확인할 수 있다.
시뮬레이터에서는 HMI의 드라이버와 연결되면 하단 초록색 박스 부분에는 해당 영역에 노란색으로 작업중임을 표시해 주고 상단에서는 통신 시점마다 LED 깜빡임으로 동작을 확인해 준다. 위 화면은 40001 주소 영역에 50 값을 입력하는 모습이고, 아래 그림은 PLC 설정 값에 따라 탱크가 50% 차있음을 보여주고 있다.
* AdvancedHMI 장단점 분석
GPL 라이선스 기반의 오픈소스로 비용을 들이지 않고 손쉽게 HMI를 제작할 수 있다. 그렇지만 기본 컨트롤에 대한 코드와 드라이버 부분은 VB로 작성된 Wrapper는 있으나 핵심 코드가 비공개 상태라 버그가 있거나 하는 경우 대책이 없다는 단점이 있다.(MfgControl.AdvancedHMI.Controls.dll, MfgControl.AdvancedHMI.Drivers.dll) 개발자가 직접 드라이버를 추가할 수 있는 여지는 있다. .Net 환경에서 간단하게 HMI를 제작할 수 있다는 측면에서 장점을 갖지만, 전문 SCADA 프로그램들에서 제공하는 고급 기능은 지원하지 않는다.(Alarm 검사, 발생, 확인기능, 태그 정보 기록 기능, 실시간/기록기반 Trend 기능 등등)
* 비주얼 베이직 공부를 위한 자료
Advanced HMI를 단순한 형태로 사용하는 것이 아니라 나름의 컨트롤이나 드라이버를 제작하거나 DB연결과 같은 복잡한 작업을행할 경우에는 비주얼베이직에 대한 사전 지식이 필요하다. 비주얼 베이직 학습 방법으로 책이나 오프라인 강의도 좋지만 최근에는 온라인상에 공개된 좋은 자료가 많다. 아래의 두 사이트를 추천한다.
- http://channel9.msdn.com/Series/Visual-Basic-Development-for-Absolute-Beginners
총 25강으로 구성됨. Microsoft에서 지원한 동영상 강의 - http://blog.daum.net/shksjy/82
국내 개발자의 실무적인 블로그 강좌, 기초, 중급을 비롯한 다양한 자료를 만날 수 있다.
(주)동운시스템 전화 041-358-3760
동운 HMI 소개 바로가기
[온라인 문의 및 견적요청]
'SCADA' 카테고리의 다른 글
오픈소스 AdvancedHMI의 통신 드라이버 (1) | 2018.11.09 |
---|---|
무료 PLC 시뮬레이터 Modbus PLC Simulator (0) | 2018.11.09 |
오픈소스 HMI / SCADA (0) | 2018.11.09 |
동운 HMI의 디지털 컨트롤 소개 (0) | 2018.11.09 |
동운 HMI의 다양한 아날로그 컨트롤 소개 (0) | 2018.11.09 |
- Total
- Today
- Yesterday
- Siemens
- SCADABR
- 웹스카다
- XGT PLC
- 티베로
- XGT전용프로토콜
- 3D 스카다
- 3D SCADA
- hmi
- 동운 HMI
- 스카다
- HMI개발
- cubrid
- OPC
- s300
- SCADA
- C#
- 지멘스
- 큐브리드
- C# HMI
- S400
- modbus
- 웹HMI
- Tibero
- Advanced HMI
- plc simulator
- 3D HMI
- 동운HMI
- LS산전
- DB드라이버
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |