CODESYS форум
https://forum-ru.codesys.com/

Динамическое изменение имени переменной
https://forum-ru.codesys.com/viewtopic.php?f=2&t=1945
Страница 1 из 1

Автор:  lexx905 [ Ср июл 23, 2014 4:45 pm ]
Заголовок сообщения:  Динамическое изменение имени переменной

Привет всем. Нуждаюсь в вашей помощи.
Каким образом мне в подпрограмме собрать ДИНАМИЧЕСКИ имя переменной. Например в PHP я могу слепить имя переменной из двух строк, а потом тому что получилось присвоить значение.

Например:

Я назвал физический выход контроллера как DigitalOut1

Вложение:
Снимок.JPG
Снимок.JPG [ 9.72 КБ | 4704 просмотра ]



Потом в подпрограмму я отправляю две строки. Первая -DigitalOut, вторая - 1.

В подпрограмме я склеиваю эти строки

VarSTRING := CONCAT ('DigitalOut','1');

и в переменной VarSTRING, я получил строку - DigitalOut1.

Как в данном случае, после склеивания мне задать DigitalOut1:=true; ?


Спасибо.

Вложения:
Снимок.JPG
Снимок.JPG [ 9.72 КБ | 4704 просмотра ]

Автор:  Igor Petrov [ Чт июл 24, 2014 9:55 am ]
Заголовок сообщения:  Re: Динамическое изменение имени переменной

Это принципиально невозможно. Задача решается иначе.

CODESYS компилятор, как Си, Паскаль и др. Соответственно, в контроллер передается только быстрый и компактный машинный код. В машинном коде непосредственно вшиты адреса переменных. Имена переменных есть только в исходном тексте, для человека. В машинный код они не попадают принципиально. Быстрый косвенный доступ к переменным обеспечивают указатели. Дополнительно в МЭК средах есть прямые адреса для области входов/выходов.

В интерпретирующем PHP указателей не существует. Для обхода этого ограничения придуман данный трюк с именами.

Автор:  lexx905 [ Чт июл 24, 2014 6:42 pm ]
Заголовок сообщения:  Re: Динамическое изменение имени переменной

Спасибо за ответ,

Жаль что невозможно, было бы очень удобно.

А с указателями что можно придумать?

Страница 1 из 1 Часовой пояс: UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/