Добрый
Наконец-то я начал это делать. И сразу возникла как будто нерешаемая проблема
Вот есть у меня структура:
Вот код:Код: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-е - та же самая проблема с переименовкой
Спасибо за идеи




