PDA

Просмотр полной версии : Непрямой доступ к памяти



AndreyG.
02.11.2022, 13:00
Добрый день, подскажите можно ли и как организовать непрямой доступ к памяти?

Пришел с Siemens'a, там использовал конструкции:
%IX(IDX:=X,BIT:=Y), где X - номер байта, Y - номер бита в байте
%IW(IDX:=nWord):P, где nWord - номер адреса AI канала
Либо PEEK, POKE в s7-1200, 1500.

Слишком привык, похоже :) Если нельзя, то может есть идеи чем заменить? Как реализовать?

Также интересно про POINTER, конструкции перекладывания из одной области памяти в другую (P#DB1.DBX0.0 byte 8)
Используя инструкцию BLKMOVE, все делается элементарно. Тут придется запускать цикл до 4, используя адреса памяти (ADR)?

Евгений Кислов
02.11.2022, 13:19
Добрый день, подскажите можно ли и как организовать непрямой доступ к памяти?

Пришел с Siemens'a, там использовал конструкции:
%IX(IDX:=X,BIT:=Y), где X - номер байта, Y - номер бита в байте
%IW(IDX:=nWord):P, где nWord - номер адреса AI канала
Либо PEEK, POKE в s7-1200, 1500.

Слишком привык, похоже :) Если нельзя, то может есть идеи чем заменить? Как реализовать?

Также интересно про POINTER, конструкции перекладывания из одной области памяти в другую (P#DB1.DBX0.0 byte 8)
Используя инструкцию BLKMOVE, все делается элементарно. Тут придется запускать цикл до 4, используя адреса памяти (ADR)?

Добрый день.
В CODESYS V3.5 в большинстве случаев непрямой адрес к памяти не требуется и не несет никаких преимуществ (по крайней мере, для наших контроллеров).
Что касается вашего вопроса - я предлагаю начать с этой статьи:
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysMemoryManipulation.pdf

Она полностью посвящена "перекладыванию данных".

Аналогом BLKMOVE, как я понимаю, будет MemMove из библиотеки CAA Memory.