- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Чтение данных из глобальных переменных в цикле Codesys
Модераторы: Глоб.модераторы, специалисты по PLC
-
- здесь недавно
- Сообщения: 38
- Зарегистрирован: 09 дек 2015, 14:57
- Имя: Подкорытов Алексей Александрович
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 2 раза
Чтение данных из глобальных переменных в цикле Codesys
Здравствуйте, подскажите, имеется список глобальных переменных в Codesys 3.5. Для того, чтобы считать и передать с них данные приходится писать например <имя списка>.<переменная в этом списке>, но можно ли как то пройтись по ним в цикле.
например FOR i:=1 TO 10 DO
<имя списка>.
например FOR i:=1 TO 10 DO
<имя списка>.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Чтение данных из глобальных переменных в цикле Codesys
Есть вероятность, что через какие-нибудь системные функции можно, но я бы не стал туда лезть.
В Кодесис есть UNION - можно к одной область памяти привязать переменные разного типа.
Делаете структуру с полями как глобальные переменные, и UNION, объединяющий эту структуру и массив.
Отправлено спустя 1 минуту 52 секунды:
Есть даже хитрость, как путь обращения к полям структуры сократить viewtopic.php?p=155350
В Кодесис есть UNION - можно к одной область памяти привязать переменные разного типа.
Делаете структуру с полями как глобальные переменные, и UNION, объединяющий эту структуру и массив.
Отправлено спустя 1 минуту 52 секунды:
Есть даже хитрость, как путь обращения к полям структуры сократить viewtopic.php?p=155350
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- освоился
- Сообщения: 290
- Зарегистрирован: 28 авг 2014, 09:30
- Имя: Воднев Александр Васильевич
- Страна: РФ
- город/регион: Томск
- Благодарил (а): 22 раза
- Поблагодарили: 33 раза
Чтение данных из глобальных переменных в цикле Codesys
С помощью указателя адреса это делается легко и непринужденно.
VAR_GLOBAL
TYPE AIc :
STRUCT
tc_00: word;
tc_01: word;
- - -;
tc_(i): WORD;
end_struct
end_type;
END_VAR
var
pt:POINTER TO WORD;
dt:array[0..i] of word;
cnt: int;
END_VAR
pt := ADR(AIc.tc_00);
for cnt:=0 to i
pt:=pt+cnt;
pt^:=dt[cnt];
end_for;
VAR_GLOBAL
TYPE AIc :
STRUCT
tc_00: word;
tc_01: word;
- - -;
tc_(i): WORD;
end_struct
end_type;
END_VAR
var
pt:POINTER TO WORD;
dt:array[0..i] of word;
cnt: int;
END_VAR
pt := ADR(AIc.tc_00);
for cnt:=0 to i
pt:=pt+cnt;
pt^:=dt[cnt];
end_for;
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Чтение данных из глобальных переменных в цикле Codesys
Да легко, объявите массив, более того по вашему тексту похоже что массив объявлен, но не работает и это странно,т.к должно работать и у меня все прекрасно работает.
В Кодесис есть нюансы с адрессацией, но не похоже, что это ваш случай, посему код в студию.
Хотя посмотрев внимательней стало все понятно- вы полю структуры присваиваете элемент массива в классическом 1м варианте (тяжкий китайский код), а во втором варианте при попытке написать индусский код вас заругал компилятор, т.к синтаксис не правильный.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Чтение данных из глобальных переменных в цикле Codesys
У топикстартера не структура, а просто список глобальных переменных с именем AIc
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Чтение данных из глобальных переменных в цикле Codesys
В КДС 3 список глобальных переменных по факту структура.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Чтение данных из глобальных переменных в цикле Codesys
Общего только написание через точку.
Если убрать прагму, то можно получить доступ без названия списка глобальных переменных.
В структуре вы сами задаёте порядок полей в памяти. Есть ли уверенность, что глобальные переменные лежат в памяти в том же порядке, в котором они описаны в списке глобальных переменных?
Если убрать прагму
Код: Выделить всё
{attribute 'qualified_only'}
В структуре вы сами задаёте порядок полей в памяти. Есть ли уверенность, что глобальные переменные лежат в памяти в том же порядке, в котором они описаны в списке глобальных переменных?
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 38
- Зарегистрирован: 09 дек 2015, 14:57
- Имя: Подкорытов Алексей Александрович
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 2 раза
Чтение данных из глобальных переменных в цикле Codesys
У меня AIc это список глобальных переменных где каждый элемент этого списка является элементом типа структуры TAI_SET
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Чтение данных из глобальных переменных в цикле Codesys
А что такое TAI_SET - мы должны догадаться? )
Отправлено спустя 8 минут 4 секунды:
Строгая типизация - для автоматизации - больше плюс, чем минус в автоматизации.
Просто надо грамотно пользоваться группами глобальных переменных.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- специалист
- Сообщения: 655
- Зарегистрирован: 19 фев 2019, 22:38
- Имя: Сергей
- Страна: Россия
- город/регион: Краснодар
- Благодарил (а): 20 раз
- Поблагодарили: 89 раз
Чтение данных из глобальных переменных в цикле Codesys
Да, именно так все и лежит, по порядочку в списке, только мин. адресация=> Byte.
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
Чтение данных из глобальных переменных в цикле Codesys
Абзац...
Выходим на высокоуровневое программирование, но начинаем себе создавать проблемы с расположением переменных в памяти...
При этом, что сейчас нет задачи рассчитать движение луны вокруг земли в 64кБ памяти.
ЗЫ. Если уж надо такая заморочка, создайте переменные как указатели на нужные типы данных, в первом цикле присвойте им адреса нужных глобальных переменных и пользуйтесь на здоровье, хоть массивом, хоть структурой, хоть списком.
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.