Здравствуйте. Стоит задача:
Фрагмент программы на SCL переведите на FBD
Пусть, необходимо считать слова с PIW 128 по PIW 142 из области
периферии в область меркеров в слова с MW 128 по MW 142.
FOR i := 128 TO 142 BY 2 DO
MW(i):= PIW(i);
END_FOR;
Подскажите как её можно осуществить или хотя бы как работать с массивами на языке FBD? Спасибо
Массив на FBD
- Автоматизатор
- Профессионал
- Сообщения: 994
- Зарегистрирован: 09 окт 2012, 05:18
Re: Массив на FBD
Можно в лоб: с помощью MOVE пословно.
Re: Массив на FBD
можно через Move. Но хотелось бы чтобы как то более изысканно, ибо если будет 1000 элементов, то делать через Move довольно геморройно
Re: Массив на FBD
Сильно зависит от среды разработки: в ТИА Портале это запросто сделать! Тот же MOVE оказывается может перекинуть много байт за один раз, если не может, то использовать MOVE_BLK, а на крайний случай - MOVE_BLK_VARIANT.
Re: Массив на FBD
Тут дело то не в массиве, задача состоит в том чтобы на FBD организовать цикл с косвенной адресацией.
- Автоматизатор
- Профессионал
- Сообщения: 994
- Зарегистрирован: 09 окт 2012, 05:18
Re: Массив на FBD
FBD вроде не поддерживает косвенную адресацию. Даже в TIA портале.
Re: Массив на FBD
FBD - классика функционального программирования, а в функциональном программировании вместо циклов применяют универсальные функции Map/Reduce. И функция MOVE как раз из серии Map.
Вот рабочий код: Так как область памяти IW/MW не является структурой или массивом, к которому можно обращаться по индексу, то приходится использовать MOVE_BLK_VARIANT. По этой же причине никак не сделать цикл на инструкциях LABEL/JMPN. У меня не получилось.
Вот рабочий код: Так как область памяти IW/MW не является структурой или массивом, к которому можно обращаться по индексу, то приходится использовать MOVE_BLK_VARIANT. По этой же причине никак не сделать цикл на инструкциях LABEL/JMPN. У меня не получилось.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Массив на FBD
Я не пробовал
И правда в документации написано: если не массив (наш случай), то COUNT должен быть 1.
P.S. Serialize/Deserialize тоже с массивами работает.
И правда в документации написано: если не массив (наш случай), то COUNT должен быть 1.
P.S. Serialize/Deserialize тоже с массивами работает.