Добрый вечер!
Получить данные по Modbus и отправить по SNMP с помощью контроллера WB6.
Доп. ветка: Настройка SNMP agent
Получаем по Modbus RTU параметры с 2-х параллельно соединенных батарей, в плане до 24шт.
Требуется получить:
Среднее значение (average) “Battery voltage, V” 2-х батарей, среднее значение SOC;
Общий ток (general) “Current, A” 2-х батарей, общую емкость батареи “Nominal Capacity, Ah”.
Поясняю, мы имеем сейчас 2 значения напряжения с обоих батарей: 51,46 и 52, 34.
Необходимо в отдельном окне иметь среднее значение напряжения: 51,9 в этом же окне общий ток батареи (нагрузки на АКБ нет, поэтому ток на скриншоте по нулям): Iакб1 +Iакб2
В веб-интерфейсе функцию работы с полученными значениями я не нашел. Может быть это можно организовать через написание соответствующего скрипта? Можете подсказать?
Добрый день!
Спасибо большое, с суммой и средним значением в rules все получилось.
Следующий вопрос такой:
У батареи есть серийный номер, в предыдущем письме прикладывал скриншот.
Доп. информация от производителя: The Register address from 65333 - 65343, Each 16bit HEX you need to convert to ASCII Let say you have 3830 3030 3031 3039 3032 3938 3230 3230 3030 3231 Means that 80 00 01 09 02 98 20 20 00 21
Мы в свою очередь имеем батарею с SN: 80000041069820200009.
При настройки отображения SN выбрали: 8-bit ASCII char. Другого подходящего формата значения из всплывающего списка не было:
Также пробовал другие значения формата, увы, единственно, что мог получить мало-мальски схожее, это только первые 4 группы цифр HEX при выборе 32-bit BCD:
Здравствуйте! Пока, к сожалению, у драйвера нет полноценной поддержки работы со строками. Можно только считать один 8-битный символ из 16-разрядного регистра.
Думаю, можно считывать данные из регистров и отправлять в десятичном виде и уже преобразовывать в ASCII-символы на стороне получателя.
Или же с помощью правил сделать нужные преобразования на контроллере и публиковать полученную строку в отдельный топик или виртуальное устройство. А из них уже отправлять получателю.
Коллега предлагает следующее: Создать для устройства в шаблоне 10 полей типа “value”
Так как производитель сохраняет ASC2 код символа в регистр - собирать требуемую строку вже отдельным правилом.
То есть считываются данные в hex-формате в несколько переменных (каналов устройства), затем из них составляется строка, затем строка преобразуется в символы ascii.
Так как у меня нет аналогичного устройства, то я создал виртуальное устройство, создал виртуальные каналы и задал им вручную значения.
Вам нужно дополнить ваш шаблон каналами с данными из регистров серийного номера в аналогичном формате. С частью данных это у вас это уже получилось:
. Аналогично создайте Serial Number 1, Serial Number 2…
Можно использовать формат u64 (чтобы меньше каналов создавать) и тип text. То есть 2 канала с данными u64, один u32 и одни u16. В сумме будет 22 байта данных. Затем эти данные объединить и преобразовать, как показано в примере. Результат можно опубликовать в отдельный топик или виртуальное устройство. Затем использовать эти данные аналогично имеющимся.