Добрый день!
Как всегда, много эмоций и мало сути.
Вы посмотрели, что в действительности происходит в линии? Обещали, что осциллографом посмотрите. Без этого разговор бессмысленен - вы просите от
CODESYS отправлять и получать посылки чаще, чем это физически возможно, оставляете отключенные и другие устройства в линии, СОВЕРШЕННО НЕ ПРЕДСТАВЛЯЕТЕ, какие посылки и когда в итоге идут у вас в линию RS-485, и позволяете себе писать про это как про подтверждённую проблему.
Так как мы нацелены разобраться по всем фактам, ещё раз предлагаю: хватит болтовни, давайте встретимся у нас или у вас, подключим к линии осицллограф/логанализатор, и чётко посмотрим, что и когда туда отправляется. И всё будет понятно.
Всегда есть компромисс между размерами и удобством монтажа. Для настенного датчика габариты весьма критичны, никому не нравится здоровая коробка на стене.
Специализированные кабели для RS-485 - это из рода освященных кабелей для аудиофилов. Хорошая витая пара для Ethernet или систем сигнализации (экранированная, гибкая) ничем не хуже по физическим характеристикам, и, как правило, удобней в монтаже.
При этом даже специальный КИС-В для RS-485 имеет внешний диаметр 8 мм, а жилы прекрасно зажимаются по два в один НШВИ и не занимают много места. По вашей просьбе сделаем фото и выложим чуть позднее.
Ближайший компонент к клемме находится на расстоянии в сантиметр, и это огромный выводной ИК-приёмник. Пришлите, пожалуйста, фото, как вы монтируете датчик, и что боитесь повредить.
Не верю. Инженеры бегло проверили - не воспроизводится и близко. Попробуйте убрать не наши датчики, пришлите фото монтажа - посмотрим возможные причины. Если уверены, что дело в наших датчиках, - давайте встретимся, и с оборудованием посмотрим, что у вас происходит на шине.
Давайте разделять работу CO2 и VOC. Это разные датчики с разным принципом работы.
По CO2:
для CO2 заявлена погрешность ±50 ppm, то есть разброс в 100 ppm это нормально.
Если датчики стоят рядом с вами на столе, и вы на них дышите, то показания будут скакать - в выдыхаемом воздухе 50 000 ppm, в воздухе на улице - 400 ppm.
Стоить обратить внимание на то, что (цитата из документации Универсальный настенный датчик WB-MSW v.3 — Wiren Board):
сразу же после установки датчик может показывать неверные значения: это может быть связано с неосторожным обращением во время транспортировки и монтажа. Через несколько дней показания датчика придут в норму, благодаря функции автокалибровки.
Ну и самая редкая причина (по документации):
Датчик имеет функцию автокалибровки. Измеренное минимальное значение в течении суток принимается за 400 ppm - это значение концентрации CO2 на улице. Концентрация CO2 упадёт до уличной, если в помещении нет людей хотя бы несколько часов в день, или если в помещении работает вытяжная вентиляция, или в помещении иногда открывают окна.
Если это не так и концентрация CO2 в помещении никогда не доходит до уличной, то рекомендуем хотя бы один день хорошо проветривать помещение для калибровки датчика и после этого отключить автокалибровку (прописать 0 в регистр 95). Периодически повторяйте процедуру, чтобы датчик показывал более точные значения. В большинстве случаев отключение автокалибровки или ручная калибровка не требуются - датчик показывает правильные значения без дополнительных манипуляций.
По VOC:
с VOC еще хуже, это датчик измерения летучих органических веществ. То есть реагирует на все подряд, и опасные вещества, и не очень. Если пшикнуть духами рядом - зашкалит. Физика его работы гораздо менее точная, чем у датчика CO2 - это электрохимический датчик, для них нормальна ошибка в 100% (!). У нас стоит датчик известного производителя Sensirion - SGPC3-2.5K. Благодаря автокалибровке у него заявленная повторяемость - 15%. Время автокалибровки не регламентировано, но по нашим наблюдениям на стабильные показания он выходит только через несколько дней непрерывной работы.
И в случае с CO2, и с VOC у нас используются готовые цифровые датчики от хороших производителей, WB-MSW считывает с них данные и передаёт по Modbus без преобразования.
Нет, это ненормально. Что можно проверить:
- Из документации:
Для более точного измерения модуль TH необходимо устанавливать в верхний левый разъем. Иначе он греется от СО2 датчика и завышает показания на 1-2 градуса.
- Проверьте значения регистров компенсации самонагрева (holding 245). Для датчиков с СО2 там должно быть число около 70 (0.7 градуса). Без него - 0.
- Датчики температуры мы не калибруем, они калиброваны изготовителем. Мы проверяем, что они работают, и проверяем что значение попадает в диапазон относительно референсного. И записываем значение в регистр компенсации, если датчик идёт с модулем СО2.
Предложение проверки прямо у вас остаётся в силе:
Потому что удобно именно так. Чтение и запись coil занимает меньше времени на шине, такой тип данных поддерживает гораздо больше контроллеров, SCADA и систем мониторинга, чем битовые маски.
Это специализированный тип данных для дискретных значений - вы лучше ответьте, зачем вместо типа из стандарта использовать что-то другое?
А вы не обманываете? Про поддержку coil в Codesys_v2399 c сайта ОВЕН: https://owen.ru/uploads/139/rp_plk110_m02__16.pdf
С вероятностью 95% дело в конфигурации, а не в нас, CODESYS или ОВЕН. Выше предложил, как это точно проверить.
Потому что это удобно - отправить один короткий Modbus-пакет, и знать, что сейчас воспроизведётся конкретный ИК-сигнал. Логика в коде получается простейшая - чтобы воспроизвести ИК-сигнал N, запиши один coil c номером N+M.
Это называется “непрямая адресация” и нужно это, если вы живёте в 1970-м году и ОЗУ в вашем микроконтроллере 16 байт. Плюсов нет вообще.
С прямой адресацией, как у нас, одному coil-у соответствует один канал. Нужно включить кондей - запишите единичку в coil “кондей”. Нужно включить “бризер” - пишете в coil “бризер”.
При этом “посылочка” в случае непрямой адресации длиннее на целых два байта по сравнению с тем, как сделано сейчас.
Конфигурация:
вся конфигурация делается через Modbus регистры. Если вы сейчас как-то умеете записывать Modbus-регистры (из ОВЕН или Windows), просто откройте карту регистров и запишите нужный. Если не умеете - зачем вы покупаете устройство с Modbus?
Обновление прошивки и сброс адреса:
В наших контроллерах есть консольная утилита, которая вызывается так:
wb-mcu-fw-updater update-all
и сама скачивает и обновляет прошивки всем устройстам, если нужно. Сейчас делаем на её основе интерфейс в веб-интерфейсе контроллера Wiren Board. Она же есть под Windows: Обновление прошивки Modbus-устройств Wiren Board — Wiren Board
Через ту же утилиту можно сбросить параметры на “по умолчанию”, если не знаем ни адреса, ни скорости.
Это же мы уже перепрыгнули с датчика WB-MSW v.3 на контроллер Wiren Board 6? Эмулятора не будет, IDE - в веб-интерфейсе, будем его развивать. Отладка сейчас только через логирование через функцию log()
в окошко в том же интерфейсе, “циклов” в наших скриптах нет - там JavaScript и событийная модель. Текстовые файлики и grep - это, конечно, наше всё, только для разработки вам это не потребуется.
В вашем вопросе чувствуется пренебрежение и недоверие к новым для мира автоматизации технологиям. Но это не значит, что придётся заставлять себя страдать: на Wiren Board 6 сейчас официально работают рантаймы MasterSCADA, Каскад, ISaGRAF. Эти среды близки к CODESYS по принципам работы, там те же самые МЭК-овские языки программирования, в т.ч. визуального.
На производстве калибруется только датчик уровня шума, остальные только проверяются. Бумаги не будет, потому что это бессмысленно. Наклейка с серийником и надписью “OK” свидетельствует о прохождении проверки на производстве на автоматизированном стенде. Если мы её на листе A3 напечатаем и подпишем всей компанией, то смысла в ней больше не станет.
Когда включим датчики в госреестр средств измерения, тогда будем вкладывать бумаги о поверке - вот это уже осмысленное действие. Кстати, две недели назад в госреестр СИ включили наши многоканальные счётчики электроэнергии на разъёмных трансформаторах WB-MAP - к ним теперь может прилагаться бумага о поверке.
Очень давно стоит в планах, сейчас уже в разработке, релиз такой прошивки для WB-MSW планируем в течение пары недель.
Возвращать, правда, он будет не нули, а прописанные в документации “запрещённые значения”: 0xfffe для беззнаковых, и 0x7ffe для знаковых - это нужно, чтобы понять, что регистра действительно нет.
TVS-диоды + самовосстанавливающиеся предохранители (PTC).
А что от чего вы собрались изолировать? Датчик в пластиковом корпусе, внешних проводов не подключается, питание идет по тому же кабелю.
Специальная микросхема-приёмопередатчик RS-485 . В ваших экземплярах стоит ST485EB.
Между байтами данных в посылке передатчик включен естественно, ведь между ними нет никакого промежутка: после стопового бита одного байта начинается стартовый бит другого. Когда передатчик не передаёт, то он, естественно, выключен, иначе бы никакое другое устройство, включая ваш ПЛК не смогло бы ничего передать в линию.
Вообще вопрос весьма странный, кажется вы пытались спросить не то, что спросили. Что именно вызывает у вас беспокойство?
Нет, не делаем. А в чём смысл? Имелось в виду, для борьбы с контроллерами, где разработчики забыли сделать растяжку (failsafe bias)?
Мы входящий пакет детектируем по 3.5 символам тишины после него, как написано в стандарте. Если ещё и ждать после этого 3.5 символа после ответа, то это будет дополнительная задержка в 3.5 символа.
Естественно так. Независимо от внутренней реализации конкретного регистра в конкретном устройстве, тормозов перед отправкой ответа нет никогда, т.е. никаких долгих операций перед ответом не делается.
Строго говоря, к стандарту это отношения не имеет. По стандарту устройства могут “думать” сколько им вздумается, пока это не больше таймаута, и могут при каждом чтении “думать” разное время.
Это неправильное поведение, давайте разбираться. Это же, наверное, опять ошибка таймаута (ответ не пришёл), а не в регистре значение ноль?
Не перевирайте. Это были не аргументы, а совет, как уменьшить частоту опроса без потери реальных данных. Чтобы у вас всё заработало в условиях, когда вы не знаете, что и когда фактически у вас отправляется в линию, и пытаетесь посылать запросы чаще, чем они физически могут идти.
Буфер, разумеется, заранее подготовлен.
Что дальше делать с оборудованием
Как уже неоднократно писал, давайте встретимся и проверим все ваши проблемы. Согласны/не согласны - напишите здесь, потом по телефону согласуем детали.
Что дальше делать с вашим хамством
Как уже писал, мы в таком тоне не общаемся. Суть наших ответов не поменяется, если вы напишете вежливо.
Если хотите привлекать таким способом аудиторию - на здоровье, но только у себя в блоге. Хотя, честно говоря, не понимаю, как вашим читателям может нравиться такое отношение:
– даже если лично вам не нравится датчик.
Последний раз призываю вас к банальной вежливости. Если этого не случится, со следующего вашего сообщения мы каждый эпизод хамства будем менять на остроумное выражение на наш выбор.
Считайте это нашей версией
и