4월, 2019의 게시물 표시

How to map lighting control at TextEditor in Niagara Framework at once.

이미지
개요 NiagaraWorkbench 를 이용하여 조명제어 프로그램을 제작시 가장 번거로운 작업은 "화면 맵핑"  이다. 릴레이 하나하나를 상태와 기동/정지로 나누어 도면과 일치하게끔 맵핑하고 배치해야한다. 타고난 눈을 갖고있는 사람이 아니라면 매우 고통스러운 시간일 것 이다. 심지어 몇천개의 포인트들을 맵핑해놨는데 모든 포인트명을 변경해야하는 상황이 온다면... 대부분의 엔지니어는 좌절감을 느낄것이다. Contents <조명 오브젝트들> <조명 오브젝트 한개가 갖고있는 속성들> 본론 및 목적  일일이 하나의 조명을 선택하여 네다섯가지의 프로퍼티스를 수정하는 작업은 상상만해도 끔찍하다. (해본사람은 더 잘알겠지만... 안해봐도 알았으면 한다..) 본문에서는 포인트명을 일괄로 변경해야할때. 특히나 까다로운 문자열들을 변경해야할 때 어떻게 해야하는지 알아본다. NiagaraWorkbench는 UI부분을 PX라는 파일을 이용하여 파싱하고 표현해준다. 위에서 보고있는 화면들은 PX 파일을 PX Editor(WYSIWYG EDITOR)로 수정하는 화면이다. PX파일은 Presentation XML파일로 notepad로 열어보면 XML형식의 파일임을 확인할 수 있다. <Presentation XML  : PX file> 목적 : 문자열 변경  Drivers/ModbusTcpNetwork/Light1/1_01_ -> Drivers/ModbusTcpNetwork/Light1/DO/R01_01 Drivers/ModbusTcpNetwork/Light1/1_02_ -> Drivers/ModbusTcpNetwork/Light1/DO/R01_01                               ...

Auto Log in to website using VBS

이미지
개요 웹에 자동으로 로그인하는 프로그램은 사실 위험하다는 생각이다. 하지만 단순히 로컬 인트라넷에서 운영되어지는 몇몇 웹 페이지는 자동로그인이 필요할때가 있다. 개인적으로는 직접 ID와 PW를 치고 들어가는것을 추천하지만 그렇지 않은 사람들이 생각보다 많다. Contents <최종실행화면> 본론 기타 여건들을 배재하고 무조건 자동 로그인이 필요한 경우가 있다. 이러한 경우에 사용할 수 있는 방법에 대해 알아본다. How to automatically log in to web site. 어떻게 해야 자동으로 로그인을 할 수 있을까 여러가지 방법이 있다. 1. wget과같은 프로그램을 이용하여 서버에ID/PW값을 넘겨준다. 2. 키보드가 자동 타이핑되도록하여 ID타이핑,TAB,PW타이핑,Enter타이핑 순서로 SEND 3. JavaScript를 이용하여 ID/PW 필드를 채운 후 action이 되도록 한다. 4. etc.. 기타등등 무궁무진하다. 제작할 프로그램의 기능정리 여러가지 방법들이 있겠지만 내게 필요한 기능을 정리하면 아래와같았다. 1. 바탕화면에서 바로가기를 더블클릭한다. 2. 브라우저가 실행되며 자동으로 로그인이 된다. 3. 로그인 후 볼 수 있는 페이지를 서비스 받는다. VBS란? 위와같은 프로그램을 만들기위해 VBS 를 이용하기로 하였다. Microsoft Visual Basic Scripting Edition (Visual Basic Script) 마이크로소프트에서 제공하는 스크립트 언어이며 bat 비슷하게 사용 가능. bat 파일이 CommandLine 환경이라면 VBS는 좀더 GUI를 컨트롤 할 수 있는 환경제공. Windows는 기본적으로 VBS 실행 환경을 탑재 . VBS는 정상적인 목적을 갖고 있다면 매우 유용할 수 있지만 좋지못한 의도로 사용자의PC를 점거할 수 있으며 내 의지와 다른 무언가를 실행할 수 있는 강력한(?) 언어다. 내가만든 VB...

TimeDate automatically change using cmd file

이미지
개요 Alerton사의 VLC1600을 이용하여 Pulse 신호를 받아보려한다. 안타깝게 옛날버전인 Envision2.6과 Visio2007을 이용하여 진행한다. Contents 자동으로 시간 바꾸고 복귀주는 프로그램 만들기(윈도우) 특정 프로그램들은 날짜나 시간 기반으로 락이 걸려있다. 정품, 혹은 구매하여 사용하는것을 추천하지만 현실적으로 그러지 못한 경우들이 있다. 이런때 우리들은 시간을 과거로 변경하여 프로그램을 실행하곤한다. <시간을 자주 바꿀때 사용하는 timedate.cpl 명렁> 시간을 종종 뒤로 돌려야하는 프로그램을 사용하기에 timedate.cpl 명령어로 빠르게 바꾸곤 하였지만 상당히 번거롭다. 특히나 프로그램과 동시에 웹서치가 필요한때면 크롬 유저로서 매우 난감하다. (날짜가 과거인경우 크롬으로 웹 서핑이 불가능하다.) 이제 우리는 .cmd 파일을 이용하여 무언가 만들것이다. .cmd 파일이란? MS-DOS 시절부터 지금까지 꾸준히 이용되고있는 bat 파일과 사실상 같다. 약간의 차이가 있다면 윈도우98이하에서 .cmd 파일은 실행되지 않는다. 즉. Windows2000부터 확장된 문법이나 명령어들을 .cmd 파일에서 적용할 수 있다. 확장된 명령어가 포함된 .bat 라 보면된다. 본론으로 넘어가.. 이번에는 .cmd 파일을 제작하여 원하는 날짜로 돌리고 오늘 날짜로 쉽게 복구할 수 있는 스크립트를 만들어 보려 한다. (PowerShell을 이용하여 좀더 멋진 프로그램을 만들어보고싶었지만... 역시 귀찮다... 다음에 필요하다면 알아보도록하고...~~~~~) .cmd 작성을 위한 기본 명령어 @echo off : 구문을 화면 출력 하지 않는다 set           : 변수 등록 및 변수에 데이터 저장 echo        : 구문을 화면에 출...

How to set up Windows firewall easily when using Niagara Frameworks.

이미지
개요 나이아가라 프레임워크의 방화벽 설정을 알아보고자 한다. Contents NiagaraFramework를 위한 방화벽 설정 윈도우 환경에서 NiagaraFramework를 원활히 이용하기위해 방화벽 설정을 해주어야한다. 매번 설치할때마다 반복되는 일이며 그렇다고 방화벽을 아예 꺼버리는 행동을 할순 없다. 항상 그렇지만 귀차니즘을 해결하기위해 bat 파일을 이용한 스크립트를 작성하였다. 본 내용에서는 Niagara에서 주로 사용하는 포트 번호와 엔지니어링시 필요한 주요 포트번호 , 그리고 이러한 포트들을 어떻게 쉽게 관리할 것인지에 대해 알아본다. <고급 보안이 포함된 방화벽 설정 화면> 나이아가라프레임워크 사용을 위한 주요 포트번호와 용도 What ports do we need for Niagara Framework engineering? Fox   : 1911 FoxS  : 4911 Platform : 3011 Platform Security : 5011 http : 80 https : 443 ModbusTCP : 502 BacnetIP : 47808 MSTSC : 3389 위의 포트들을 열어놓는다면 엔지니어링시 불편함은 없어보인다. FTP나 SSH, Telnet 등은.. 사실 거의 쓰지 않는다. 이제 위와같이 주로 사용하는 포트를 정리했으니 해당 포트들을 쉽게 예외 처리하는 BAT파일을 만들어본다. Batch파일로 방화벽 쉽게 열기 notepad를 열어 아래의 내용을 넣고 저장한다. 파일명 : Open_UsualPort_Firewall.bat  내용 netsh advfirewall firewall add rule name="kami" dir=in action=allow protocol=tcp localport=80,8080,3011,1911,4911,5011,502,47808,443,3310,6446,6...

기술료의 종류와 기술료 산정 방법

이미지
개요 혼자 뛰어난 프로그램을 만드는 시대는 지났다. 이미 많은 발전된 라이브러리와 알고리즘, 여러 기법들이 존재하고 이러한 기술들을 적절히 조합하는것 역시 기술이다. 여러 고급 기술들을 응용하고 적절히 조합하기 위해서는 일정의 기술료를 지불해야하는 상황이 오는데 기술료의 종류가 굉장히 많다. 본 글에서는 기술료의 종류와 분류에대해 적어보려 한다. Contents <기분이 좋아지는 마법의 사진> 여러가지 기술료의 종류 정액기술료, 경상기술료, 고정기술료, 선급기술료, 최대기술료, 최저기술료, 일괄기술료, 완불기술료, 대물기술료 등 많은 용어가 사용되고 있음  기술료 지불방식에 따른 분류 정액기술료(고정기술료-Fixed Payment)  - 제품의 판매액과 무관하게 기술의 댓가를 고정으로 지급 경상기술료(Running Royalty)  - 기술을 이용하여 개발된 제품의 판매량에 따라 기술료 지급  - 산정기준을 정하여 판매순익의 일정률을 곱하여 산출된 금액을 정기적으로 지불 선급기술료(Inital Payment)  - 계약 기간중 발생되는 기술료를 계약발효와 동시에, 혹은 초기에 지불 최소기술료(Minmum Payment)  - 계약기간에 대해 지불되어야 할 기술료의 최저금액을 지불 최대기술료(Maximum Payment)  - 기술료의 최고 상한액을 설정하여 개발된 제품의 판매량과 상관없이 한도금 내에서 지불  지불방식에 대해 알아보았으니 통상 적용되는 기술료 산정방법에 대해 알아본다.  기술료 산정 방식의 종류 기술가치평가 방법  - 수익접근법, 시장접근법, 비용접근법 등의 방법이 있으며 이러한 방법론들을 적용...

Auto reservation program using from wget and bat

이미지
개요 본 내용은 특정 홈페이지의 자동예약을 위해 사용했던 방법이다. 해당 사이트의 보안이나 법적인 문제가 될 수 있으므로 간접적으로 설명해보려한다. 많은 웹 사이트들은 웹 페이지를 통하여 예매나 예약등을 선착순으로 진행하곤 한다. 그런만큼 많은 매크로프로그램들이 돌아다니는것도 사실이다. 1차원적으로 자동으로 마우스로 클릭->새로고침->클릭->새로고침...->반복의 방법을 사용하였으나 지금시대에 그런 방법은 경쟁력이 떨어진다. 2000년경에는 마우스 자동클릭만으로 여러 예약을 손쉽게 했던 경험이 있다. 하지만 2020년이 코앞인 지금은 사정이 많이 다르다. 예매가 매크로전쟁으로 번진만큼 프로그램의 퍼포먼스에따라 예매가 되고 안되고가 확연히 갈린다. Contents <매크로 전쟁> 본인은 심플하게 wget과 bat파일을 이용하여 로그인 및 예약을 진행하는 매크로를 작성하였고 타겟 사이트에서 잘 동작하는것을 확인하였다. How to active their website 가장 중요한것은 먼저 타겟이 되는 웹 사이트가 어떤식으로 동작하는지 파학하는것이다. 어떤 페이지의 흐름을 타고 인증을 하는지. 어떤 변수들이 사용되었는지. 서버 시간은 어떠한지 등등.. 서버에대한 정보를 얻어야한다. 이러한 정보를 얻는 방법들은 너무나 방대하고 언어를 알고있어야한다... 설명하기가 난해하니 추후 다시 정리할것이다. How to log in and reservation a website using wget 먼저 wget이 대체 뭐하는 프로그램인지 알아야한다. wget프로그램은 GNU프로젝트의 일부로 HTTP, HTTPS, FTP 프로토콜로 통신할 수 있는 프로그램이다. 로그인과 예약의 ...

How to use WMI with Excel VBA

이미지
개요 엑셀의 VBA로 프로그램을 작성할때 WMI를 이용하여 원하는 기능을 도출할 수 있다. 인터프리터 언어의 한계상.. 완벽한 보안은 될 수 없지만 본 내용을 응용하여 심플한 License 코드를 작성할 수 있다. Contents <VBA : Visual Basic for Applications> Get Serial Number of Mainboard 메인보드의 시리얼 번호를 추출하는 소스코드. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Private Function SystemSerialNumber () As String Dim mother_boards As Variant Dim board As Variant Dim wmi As Variant Dim serial_numbers As String ' Get the Windows Management Instrumentation object. Set wmi = GetObject( "WinMgmts:" ) ' Get the "base boards" (mother boards). Set mother_boards = wmi.InstancesOf( "Win32_BaseBoard" ) For Each board In mother_boards seria...

How to Group control in NiagaraFramework

이미지
개요 나이아가라에서 그룹제어를 효과적으로 하는 방법에 대해 알아보자 Contents 효과적인 그룹제어하기  간단한 그룹제어  본문에서는 그룹제어를 위한 프로그램 방법을 알아본다. 물론 여러가지 방법이 있겠지만 1차원적인 방법으로 아래와같은 방법이 있다. <1차원적인 그룹 컨트롤> 얼핏 보기에는 심플하고 좋은 방법 같지만 실제로 적용해보면 문제점들이 발생한다. (특히 많은 포인트를 제어해야할때는 99%이상 문제가 발생한다) 1차원적인 방법의 문제점 NiagaraSupervisor는 PC레벨에서 동작한다. 즉, 스펙도 좋고 퍼포먼스도 좋다. 조명제어를 예를 들어보겠다. (조명을 예로 드는 이유는 한 기기가 담당하는 Points수가 많기떄문) 조명컨트롤러는 보통 약 256개의 회로를 관리한다. 회로에 대한 정보를 메인 컨트롤러가 갖고 있으며 내부에 ModbusSlave 서버를 두어 상부의 HMI나 기타 컨트롤러와 통신하게 된다. 상부에서 위와같은 방식으로 그룹제어를 하게되면 통상 비슷한 시간대에 모든 포인트에 명령을 내보내게 된다. (점심시간, 퇴근시간, 출근시간 등...) 중요한것은 위와같이 여러 포인트를 동시간대에, 한번에 명령을 내릴경우 컨트롤러가 이를 소화하기 어렵다는 점이다. 이는 출력을 내보내는 시스템에서도, 입력을 받아들이는 시스템에서도 부담스러울것이다. 심지어 임베디드 컨트롤러에 이런식으로 명령을 주고받는다면 운영자에게도, 컨트롤러에도 신뢰에 금이가는 모습을 몸소 느끼게 될것이다. 한번에 다량의 명령을 내보내는것은 웹 서버를 다운시키기위한 DDOS공격과 다를게 없다. 효과적인 그룹제어를 위한 방법 내 스스로 나의 컨트롤러를 공격하는 행위를 하면서까지 운영자들에게 그룹제어의 기능을 제공하고싶지 않다. 이런식으로 기능을 제공해봤자 제살파먹기다. 이 문제를 해결하기위해 필요한 기술은 쓰레드이다. 엔지니어들이 쓰레드를 완전히 이해하고 사용하기엔 무리가 있다. 하지만 "무엇이다" 정도의 개념을 알게된다면 어떻게 해야하는지도 궁굼해질...

Niagara Program Service 를 이용한 Batch Editor for History

이미지
개요 나이아가라 서비스를 이용해서 batch 에디터 히스토리를 알아보자 Contents History about BatchEditor in NiagaraFramework 빌딩 자동제어 프로그램. HMI 를 만들기 위해서는 반드시 해야하는 일들이 있다. 1. 사용하는 포인트를 등록하고 2. 하부장비와 통신을 위한 튜닝을하며, 3. 로직을 구성하고, 4. 히스토리를 설정하고, 5. 알람을 설정한다. 6. 최종적으로 화면에 이러한 내용을 디스플레이할 수 있도록 맵핑한다. 이러한 과정을 거침으로서 운영자들은 좀더 생산적으로 건물을 관리/운영 할 수 있다. 그렇다면. 우린 운영자들의 생산성만 존중해주어야하는가..? 물론 그렇지않다. 나이아가라 프레임워크에는 엔지니어들의 반복작업을 줄여줄 수 있는 많은 기능들이 내장되어있으며, 없더라도 프로그래밍하여 효과적인 엔지니어링을 할 수 있도록 해준다. 이 글에서는 Services -> Program Service를 이용하여 BooleanPoints와 NumericPoints에 히스토리를 한번에 등록하는법을 설명한다. Services의 ProgramService 기능 간단히 말해 Niagara System내의 오브젝트들의 배치작업을 담당하고있다. 배치작업은 반복적인 일괄 작업을 뜻하며 이로서 많은 노동력을 절감할 수 있다. 쉽게는 Batch Editor를 통해 컨트롤 할 수 있고, 본인이 NiagaraFramework에 대한 이해와 JAVA 프로그래밍 능력이 있다면 Robot Editor를 이용하여 직접 프로그래밍 하여도 된다. <Services - ProgramService> ProgramService 의 Batch Editor사용방법 이를 잘 사용하기위해서는 기본적인 자료형에대한 이해와 라이브러리의 부모자식노드에 대한 이해가 필요하다. 거창하게 설명하면 어려우니 쉽게 쉽게 풀어 보겠다. Niagara초심자의경우 기본적으로 History의 사용법에 대한 이해가 필요하니 다음의 글을 참조하라. 본 글은 기본적인것을...

RS485통신과 데이지체인(DaisyChain) 결선방식

이미지
개요 우리는 산업용 프로토콜로 Modbus를 많이 사용하고있다. Modbus에는 ModbusTCP도 있지만 ModbusRTU(rs485)도 많이 이용한다. 최근 대부분의 ModbusRTU 장비는 RS485통신을 선호하며 결선은 DaisyChain으로 하고 마지막에 종단저항을 설치하기를 권고한다. 왜일까. 왜 데이지 체인을 해야하는지 궁굼하다. 그래서 Why 에 중점을두고 왜 RS485를 사용해야하는지, 왜 RS485에서 DaisyChain을 이용해야하는지를 적어볼까 한다. (사실 저는 컴퓨터공학 전공으로 전기나 전자에 약합니다....) Contents 시리얼 통신 방식의 종류와 특징 학생때는 참 딱딱한 내용이었는데 지금은 너무나 와닿는 내용이다. 복잡하게 설명해봐야 직접 느껴보기전엔 나와같지않을까.. 하는 생각으로 간단한 표 하나 투척한다. 위의 표로 알 수 있듯이 RS485는 시리얼통신중에서 경제적 유리한 위치에 있다. 실제 산업현장이나 빌딩자동제어에서는 RS485통신이 주를 이룬다. 물론 LAN통신이나 Wireless들도 있지만 가격적으로나 엔지니어 인프라에 부담되는것이 현실이다. RS485 권장 케이블 노이즈를 줄이기위해 꼬임선을 사용하며 특성 임피던스가 120옴인 케이블 사용을 권장. CAT5 , CAT6도 RS485연결에 사용가능. 120옴의 특성 임피던스를 갖는 차폐꼬임케이블을 사용하는것이 가장 통신 품질이 좋다. <차폐 꼬임 케이블 예> 데이지체인(Daisy Chain) 의 결선방법과 이유 한마디로 정의하면 "반드시 순서대로 장비를 거쳐서 연결하라" 이다. 아래의 그림을 참고하자. 쉽게말해.. 중간에 뭐 거...