티스토리 뷰
SCADA/HMI 프로그램을 개발하거나 스터디하면서 겪게되는 많은 어려움중에 하나는 개발중에 프로그램을 테스트 해 볼 수 있는 환경이 갖춰지지 않는 경우가 많다는 것이다. 테스트 할 수 있는 고가의 PLC가 없다보니 스터디를 하더라도 이해도가 떨어지고 개발한 프로그램의 품질도 다듬어지지 못하는 사례가 빈번하게 발생할 수 있다.
이런 경우 개발자의 필요를 채워 줄 수 있는 것이 바로 "PLC Simulator"로 PLC와 SCADA 제품을 판매하는 메이저 업체들은 이 시뮬레이터도 유료로 판매하고 있다. 지멘스의 PLC 시뮬레이터의 경우에는 PLC 메모리 뿐만아니라 실제 PLC프로그램을 그대로 시뮬레이터에 적용할 수 있는 기능도 제공하고 있는데 이번 포스팅에서는 무료로 사용할 수 있는 "Modbus PLC Simulator"를 소개하고 간단한 사용법과 설정 방법, 코드를 직접 내려받아 빌드하는 예제를 다룰까 한다.
- 홈페이지 : http://www.plcsimulator.org/Home
- 라이선스 : GPL3(http://gplv3.fsf.org/)
- 지원 프로토콜 : Modbus RS-232, Modbus TCP/IP, AB-DF1...
* Modbus PLC Simulator 설치
http://www.plcsimulator.org/downloads에서 최신 버전을 다운로드 받는다. 예제에서는 V 8.20의 MSI Windows Installer를 다운로드 받아 설치했다. 다운로드 받은 SimSetup.msi를 실행시킨다.
GPL3 라이선스 임을 보여주는 화면인데 Next를 클릭한다.
기본 설치 폴더 상태로 Next를 클릭한다.
위 화면에서 Next를 클릭하면 설치를 시작하고 설치가 끝나면 Close로 창을 닫으면 된다.
설치가 끝나면 무료이긴 하지만 형식적으로 프로그램의 키를 입력해 주는 작업이 필요하다. 프로그램 다운로드 페이지에 있는 Registration key를 다운로드 받으면 파일명이 key.reg로 저장되는데 더블클릭하면 필요한 키설정이 자동적으로 이루어진다. 더블클릭 했을때 아래와 같은 화면이 나오면 "예"로 진행시킨다.
아래의 그림과 같이 프로그램이 설치된 C:\Program Files\EmbeddedIntelligence\Mod_RSsim로 이동하여 Mod_RSsim.exe를 실행시키면 되고 index.html을 통해서 다양한 도움말을 확인할 수 있다.
실행 화면은 다음과 같다.
위의 그림에서도 알 수 있듯이 지원 프로토콜은 MODBUS RS-232, MODBUS TCP/IP, Allen Bradley DF1, JOY SCC DF1등으로 SCADA 시스템에서 지원하는 프로토콜에 맞추어 적용하면 된다. 메뉴는 타이틀바를 우측 마우스로 클릭하여 팝업 메뉴를 사용하거나 화면 상단에 있는 기능 아이콘을 사용한다.
* AdvancedHMI에서의 설정
Modbus PLC Simulator는 프로토콜을 MODBUS TCP/IP로 설정한다.
Advanced HMI에서는 프로젝트를 열고 Toolbox>AdvancedHMIDrivers Components에서 Modbus TcpCom을 작업 창에 끌어다 놓는다.
아래의 그림과 같이 컴포넌트의 속성창에서 Modbus PLC Simulator의 IP주소와 서비스 포트를 입력한다. 예제에서는 로컬 서버에서 시뮬레이터를 동작했으므로 127.0.0.1에 502 포트를 지정했다.
실제 PLC의 IO Tag를 설정하기 위하여 텍스트나 기타 값을 표시할 수 있는 Visual Object를 추가한다. 예제에서 탱크 오브젝트를 추가했다. 속성창에서 드라이버 선택과(CommComponent) PLC 주소를(PLCaddress Value) 입력하면 준비는 모두 끝나는데 Modbus PLC Simulator의 PLC주소는 시뮬레이터의 주소를 십진(Dec)으로 표시하여 해당하는 적절한 주소 값을 입력하면 된다.
* 인터치(InTouch)에서의 설정
Modbus PLC Simulator는 프로토콜을 위의 예제와 같이 MODBUS TCP/IP로 설정한다. 인터치에서 MODBUS 관련 드라이버는 두가지가 있는데, InTouch 10.1의 경우 아래의 그림과 같이 "Device Integration" DVD에서 Serial인 경우에는 MODBUS, TCP/IP인 경우에는 MBENET를 설치한다. 예제의 경우에는 Modbus PLC Simulator에서 Modbus TCP/IP를 지정했으므로 MBENET를 설치했다.
설치한 MBENET는 시작>모든 프로그램>Wonderware> IO Servers>Modicon Modbus Ethernet으로 실행할 수 있다.
중요한 설정 작업이 필요한데, Configure>Topic definition으로 Intouch에서 사용할 Topic 이름을 정의하고 접속할 PLC 정보(예제에서는 Modbus PLC Simulator)를 입력한다.
Topic name은 InTouch Tag 정의시 사용할 Access Name의 핵심 정보이므로 적절한 이름으로 정의한 다음 메모해 두고 , IP 주소는 로컬 컴퓨터이므로 127.0.0.1을 기술했지만 실제 PLC를 연결하거나 타 PC에 있는 시뮬레이터에 연결할 경우에는 해당 IP주소를 정확하게 입력한다. Device type으로는 Modbus PLC Simulator의 경우에는 "584/984 PLC"를 선택한다.
MBENET 설정이 되었다고 바로 시뮬레이터나 PLC와 접속하는 것은 아니고 InTouch에서 Runtime을 실행할 동안만 접속한다. 그리고 접속중 즉, Runtime이 동작하고 있는 중간에는 MBENET의 설정을 변경할 수 없으므로 설정을 변경할 필요가 있는 경우에는 InTouch Runtime을 종료시키고 작업하면 된다.
MBENET이 준비되었으면 본격적으로 InTouch에서 태그를 정의해 사용할 수 있다.
태그 정의를 위하여 MBENET에 대한 "Access Name"이 아직 정의되지 않은 상태이면 [Access Name]버튼을 클릭하여 아래 그림과 같이 새로운 Access Name을 정의한다. "Item:"에 PLC 주소를 입력하면 되는데 Modbus PLC Simulator의 경우에는 십진수로 표시된 주소값을 Item에 입력하면 된다.
Application Name은 반드시 Modbus TCP/IP의 경우에는 "MBENET"으로 지정해야하고, Topic Name은 MBENET에서 정의했던 토픽 이름을 기술하면 된다.
창에 Wizard등으로 오브젝트를 정의하고 위에서 정의한 태그를 연결한 다음 Runtime을 동작시키면 MBENET화면도 동작상태를 표시하고 Modbus PLC Simulator도 동작상태를 표시한다.
* Modbus PLC Simulator 빌드하기
TortoiseSVN에서 체크 아웃 주소를 https://modrssim.svn.sourceforge.net/svnroot/modrssim/trunk로 하여 아래의 그림과 같이 코드를 체크아웃 받는다.
체크 아웃 코드를 보면 아래와 같이 라이브러리(mylib)와 시뮬레이터 코드로 구성되는데 mod_RSsim 디렉토리에 있는 mod_RSsim.sln 파일을 비주얼 스튜디오로 연다. VC9으로 작성된 코드지만 VS2010에서도 자동 변환되어 정상적으로 빌드 및 실행된다.
솔루션 파일을 열고 빌드>솔루션 다시 빌드로 솔루션 전체를 빌드하여 실행시킨다. 정상적으로 빌드 되었으면 아래와 같은 경고창이 잠깐 있다가 사라지는데 이 부분은 위의 설치 과정에서 언급한 키를 설정해주면 된다.
프로그램이 정상 동작하는 것을 확인했으면 이제부터 본격적으로 필요한 코드 수정을 할 수 있는데, 예제에서는 한글화 방법을 다루고자 한다.
mod_RSsim.rc를 더블클릭하여 리소스 뷰를 열고 String Table리소스에 있는 영어로 되어 있는 String Table의 팝업 메뉴에서 "복사본 삽입"을 선택하여 영어로 되어 있는 String Table과 동일한 내용의 한국어 버전을 추가한다. 이 상태에서 아래의 그림과 같이 적절한 한국어 스트링을 입력하여 빌드 및 실행하면 한국어 환경에서 자동으로 한국어를 볼수 있도록 반영할 수 있다.
아래는 몇가지 번역을 적용한 결과(타이블 바 팝업 메뉴)이다.
(주)동운시스템 전화 041-358-3760
'SCADA' 카테고리의 다른 글
Advanced HMI 오브젝트 - 오픈소스 HMI/SCADA (0) | 2018.11.09 |
---|---|
오픈소스 AdvancedHMI의 통신 드라이버 (1) | 2018.11.09 |
Advanced HMI 사용하기 - 무료 HMI/SCADA (0) | 2018.11.09 |
오픈소스 HMI / SCADA (0) | 2018.11.09 |
동운 HMI의 디지털 컨트롤 소개 (0) | 2018.11.09 |
- Total
- Today
- Yesterday
- XGT PLC
- XGT전용프로토콜
- 지멘스
- 스카다
- OPC
- 웹스카다
- 티베로
- C#
- 웹HMI
- 3D HMI
- plc simulator
- 3D SCADA
- LS산전
- 큐브리드
- HMI개발
- 동운 HMI
- Tibero
- SCADA
- modbus
- SCADABR
- 동운HMI
- S400
- C# HMI
- 3D 스카다
- hmi
- s300
- DB드라이버
- cubrid
- Advanced HMI
- Siemens
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |