콘텐츠로 이동
무료 평가 시작

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)

선언 위치: #include <pdcomm/opcua/pdcomm_opcua.h>

노드는 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바이트입니다.
nameUTF-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를 반환할 수 있습니다.

참고

  • 호출이 실패하면 일부만 만들어진 노드가 남지 않습니다.