После перехода с релиза 6.08 на 6.10 в проекте перестали работать каналы ModBus_RTU.Из перехвата видно что запросы от ТМ6 идут ,ответы приходят.Но в аргументы ничего не попадает. Используем групповой запрос на 60 слов(Rin_Word). Единичные запросы принимаем, а с групповыми проблема. Есть ли значимые отличия между релизами? На что обратить внимание?
На тестовом проекте в 6.10 релизе единичные запросы принимаются нормально. Групповые запросы без единичных отправляются и принимаются.Как только включаю канал с единичными запросами сразу перестают отправляться групповые. Почему???
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Некоторые усовершенствования по групповым запросам в драйвере Modbus в релизе 6.10 имеются, но на групповые запросы Rin_Word они не распространяются.
Пришлите, пожалуйста, на адрес техподдержки перехваты по всем описанным вариантам обмена и проект с инструкциями для моделирования у нас на стенде.
Posted by sugar (Участник № / Member № 1198) on :
Выяснили что данные не попадали в аргументы группового запроса из-за установленного в них типа REAL.Поставили тип данных UINT и данные появились. Хотя в релизе 6.08 с этим не было проблем. Не является ли это ошибкой в релизе 6.10(почему нельзя ставить аргументы REAL при приеме Rin_Word)?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
В релизе 6.10 усилены средства контроля типов данных.
Posted by Бычков Константин (Участник № / Member № 7036) on :
У меня возникла проблема в базовой версии TM6.9 считываю по ModBus RTU регистр типа Float32 выбрав группу Rout_Float(3) считывает корректно. Тоже самое делаю в платной TM6.10 считывает но показывает какую то абру кадабру из чисел. И почему то из четырех приборов опрашивает только 2 или каждый в отдельности.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Пришлите, пожалуйста, Ваш проект на адрес техподдержки hotline@adastra.ru.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Я не стал мучиться по ModBus-RTU переделал проект по протоколу ОВЕН считывает корректно и все регистры но уперся в проблему с модулем МУ110-224.8И один оперативный параметр у него формат данных float24 значения для записи 0..1.0 то есть 0-4 мА формирует 1 - 20мА если дробные 0.5-12мА использовал Owen_RS485 тип выбрал Bin-Decfloat записываются только 0 и 1 промежуточные дробные игнорирует.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Согласно документации "Тип данных" Bin-Dec float используется только для чтения. Вам следует использовать " Тип – тип данных переменной, значение выбирается из меню: 1,2-int, 3-6-float ... Запись: ... - канал FLOAT типа OUTPUT – float PIC-формата; "
Posted by Бычков Константин (Участник № / Member № 7036) on :
float PIC-формата - что это значит?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Это усеченный до 2 байт (24 бита) стандартный формат FLOAT.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Как мне выбрать float PIC формата.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Я сделал просто кнопку ввести и передать значение. ВВожу 1 работает ввожу 0 работает 0.5 ввожу не работает. Owen_RS485 в нем настроил 18 адрес тип данных float если ставлю не работает
Posted by Бычков Константин (Участник № / Member № 7036) on :
Если ставлю Bin float и Bin-Dec float работает но воспринимает только 0 или 1. Как мне переделать что бы канал FLOAT стал в формате float PIC как это сделать если не трудно опишите пошагово. например используя для ввода кнопку ввести передать
Posted by Бычков Константин (Участник № / Member № 7036) on :
Да и вообще если перетаскивать из группы источники приемники канал Owen_RS485 то в случае чтения все нормально если для записи перетащить то запись не происходит. Я привязываю напрямую из группы источники в приемники к аргументу тогда пишет значения.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вам следует использовать " Тип – тип данных переменной, значение выбирается из меню: 1,2-int, 3-6-float ... Запись: ... - канал FLOAT типа OUTPUT – float PIC-формата; "
При создании канала путем D&D-перетаскивания OUT-приемника из слоя "Источники/Приемники" в узел должен появиться OUT-канал соответствующего типа (в данном случае FLOAT-OUT). C экрана аргумент OUT (связанный с кнопкой) должен быть привязан к атрибуту ВХОДНОЕ_ЗНАЧЕНИЕ этого канала.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Ура спасибо) получилось
Posted by Бычков Константин (Участник № / Member № 7036) on :
И еще один вопрос остался. Приборы ОВЕН модули вывода МВ110-224.8Р и прибор МВ110-224.8И в случае если команда периодически не повторяется уходят в аварию. Каким образом их удерживать на связи. Как периодически повторять запись в них. В канале есть значение если оно не меняется но RTM включен что бы прибор не уходил в аварию.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Создайте программу, которая будет периодически посылать "1" в атрибут 39 (EXEC) соответствующего канала.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Спасибо получилось работает
Posted by Бычков Константин (Участник № / Member № 7036) on :
добрый день. У меня возник вопрос. Допустим произошел обрыв провода по которому связываются приборы или прибор сломался этот прибор со скадой связан по протоколу Овен. Как мне в скаде увидеть что прибор отвалился. Есть ли какой то атрибут кнала Owen_RS485 или еще что то?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
У каждого канала, связанного с "Источником", при нарушении связи с "Источником" взводится в "1" атрибут 4 (ДОСТОВЕРНОСТЬ). См. раздел "Каналы и системные переменные/Общие атрибуты каналов/Атрибуты каналов, отображаемые профайлером". Существует диагностическая переменная @e_PLC1Type типа INPUT, фиксирующая код последней ошибки транзакций с указанием COM-порта. Значение переменной сбрасывается только принудительно подачей ">0" в аналогичную переменную типа OUT.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Owen_RS485 добавил еще один. Канал OUTPUT прежние на этом модуле работают добавил еще не работает. Не понимаю как это драйвер работает все сделал также как и прежде. Те что раньше были созданы работают новые добавляю не работают
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Для проверки правильности работы конкретного канала OUT остановите все остальные каналы, работающие по этому COM-порту. Посылайте нужное Вам значение этим каналом OUT в модуль ОВЕН. Если при этом функция канала не отрабатывает, надо смотреть правильность адресации, правильность форматов в настройках соответствующего компонента слоя "Источники/Приемники".
Posted by Бычков Константин (Участник № / Member № 7036) on :
А вот ограничение по точкам ввода вывода может действовать. Что имеется ввиду под этим ограничением. У меня реальных точек ввода вывода с внешними устройсвами всего 11 хотел добавить 12 не работает.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Может я отправлю вам свой проект. Не могу разобраться почему добавленный регистр для записи не работает.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
У нас нет возможности моделировать все пользовательские проекты. И используемых Вами в проекте приборов нет в наличии. Надо проводить отладку и диагностику в достаточном объеме непосредственно на Вашем стенде.
Вы провели тестирование по предложенной выше методике: "Для проверки правильности работы конкретного канала OUT остановите все остальные каналы, работающие по этому COM-порту. Посылайте нужное Вам значение этим каналом OUT в модуль ОВЕН. Если при этом функция канала не отрабатывает, надо смотреть правильность адресации, правильность форматов в настройках соответствующего компонента слоя "Источники/Приемники". "?
Задайте в конфигурационном файле диагностический ключ DEBUGON=F0004200 Убедитесь, что проблемный канал OUT действительно отрабатывает свою функцию.
Сравните по протоколу профайлера транзакции для каналов OUT - работающего и "неработающего".
И все-таки, если есть возможность вернуться к протоколу Modbus RTU, продиагностировать и наладить обмен с устройствами будет намного проще.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Я отправил проект свой на hotline@adastra.ru.
Posted by Бычков Константин (Участник № / Member № 7036) on :
Да можно вернуться к Modbus RTU но у меня при считывание возникали проблемы до записи я вообще не дошел бросил. Канал считвал но значение было не коректное.
Posted by Бычков Константин (Участник № / Member № 7036) on :
@e_PLC1Type как воспользоваться этой переменной? Не пойму каким образом обратиться к этой системной переменной
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. По проекту ответ дан почтой.
2. Мы готовы поддержать Ваши усилия при переходе на Modbus RTU (безусловно более перспективное решение).
3. Диагностическую переменную @e_PLC1Type (Input) привязываете к каналу HEX16 (INPUT), который показывает Вам номер COM-порта и код ошибки.
Для сброса этого сообщения надо иметь канал HEX16 (OUT), который привязан к диагностической переменной @e_PLC1Type (Out). Любая активизация этого канала, вплоть до взведения в "1" атрибута 39 (EXEC), при ведет к сбросу значения полученной ошибки.
Posted by Бычков Константин (Участник № / Member № 7036) on :
добрый день. Вопрос не по теме но нужно по сигналам 2х концевиков что бы клапан на мониторе менял цвета желтый если ни один не замкнут зеленый если замкнут открытый и красный если замкнут закрытый. Как это сделать?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Если сигналы от концевиков Вы принимаете в разные биты одного канала HEX16, то следует использовать тип индикации "Набор {Arg & Конст = Конст} – индикация набора выполнения условий Arg & Конст = Конст.", где Arg привязан к РЕАЛЬНОМУ значению канала HEX16.
Если сигналы от концевиков приходят в разные каналы, придется их выделять программно и формировать значение аргумента программы, по которому можно реализовать описанный выше метод индикации.
В связи с тем, что "вопрос не по теме", топик закрывается. Для новой темы открывайте, пожалуйста, новый топик.