Символьная адресация элементов массива

У меня есть массив объектов, скажем, 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],

Другие вопросы по тегам