Показано с 1 по 10 из 37

Тема: MODBUS COM отслеживание записи в канал

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,622

    По умолчанию

    Цитата Сообщение от RomeoVar Посмотреть сообщение
    Попробовал я ModbusChannel. При скорости обмена 38400 статус xDone FB не отлавливается. Но дело в том, что у меня настроены каналы на 3 типа: циклический опрос, по переднему фронту и в приложении. Так вот, по переднему фронту, при программной обработке я статус записи отлавливаю, а при записи через приложение - никак не могу. Может это как-то связано с тем что у меня есть каналы, которые опрашиваются по переднему фронту?
    Могу сбросить пример проекта, чтобы было понятно о чем я.
    Выложите пример проекта, удалив из него всё, что не касается рассматриваемого вопроса.

  2. #2

    По умолчанию

    Вот пример. Каналы с 69 по 74.
    Я пытался по всякому ловить xDone. И по триггеру и по состоянию. Никак не получилось. Но через 30 мс. переменнная обновляется
    Вложения Вложения

  3. #3
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,622

    По умолчанию

    Цитата Сообщение от RomeoVar Посмотреть сообщение
    Вот пример. Каналы с 69 по 74.
    Я пытался по всякому ловить xDone. И по триггеру и по состоянию. Никак не получилось. Но через 30 мс. переменнная обновляется
    Код:
    IF xRdPosReg THEN
    	xSuccess := FALSE;
    	wIntPosPOld := GVL.stServo[1].stRdServo.wP700_IntPosP;
    	GVL.stServo[1].stWrServo.wP700_IntPosP := 4610;
    	GVL.stServo[1].stWrServo.wP765_IntPosDZT := 1000;
    	fbModbusRol(slave := ROL_DORNA, xExecute := xRdPosReg (*!*), iChannelIndex := iCurrentCh);
    	ltTimeOfStart := TargetVars.stRtc.ltSystemTick;
    	xRdPosReg := FALSE;
    	xCount := TRUE;
    	iCntr := iCntr + 1; 
    END_IF
    См. выделенную строку.
    Вы, видимо, считаете, что fbModbusRol выполняется синхронно за один цикл контроллера - поэтому сразу после вызова прерываете его работу.
    Но это не так - блок работает асинхронно.
    Поэтому нужно дождаться сигнала на выходе xDone и только потом прекращать его работу.
    См. демонстрацию:
    https://dropmefiles.com/G7YW7

  4. #4

    По умолчанию

    я делал и так, и асинхронно. Это остался последний вариант, в котором я считал кол-во циклов, через которое данные запишутся в переменную из канала.
    Происходит так - подымаешь флаг execute , xbusy поднимается в true. Данные записываются в переменную (примерно 30мс), a xbusy висит, xdone не поднимается. Пока опять не запишешь в xexecute TRUE. Могу видео записать


    Вот как-то так выходит

    Я грешу на конфликт каналов с разными параметрами обмена. Или слишком высокая скорость обмена. У Вас в видео 9600, для моих задач этого мало

    Пол дня вчера на исследование этой темы ухлопал, и остался на месте.
    Сначала я сделал по рекомендации, Ваше видео посмотрел. Неа, ниче не работает
    Последний раз редактировалось RomeoVar; 05.07.2021 в 13:03.

  5. #5
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,622

    По умолчанию

    Цитата Сообщение от RomeoVar Посмотреть сообщение
    я делал и так, и асинхронно. Это остался последний вариант, в котором я считал кол-во циклов, через которое данные запишутся в переменную из канала.
    Происходит так - подымаешь флаг execute , xbusy поднимается в true. Данные записываются в переменную (примерно 30мс), a xbusy висит, xdone не поднимается. Пока опять не запишешь в xexecute TRUE. Могу видео записать


    Вот как-то так выходит

    Я грешу на конфликт каналов с разными параметрами обмена. Или слишком высокая скорость обмена. У Вас в видео 9600, для моих задач этого мало

    Пол дня вчера на исследование этой темы ухлопал, и остался на месте.
    Сначала я сделал по рекомендации, Ваше видео посмотрел. Неа, ниче не работает
    Вы точно посмотрели видео из моего предыдущего поста?
    В нём ваш проект со скоростью 38400 и исправленным кодом - и ловится каждый импульс xDone.

Похожие темы

  1. Триггер на чтение Modbus канал
    от Пьер в разделе СПК210, СПК1xx [М01]
    Ответов: 17
    Последнее сообщение: 03.02.2023, 06:49
  2. Канал ModBus Slave
    от ВладимирВ в разделе Мх110
    Ответов: 1
    Последнее сообщение: 26.02.2020, 15:02
  3. Канал Modbus Slave
    от Sklyar в разделе СПК1xx (архив)
    Ответов: 2
    Последнее сообщение: 20.12.2018, 08:56
  4. Буфер записи по modbus
    от Егор_Егор в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 24.08.2018, 09:36
  5. ТРМ200 теряется канал связи RTU Modbus
    от РиссаТС Андрей в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 05.03.2015, 17:29

Ваши права

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