제공하는 노드
내장 OPC UA 서버가 제공하는 것, 그리고 제공하는 전부의 목록입니다. 태그, Logic 변수, 경보, 장치 명령을 쓰기를 허용할 때까지 행마다 읽기 전용으로 담습니다. 클라이언트가 각각을 어디에서 찾는지, 업데이트한 스테이션에서 무엇을 해야 하는지도 설명합니다.
제공하는 노드은(는) Connector에 있는 OPC UA 서버 패널의 네 번째 카드입니다. 서버는 이 목록만 제공합니다. 접속한 클라이언트에게는 여기에 넣은 태그, Logic 변수, 경보, 장치 명령이 보이고 그 밖의 것은 보이지 않습니다. 카드는 제목 아래에서 이렇게 말합니다: "서버는 이 목록만 제공합니다. 각 행은 태그, Logic 변수, 경보, 장치 명령 중 하나입니다. 쓰기를 허용할 때까지 행은 읽기 전용입니다. 허용하면 클라이언트의 쓰기는 다른 모든 쓰기와 같은 경로를 거치고, 클라이언트 세션과 함께 진단 로그에 기록됩니다." Connector 보기는 카드를 읽고, Connector 구성은 카드를 바꿉니다.
빈 목록
목록은 비어 있는 상태로 시작합니다. 새 스테이션에서도, 모든 장치를 통째로 제공하던 버전에서 업데이트한 스테이션에서도 같습니다. 비어 있는 동안 카드의 주의 문구가 이렇게 말합니다: "목록이 비어 있어 서버는 스테이션의 어떤 것도 제공하지 않습니다. 행을 추가할 때까지 OPC UA 클라이언트에는 태그도 변수도 경보도 명령도 보이지 않습니다." 서버는 계속 수신하고 클라이언트 접근이(가) 허용하는 세션도 받지만, 그 세션이 둘러보는 주소 공간에는 스테이션의 것이 아무것도 없습니다. 에이전트는 server_status에서 같은 것을 읽으며, 목록이 비어 있는 동안 servesNothing은 true입니다.
표
| 열 | 보여 주는 것 |
|---|---|
| 신호원 | 행이 제공하는 것을 선택 목록이 붙이는 이름으로 보여 줍니다. 신호원을 아직 고르지 않은 동안에는 "아직 신호원 없음"입니다. |
| 접근 | 읽기 전용 또는 읽기와 쓰기. 장치 명령은 호출 가능입니다. |
| 노드 | 클라이언트에 설정하는 주소를 nsu=<namespace>;s=<identifier> 형태로 보여 줍니다. 행이 아무것도 제공하지 않는 동안에는 비어 있습니다. |
행은 종류(태그, 변수, 경보, 명령) 순으로, 그다음 이름 순으로 나옵니다. 행이 하나도 없으면 표에 "아직 제공하는 노드가 없습니다. 새 행으로 추가하십시오."가 나옵니다. 행을 클릭하면 그 행이 선택되고 표 아래에 그 필드가 열립니다. 어느 행이 선택되어 있는지는 지금 쓰는 창의 것입니다.
| 명령 | 하는 일 | 회색이 되는 때(상황) | 그려지지 않는 때(역할) |
|---|---|---|---|
| 새 행 | 아직 아무것도 제공하지 않는 읽기 전용 행을 추가하고 선택해서, 다음에 신호원을 고를 수 있게 합니다. 작업 기록 줄에 "OPC UA 서버 목록에 행을 추가했습니다. 신호원을 고르십시오."가 나옵니다. | 실행 기록이 스테이션을 잡고 있을 때, 또는 런타임이 멈춰 있을 때. | Connector 구성이 없을 때. |
| 행 삭제(위험 색) | 표에서 선택한 행을 묻지 않고 바로 삭제합니다. 도구 설명은 그 행이 제공하는 신호원의 이름을 보여 주고, 작업 기록 줄이 삭제를 알려 줍니다. 신호원 자체는 건드리지 않습니다. 클라이언트는 그 노드를 더 이상 찾지 못합니다. | 선택한 행이 없을 때("삭제할 행을 목록에서 고르십시오."), 실행 기록이 스테이션을 잡고 있을 때, 또는 런타임이 멈춰 있을 때. | Connector 구성이 없을 때. |
행의 필드
각 필드는 바뀌는 순간 저장되고, 서버는 잠시 뒤 새 행을 제공합니다. 세션은 끊기지 않습니다. 서버는 목록을 1초에 10번 읽습니다.
| 필드 | 하는 일 | 값과 기본값 |
|---|---|---|
| 신호원 | 행이 제공하는 것입니다. 목록은 "(없음)"으로 시작하고, 이어서 사용 중인 장치의 사용 중인 태그가 드라이버, 장치, 태그 자신의 이름으로 나옵니다("태그 · Simulated · Oven · Temperature"). 그다음 값을 담는 Logic 변수가 폴더와 이름으로 나오고("변수 · Oven / Setpoint"), 그다음 경보가 같은 방식으로 나오며("경보 · Oven / High temperature"), 마지막으로 사용 중인 장치의 명령이 나옵니다. 장치 페이지에서 선언한 명령과, 충전기처럼 프로토콜이 정해 둔 명령입니다("명령 · OCPP · Charger · Reset"). 신호원은 목록에 한 번만 넣을 수 있습니다. 행은 신호원을 그 신원으로 붙들고 있으므로, 이름을 바꿔도 행은 같은 신호원에 그대로 있고 서버는 새 이름으로 제공합니다. 목록이 더 이상 내놓지 않는 신호원은 선택된 채로 이름이 나오며, 사용 안 함인 태그나 명령은 빠진 이유와 함께 나옵니다. 더 이상 없는 신호원만 신원과 함께 없어진 것으로 나옵니다. 태그의 사용하는 곳 카드에는 그 태그를 제공하는 행이 나옵니다. | 새 행은 "(없음)". |
| 접근 | 클라이언트가 그 행에 쓸 수 있는지입니다. 신호원이 쓰기를 받지 않으면 읽기와 쓰기가 목록에 남은 채 회색이 되고, 도구 설명이 "이 신호원은 쓰기를 받지 않습니다. 쓰기를 받는 것은 쓰기 접근이 있는 태그나 내부 값 변수뿐입니다."라고 말합니다. 경보를 고르면 행은 읽기 전용으로 돌아갑니다. 명령 행에서는 이 필드에 선택 목록이 없고 호출 가능이 고정 값으로 표시됩니다. 명령은 호출하는 것이지 읽거나 쓰는 것이 아니기 때문입니다. | 읽기 전용 또는 읽기와 쓰기. 명령은 고정으로 호출 가능. 새 행은 읽기 전용. |
필드 아래의 한 줄이 그 행이 클라이언트에게 무엇을 하는지 말합니다:
| 카드가 말하는 것 | 나오는 때 |
|---|---|
| "이 행은 아직 아무것도 제공하지 않습니다. 신호원을 고르십시오." | 신호원을 고르지 않았을 때. |
| "이 행의 신호원은 더 이상 없으므로 서버는 이 행으로 아무것도 제공하지 않습니다." | 태그, 변수, 경보, 명령 중 하나가 삭제되었을 때. |
| "클라이언트는 이 노드를 읽을 수 있지만 쓸 수는 없습니다." | 읽기 전용인 태그나 변수. |
| "클라이언트는 이 노드를 읽고 쓸 수 있습니다. 쓰기는 클라이언트 세션과 함께 진단 로그에 기록됩니다." | 읽기와 쓰기로 표시한 태그나 변수. |
| "클라이언트는 경보의 Active, Acked, State, Priority, Message를 읽기만 하고 쓰지 않습니다." | 경보. |
| "목록에 있는 동안 클라이언트는 이 명령을 장치의 메서드로 호출합니다." | 장치 명령. |
그 아래에 클라이언트가 찾는 위치 다음으로 노드가 나옵니다.
행이 거부하는 것
목록의 규칙이 거부한 변경은 저장되지 않습니다. 이유가 행의 필드 위에 빨간색으로 나오고, 변경은 고칠 수 있도록 화면에 남으며, 행은 제공하던 것을 계속 제공합니다.
| 카드가 말하는 것 | 나오는 때 |
|---|---|
| "이 신호원은 이미 목록에 있습니다. 클라이언트는 그 행이 제공하는 노드에서 찾습니다." | 그 신호원이 이미 다른 행에 있을 때. |
| "이 신호원에는 쓸 수 없습니다. 쓰기 접근이 있는 태그나 내부 값 변수를 고르거나, 행을 읽기 전용으로 두십시오." | 읽기 전용 태그, 쓰지 않는 드라이버의 태그, 식 변수, 경보, 명령, 더 이상 없는 신호원에 읽기와 쓰기를 요청했을 때. |
| "쓰기를 받는 행에는 쓰기가 갈 태그나 변수가 있어야 합니다." | 신호원이 없는 행에 읽기와 쓰기를 요청했을 때로, 에이전트만 요청할 수 있습니다. |
| "목록의 이 행은 더 이상 없습니다. 다시 불러온 뒤 다시 시도하십시오." | 편집하는 동안 다른 창이나 에이전트가 그 행을 삭제했을 때. |
실행 기록이 스테이션을 잡고 있거나 런타임이 멈춰 있는 동안에는 페이지의 다른 변경처럼 거부되며, 이유가 작업 기록 줄에 나오고 아무것도 저장되지 않습니다.
클라이언트가 각 신호원을 찾는 곳
| 신호원 | 있는 곳 | 클라이언트가 읽는 것 |
|---|---|---|
| 태그 | 늘 있던 곳입니다. 장치의 네임스페이스 http://opcfoundation.org/UA/<driver>.<device>/에 태그 자신의 이름으로 있습니다. 목록이 생기기 전에 설정한 클라이언트도 같은 주소에서 찾습니다. 주소 공간을 탐색하는 클라이언트는 Objects 아래 Devices 폴더에서, 장치 이름이 붙은 객체 안에서 찾습니다. |
장치가 답한 값을 Connector가 읽는 그대로 품질과 시각과 함께 읽습니다. |
| Logic 변수 | Objects 아래 Logic 폴더에, Logic 자신의 폴더 안에, 서버의 네임스페이스 http://opcfoundation.org/UA/EdgeTranslator/의 Logic 주소(Variables.Oven.Setpoint)로 있습니다. |
스테이션의 하나뿐인 변환으로 형식을 정한 값입니다. Boolean, 정수는 Int64, 실수는 Double, 텍스트는 String, 날짜와 시간은 DateTime입니다. 유효한 값이 없는 변수는 BadDataUnavailable입니다. |
| 경보 | Objects 아래 Alarms 폴더에, Logic 자신의 폴더 안에, Logic 주소(Alarms.Oven.HighTemperature)의 객체 하나로 있습니다. |
읽기 전용 멤버 다섯 개입니다. Active와 Acked(Boolean), State(Int32: 0은 정상, 1은 발생·미확인, 2는 발생·확인됨, 3은 복귀·미확인), Priority와 Message(String)입니다. 품질이 나쁜 동안 경보가 상태를 붙들고 있으면 Active, Acked, State는 UncertainLastUsableValue입니다. |
| 명령 | 장치의 태그 옆에 있는, 장치의 메서드입니다. | 명령이 선언하는 값으로 호출되며, 장비가 답한 것을 돌려줍니다. |
목록이 그 장치의 무엇을 제공하든 모든 장치는 자기 네임스페이스를 유지합니다. 그래서 다른 장치의 태그가 목록에 들어오거나 나가도 클라이언트가 네임스페이스를 찾는 번호는 바뀌지 않습니다. 목록이 아무것도 넣지 않은 장치에는 노드가 없습니다.
쓰기
클라이언트의 쓰기는 읽기와 쓰기로 표시한 행에서만 스테이션에 닿습니다. 쓰기가 도착하는 순간 목록을 다시 확인하므로, 방금 읽기 전용으로 바꾼 행에 쓰기가 되는 일은 없습니다. 태그에 대한 쓰기는 바깥에서 오는 다른 쓰기처럼 장치의 전달 대기열로 가고, 답은 장비를 기다립니다. 내부 값 변수에 대한 쓰기는 Logic 쓰기 깔때기를 지나 변수의 형식으로 변환됩니다. 원본 잠금이 적용됩니다. 실행 중인 Process가 잡고 있는 신호원은 거부됩니다. 모든 쓰기는 클라이언트의 애플리케이션과 세션과 함께 진단 로그에 기록됩니다. 식 변수와 경보는 쓰기를 받지 않으며, 서버는 BadNotWritable을 돌려줍니다. 명령은 쓰는 것이 아니라 호출하는 것이며, 클라이언트는 목록에 있는 명령만 호출합니다.
업데이트한 스테이션
목록이 없는 버전에서 업데이트한 스테이션은 모든 장치의 모든 태그를 제공했습니다. 그 스테이션의 목록은 비어 있는 상태로 시작하므로, 업데이트 뒤에는 목록을 구성할 때까지 OPC UA 서버가 아무것도 제공하지 않습니다. 클라이언트가 읽는 태그마다 행을 추가하고, 클라이언트가 쓰는 것은 읽기와 쓰기로 표시하고, 클라이언트가 호출하는 명령을 추가하십시오. 업데이트 전에 설정한 클라이언트는 모든 태그를 예전 주소에서 찾으므로 클라이언트 쪽은 바꿀 필요가 없습니다.
에이전트로
server_list_upsert(source: "Connector.Simulated.Oven.Temperature")
server_list_upsert(source: "Variables.Oven.Setpoint", access: "ReadAndWrite")
server_list_upsert(source: "Alarms.Oven.HighTemperature")
server_status()
에이전트가 만든 행은 access가 달리 말하지 않는 한 읽기 전용이며, server_list_delete는 식별자로 행을 삭제합니다. 도구는 도구를 범위별로에서 설명합니다.
목록이 하지 않는 일
목록은 서버를 켜지 않습니다(명령 모음의 사용이 켭니다). 어느 클라이언트가 접속할 수 있는지도 정하지 않습니다(클라이언트 접근이(가) 정합니다). 바깥에서 경보를 확인하지도 않습니다. 확인은 계속 운영자의 명령입니다. 위의 값을 제공할 뿐 OPC UA 알람과 컨디션 이벤트는 제공하지 않습니다. 이미지, 아이콘, 색을 담는 변수는 목록에 나오지 않으며, 장치 기술의 상수는 제공하지 않습니다.