Страница 132 из 133 ПерваяПервая ... 3282122130131132133 ПоследняяПоследняя
Показано с 1,311 по 1,320 из 1321

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #1311

    По умолчанию

    Цитата Сообщение от Александр Пинэко-Скворцов Посмотреть сообщение
    Добрый день.
    1.
    Поясните, пожалуйста, для чего добавляете NPort как устройство в дереве проекта, если уже работаете через библиотеку?
    Думал, что надо и там и там.

    Цитата Сообщение от Александр Пинэко-Скворцов Посмотреть сообщение
    Если Вам требуется реализовать Modbus RTU over TCP, то следует оставить только код.
    Убрал из дерева. Оставил только вызов ФБ из кода.

    Цитата Сообщение от Александр Пинэко-Скворцов Посмотреть сообщение
    Попробуйте для теста оставить статически .xEnable := TRUE в строке вызова блока TCP_MOXA.
    Сделал. Пока работает. Будем набирать статистику и смотреть, не завис ли обмен снова.

  2. #1312

    По умолчанию

    Цитата Сообщение от askaev Посмотреть сообщение
    При обмене ПЛК210-01-CS с MOXA nPort 5130A сыпятся ошибки. При этом с модулями МВ210-101 связь стабильная, без ошибок.

    В дереве
    Вложение 76223
    возле "MOXA NPort" циклически меняются значки Вложение 76224 -> Вложение 76225 -> Вложение 76226. При этом счётчик Error Counter постоянно увеличивается, хотя данные от устройства, подключенного к nPort по RS485 Modbus RTU передаются в ПЛК, но не долго. Через несколько дней (~3...4 дня) обмен прекращается. Не пойму, что не так.

    Вот код подключения к nPort и опроса удалённого устройства:
    Объявления:

    Программа:


    При подключении видно, что у MOXA_NPort выход xBusy постоянно TRUE, а, судя по не запускающемуся таймеру timertcp, выход xDone у MOXA_NPort постоянно FALSE:
    Вложение 76227
    Нормально ли это? Я предполагал, что после каждого успешного выполнения xDone должен переключаться в TRUE или после неуспешного выполнения xError должен переключаться в TRUE.
    Код:
    MB_US800_4_AI1(xExecute := FALSE); // После выполнения блока, его надо сбросить
    Вот эту строчку надо в самый конец, так как она обнуляет все флаги. Иначе можете ошибки связи не увидеть

  3. #1313

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    У меня в вашем проекте нет ошибок компиляции.

    Вложение 71403

    Если свяжитесь по телеграм (в подписи) и предоставите доступ по AnyDesk - посмотрим, в чем у вас дело.
    Такая же ситуация. Возникла при добавлении регистра записи по фронту. Помогите пожалуйста.

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

    По умолчанию

    Цитата Сообщение от Назаров Александр Посмотреть сообщение
    Такая же ситуация. Возникла при добавлении регистра записи по фронту. Помогите пожалуйста.
    Добрый день.
    Мой телеграм указан в подписи.
    Напишите, пожалуйста, туда - оперативно разберемся.

  5. #1315

    По умолчанию

    Подскажите, а есть ли готовые или общепринятые способы распознавания восстановления связи с ПЧВ01[МО1]?
    Сделал вариант, который работает с помощью отслеживания текущего входного напряжения на ПЧВ.
    При разнице с предыдущим сохраненным значением выше определенного значения считать что связь восстановилась
    В данном случае для себе взял значение 150 (трех фаз у меня пока нет).
    Цель - ПЛК при включении частотника должен писать в него (частотник) значение по умолчанию.

    Код:
    IF (currentVoltage - savedVoltage) > 150 THEN
    	FrequencySetOutputValue:= FrequencySetStartupValue;
    	triggerFrequencySetOutputValue:= TRUE;
    END_IF
    
    //можно попробовать использовать xError или другие варианты, типа OwenDriver.hasError
    //но xInitDone хоть и интуитивно не так понятен, но стабильно TRUE если есть связь и FALSE, 
    //если нет
    IF NOT PChV1_M01.xInitDone THEN
    	currentVoltage := 0;
    END_IF
    
    savedVoltage := currentVoltage
    Но этот способ кажется корявым, что скажете?

    До этого пытался соорудить что-то, сделав счетчик Модбас передач с помощью xDone, сохраняя и сравнивая предыдущее значение с текущим.
    Пытаясь потом поймать момент восстановления, когда значения счетчиков сравнялись и xDone снова в True.
    Стабильно рабочего варианта не вышло, ибо измененное текущее значение периодически перетиралось дефолтным.

    Код:
    //Работает при включении-выключении ПЧВ, но также счетчики периодически сравниваются при стабильно включенном ПЧВ 
    IF (pchvModbusCountSaved = pchvModbusCount) AND PChV1_M01.xDone THEN
    	FrequencySetOutputValue:= FrequencySetStartupValue;
    	triggerFrequencySetOutputValue:= TRUE;
    END_IF
    
    //каждые 300 (например) циклов, сохраняем значение счетчика 
    IF cycleCount MOD 300 = 0 THEN
    	pchvModbusCountSaved := pchvModbusCount;
    END_IF
    
    IF PChV1_M01.xDone THEN
    	pchvModbusCount := pchvModbusCount + 1;
    END_IF

  6. #1316

    По умолчанию

    edvard_munch А можно пояснить подробности:
    * Как ПЧВ опрашивается? Через шаблон или через Modbus Slave Device?
    * ПЛК же Master, верно?
    * Связь по Modbus TCP или Modbus RS-485?
    * Почему не годится стандартный способ с .xError?
    На всякий случай оставлю ссылку на свою статью с обработкой ошибок и связи: https://cs-cs.net/technologii-testir...odbus___ai__io
    В ней надо почитать заголовок 6. Там есть описание того, как можно при помощи включенной диагностики и .xError получать ошибки опроса устройства с защитой от случайно возникающих ошибок.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  7. #1317

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    edvard_munch А можно пояснить подробности:
    * Как ПЧВ опрашивается? Через шаблон или через Modbus Slave Device?
    * ПЛК же Master, верно?
    * Связь по Modbus TCP или Modbus RS-485?
    * Почему не годится стандартный способ с .xError?
    На всякий случай оставлю ссылку на свою статью с обработкой ошибок и связи: https://cs-cs.net/technologii-testir...odbus___ai__io
    В ней надо почитать заголовок 6. Там есть описание того, как можно при помощи включенной диагностики и .xError получать ошибки опроса устройства с защитой от случайно возникающих ошибок.
    1) Шаблон
    2) Мастер
    3) RS-485
    4) Спасибо, сейчас еще раз посмотрю внимательно на xError, возможно зря я полез в дебри, и не понял до конца как работать с xError

  8. #1318

    По умолчанию

    Цитата Сообщение от edvard_munch Посмотреть сообщение
    сейчас еще раз посмотрю внимательно на xError, возможно зря я полез в дебри, и не понял до конца как работать с xError
    Да! Это оно! Единственное неудобство в том, что на момент ошибки xError становится TRUE, а при следующей попытке опроса сбрасывается на FALSE.
    Я у себя в статье как раз это описал (ради этого стоит почитать) и показал, как сделал систему выдержки на паре таймеров.
    Её суть такая, образно: "Одна ошибочка появилась - значит, глюк. О, а если пошли несколько ошибок подряд - то это точно отвал связи".
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  9. #1319

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Да! Это оно! Единственное неудобство в том, что на момент ошибки xError становится TRUE, а при следующей попытке опроса сбрасывается на FALSE.
    Я у себя в статье как раз это описал (ради этого стоит почитать) и показал, как сделал систему выдержки на паре таймеров.
    Её суть такая, образно: "Одна ошибочка появилась - значит, глюк. О, а если пошли несколько ошибок подряд - то это точно отвал связи".
    Все, разобрался. Набросал быстренько пока такой код. Работает. Спасибо!

    Код:
    pchvModbusErrorsComing: TOF;
    pchvModbusConnectionError: TON;
    modbusErrorTimeout: TIME:= T#1000MS;
    modbusErrorSeriesTimeout: TIME:= T#3000MS;
    fTrigPchvRestarted: F_TRIG;
    
    
    pchvModbusErrorsComing(IN:= PChV1_M01.xError, PT:= modbusErrorTimeout);
    pchvModbusConnectionError(IN:= pchvModbusErrorsComing.Q, PT:= modbusErrorSeriesTimeout);
    fTrigPchvRestarted(CLK:= pchvModbusConnectionError.Q);
    
    IF fTrigPchvRestarted.Q THEN
    	FrequencySetOutputValue:= FrequencySetStartupValue;
    	triggerFrequencySetOutputValue:= TRUE;
    END_IF

  10. #1320

    По умолчанию

    Цитата Сообщение от edvard_munch Посмотреть сообщение
    Все, разобрался. Набросал быстренько пока такой код. Работает. Спасибо!
    О, класс! Наконец-то кто-то внимательно прочитал ту мою статью, ахаха (спасибо, мне приятно что в дело пошло)!
    Отлично! В будущем это можно, как у меня, запихать в функциональный блок, и для разных устройств создавать его экземпляры!
    PS. А не надо потом триггер записи в ПЧВ сбрасывать? Да, сам ПЛК запишет его по фронту, но а в коде не надо?
    Можно его, например, обрабатывать через таймер TP и на время 500 ms поставить.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Страница 132 из 133 ПерваяПервая ... 3282122130131132133 ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

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