Перейти к основному содержимому

RI_SDK_sensor_VoltageSensor_CustomDeviceInit

Информация

RI_SDK - библиотека Robo Intellect Software Development Kit
sensor - название группы устройств датчиков
Voltage - название устройства датчика тока, напряжения и мощности
CustomDeviceInit - название метода инициализации собственного компонента датчика тока, напряжения и мощности

Сигнатура функции

RI_SDK_sensor_VoltageSensor_CustomDeviceInit(descriptor, lsbBus, lsbShunt, shuntResist, regVoltageShunt, regVoltageBus, errorText):errorCode

Описание метода

Инициализация собственного компонента.

Инициализирует собственный компонент датчика тока, напряжения и мощности. Альтернатива функции RI_SDK_sensor_VoltageSensor_ExtendToModel.

Устанавливает значение младшего бита напряжения на шине(Вольт), значение младшего бита напряжения на шунте(Вольт) и сопротивление шунта(Ом). Эти значение устанавливаются для датчика тока, напряжения и мощности с дескриптором descriptor. Также задаются номера регистров для чтения значения напряжения на шунте (regVoltageShunt) и напряжения на шине (regVoltageBus).

Данная функция используется для получения возможности работы с датчиком тока, напряжения и мощности, модель которого не поддерживается библиотекой.

Параметры и возвращаемые значения

ПараметрТип для Shared objectТип для Golang gRPCОписание
descriptorint (тип C)int64Дескриптор компонента датчика тока, напряжения и мощности
lsbBusfloat (тип C)float32Значение младшего бита напряжения на шине (Вольт)
lsbShuntfloat (тип C)float32Значение младшего бита напряжения на шунте (Вольт)
shuntResistfloat (тип C)float32Сопротивление шунта (Ом)
regVoltageShuntuint8_t (тип C)byteНомер регистра для чтения напряжения на шунте
regVoltageBusuint8_t (тип C)byteНомер регистра для чтения напряжения на шине
errorTextchar[1000] (тип C)stringТекст ошибки (передается как параметр, если происходит ошибка метод записывает в этот параметр текст ошибки)
errorCodeint (тип C)int64Код ошибки

Примеры

Пример №1 - Инициализация собственного компонента датчика тока, напряжения и мощности

В данном примере осуществляется инициализация собственного компонента датчика тока, напряжения и мощности с дескриптором, записанным в переменную voltageSensor. Устанавливаются следующие значения:
Значение младшего бита напряжения на шине - 0.01 Вольт
Значение младшего бита напряжения на шунте - 0.0001 Вольт
Сопротивление шунта - 0.2 Ом

# Инициализация собственной модели датчика тока, напряжения и мощности 
# Значение младшего бита напряжения на шине - 0.01 Вольт
# Значение младшего бита напряжения на шунте - 0.0001 Вольт
# Сопротивление шунта - 0.2 Ом
# Номер регистра для чтения напряжения на шунте - 0x1
# Номер регистра для чтения напряжения на шине - 0x2
errCode = lib.RI_SDK_sensor_VoltageSensor_CustomDeviceInit(voltageSensor, 0.01, 0.0001, 0.2, 0x1, 0x2, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

Полный текст примера

from ctypes.util import find_library
import platform
import sys
from ctypes import *

# Подключаем внешнюю библиотеку для работы с SDK
platform = platform.system()
if platform == "Windows":
libName = "librisdk.dll"
if platform == "Linux":
libName = "librisdk.so"

pathLib = find_library(libName)
lib = cdll.LoadLibrary(pathLib)


# Указываем типы аргументов для функций библиотеки RI_SDK
lib.RI_SDK_InitSDK.argtypes = [c_int, c_char_p]
lib.RI_SDK_CreateDeviceComponent.argtypes = [c_char_p, c_char_p, POINTER(c_int), c_char_p]
lib.RI_SDK_sensor_VoltageSensor_CustomDeviceInit.argtypes = [c_int, c_float, c_float, c_float, c_byte, c_byte, c_char_p]

def main():
errTextC = create_string_buffer(1000) # Текст ошибки. C type: char*
voltageSensor = c_int()

# Инициализация библиотеки RI SDK с уровнем логирования 3
errCode = lib.RI_SDK_InitSDK(3, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

# Создание компонента датчика тока, напряжения и мощности
errCode = lib.RI_SDK_CreateDeviceComponent("sensor".encode(), "voltage_sensor".encode(), voltageSensor, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("voltage_sensor: ", voltageSensor.value)

# Инициализация собственной модели датчика тока, напряжения и мощности
# Значение младшего бита напряжения на шине - 0.01 Вольт
# Значение младшего бита напряжения на шунте - 0.0001 Вольт
# Сопротивление шунта - 0.2 Ом
# Номер регистра для чтения напряжения на шунте - 0x1
# Номер регистра для чтения напряжения на шине - 0x2
errCode = lib.RI_SDK_sensor_VoltageSensor_CustomDeviceInit(voltageSensor, 0.01, 0.0001, 0.2, 0x1, 0x2, errTextC)
if errCode != 0:
print(errCode, errTextC.raw.decode())
sys.exit(2)

print("Success")

main()