Страница 601 из 859 ПерваяПервая ... 101501551591599600601602603611651701 ... ПоследняяПоследняя
Показано с 6,001 по 6,010 из 8582

Тема: CODESYS V3.5. Вопросы и ответы

  1. #6001

    По умолчанию

    Здравствуйте!

    Правильно ли я понимаю, что если для ПЛК200 создать 2 элемента Modbus_TCP_Master и к каждому добавить по 1 ME210_701, то опрос ME210_701 будет проходить в многопоточном режиме (параллельно) (Вариант А), а если создать только 1 Modbus_TCP_Master и добавить в него оба ME210_701, то опрос будет происходить последовательно (Вариант Б)?


    Вариант А:

    Modbus_TCP_Master_1
    ME210_701_1
    Modbus_TCP_Master_2
    ME210_701_2


    Вариант Б:

    Modbus_TCP_Master
    ME210_701_1
    ME210_701_2

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

    По умолчанию

    Цитата Сообщение от iv.kmz Посмотреть сообщение
    Здравствуйте!

    Правильно ли я понимаю, что если для ПЛК200 создать 2 элемента Modbus_TCP_Master и к каждому добавить по 1 ME210_701, то опрос ME210_701 будет проходить в многопоточном режиме (параллельно) (Вариант А), а если создать только 1 Modbus_TCP_Master и добавить в него оба ME210_701, то опрос будет происходить последовательно (Вариант Б)?


    Вариант А:

    Modbus_TCP_Master_1
    ME210_701_1
    Modbus_TCP_Master_2
    ME210_701_2


    Вариант Б:

    Modbus_TCP_Master
    ME210_701_1
    ME210_701_2
    Добрый день.
    Я думаю, какой-то принципиальной разницы между обоими вариантами не будет.

  3. #6003

    По умолчанию

    Добрый день.
    Пытаюсь преобразовать код ошибки связи в текст и почему-то выводит не правильно
    Код:
    // Ошибка связи с МВ210-101
    xModbusError_A111 := A111.byModbusError <> IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS; // проверка наличии ошибки

    fbA111Ton(IN := NOT (xModbusError_A111), PT := T#5S); // Таймер на тот случай когда ошибка не постоянная
    xModbusStatusAlarm_A111 := NOT (fbA111Ton.Q); // Установка наличии ошибки

    IF xModbusError_A111 THEN
    wsModbusError_A111 := MB_MODBUS_ERROR_TO_WSTRING(A111.byModbusError) ; // Вывод названии ошибки
    wsModbusError_A111 := wConcat (wsModbusError_A111, wsNameA111);
    ELSE
    xModbusError_A111 := FALSE ;
    END_IF
    A111.byModbusError имеет значение 0 т.е. RESPONSE_SUCCESS соответственно должно писать связь востановлена, но пишет что связь потеряна
    в функции написано правильно
    CASE eError_Modbus OF
    IoDrvModbus.MB_ErrorCodes.RESPONSE_SUCCESS :
    MB_MODBUS_ERROR_TO_WSTRING := "Связь востановлена";
    .....
    IoDrvModbus.MB_ErrorCodes.UNDEFINED :
    MB_MODBUS_ERROR_TO_WSTRING := "Потеря связи";
    END_CASE
    Что делаю не так?
    Изображения Изображения

  4. #6004

    По умолчанию

    sco-scorpion Если я не туплю и если смотреть код, показанный на картинке, то у тебя же текст ошибки переводится в строку только когда в IF выполняется TRUE.
    А когда в IF выполняется ветка ELSE - то строка ошибки не меняется, и остаётся как есть.
    На будущее: весь этот код лучше не копипастить под A111 и так далее, а сделать отдельный FB с каким-нить говорящим названием "MBDeviceCheck", и уже его экземпляры вызывать для модулей IO или других устройств. Я так и делаю. Как-нить напишу статью про это...

    PS. Евгений Кислов, ахаха, мы в одно время ответили =))
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

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

    По умолчанию

    У вас запись в wsModbusError_Alll выполняется только по условию xModbusError_Alll - а оно, видимо, не выполняется.

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Как-нить напишу статью про это...
    Будем ждать. =)

  6. #6006

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    sco-scorpion
    На будущее: весь этот код лучше не копипастить под A111 и так далее, а сделать отдельный FB с каким-нить говорящим названием "MBDeviceCheck", и уже его экземпляры вызывать для модулей IO или других устройств. Я так и делаю. Как-нить напишу статью про это...
    Было бы не плохо т.к. у меня 5 модулей, сейчас оставлю как есть для запуска, но потом буду оптимизировать.

  7. #6007

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    У вас запись в wsModbusError_Alll выполняется только по условию xModbusError_Alll - а оно, видимо, не выполняется.
    Я не правильно написал условие, должно быть:
    IF xModbusStatusAlarm_A111 THEN
    wsModbusError_A111 := MB_MODBUS_ERROR_TO_WSTRING(A111.byModbusError) ; // Вывод названии ошибки
    wsModbusError_A111 := wConcat (wsModbusError_A111, wsNameA111);
    ELSE
    xModbusError_A111 := FALSE ;
    END_IF
    Теперь все корректно.
    Последний раз редактировалось sco-scorpion; 18.07.2023 в 18:32.

  8. #6008

    По умолчанию

    Цитата Сообщение от sco-scorpion Посмотреть сообщение
    Было бы не плохо т.к. у меня 5 модулей, сейчас оставлю как есть для запуска, но потом буду оптимизировать.
    Ну лучше сразу написать FB, а не копипастить A112, A111 и так далее, чтобы не путаться. Торопыжничество вида "ща сделаю кое-как, а потом сделаю нормально" приводит к глюкам, ерунде и фигне. А что будет, если потом тебе захочется добавить какое-то другое вычисление ошибки Modbus, и надо будет этот кусок кода копипастить во все места?
    IOStates.gif
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  9. #6009

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Ну лучше сразу написать FB, а не копипастить A112, A111 и так далее, чтобы не путаться. Торопыжничество вида "ща сделаю кое-как, а потом сделаю нормально" приводит к глюкам, ерунде и фигне. А что будет, если потом тебе захочется добавить какое-то другое вычисление ошибки Modbus, и надо будет этот кусок кода копипастить во все места?
    IOStates.gif
    А можете показать сам код блока?

  10. #6010

    По умолчанию

    Цитата Сообщение от sco-scorpion Посмотреть сообщение
    А можете показать сам код блока?
    К сожалению, нет. Принципы работы опишу потом в статье у себя на сайте. Они простые: построены на том же, на чём у тебя - отлов серии нескольких ошибок подряд через TON/TOF. А дальше тупо считается статистика: сколько штук ошибок было, сколько штук успешных опросов.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

Страница 601 из 859 ПерваяПервая ... 101501551591599600601602603611651701 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 861
    Последнее сообщение: 31.12.2025, 23:19
  2. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 4058
    Последнее сообщение: 30.12.2025, 11:10
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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