1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как натянуть блок байт из %I на DB

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)

Модератор: Глоб.модераторы

Ответить

Автор темы
Sergy6661
специалист
специалист
Сообщения: 655
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 20 раз
Поблагодарили: 89 раз

Как натянуть блок байт из %I на DB

Сообщение Sergy6661 »

Всем привет.
Помогите, Товарищи, сижу три часа не могу понять как в Step 7 (S7-1500) натянуть кучу байт из области %I на дата блок.
Поясню: есть шлюз протоколов Профинет-Модбас, данные из него складываются в области I и Q, теперь нужно 12 байт начиная с %IB512 перекинуть в дата блок чтобы бы они там превратились в 2 DINT и 2 INT.

Думаю POKE_BLK то, что нужно...

Joshua
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 21 мар 2023, 02:12
Имя: Владимир
Страна: РФ
город/регион: Псков
Благодарил (а): 2 раза
Поблагодарили: 21 раз

Как натянуть блок байт из %I на DB

Сообщение Joshua »

S7-1500 поддерживает Slice механизм. Такой пример должен заработать. Байты можете тасовать как хотите:

Код: Выделить всё

"Data".DInt1.%B3 := "%IB512";
"Data".DInt1.%B2 := "%IB513";
"Data".DInt1.%B1 := "%IB514";
"Data".DInt1.%B0 := "%IB515";

"Data".DInt2.%B3 := "%IB516";
"Data".DInt2.%B2 := "%IB517";
"Data".DInt2.%B1 := "%IB518";
"Data".DInt2.%B0 := "%IB519";

"Data".Int1.%B1 := "%IB520";
"Data".Int1.%B0 := "%IB521";

"Data".Int2.%B1 := "%IB522";
"Data".Int2.%B0 := "%IB523";
Если отключен оптимизированный доступ, то можно сделать объединение через инструкцию AT

Автор темы
Sergy6661
специалист
специалист
Сообщения: 655
Зарегистрирован: 19 фев 2019, 22:38
Имя: Сергей
Страна: Россия
город/регион: Краснодар
Благодарил (а): 20 раз
Поблагодарили: 89 раз

Как натянуть блок байт из %I на DB

Сообщение Sergy6661 »

Joshua писал(а): 15 окт 2024, 13:06 Байты можете тасовать как хотите
Ага, вспомнил что у сименса байты наоборот и...выходит что только так...
Ответить

Вернуться в «Simatic TIA Portal»