Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15

Тема: Ошибка таймаута при записи в модули по ModBus-RTU.

  1. #1

    По умолчанию Ошибка таймаута при записи в модули по ModBus-RTU.

    В соседней теме уже задавал данный вопрос ПЛК73 + МК110-220.4К.4Р + МК110-224.8ДН.4Р опрос по ModBus но так и не получил ответа.
    На складе нашел еще 2 модуля МВ110-ДН и МУ110-16Р переписал для них программу.
    С МВ110-ДН нет проблем все замечательно читается, отсоединяю от него RS-485 появляется ошибка таймаута. А вот с МУ110-16Р проблемы, отправляю маску выходов, на модуле загораются выхода и вместе с признаком завершения операции приходит ошибка 255 (Ошибка таймаута)!
    Как с этим бороться?
    Изображения Изображения
    • Тип файла: png 16ДН.png (175.4 Кб, Просмотров: 35)
    • Тип файла: png 16Р.png (182.6 Кб, Просмотров: 26)
    • Тип файла: png err.png (162.4 Кб, Просмотров: 37)
    Вложения Вложения
    Я не волшебник, я только учусь...

  2. #2
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Если мне не изменяет память, то в МУ110 параметр "максимальный сетевой тайм-аут" отвечает за то, через какое время блок падает в аварию. В ваших настройках оно нулевое.

  3. #3

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Если мне не изменяет память, то в МУ110 параметр "максимальный сетевой тайм-аут" отвечает за то, через какое время блок падает в аварию. В ваших настройках оно нулевое.
    Это относится к модулю, через сколько он уйдет в аварию и выхода установятся согласно аварийной маске если есть такое. 0 - отключено. У меня же авария появляется в контроллере после отправки выходной маски.
    Я не волшебник, я только учусь...

  4. #4

    По умолчанию

    Почему у меня такого не бывает?
    Ну и хотелось бы увидеть всю программу, по крайней мере, POU работы с МОДБАС, по скриншоту есть подозрение, что нет работы процедуры записи.

  5. #5

    По умолчанию

    Цитата Сообщение от ASo Посмотреть сообщение
    Почему у меня такого не бывает?
    Ну и хотелось бы увидеть всю программу, по крайней мере, POU работы с МОДБАС, по скриншоту есть подозрение, что нет работы процедуры записи.
    И при записи буфер не нужно "трогать" до тех пор, пока Complete не будет равно 1 и не будет выдержана пауза.
    Я так делаю (по Вашему, кстати, ASo, примеру):
    VAR
    HPause : TON;
    ES : BOOL;
    DataReady : BOOL;
    EndSendStored : BOOL;
    MBTimeOut : TIME := T#350ms; //например
    PTimeOut : : TIME := T#1ms; //например
    END_VAR
    IF NOT DataReady THEN
    ...//кладем в Buffer данные
    DataReady := TRUE;
    ES := TRUE;
    END_IF
    SendModbus(
    Enable := ES,
    Mode := MB_RTU,
    DevAddr := 1, //например
    FirstAddr := 1, //например
    Quantity := 1, //например
    ComHandle := Settings.Port,
    TimeOut := MBTimeOut,//со значением этой переменной можно "поиграться", чтобы сократить время обмена и добиться устойчивой связи
    Buffer := Buffer);
    ES := FALSE;
    IF SendModbus.Complete THEN //можно еще добавить проверку на Exception
    ...//тут Ваши условия/инструкции по необходимости
    EndSendStored := TRUE;
    END_IF
    HPause(IN := EndSendStored, PT := PTimeOut) //со значением PTimeOut тоже "поиграться", чтобы сократить время обмена и добиться устойчивой связи
    IF HPause.Q THEN
    ...//тут Ваши условия/инструкции по необходимости
    EndSendStored := FALSE;
    DataReady := FALSE;
    END_IF
    Последний раз редактировалось Spawn; 01.07.2020 в 06:18.

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ошибка бывает только при функции записи, не так ли. Просто не обращайте на неё внимание так же как на порт инвалид
    некоторое время назад я разбирал исходники почему это может быть
    Это точно не вариант! Так как данный контролер должен управлять паровой котельной, а отвал или зависание модуля может привести к печальным последствиям.

    Цитата Сообщение от ASo Посмотреть сообщение
    Почему у меня такого не бывает?
    Ну и хотелось бы увидеть всю программу, по крайней мере, POU работы с МОДБАС, по скриншоту есть подозрение, что нет работы процедуры записи.
    Ну так во вложениях есть Опрос_модулей_16.pro
    Я не волшебник, я только учусь...

  7. #7

    По умолчанию

    Цитата Сообщение от Spawn Посмотреть сообщение
    И при записи буфер не нужно "трогать" до тех пор, пока Complete не будет равно 1 и не будет выдержана пауза.
    В вашем примере как то все нагромождено, могу предположить что вы опрашиваете модули в основном цикле программы, по этому используете задержки. У меня же опрос модулей выполняется отдельной подпрограммой которая запускается по задержке. И я уже писал что когда Complete = 1 то Exception = 255 смотри миниатюры остановка когда Complete = 1.
    Я не волшебник, я только учусь...

  8. #8

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну значит берите бибку и правте проблемный участок кода, чтоб этой ошибки не было
    Править библиотеку? Я кое как научился отправлять, принимать данные с их помощью и это уже около 50 строк кода. А там 8 функций 9 функциональных блоков.
    Пытался создавать копии FB. С копией MB_WR_REGS → MY_WR_REGS программа еще работает, но в ней есть обращение к MB_UNI_IO → MY_UNI_IO и если я делаю ее копию и из MY_WR_REGS обращаюсь к MY_UNI_IO то программа зависает. Ошибка ка раз формируется в MB_UNI_IO.
    Так что я пока в тупике.
    Я не волшебник, я только учусь...

  9. #9

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    ну тогда чередуйте функции чтения и записи, даже если это не нужно, но зато вроде ошибка не появляется
    Так у меня в примере и так сначала читается из МВ110-ДН и записывается в МУ110-16Р или вы предлагаете сначала считать битовою маску состояния выходов учитывая ошибки, и потом записать битовою маску состояния выходов игнорируя ошибку? Если так это конечно оригинально но в корни не правильно!
    Я не волшебник, я только учусь...

  10. #10

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Если Вы слабо себя чувствуете в кодинге, то зачем перешли на библиотеку, у Вас из объектов две битовые маски, мастер конфигуратора с этим должен справиться без всяких проблем
    Мая твая не понимай. Попробуйте объяснить доступными выражениями или примером.
    Да с ST столкнулся впервые.
    В библиотеку полез чтобы понять почему при правленой отправке битовой маски значений выходов модуля, а не ПЛК операция хоть и выполняется (выхода на МУ110-16Р включаются по маске) но завершается с ошибкой (EXC_TO: BYTE := 16#FF; (* TIMEOUT ERROR *)).
    Я не волшебник, я только учусь...

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Широковещательная команда записи MODBUS RTU на СМИ2
    от Юрий_М в разделе Панели оператора (HMI)
    Ответов: 5
    Последнее сообщение: 20.01.2021, 11:45
  2. СМИ-2 ошибка при записи параметров
    от Димитрий в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 09.07.2019, 03:24
  3. Буфер записи по modbus
    от Егор_Егор в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.08.2018, 09:36
  4. Ответов: 1
    Последнее сообщение: 21.04.2015, 18:25
  5. ПЛК100 глюк при записи переменной modbus
    от PavelGO в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 22.06.2013, 11:09

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •