Символьная адресация элементов массива
У меня есть массив объектов, скажем, MyArray[1..x]
объекта.
При программировании я хочу иметь более "читабельный" способ адресации каждого объекта. Вместо того чтобы сказать MyArray[1] := ...etc
, я хотел бы сказать MyReadableName :=...
Я просмотрел ссылки, но немного беспокоюсь обо всем этом. Как я могу сделать это хорошим способом и поддержать онлайн изменения? И куда я должен поместить объявление и назначение ссылок, это может быть много много сотен, и я не хочу загромождать главное окно VAR, когда в режиме онлайн?
Еще одна вещь, на которую я обратил внимание - это наличие перечисления с читаемыми именами и использование его в качестве индекса в массиве. Поиск тогда MyArray[Enum.MyReadableName] :=..
, но я не уверен, что это хорошее решение.
Любые решения или советы приветствуются! Спасибо!
1 ответ
Вы уже упомянули все возможные пути для этого.
указатели
Вы не должны беспокоиться о них. Указатели не являются частью IEC-61131, поэтому их реализация варьируется от производителя к производителю. Было бы хорошо, если бы вы упомянули IDE, которую вы используете, и структуру элементов массива.
Наилучшим образом, как я работаю с такими задачами, я создаю ACTION и там я отображаю все переменные в массивы или из массивов. Я запускаю эти задачи только один раз при загрузке ПЛК и вызываю это действие Mapping.
VAR
aA: ARRAY [1..2] OF StructureName;
stMyName1: POINTER TO StructureName;
stMyName2: POINTER TO StructureName;
xInit: BOOL;
END_VAR
ACTION actMap
stMyName1 := ADR(aA[1]);
stMyName2 := ADR(aA[2]);
END_ACTION
IF NOT xInit THEN
actMap();
xInit := TRUE;
END_IF
Но обычно в IDE действия создаются по-другому, а не с ACTION
ключевое слово. В Codesys это правой кнопкой мыши на ПМ.
Я бы пошел с указателями, потому что это не логичный путь. Это требует немного больше для настройки приложения, но позже экономит время с кодированием.
перечисление
Этот, как вы описали. В Codesys вы должны использовать #
лайк Color#red
, Но если вы делаете имена уникальными, вы можете использовать их без имени перечисления. Кроме того, если вы укажете имя массива, оно может выглядеть информативно, как a[MyArrayName]
,