pdcomm_opcua_server_add_variable
함수
Objects 폴더 아래에 Variable 노드를 추가합니다.
int32_t pdcomm_opcua_server_add_variable(pdcomm_opcua_handle server, pdcomm_opcua_bytes node_id, pdcomm_opcua_bytes name, pdcomm_opcua_bytes variant, uint32_t flags)노드는 Objects(i=85)가 Organizes로 참조하는 BaseDataVariableType 인스턴스입니다. BrowseName(네임스페이스 2)과 DisplayName은 name입니다. DataType과 ValueRank는 초깃값에서 추론하므로 Variant에는 타입이 있어야 합니다. Null Variant는 거부합니다.
NodeId와 Variant는 서비스 접두사가 없는 완전한 Part 6 기본 제공(built-in) 이진 인코딩입니다. NodeId는 네임스페이스 인덱스 2(urn:pdcomm:opcua:nodes)를 사용해야 하며 아직 존재하지 않아야 합니다.
매개변수
| 이름 | 설명 |
|---|---|
server | 서버 핸들입니다. |
node_id | 인코딩된 NodeId이며 최대 4096바이트입니다. |
name | UTF-8 이름이며 1~4096바이트입니다. |
variant | 인코딩된 초기 Variant이며 최대 4 MiB입니다. |
flags | ::pdcomm_opcua_variable_flags 값의 비트 OR입니다. 0이면 인증된 사용자만 읽을 수 있는 읽기 전용 변수가 됩니다. |
반환값
성공하면 #PDCOMM_OPCUA_OK를 반환합니다. 알 수 없는 플래그, 유효하지 않은 인코딩, 다른 네임스페이스, Null Variant이면 #PDCOMM_OPCUA_INVALID_INPUT을 반환합니다. Objects에 이미 참조가 8192개 있으면 #PDCOMM_OPCUA_LIMIT를 반환합니다. 주소 공간이 노드를 거부하면(중복 NodeId, 노드 65536개 초과 또는 값 64 MiB 초과이며, 텍스트에 StatusCode가 나옴) #PDCOMM_OPCUA_RUNTIME_ERROR를 반환합니다. 그 밖에 #PDCOMM_OPCUA_CLOSED, #PDCOMM_OPCUA_BUSY, #PDCOMM_OPCUA_INVALID_HANDLE, #PDCOMM_OPCUA_POISONED를 반환할 수 있습니다.
참고
- 호출이 실패하면 일부만 만들어진 노드가 남지 않습니다.