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

Как в STL оптимально скопировать отдельные ячейки между DBs ?

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
alex3110
освоился
освоился
Сообщения: 262
Зарегистрирован: 02 апр 2015, 18:16
Имя: Симонов Игорь Валерьевич
Благодарил (а): 24 раза
Поблагодарили: 6 раз

Как в STL оптимально скопировать отдельные ячейки между DBs ?

Сообщение alex3110 »

Всем привет!

Нужно скопировать не все, а определенные ячейки DB1 в определенные ячейки DB2.
Ячейки, копируемые из DB1, расположены на фиксированном расстоянии «1» друг от друга.
Ячейки, копируемые в DB2, также расположены на фиксированном расстоянии «2» друг от друга.
Расстояния «1» и «2» не равны.

Есть ли у кого-нибудь код на STL (для НЕ «тиапортального» STEP7) для реализации задачи ?
Для минимизации количества кода полагаю, что нужно использовать LAR1, LAR2 и «циклы».

Заранее благодарен.

Dmitriy1983
здесь недавно
здесь недавно
Сообщения: 66
Зарегистрирован: 29 окт 2017, 19:52
Имя: Дмитрий
Благодарил (а): 5 раз
Поблагодарили: 13 раз

Как в STL оптимально скопировать отдельные ячейки между DBs ?

Сообщение Dmitriy1983 »

Доброе утро. Не совсем понятно, что такое расстояние 1 и 2. Если это байт, то код такой:
L 0
T MW 100 //Переменная содержащая количество переменных, которых необходимо скопировать
L P#0.0
LAR1
LAR2

kuku: OPN DB 1
L DBB [AR1,P#0.0]
OPN DB 2
T DBB [AR2,P#0.0]//Сдвиг на 1 байт
L P#1.0
+AR1
L P#2.0 //Сдвиг на 2 байта
+AR2
L MW 100
L 1
+I
T MW 100
L 10 //В примере 10 переменных необходимо скопировать
>=I // Если еще не копировались 10 переменных, то повторяем цикл
JCN kuku

Автор темы
alex3110
освоился
освоился
Сообщения: 262
Зарегистрирован: 02 апр 2015, 18:16
Имя: Симонов Игорь Валерьевич
Благодарил (а): 24 раза
Поблагодарили: 6 раз

Как в STL оптимально скопировать отдельные ячейки между DBs ?

Сообщение alex3110 »

Dmitriy1983 , спасибо за ответ !
Доброе утро. Не совсем понятно, что такое расстояние 1 и 2.
Ну к примеру, из DB1 нужно 10 шт. битов 2.0 ; 16.0 ; 30.0 … и т.д. , которые там расположены через 14 байт
скопировать
в DB2 в биты 4.2 ; 10.2 ; …. и т.д. где они расположены уже через 6 байт.

OPN DB 2
А тут блок данных 2 точно не с помощь регистра DI нужно открывать ?
Обычно, когда нужно переслать данные между двумя DB, используют регистры
DB и DI блоков данных.

Автор темы
alex3110
освоился
освоился
Сообщения: 262
Зарегистрирован: 02 апр 2015, 18:16
Имя: Симонов Игорь Валерьевич
Благодарил (а): 24 раза
Поблагодарили: 6 раз

Как в STL оптимально скопировать отдельные ячейки между DBs ?

Сообщение alex3110 »

Сделал, работает. Правда на другом коде.
Возможно, предложенный тут тоже будет работать.
Ответить

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