Т.к. все бюрократические процедуры требуют бумажек, то и сбор данных должен производиться устройством имеющим поверку.
В связи с этим был повешен самый обычный гигрометр и на протяжении нескольких лет люди ежедневно записывали показания в журнал. Согласитесь, неудобно.
Дабы автоматизировать данную процедуру были начаты поиски устройства для сбора температуры и влажности.
Цель была как то собирать данные и передавать все это в Zabbix. (для СМК не обязателен заббикс, любое место хранения, но делать еще какую-то отдельную систему под мониторинг температуры не хотелось).
В принципе было много готовых комплектов для этого, например Equicom PING3 или netping и таких примеров еще куча, так же можно было собрать свою систему на arduino или raspeberry,
но все эти варианты не подходили т.к. все они не имеют сертификации, а точнее метрологической поверки, а следовательно и не могут считаться официальными средствами измерения и не подходят для прохождения ISO:9001.
В итоге был найден прибор умеющий отдавать данные по ethernet и входящий в реестр измерительных средств. Им оказался «Ивит-М.Е.» разработанный в Новосибирске, там же и производящийся. Заказали (заказ кстати идет долго. срок изготовления около месяца, плюс поверка, плюс доставка до Москвы).
Приходит все это вот в таком виде. Когда берешь в руки сразу понимаешь что это российское производство :-)
Блок питания(заказывается отдельно) не подключен к датчику.
Поэтому разбираем его и начинаем подключать.
Вход подключаем все равно как. Ток переменный. Я использовал обычный силовой кабель от компа.
На выходе постоянный ток. Плюс и минус подписаны прям на плате.
Дальше подключаем провода непосредственно к самому датчику. Согласно инструкции
Сами клеммы выглядят вот так:
Откручиваем, снимаем и из Г-образной половинки выковыриваем вкладыш.
Подключаем питание и сеть.
В итоге получается нечто такое:
Из минусов данного устройства — он не умеет отдавать данные по SNMP, работает по протоколу Modbus.
В принципе есть много SCADA систем и OPC серверов умеющих читать по Modbus, но большинство из них либо платные, либо собирают в какую-то свою базу данных из которой тоже не понятно как вытаскивать данные для передачи их в дальнейшем заббиксу.
Поэтому был написан небольшой скрипт на питоне для прямого обращения к датчику.
Данные в регистрах хранятся в виде float и приходят при обращении к ним вот в таком виде
READ_INPUT_REGISTERS (16855, 57976)
Для конфигурирования датчика есть приложение config-ivit.exe
Настроек там не очень много. Можно настроить сеть, почту.
в конфигураторе регистры указаны в 16-ричной системе, но в питоновском скрипте нужно указывать регистры в 10-тичной системе.
Приводим данные к нормальному читаемому виду согласно стандарту ieee-754.
Реализовать передачу данных полученных от скрипта в заббикс можно двумя путями.
Первый способ: с помощью userparametr, на какой-нибудь узел, где установлен питон и заббикс агент. У меня, например, был на самом заббикс сервере.
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp
import sys
def check_reg(reg,ip):
reg = int(reg)
master = modbus_tcp.TcpMaster(host=ip, port=int(502))
master.set_timeout(1.0)
getDI = master.execute(1,cst.READ_INPUT_REGISTERS, reg, 2)
Num1 = str(bin(getDI[0]))[2:]
while len(Num1) < 16:
Num1 = '0' + Num1
Num2 = str(bin(getDI[1]))[2:]
while len(Num2) < 16:
Num2 = '0' + Num2
res = Num1 + Num2
znak = int(res[0], 2)
znak2 = (0 - 1) ** znak
e = int(res[1:9], 2) - 127
exp = 2 ** e
m = 1 + (int(res[9:], 2) / float(2 ** 23))
F = znak2 * exp * m
print(round(F, 1))
check_reg(sys.argv[1],sys.argv[2])
Со стороны заббикса в zabbix_agentd.conf указываем:
UserParameter=check_reg[*], /usr/bin/python /home/appliance/scada.py $1 $2
В самом заббиксе нам нужно будет передать только номер регистра и IP адрес устройства к кому мы хотим обратиться:
например:
check_reg[22,192.168.100.100]
Номера регистров:
22 — Влажность
34 — Температура
36 — Точка росы
Второй способ: передавать значения через zabbix_sender. Этот способ удобен тем, что можно создать отдельный узел сети у которого не будет агента, и соответственно можно будет сделать шаблон для многих устройств.
import modbus_tk.defines as cst
import modbus_tk.modbus_tcp as modbus_tcp
import sys, os
def check_reg(reg,ip):
reg = int(reg)
master = modbus_tcp.TcpMaster(host=ip, port=int(502))
master.set_timeout(1.0)
getDI = master.execute(1,cst.READ_INPUT_REGISTERS, reg, 2)
Num1 = str(bin(getDI[0]))[2:]
while len(Num1) < 16:
Num1 = '0' + Num1
Num2 = str(bin(getDI[1]))[2:]
while len(Num2) < 16:
Num2 = '0' + Num2
res = Num1 + Num2
znak = int(res[0], 2)
znak2 = (0 - 1) ** znak
e = int(res[1:9], 2) - 127
exp = 2 ** e
m = 1 + (int(res[9:], 2) / float(2 ** 23))
F = znak2 * exp * m
return round(F, 1)
os.system('zabbix_sender -z 127.0.0.1 -s Ivit1 -k Humidity -o '+ str(check_reg(22,sys.argv[1])))
os.system('zabbix_sender -z 127.0.0.1 -s Ivit1 -k Temper -o '+ str(check_reg(34,sys.argv[1])))
os.system('zabbix_sender -z 127.0.0.1 -s Ivit1 -k Rosa -o '+ str(check_reg(36,sys.argv[1])))
Дальше остается только запустить этот скрипт на выполнение по крону указав только лишь ip адрес устройства
*/1 * * * * /home/ivitsender.py 192.168.100.100
Дальше настраиваем тригеры, которые для нас считаются критичными. Например минимальная или максимальная температура, влажность.
Вот и все. Таким образом мы получили сертифицированный мониторинг температуры, который подходит для прохождения СМК и ISO:9001
Комментарии (29)
texder
06.10.2019 06:16Вы открыли прибор, поверка уже недействительна. Ну и а как же сертификация ПО?
Если уж сертифицировать, то до конца (хотя это получится дорого и глупо ради сбора температуры). Проще рядом с гигрометром повесить на ардуино и иногда сверять показания.walrus911 Автор
06.10.2019 09:18Во первых на фотке открытый блок питания. Во вторых не открыв прибор его не смонтируешь никуда на стену, т.к креплений внешних никаких не предусмотрено.
inno
06.10.2019 15:14блок питания внутри выглядит убого (фактически — защищенный сертифицированный корпус для китайского блока). Сам измеритель так же "уникален и высокотехнологичен"?
ayrro
06.10.2019 08:13А скорость аспирации от 0,5 до 1,5 м/с для ВИТ-1 чем обеспечивали? :)
DimanDimanyich
06.10.2019 21:10хороший проверяющий может написать 5 замечаний по одному гигрометру.
Интелектуальные датчики их почему-то не интересуют.drWhy
06.10.2019 22:24Как и весы. Основное внимание — пломбе на корпусе. Тот факт, что просто оттарировав весы можно изменить их показания (не говоря уже о том, что можно залить модифицированную прошивку) не берётся во внимание. Зато потеря пломбы в результате мелкого местного ремонта — это ой.
Serge78rus
06.10.2019 11:47Вход подключаем все равно как. ток переменный.
Вообще на Вашем фото, входы модуля, стоящего внутри источника питания, подписаны AC/L и AC/N, что как бы намекает, что может быть и не все равно. Ток то действительно переменный, но цепь линии и нейтрали внутри модуля может чем то и отличаться (например — защитой предохранителем, или еще чем). Если уж производитель нанес маркировку, то ее лучше соблюдать, а не строить предположения об обязательности ее соблюдения.alexxisr
07.10.2019 05:56Но ведь с другой стороны провода просто вилка, допускающая включение в розетку в перевернутом виде — соответствие потеряется при следующем включении с вероятностью 50%.
Serge78rus
07.10.2019 11:12А кто вообще сказал, что подключение к электросети должно осуществляться посредством розетки и вилки? Впрочем, я ни в коей мере не утверждал, что так работать не будет, я лишь возразил против утверждения, что входные линии питания полностью равноправны лишь потому, что «ток переменный».
Если посмотреть документацию изготовителя модуля (на основе которого изготовлен источник), то мы увидим перечисление кучи стандартов безопасности и электромагнитной совместимости, которым он удовлетворяет (правда с оговоркой, что электромагнитная совместимость должна перепроверяться в составе конечного изделия). Так же мы увидим маркировку выводов первичной цепи AC/N и AC/L. Каким именно образом соблюсти правильную фазировку, при подключении к сети производитель модуля не упоминает — да это и не его заботы.
Если же посмотреть документацию на источник питания, выполненный на основе этого модуля, то мы увидим упоминание лишь пары гостов, касающихся климатического исполнения и степени защиты от внешних воздействий. И, действительно, увидим схему подключения, где указаны две абсолютно равноправные линии питания. Так же, при внимательном рассмотрении, мы можем увидеть и другие мелкие несоответствия с документацией на модуль (например, производитель модуля указывает снижение величины допустимой нагрузки на нижнем участке диапазона питающего напряжения, о чем умалчивает производитель источника).
Какому из этих документов, по Вашему мнению, стоит верить в той части, где их утверждения расходятся?
walrus911 Автор
07.10.2019 15:38Это я подключил вилку) думаю если делать по правильному с точки зрения требований пожарников при установке электроприборов на складе, то запитывать нужно через предохранитель, а не через бытовую розетку и при подключении через предохранитель как раз таки можно учесть моменты где фаза где ноль. Но работает и так)
ultral
06.10.2019 14:35смотря на картинку — подумал что вы использовали советский поверенный психометрический гигрометр и добавили камеру для снятия показаний, ожидал скачать код, ибо у меня такая идея ходила для петпроджекта домашней метеостанции, но нет..
crustal
06.10.2019 19:43-1В связи с этим был повешен самый обычный гигрометр и на протяжении нескольких лет люди ежедневно записывали показания в журнал. Согласитесь, неудобно.
Неудобно? Баба Маша, пенсионерка на МРОТе, уборщица, за полминуты взяла и записала в журнал, может ей в кайф, можно было и поинтересоваться. Стоит чуть более, чем бесплатно. Все затраты — это поверка раз в два года за пару сотен рублей прибора ВИТ-1. Сотня на год.
Теперь потратили кучу денег на прибор, кучу часов хорошо оплачиваемого времени (отнюдь не МРОТ) и поверка не раз в два года, а раз в год и не 200р, а побольше тысячи, то есть поверка в десять раз дороже и самое главное, что реально неудобно — была точность +-0.2 градуса, а стала примерно +-2 градуса, в десять раз хуже (по разным источникам — разная, но т.к. датчик, который там стоит уже давно не выпускается, то скорее всего +-2 градуса — правда) Прогресс, ёпт, вам, что реально не интересно знать температуру воздуха в помещении с вменяемой точностью?
drWhy
06.10.2019 20:48Периодичность поверки гигрометров зависит от области применения, 1-2 года.
Кейс — продуктовый супермаркет. Закуплена система телеметрии в составе 16-ти датчиков, контроллера, компьютера и ПО. Поверка не нужна (учёт внутренний). Сначала собранные гирляндой на одном столе датчики влажности меряли кто врозь, кто по дрова, но потом, видимо подсохли и стали мерять довольно точно с разницей +-2%.
Датчики расставлены на протяжении 300 м. по производственным цехам. Где-то влажность 99% (мясной цех после смены паром обрабатывают), где-то температура -20°C (зона приёмки товара с открытыми воротами зимой). В целом по зданию влажность занижена из-за гипервентиляции, что, кстати, плохо для торговли — усушка же. Всё работает, всё пишется, бабушки никуда не ходят. Интересно наблюдать на графиках синхронные колебания температуры/влажности в зависимости от времени суток/сезона/погоды/отопления. Бабушки замучились бы за такими графиками бегать.
berber
06.10.2019 19:51В СМК прописано, что регистрация параметров осуществляется в электронном виде? Или вы раз в период просто распечатываете?
Louie
06.10.2019 21:48Имхо, схема с ардуино была бы гибче. Ивит-М.RS -> Modbus->Arduino<-SNMP<-Zabbix. Если так сделать, то:
1. Костылей будет гораздо меньше
2. Все костыли будут в ардуине
3. Эти костыли можно будет легко использовать для подключения других датчиковwalrus911 Автор
07.10.2019 15:34Ваш вариант вполне рабочий. Но Ардуино это удорожание системы(само устройство, разводка под еще одну розетку, дополнительные затраты на электричество) к тому же это еще одно дополнительное устройство в цепи что тоже усложняет схему.
Louie
07.10.2019 18:37Вы не поняли. Я предложил взять устройство без ethernet, т.е. не «Ивит-М.Е.», а «Ивит-М.RS». Оно на 2 тыс. руб. дешевле, так что удорожания не будет. Как не будет увеличения сложности схемы, монтажа и энергопотребления.
Просто, вместо штатного модуля Modbus->ethernet будет стоять arduino.
SergeyISP
09.10.2019 09:48заказ кстати идет долго. срок изготовления около месяца, плюс поверка, плюс доставка до Москвы
Плюс доставка с Китая.
Блок питания ru.aliexpress.com/item/33040922486.html
По самому прибору ситуация скорей всего аналогичная — готовый китайский модуль на нашей плате в нашем корпусе.
AntonSor
Спасибо за идею. Надо будет попробовать сделать такой же, но с нормальными разъемами, встроенным блоком питания и SNMP. Раз, оказывается, есть такой большой рынок
drWhy
Кстати да. Учитывая, что подключать датчики скорее всего будут витой парой, странно, что производители датчиков не устанавливают разъёмы RJ45 — обжать коннектор на кабель при монтаже гораздо легче, чем распаивать всякие загогулистые разъёмы (или подключать к клемникам внутри корпуса датчика), да и результат лучше.
walrus911 Автор
Ага. Если питание ещё более менее расшивать. То этот угловой разъём для езернета просто ужас. В связи с тонкостью жил, то тут порвётся то там. Несколько раз пришлось переделывать. Могли бы и rj-45 смонтировать.
zxosa
Rg-45 не удобен при вибрации, довольно нежный, если его трогать. Этот надёжнее, хотя я бы предпочел прямой с гайкой, типа bnc
saege5b
G16/G20 визуально неплохи. Количество контактов 12+.
ждём конца гарантии, что бы весь изврат с RJ45 на них попробовать перевести.
ViktorVS
О каком рынке речь? Если вы вносите изменения в конструктив/ПО, то это уже будет другое СИ, неутвержденного типа.