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

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #3

    По умолчанию

    Корректность использования ресурсов ПЛК согласно его технической спецификации. У меня возникли сомнения. Почему?
    В документации указано что время цикла задачи к которой привязан обмен по MODBUS считается адекватным если его значение лежит в пределах 18-20 мс. А у меня так не получается.
    Более того, чтобы получить информацию о том как прошел обмен по определенному каналу нужен программный обработчик, т.к. информация из переменных iChannelIndex xDone xError нигде не сохраняется. И если произошла ошибка при чтении/записи по одному из каналов, я этого никак не увижу.
    Соответственно в моем понимании это нужно сделать так,:
    1. Отдельная задача с циклом 4-6 мс и приоритетом 30 в которой будет обрабатываться результат обмена по каналу и результат записываться в массив
    Что-то типа
    Код:
    RTRIG_RolDone(CLK := ROL_DORNA.xDone);
    RTRIG_JawsDone(CLK := JAWS_DORNA.xDone);
    RTRIG_PushDone(CLK := FR_D720.xDone);
    IF RTRIG_RolDone.Q THEN
    	GVL.ltD_ChLastRW[roller_drive][ROL_DORNA.iChannelIndex] := TargetVars.stRtc.ltSystemTick;
    END_IF
    IF RTRIG_JawsDone.Q THEN
    	GVL.ltD_ChLastRW[jaw_drive][ROL_DORNA.iChannelIndex] := TargetVars.stRtc.ltSystemTick;
    END_IF
    IF RTRIG_PushDone.Q THEN
    	GVL.ltFR_ChLastRW[FR_D720.iChannelIndex] := TargetVars.stRtc.ltSystemTick;
    END_IF
    Но при таком подходе я отнимаю процессорное время от другой задачи и есть риск увеличения джиттера, а мне этого не нужно. Но примеров подобной реализации нет (или я их не нашел), соответственно я задаю вопрос экспертам, чтобы понимать в правильном-ли направлении я двигаюсь. Мне кажется все корректно, но может я не вижу проблем, которые кроются в мелочах.

    Также подобную реализацию можно повесить на событие (переменная xDone), но про такое в документации вообще написано "ни-ни, это плохо"

    Вот:
    Код:
    3. Не назначайте задачам тип Свободное выполнение или Статус.
    4. Не изменяйте интервалы вызова и приоритеты задач, которые CODESYS добавляет
    автоматически.
    5. В проекте должна присутствовать хотя бы одна задача с адекватным в рамках вашей системы
    управления интервалом вызова (обычно такой задачей является MainTask, которая вызывается с
    интервалом не менее 20 мс).
    6. Не редактируйте в компонентах Modbus задачу цикла шины
    Т.е. я нарушил все рекомендации из документа, поэтому у меня возникает когнитивный диссонанс - с одной стороны у меня все работает (пока), но эксперты (а составители документа наверное эксперты) мне этого делать не рекомендуют.

    Отсюда вопрос и сомнения
    Последний раз редактировалось RomeoVar; 25.06.2021 в 10:27.

Похожие темы

  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

Ваши права

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