local: 로 시작하는 값은 화면 안에서만 돕니다 — 서버로 나가지 않습니다.local: 로 시작하면 됩니다. 등록 절차가 따로 없습니다local:이름 게이트웨이를 거치지 않는 값 · 슬라이더로 직접 조작 가능설명
값 이름을 local: 로 시작하면 게이트웨이가 아니라 화면 안에서만 도는 값이 됩니다. 태그 관리에 등록할 필요도, 설비가 있을 필요도 없습니다.
쓰임이 세 가지쯤 됩니다.
- 설비 없이 화면을 만들 때. 슬라이더를 끌어 가며 임계값 색이 제대로 바뀌는지, 채움이 어디까지 차는지 그 자리에서 확인합니다.
- 시연·교육 화면. 게이트웨이에 연결하지 않아도 살아 있는 화면이 됩니다.
- 화면 안에서만 쓰는 상태. 어떤 탭이 선택됐는지, 재생 목록의 몇 번째인지 같은 것.
읽기든 쓰기든 게이트웨이 태그와 똑같이 씁니다. 바인딩 쪽에서는 구분이 없습니다.
설정 항목
| 이름 | 값 | 기본 | 설명 |
|---|---|---|---|
| 이름 | string | — | local:tank.level 처럼 접두어 뒤에 원하는 이름. 게이트웨이 태그와 섞이지 않습니다. |
| 초기값 | any | (없음) | 문서에 저장해 두면 화면을 열 때 그 값으로 시작합니다. |
| 컨트롤 종류 | slider | color | (없음) | slider — 요소를 끌어서 값을 바꿉니다. color — 누르면 색 고르기 창이 뜨고 고른 색을 빨·초·파(·흰) 값에 0~255 로 씁니다(조명 색 컨트롤). |
| 끄는 동안 쓰기(liveHz) | 1~20 | (없음 — 뗄 때 한 번) | 게이트웨이 태그는 원래 손을 뗄 때 한 번만 씁니다. 조명 페이더처럼 손을 따라 바로 바뀌어야 하면 15~20 을 줍니다 — 그 빈도로 끄는 동안에도 쓰고, 뗄 때 마지막 값을 한 번 더 씁니다. color 의 고르는 동안 쓰기에도 씁니다(기본 15). |
| 초록·파랑·흰 값(greenId·blueId·whiteId) | 값 id | — | color 에서만. 빨강은 '값'(valueId). 흰 값이 있으면 셋이 함께 켜진 몫을 흰색으로 옮겨 씁니다. |
| 최소 / 최대 | number | 0 / 100 | 슬라이더가 오갈 범위. 순서를 뒤집어 적어도 됩니다. |
| 눈금 | number | (연속) | 지정하면 그 배수로만 값이 정해집니다. |
| 방향 | x | y | x | y 는 위로 갈수록 커집니다(탱크 수위처럼). |
동작
슬라이더는 끌기·휠·방향키로 조작합니다. 로컬 값이면 끄는 동안 곧바로 반영되고, 게이트웨이 태그를 물린 슬라이더는 손을 뗄 때 한 번만 전송합니다(끄는 내내 설비에 값을 퍼붓지 않기 위해서입니다). 후자는 쓰기 와 마찬가지로 운전자(operator) 이상이어야 합니다.
로컬 값은 화면이 거짓을 말하게 할 수 있습니다. 실제 공정값처럼 보이지만 아무 설비와도 연결돼 있지 않습니다. 시연용으로 만든 화면을 그대로 현장에 걸어 두면 운전자는 그것이 실제 값인 줄 압니다. 운전 화면으로 넘길 때는 local: 이 남아 있지 않은지 반드시 확인하세요.
같은 문서를 여러 모니터에 띄우면 그 창들끼리는 값을 나눕니다. 모니터 3의 슬라이더로 모니터 1의 탱크를 움직일 수 있습니다 — 여러 화면이 하나의 설비로 읽혀야 하기 때문입니다. 서로 다른 문서를 연 창끼리는 이름이 같아도 섞이지 않고, 서버로는 여전히 아무것도 나가지 않습니다.
문서를 바꾸면 로컬 값은 비워집니다. 이전 화면의 값이 새 화면의 같은 이름 값에 얹히는 것을 막기 위해서입니다. 새 문서의 초기값이 있으면 그것으로 다시 시작합니다.
이름은 local: 뒤에 아무렇게나 지어도 됩니다. 콜론은 게이트웨이 태그 이름이나 외부 SCADA 에서 가져온 이름에 쓰이지 않아 부딪힐 일이 없습니다. 요소가 스스로 만드는 값도 있습니다. 카메라와 재생 목록은 이름을 정해 두고 값을 내보냅니다 — 이건 규칙이라 외워서 적기 어렵습니다. | 요소 | 내보내는 값 | | --- | --- | | 카메라 | local:<요소id>.online (수신 1/0) · local:<요소id>.ageMs (마지막 프레임 나이) | | 재생 목록 | local:<요소id>.index · .count · .name | 그래서 값 입력칸 옆의 ‘목록’ 버튼을 쓰면 이 화면이 만드는 값을 설명과 함께 보고 고를 수 있습니다. 이름으로도, 설명으로도 검색됩니다(‘정문’으로 그 카메라의 값을 찾는 식).
아무도 만들지 않는 이름을 적으면 화면은 영영 안 움직입니다. 읽기 바인딩만 걸린 로컬 값은 값이 들어올 곳이 없습니다 — 대개 오타입니다. 그런 경우 입력칸 아래에 *이 값을 만드는 곳이 없습니다* 라고 뜹니다.
값 하나를 저절로 돌릴 수도 있습니다. 전시장이나 교육용 화면은 아무도 누르지 않아도 움직여야 합니다. 작화에서 아무것도 선택하지 않으면 오른쪽 패널이 화면 설정으로 바뀝니다 — 거기 ‘값 자동 순환’ 을 켜고 세 가지를 정하세요.
- 순환할 값 — 밀 로컬 값. ‘목록’ 버튼으로 이 화면이 아는 값에서 고를 수 있습니다.
- 시작 / 끝 — 끝까지 가면 시작으로 돌아옵니다.
- 한 칸(초) — 한 값에 머무는 시간. 0.2초보다 짧게는 돌지 않습니다.
그 값을 읽는 바인딩(상태·색·각도…)이 함께 따라 움직입니다. 로봇 공정처럼 단계가 정해진 움직임이라면, 값 하나가 팔·집게·물건을 한꺼번에 정하게 해 두는 편이 낫습니다 — 미는 쪽은 숫자만 알면 됩니다.
지금 값에서 이어 갑니다. 사람이 버튼을 눌러 5단계로 보내 두면 거기서부터 흘러갑니다 — 누르자마자 처음으로 튀지 않습니다. 초기값은 화면이 알아서 넣으므로 따로 적어 두지 않아도 됩니다.
운전 모드에서만 돕니다. 작화 중에 값이 계속 바뀌면 무엇을 고치는 중인지 알 수 없기 때문입니다. 그리고 local: 값만 돕니다 — 게이트웨이 태그를 주기로 미는 것은 화면 효과가 아니라 설비 조작입니다. 화면 하나 띄워 뒀다고 펌프가 돌기 시작해서는 안 됩니다.