Добрый день,
вопрос такой:
есть переменная типа Word содержащая адрес в памяти.
как мне записать значение по этому адресу?
бьюсь без толку, непонятно как в кодесисе вот так обратиться к памяти
Добрый день,
вопрос такой:
есть переменная типа Word содержащая адрес в памяти.
как мне записать значение по этому адресу?
бьюсь без толку, непонятно как в кодесисе вот так обратиться к памяти
a:word;
x: pointer to word;
x:=ADR(a);
x^:=22;
Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:27.
a: DWORD:=16#0; (* Убиваем вектора прерываний*)
x: pointer to BYTE;
x:=a;
x^:=0; (* Убили!*)
Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:28.
Какой вопрос?
Запись по адресу? Записываете в указатель адрес и вперёд.
А, если не секрет, зачем?
Невольно вспомнилось: впрос, как положить слона в холодильник?
1. открыть холодильник
2. положить слона в холодильник
3. закрыть холодильник
мне нужен синтаксис операции для кодесиса, как это делается в других языках я знаю, вот в чем загвоздка.
Это нужно для автоматического выключения датчиков с МВА8 протокол Овен
допустим идет обрыв датчика, я беру значения код ошибки и адрес ошибки. по адресу я автоматически записываю нужное мне значение в переменную датчика.
я эту проблему решил, но решил ее не самым оптимальным вариантом, хотелось бы узнать как это сделать правильно, спасибо
1) Давайте разберемся, что Вы имеете ввиду, говоря адрес.
Если это адрес IEC 61131 вида %Q... или %I то к обычным адресам эти адреса не имеют никого отношения.
2) Чтобы записать по адресу переменной нужно узнать этот адрес. Обычно это делается операцией ADR(). Иногда нужно добавить к адресу некое смещение. Это смещение нужно рассчитывать как DWORD переменную или константу тогда получается - x : POINTER to WORD ; x:=adr(error); x:=x+DWORD#4; x^:=WORD#3;
3) ИМХО, не стоит работать так с областью ввода и ввода. В принципе, работа с указателями - зло, и цена ошибки в случае с областью ввода-вывода выше чем с обычными переменными.
Последний раз редактировалось Малышев Олег; 02.12.2008 в 14:22.