Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 39

Тема: Имитация модулей ввода-вывода для удобной отладки

  1. #11

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Пока не изучал код.

    0. Спасибо, не заморачивайтесь
    Изначально я упёрся в то, чтоб рабочий проект оставался без каких-то доработок периода отладки. Поэтому всю периферию хотел сделать совершенно отдельно - во втором проекте или в какой-то сторонней программе. На тот момент я ещё не представлял всех сложностей и ограничений, с которыми столкнусь.
    На сегодняшний момент - выше описанный код позволяет мне успешно имитировать работу двух модулей: МУ110-224.16Р и МВ110-224-16ДН.
    Я могу в отладочном проекте имитировать входы модуля ввода одним щелчком мыши в удобном мне месте, реагировать на выходы модуля вывода программно (я в курсе про скрипты в ОПС модбас сервере, но это дичь). В этот же отладочный проект я добавил имитацию весового модуля, который шлёт в основной проект данные по RS-232.
    НО. Ещё раз повторю - у этого способа есть только один плюс - мне никак не надо переделывать основной рабочий проект. Для него вся периферия - что железная, что имитированная, видится и работает одинаково.
    А теперь о минусах:
    а) мне тупо повезло, что эти два модуля имеют разную адресацию регистров. Если бы имели одинаковую или пересекающуюся (например, у меня был бы модуль вЫвода не на 16, а на 32 контакта) - ничего не прокатило бы.
    б) каждый раз для отладки приходится запускать программу Virtual Serial Ports Emulator и в ней настраивать связь двух виртуальных портов - для 232 (весовой модуль) и 485(модули ввода и вывода).
    в) каждый раз приходится запускать вторую копию виртуального контроллера, чтоб на нём крутился проект имитации.
    Сейчас я бы просто в своём рабочем проекте сделал отдельную визуализацию с имитацией нужных мне железяк и повесил бы её на вёб-морду, вытащив её на второй экран компа. Да, основной проект пришлось бы переделать. Но это заняло бы куда меньше времени.

    Цитата Сообщение от melky Посмотреть сообщение
    1. Так понимаю там привязка через шаблоны + использование каких-то fb. Ставить CodeSys 3 не планирую, своего Г хватает на компе.
    1. Да, слева в рабочем проекте - шаблоны, справа в имитируемом - ФБ, создающие слэйв устройство.
    схемо.png

    Цитата Сообщение от melky Посмотреть сообщение
    Пока не изучал код.
    2. Каким образом вы создаете эмуляцию? все на виртуальных ПЛК CodeSys ? нужна работа по реальным COM портам? не помню, можно ли натравить виртуальный COM порт на другой виртуальный, не пробовал ни разу
    2. Я создал вируальный ПЛК, в нём через ФБ открыл порт 485 и через ещё один ФБ создал виртуальный слейв, отзывающийся на любой айдишник. Далее в программе Virtual Serial Ports Emulator создал виртуальную связь между компортом рабочего контролера и имитирующего.

    Цитата Сообщение от melky Посмотреть сообщение
    3. на COM порту должно быть несколько имитируемых устройств ?
    Если рисунком сделаете как хотите, чтобы понять можно ли это организовать на одном ПК.
    3. Это одна из проблем.Я не нашёл, как можно на одном компорту заиметь более одного слэйв устройства в одном проекте, поэтому реализовал через "универсальный" слэйв.

    Цитата Сообщение от melky Посмотреть сообщение
    4. Что нужно от имитируемых устройств? ну например модуль вывода какой-нибудь MX110 или модуль ввода, или аналогового ввода ?
    4. От модуля вЫода нужно было, чтоб он визуально мне показал, что программа хочет задействовать какой-то выход. Именно чтоб удобно на это было смотреть, а не искать глазами конкретную строчку где-то в отладочной информации, в столбиках. Ну и заодно теперь на этот же сигнал у меня реагирует имитатор наполнения весов, что тоже удобно. Не надо лишний раз тыкать кнопки. От модуля ввода мне нужно было, чтоб я удобно в один клик мышкой мог менять его состояние. Всё это у меня сейчас уже реализовано. Ну и имитацию пропадания связи я тоже могу теперь реализовать во втором проекте, если захочу.

    Цитата Сообщение от melky Посмотреть сообщение
    5. какая нужна скорость работы модулей ?
    5. Любая - у нас не критичны задержки какие-то в доли секунд

    Так что не заморачивайтесь) Создавая пост, я хотел получить наводку на какой-то метод удобной отладки проекта. В целом - теперь понимаю, что проще всего просто в одном проекте реализовать режим отладки с имитацией нужных мне данных.
    Так что спасибо большое за готовность помочь )
    Последний раз редактировалось Нидвораич; 05.04.2025 в 15:52.

  2. #12
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,306

    По умолчанию

    да мне самому иногда надо, пригодилось бы. Только не знаю как к этому подойти.
    Я могу запустить сколько угодно модулей в/в и по идее на одной линии связи. Так или иначе виртуальные COM порты создавать придется. Единственное, их можно создать один раз и забыть, например в Tibbo VSP или USR-IOT виртуал COM порт.

    4. да это вроде не проблема в визуализации Scada. На счет имитации связи надо подумать, связь она или есть, или ее нет

  3. #13

    По умолчанию

    Че все так сложно... Я для такого параллельно ввел в программу наладочный режим. Ну и переключатель режима. Если он включен, то все "поле" имитируется кнопками на экранной форме, нсли нет, то с входов.

    Но это актуально только для однотипных механизмов, есть такой минус. Но если программа у вас универсальная, то этот минус исчезает.

    Скрин приложил бы визуализации для одного из тысячи механизмов, но пк недоступен...

  4. #14

    По умолчанию

    Вероятно, здесь каждый придумал свой собственный способ отладки сложных проектов.
    Если позволите, расскажу о своём.
    В OPC Lectus можно на один порт повесить несколько ведомых узлов (устройств).
    В каждом узле можно создать свою Modbus-таблицу. После запуска все регистры доступны для редактирования.
    В лог-окне можно наблюдать, как и в какой последовательности ПЛК (или ПР) опрашивает эти узлы.
    У меня есть панель СП310, в которой в удобном виде созданы элементы для имитации всех параметров ТП.
    В Lectus'е есть возможность переносить считанные значения из Master-узла (который опрашивает панель) в Slave-узел,
    т.е. Lectus из этой панели сам переносит имитируемые значения параметров в регистры имитируемых узлов.
    Кстати, вместо панели можно подключать и реальное устройство, значения его регистров будут переноситься в регистры иммитируемого.
    Это оказалось очень удобно: слева - реальный или виртуальный ПЛК (или ПР), справа - панель, где задаются параметры виртуально процесса.
    СП310 подключаю через ModbusTCP - скорость отладки увеличивается в разы.

    Проще говоря, Lectus извлекает значение параметра ТП из панели и записывает в регистр имитируемого устройства.
    Так как Lectus позволяет клонировать узлы, а также сохранять и загружать созданные конфигурации, то я считаю это идеальным инструментом для разработчика.
    Последний раз редактировалось EFrol; 06.04.2025 в 08:58.

  5. #15
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,306

    По умолчанию

    я думаю тут речь об использовании физических портов при написании программы, чтобы ее потом не править. То есть как будто мы пишем на реальном железе и без ввода отладочного кода внутри программы. А просто выполнять отладку онлайн.

    Скажем так, когда вы думаете о CodeSys и языке ST - это одно. А вот когда вам надо это сделать для ПЛК, где только FBD или LD - ну добавьте в такой ПЛК еще и отладочную часть программы. Вот будет весело, особенно делать отладку для отладочного кода

  6. #16

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    я думаю тут речь об использовании физических портов при написании программы, чтобы ее потом не править. То есть как будто мы пишем на реальном железе и без ввода отладочного кода внутри программы. А просто выполнять отладку онлайн.

    Скажем так, когда вы думаете о CodeSys и языке ST - это одно. А вот когда вам надо это сделать для ПЛК, где только FBD или LD - ну добавьте в такой ПЛК еще и отладочную часть программы. Вот будет весело, особенно делать отладку для отладочного кода
    У меня нет как такового отладочного кода, есть подмена входных сигналов. Код один, но на входах либо реальные, либо имитируемые.

    Но в последнее время я стал эту часть удалять, ибо заказчики несут всякий бред, не вникая в суть, и я решил расширенный код им просто не выдавать. Ну вот такой я нехороший человек!)

  7. #17
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,306

    По умолчанию

    На объекте и не должно быть никакого отладочного кода. Ну или спрятанный так, что о нем будете знать только вы.
    Ну на этапе пнр одно, я говорю об окончательном коде.

  8. #18

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    На объекте и не должно быть никакого отладочного кода. Ну или спрятанный так, что о нем будете знать только вы.
    Ну на этапе пнр одно, я говорю об окончательном коде.
    Не соглашусь. У нас на австрийском оборудовании есть режим симуляции для отладки без датчиков.
    И я не собирался ничего скрывать, это было даже в документации мной описано.

  9. #19
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,306

    По умолчанию

    Но в последнее время я стал эту часть удалять, ибо заказчики несут всякий бред, не вникая в суть, и я решил расширенный код им просто не выдавать.
    просто сталкиваясь с квалификацией обслуживающего персонала на объектах - это более верное решение, не выдавать расширенного кода
    я об этом... Меньше знают, крепче спишь

  10. #20
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,466

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    я думаю тут речь об использовании физических портов при написании программы, чтобы ее потом не править. То есть как будто мы пишем на реальном железе и без ввода отладочного кода внутри программы. А просто выполнять отладку онлайн.

    Скажем так, когда вы думаете о CodeSys и языке ST - это одно. А вот когда вам надо это сделать для ПЛК, где только FBD или LD - ну добавьте в такой ПЛК еще и отладочную часть программы. Вот будет весело, особенно делать отладку для отладочного кода
    Как обычно какой то бред, создание себе сложностей, чтоб потом героически из преодолевать, а нельзя между основными кодом и физическими входами выходами переменные не на прямую прокладывать а через прокладку, которая легко меняется на такую же только от симуляции, надо тестируй, надо работай в реале,в чем сложность то, язык программирования тут вообще на последнем месте
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Отвалы модулей ввода/вывода.
    от FlameAtomicFox в разделе ПЛК2хх
    Ответов: 3
    Последнее сообщение: 03.02.2025, 07:16
  2. Ответов: 2
    Последнее сообщение: 21.03.2024, 08:17
  3. Подключение модулей ввода/вывода по Modbus RTU
    от известь в разделе Master SCADA 4D
    Ответов: 3
    Последнее сообщение: 13.12.2023, 08:41
  4. ПЛК160-24.А-М + 5 модулей ввода/вывода
    от des_na_laes@mail.ru в разделе Мх110
    Ответов: 25
    Последнее сообщение: 22.12.2020, 18:06
  5. ПЛК100+18 модулей ввода и вывода
    от Дулат в разделе Эксплуатация
    Ответов: 23
    Последнее сообщение: 08.11.2019, 11:52

Ваши права

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