PDA

Просмотр полной версии : Неустойчивая связь по Modbus RTU между СПК1ХХ и ТРМ210



АнтоN
27.08.2020, 21:48
Связь есть, но она постоянно прерывается и восстанавливается. Чтение/запись из/в регистры производится успешно. До этой ТРМки раньше пробовал наладить обмен с двумя ТРМ-201, но с ними вообще не удавалось установить связь по RS-485. Мне не понятно, это только в моём случае с ТРМ210 связь неустойчивая или это со всеми ТРМами так?

Евгений Кислов
28.08.2020, 06:33
Обычно проблем со связью с ТРМ не возникает.
Возможно, у вас ошибка в одном из каналов опроса (например, указан неверный адрес регистра).
Чтобы посмотреть код ошибки надо сделать следующее:

Вид - Просмотр - Watch1 - в появившейся внизу вкладке ввести Modbus_Slave_COM_Port.byModbusError - посмотреть, какое значение принимает эта переменная при появлении ошибки

АнтоN
31.08.2020, 17:05
Евгений, здравствуйте!
Сделал, как Вы рекомендовали - выходит сообщение "ILLEGAL DATA VALUE" (некорректные данные). После этого я начал по одному удалять каналы и проверять связь. Прерывание устранилось, когда не осталось каналов на запись с типом данных "Signed Int16" (видео_1). Как только добавил канал на запись, например, "Уставка регулятора" с типом данных "Signed Int16" - прерывание связи вновь появилось (видео_2).
Попробовал выполнить преобразование INT_TO_WORD с помощью функции и с помощью объединения - по 1-ому - связь всё равно прерывается, а по 2-ому - подготовленная INT не записывается и сбрасывается в 0 - не получилось пока.
Считаю, что проблема из за каналов, где есть отрицательные INT, т.к. в карте регистров на ТРМ есть фраза "Для параметров, значения которых могут иметь отрицательное значение (Signed Int16), отрицательные числа представляются в дополнительном коде". А у меня для записи INT с + и - одинаково выполнено.

Евгений Кислов
31.08.2020, 17:15
1. У вас параметры SL-L и SL-H какие значения имеют?
2. Циклическую запись параметров лучше не делать - они хранятся в EEPROM, ее можно очень быстро так перетереть.
Записывайте по команде (в настройках канала: режим Передний фронт)

АнтоN
31.08.2020, 21:48
1.Положительные числа.
2.Хорошо, поставлю для всех каналов запись по команде.

Евгений Кислов
01.09.2020, 06:30
На вашем видео видно, что у вас переменная уставки имеет значение 0 - то есть не попадает в диапазон SL-L...SL-H, которые у вас "положительные числа".

АнтоN
01.09.2020, 22:21
Сегодня поставил в канале на запись уставки записать переменную по переднему фронту - связь стала стабильная. Но с переменой способа записи возник другой вопрос: как переключить триггер для записи уставки при неработающем регуляторе. При цикл. записи уставка записывалась и до вкл. регулятора. Я это сделал с помощью преобразования word_to_bool (при вводе уставки из заданного диапазона тригер переходит в true), но последующие попытки записи уставки не происходят, а происходят только после сброса триггера в false. Сделал этот сброс с помощью импульса. Вобщем это я импровизировал (см.рис.3), как это должно быть по-нормальному?
И ещё вопрос: при обмене с ТРМ когда связь устойчива (и когда были прерывания) у неё моргают оба экрана и управление с кнопок недоступно. Это тоже нормально?

Евгений Кислов
02.09.2020, 06:41
Вобщем это я импровизировал (см.рис.3), как это должно быть по-нормальному?

По нормальному - через ФБ R_TRIG из библиотеки Standard.


И ещё вопрос: при обмене с ТРМ когда связь устойчива (и когда были прерывания) у неё моргают оба экрана и управление с кнопок недоступно. Это тоже нормально?

При циклический записи индикация действительно моргает, насчет кнопок затрудняюсь ответить.

АнтоN
03.09.2020, 21:55
Сделал запись уставки темп-ры через R_TRIG с подачей импульса на вход от кнопки без фиксации - работает как требуется.
Перевёл канал управления регулированием так же с цикл.записи на импульс по переднему фронту - после записи 1 в 0х0007 и переворачивании триггера в TRUE регулятор перестал запускаться, но при этом цифровые индикаторы на ТРМ перестали моргать и изменение параметров от физ.кнопок стало доступным.

Евгений Кислов
04.09.2020, 06:36
Добавьте команду чтения для регистра 0х0007, чтобы проверить, происходит ли вообще запись этого параметра у вас.

АнтоN
07.09.2020, 20:49
Обратную связь по включению регулятора я получаю из регистра 0х0000 (бит 9). При цикл.записи этот бит переворачивается, при записи по команде - нет. Добавил регистр 0х0007 на чтение, при цикл. записи приходит 1 (видео 1), при записи по команде - остаётся 0 (видео 2).

Евгений Кислов
08.09.2020, 06:33
Судя по второму видео - вы не активируете бит записи (Channel 4 | BIT | Trigger Variable).

АнтоN
08.09.2020, 21:27
Да, в видео_2 бит записи я вообще не переворачивал.. забыл я это сделать, но ранее

Перевёл канал управления регулированием так же с цикл.записи на импульс по переднему фронту - после записи 1 в 0х0007 и переворачивании триггера в TRUE регулятор перестал запускаться..
переворачивал бит записи вручную, но от другого соседнего канала (строкой ниже).
Вобщем сегодня у меня всё получилось: все каналы поставил на запись по команде, всё записывается при активизации битов в каждом из каналов, пуск/стоп регулирования так же работает при активизации бита из соответствующего канала.
При этом индикация на ТРМ перестала моргать, так как не стало ни одного канала с цикл.записью, управление с кнопок стало доступным. Связь стала устойчивой. И это радует! Евгений, благодарю за помощь и участие в решение моих вопросов!

duser
08.09.2020, 21:41
может у вас те же грабли : https://owen.ru/forum/showthread.php?t=32909&p=338843&viewfull=1#post338843