Показано с 1 по 6 из 6

Тема: Все RETAIN-ы - на Modbus

  1. #1

    Question Все RETAIN-ы - на Modbus

    Добрый!
    Есть ПЛК100 с программой на Codesys 2.3. Нужно заменить его на ПЛК210 на Codesys 3.5
    Все Retain-ы в ПЛК100 хранятся в ModBus (slave). Их там ~ пара сотен байт (включая группы битов по 8)

    Эти переменные читает Weintek по ModbusTCP. Выводит на свой экран
    Оператор, если требуется, жмёт на экран, отправляет команду, меняет уставки и т. д. Weintek напрямую пишет данные обратно в контроллер по ModbusTCP
    Далее контроллер работает с новыми значениями

    Как теперь быть в ПЛК210? Как все эти Retain-ы закинуть прямо на Modbus, чтобы работало также, но при этом чтобы не создавать 2 разных массива (один для Retain-ов, второй для Modbus) и постоянно их сравнивать, а, если есть изменения, писать в Retain-ы и/или наоборот
    В общем, какая-то ерунда получается
    Можно ведь сделать красиво?

    Спасибо за советы
    Последний раз редактировалось aaaSashaMGGU; 04.12.2024 в 21:42.

  2. #2

  3. #3

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Спс, буду пробовать

  4. #4

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    На видео - прям 100% как мне нужно. Спасибо
    Примерно так я и хотел: одним массивом и всё одним большим списком
    Разве что, при переносе с Codesys 2.3 каждой использованной переменной придётся дописать в начале имя структуры с точкой, но это уже мелочи
    Последний раз редактировалось aaaSashaMGGU; 07.12.2024 в 21:57.

  5. #5

    По умолчанию

    Добрый
    Наконец-то я начал это делать. И сразу возникла как будто нерешаемая проблема
    Вот есть у меня структура:
    Код:
    TYPE STRUCT_Weintek_Program_DATA:
    	STRUCT
    		//Собственно, все параметры
    		ROOM_READ_TEMP                               : REAL; //Адрес 000-001. СЗ. Текущая температура в помещении с датчика
    		ROOM_TEMP_ON                                 : REAL; //Адрес 002-003. Температура включения нагревателей
    		ROOM_TEMP_OFF                                : REAL; //Адрес 004-005. Температура выключения нагревателей
    		V1_PRESSURE                                  : REAL; //Адрес 006-007. СЗ. Давление из В1 (город)
    		Pings                                        : DINT; //Адрес 008-009. Счётчик пингов для внешних систем
    		OUT_V1_PRESSURE                              : REAL; //Адрес 010-011. СЗ. Давление В1. На участок запаса воды
    		CPU_Load                                     : REAL; //Адрес 012-013. Загрузка ЦП контроллера
    		AFTER_PUMP1_PRESSURE                         : REAL; //Адрес 014-015. СЗ. Давление после перекачного насоса
    		TANK_PRESSURE                                : REAL; //Адрес 016-017. СЗ. Давление в емкости (Уровень)
    		DRY_RUNNING_PROTECT_ON                       : REAL; //Адрес 018-019. Защита от сухого хода ВКЛ
                    ..............
                    .............
                    ..........
    	END_STRUCT
    END_TYPE
    Вот код:
    111.png
    Вот всё работает как надо, всё хорошо
    Но структура большая, в ней ~400 строк
    Стоит мне переименовать/добавить/удалить любой параметр, как Codesys сразу говорит, что мол структура изменилась - и теперь будет обнулена
    А это значит, что остальные ~399 параметров тоже обнулятся - и придётся все RETAIN-ы вводить по-новой

    Пока вижу решением только хранить всё это с универсальными именами типа такого:
    Код:
    TYPE STRUCT_Weintek_Modbus_DATA:
    	STRUCT
    		//Собственно, все параметры
    		rHoldReg_000_000 : REAL; //Адрес 000-001. СЗ. Текущая температура в помещении с датчика
    		rHoldReg_002_002 : REAL; //Адрес 002-003. Температура включения нагревателей
    		rHoldReg_004_004 : REAL; //Адрес 004-005. Температура выключения нагревателей
    		rHoldReg_006_006 : REAL; //Адрес 006-007. СЗ. Давление из В1 (город)
    		rHoldReg_008_008 : DINT; //Адрес 008-009. Счётчик пингов для внешних систем
    		rHoldReg_010_010 : REAL; //Адрес 010-011. СЗ. Давление В1. На участок запаса воды
    		rHoldReg_012_012 : REAL; //Адрес 012-013. Загрузка ЦП контроллера
    		rHoldReg_014_014 : REAL; //Адрес 014-015. СЗ. Давление после перекачного насоса
    		rHoldReg_016_016 : REAL; //Адрес 016-017. СЗ. Давление в емкости (Уровень)
    		rHoldReg_018_018 : REAL; //Адрес 018-019. Защита от сухого хода ВКЛ
                    ..............
                    .............
                    ..........
    	END_STRUCT
    END_TYPE
    Тогда переименовывать ничего не придётся, но выглядит-то плохо
    Может, как-то через UNION? Через структуры? Через указатели? Через атрибуты?
    Хочется где-то в стороне создать такую же структуру, объединить адреса у этой и у модбасовской структуры, но не через UNION, т.к., когда они в одном UNION-е - та же самая проблема с переименовкой
    Спасибо за идеи
    Последний раз редактировалось aaaSashaMGGU; 28.04.2025 в 13:53.

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

    По умолчанию

    Стоит мне переименовать/добавить/удалить любой параметр, как Codesys сразу говорит, что мол структура изменилась - и теперь будет обнулена
    Судя по всему - вы объявили структуру в списке PERSISTENT-переменных.

    В первом посте вы писали:

    Есть ПЛК100 с программой на Codesys 2.3. Нужно заменить его на ПЛК210 на Codesys 3.5.
    ...
    Как все эти Retain-ы закинуть прямо на Modbus, чтобы работало также
    В ПЛК100 PERSISTENT-переменных не было в принципе.

    Вероятно, в процессе обсуждения вашей задачи возникнут ещё дополнительные уточнения, которые ранее не были вами упомянуты.
    Поэтому, чтобы предметно её обсудить - напишите, пожалуйста, ваш вопрос на support@owen.ru

Похожие темы

  1. Ответов: 6
    Последнее сообщение: 21.12.2023, 21:13
  2. ПЛК110-60Р-М02, не сохраняются RETAIN в Modbus Slave
    от Александр32 в разделе ПЛК1хх [М02]
    Ответов: 8
    Последнее сообщение: 21.02.2019, 08:36
  3. Инициализация Modbus slave (Retain) переменных
    от Спорягин Кирилл в разделе ПЛК1хх [М02]
    Ответов: 20
    Последнее сообщение: 14.03.2016, 08:17
  4. ModBus -> Retain
    от Fanat в разделе ПЛК1хх
    Ответов: 22
    Последнее сообщение: 10.07.2007, 15:47
  5. все же, ModBus - retain?
    от Ушаков Николай в разделе ПЛК1хх
    Ответов: 7
    Последнее сообщение: 02.07.2007, 16:35

Метки этой темы

Ваши права

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