How to map lighting control at TextEditor in Niagara Framework at once.
개요
"화면 맵핑" 이다.
릴레이 하나하나를 상태와 기동/정지로 나누어 도면과 일치하게끔 맵핑하고 배치해야한다.
타고난 눈을 갖고있는 사람이 아니라면 매우 고통스러운 시간일 것 이다.
심지어 몇천개의 포인트들을 맵핑해놨는데 모든 포인트명을 변경해야하는 상황이 온다면... 대부분의 엔지니어는 좌절감을 느낄것이다.
![]() |
| <조명 오브젝트들> |
![]() |
| <조명 오브젝트 한개가 갖고있는 속성들> |
본론 및 목적
본문에서는 포인트명을 일괄로 변경해야할때. 특히나 까다로운 문자열들을 변경해야할 때 어떻게 해야하는지 알아본다.
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
.
.
.
Drivers/ModbusTcpNetwork/Light3/1_02_ -> Drivers/ModbusTcpNetwork/Light1/DO/R01_01
.
Drivers/ModbusTcpNetwork/Light5/63_04_ -> Drivers/ModbusTcpNetwork/Light5/DO/R63_04
1. 숫자로 시작하는 포인트명 앞에 R을 붙인다.
2. R1~R9번 포인트는 R01~R09로 바꾸어준다.
3. 포인트의 맨 마지막 언더바(_)를 지운다
4. Light숫자 폴더뒤에 DO 폴더를 추가한다.
위의 1234번을 적절히 수행하기위해서는 "정규표현식" 을 알아야하며
정규표현식을 지원하는 에디터를 사용해야한다.
정규표현식이란 (What is Regular Expression)
특정한 규칙을 가진 문자열의 집합을 표현할 수 있는 방법.
대부분의 언어에서 지원하고 있으며 문자열의 특정한 "패턴"을 표현하는 방법.
구체적인 방법은 위키를 참조하자.
간단히 설명하자면 R1_01_ 에서 R66_04_ 를 모두 찾으려면 아래와같이 표현할 수 있다.
찾고자 하는 구문 / 정규표현식
R1_01_~ R9_04_ => R[1-9]_[0-9][0-9]_
R01_01_~R63_04_ => R[0-9][0-9]_[0-9][0-9]_
안타깝게 NiagaraFramework에서 찾아고치기에서는 정규표현식을 지원하지 않는다.
그래서 본문에서 사용할 툴은 Acroedit이다.
Acroedit를 사용
윈도우용 프리웨어 텍스트 편집기.EditPlus, UltraEdit, Notepad+ 등 많은 에디터들과 유사하지만 개인적으로 프리웨어임에도 상용 프로그램들과 견주어 꿀리지않는 강력함을 자랑한다. -개발자분께 항상 감사한다
아크로 에디트의 Macro기능과 스크립트(델파이) 기능을 이용하여 원하는 이름으로 바꿀 수 있는 메크로를 제작하고 실행하면 몇일이 걸려야하는 노가다를 몇시간만에 해결할 수 있다.
이는 에러율을 줄일뿐 아니라 생산성에도 큰 도움이 된다.
노가다로 수정하면 또다시 같은일이 발생해도 계속 노가다를 해야하지만
조금 수고스럽더라도 매크로 기능을 익혀두면 평생 손발이 편할 수 있다.
![]() |
| <정규표현식과 아크로에디터를 이용하여 소스를 변경 후 확인중> |
매크로 돌리는 화면을 움직이는 GIF로 캡쳐해두었는데 본인의 실수로 다른 파일과 병합하며 지워졌다...
(사실.. 다시 만들기가 너무 귀찮아서..핑계대는중..)
"이러한 방법이 있다" 라는정도 알아두고 구체적인 상황에 부딛히면 그떄 해결하기로 한다.




댓글
댓글 쓰기