주소 공간
모든 포인트가 놓이는 예약된 일곱 뿌리, 주소를 적고 다듬는 방식, 포인트가 끝나고 멤버가 시작되는 자리, 거르기 상자가 좁히는 것, 그리고 편집기에서 주소를 넣는 세 가지 방법.
수식과 스크립트와 대시보드 바인딩과 에이전트 도구가 부를 수 있는 모든 포인트는 예약된 일곱 뿌리 가운데 하나 아래에 있습니다. 사용자가 지은 이름은 언제나 뿌리 아래에 있으므로 뿌리 자체와 부딪히는 일은 없습니다. Logic 페이지의 열은 같은 뿌리를 두 제목으로 나누어 그리고, 트리가 보여 주는 것이 곧 입력하는 것입니다. 어떤 행의 주소는 수식이 쓰는 그 글자입니다.
일곱 뿌리
| 뿌리 | 담는 것 | 열의 제목 | 편집하는 곳 |
|---|---|---|---|
System |
애플리케이션이 자기에 대해 공개하는 진단 넷 | 다른 페이지에서 옴 | 어디에서도 편집하지 않습니다 |
Server |
내장 OPC UA 서버의 진단 넷 | 다른 페이지에서 옴 | 설정에서 |
Connector |
실시간 드라이버와 폴더와 장치와 태그의 트리 | 다른 페이지에서 옴 | Connector 페이지에서 |
Variables |
여기에서 정의하는 변수이며 각자의 폴더 안에 있습니다 | 여기에서 정의함 | 여기에서 |
Alarms |
여기에서 정의하는 경보의 실시간 상태이며 각자의 폴더 안에 있습니다 | 여기에서 정의함 | 여기에서(상태 자체는 읽기 전용입니다) |
Process |
모델마다의 유닛입니다. 채널, 실행 상태, 생산성, 명령, 준비 | 다른 페이지에서 옴 | Process 페이지에서 |
Assets |
라이브러리의 이미지와 아이콘과 색이며 이름으로 주소를 매깁니다 | 여기에서 정의함, Assets 뿌리로 | 자산 패널에서 |
Actions와 Triggers는 이 열의 구역이지만 주소 공간의 뿌리는 아닙니다. 주소가 아니라 신원으로 참조되고 실시간 값도 가지지 않습니다. Assets 뿌리는 수식과 찾아보기… 선택기를 위해 있습니다. 열에서는 그 자리를 자산 라이브러리 뿌리가 차지하므로, 트리가 같은 이름의 뿌리를 둘 보여 주는 일은 없습니다. System과 Server의 고정된 포인트, 그리고 Connector와 Process 가지의 모양은 다른 페이지에서 오는 것에 나열되어 있습니다.
주소를 적는 방식
주소는 예약된 뿌리에서 시작해 마침표로 나눈 마디입니다. Connector.Simulated.Air.CompressedAir.HeaderPressure, Variables.Forno.Setpoint, Alarms.HighLevel, System.Now, Assets.Colors.Red입니다. 표시 이름은 자유 입력으로 남고, 주소는 각 이름을 다듬은 마디를 씁니다. 글자도 숫자도 아닌 모든 문자는 _가 되고, 숫자로 시작하는 이름은 앞에 _를 얻습니다(Forno de teste는 Forno_de_teste로, 3rd zone은 _3rd_zone으로, 빈 이름은 _로 답합니다). 마디는 언제나 식별자이므로 점을 쓰는 형태는 언제나 동작합니다. 마디는 문자열 리터럴을 쓰는 대괄호 형태(Variables["Setpoint"])로 적을 수도 있고, 평가기는 그것을 같은 주소로 읽습니다.
포인트가 끝나고 멤버 접근이 시작되는 자리는 뿌리에 따라 다릅니다. Connector 주소는 드라이버와 장치 사이에 그 장치의 폴더 단계를 담고(Modbus RTU 회선은 단계를 더하지 않습니다), Variables와 Alarms는 이름 앞에 폴더 단계를 세 개까지 담습니다. 그래서 이 뿌리들 아래에서 포인트는 풀리는 가장 긴 앞머리이고 그 뒤에 오는 것이 멤버입니다(.Value, .State()). Assets는 언제나 뿌리 아래 두 마디입니다. Process는 평범한 포인트에서 넷, 생산성 요약 포인트에서 여섯, 생산성 출력이나 절차 포인트에서 일곱입니다. 뿌리가 허락하는 것보다 짧은 사슬은 완전하지 않은 주소로 거부됩니다.
수식과 스크립트 안의 주소는 정적이어야 합니다. 모든 마디가 식별자이거나 문자열 리터럴이어야 하고 계산된 값이어서는 안 됩니다. Variables[someName]은 검사에서 "주소는 정적이어야 합니다"로 거부됩니다.
주소 충돌
한 구역의 한 단계는 그곳에 놓인 폴더와 정의가 함께 쓰는 하나의 마디 이름 공간입니다. 서로 다른 폴더에 있는 Setpoint라는 이름의 변수 둘은 괜찮습니다. 같은 단계에서 둘 다 Forno로 다듬어지는 변수와 폴더는 괜찮지 않고, 나란히 놓인 Pump 1과 Pump_1도 마찬가지입니다. 편집기는 입력하는 대로 그런 이름을 거부하며 이미 그 주소로 답하는 것을 밝힙니다. "'Pump 1'은(는) 이미 'Variables.Pump_1'(으)로 답합니다. 한 폴더에 놓인 이름은 서로 다른 마디로 다듬어져야 합니다." 자산도 범주 안에서 같은 규칙을 따릅니다. 사용자의 이미지나 아이콘이나 색 둘이 마디를 함께 쓸 수 없고, 시스템 항목과 마디가 같은 사용자 아이콘이나 색은 그 주소에서 시스템 항목을 덮어씁니다.
주소 넣기
수식이나 조건이나 스크립트에 주소를 넣는 방법은 셋입니다.
- 입력합니다. 편집기는 주소 토큰을 자동으로 완성합니다. 토큰 하나만 있을 때는 뿌리 이름(
Con은Connector를 내놓습니다), 그다음에는 지금까지 입력한 경로의 자식을 대소문자 없이 앞머리로 맞추어 내놓고, 토큰이 포인트를 가리키게 되면 그 포인트가 읽을 수 있는 멤버를 내놓습니다. 후보는 저마다 토큰 전체를 대신합니다. - 찾아보기…는
Assets뿌리를 포함한 모든 뿌리의, 멤버 단계까지 내려가는 트리 위에 선택기를 엽니다. 행 하나를 고르고 삽입을 누르거나 그 행을 두 번 누르면 커서 자리에 그 주소가 놓입니다. 바닥글은 고른 행이 넣을 글자를 보여 주며, 아무것도 고르지 않았을 때는 "두 번 누르거나 삽입을 눌러 편집기에 넣으십시오."입니다. - 포인트에서 복사합니다. 열에서 어떤 포인트든 고르면 포인트 패널이 열리고, 그 주소 칸은 실시간 값과 그 품질과 시각 옆에 놓인, 고르고 복사할 수 있는 읽기 전용 글자입니다. 변수나 경보 편집기는 이름 칸 아래에 자기 주소를 되풀이해 보여 줍니다.
포인트 아래에서 선택기는 그 포인트가 읽을 수 있는 멤버를 나열합니다(Value, ValueToReal(), State() 같은 것들입니다). 멤버는 그 자체로 주소가 아닙니다. 포인트의 주소 뒤에 덧붙이는 것입니다. 수식이 그 같은 표면을, 멤버마다 무엇을 돌려주는지와 함께 나열합니다.
거르기 상자
열 위의 거르기… 상자는 이름에 입력한 글자가 들어 있는 행만 남도록 트리를 좁히며 대소문자는 구별하지 않습니다. 포인트는 자기가 일치할 때에만 남습니다. 폴더는 자기가 일치하거나 아래의 무엇인가가 일치할 때 남고 일치하는 것까지 열립니다. Actions와 Triggers 구역은 이름이 일치하는 행만 나열합니다(자기 이름이 일치하면 구역은 목록에 남지만 비어 있습니다). Assets 뿌리는 이름이 일치하는 범주로 좁혀지고(Col을 입력하면 색이 남습니다) 자기 이름만 일치할 때 통째로 남습니다. 자기 이름이 일치하는 주소 공간 뿌리는 목록에 남고 펼칠 때 자기 가지를 읽습니다. 멤버는 걸러진 화면에 결코 들어가지 않으며, 거르기는 사용자의 창에만 속합니다. 같은 스테이션의 다른 브라우저는 자기 것을 따로 가집니다.
주소 공간이 하지 않는 일
주소 공간은 꺼진 장치, 내장 서버에 태그가 올라와 있지 않은 장치, 바인딩이 없는 Process 채널(그런 채널은 목록에는 있지만 멤버를 내놓지 않습니다)에 대해서는 아무것도 공개하지 않습니다. 이름은 번역되지 않습니다. 주소는 다듬은 표시 이름이므로, 변수나 경보나 폴더나 장치나 태그나 이미지의 이름을 바꾸는 일은 주소를 바꾸는 일이며, 애플리케이션은 안전한 이름 바꾸기로 모든 참조에서 그것을 고쳐 씁니다(변수, 장치 폴더).