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

Копирование байтов из DB в DB

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

Ответить

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

Коллеги, добрый день прошу помощи ситуация следующия :
У меня есть DB блок куда со сканера прилетают данные до 34 битов (Скрин MY)
мне нужно эти данные складировать в другой DВ как только они туда прилетают от сканера и до момента пока не придет сигнал стоп
А также мне нужно в том блоке DB в который будет все складироватся отсикать байты с начала с 0 по 6 а также байты 13,12,11 но с конца и записывать еще в один DB в виде (скринн NEED ).
Помогите пожалуйста умные люди уже третий день на работе живу :ges_help:

Моя система
STEP 7 v 5.5
SCL v 5.3 SP6
CFC v 7.1 SP3
S7-400 416 2DP
за рание огромное спасибо всем !!!!!
У вас нет необходимых прав для просмотра вложений в этом сообщении.

winb
освоился
освоился
Сообщения: 248
Зарегистрирован: 31 янв 2017, 08:44
Имя: Маркушин Андрей Геннадьевич
Страна: Россия
город/регион: Нижегородская обл., Выкса
Благодарил (а): 19 раз
Поблагодарили: 64 раза

Копирование байтов из DB в DB

Сообщение winb »

1. Создаёшь промежуточный блок данных, соответственно его размечаешь - должен содержать одну структуру типа, используемого в LotsTable (ты не показал структуру данных, но по всему выходит - там array[0..n] of UDTn).
2. Пересылаешь туда по событию получения данных со сканера (зависит от интерфейса связи со сканером) необходимые данные (хоть простым MOVE).
3. Создаёшь программный блок на SCL, записывающий данные в целевой блок данных. Примерно такой:

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

FUNCTION FCxx: VOID

VAR_INPUT
    Data: "SomeType"; //Записываемые данные
    END_VAR

VAR_IN_OUT
    Index: INT; //Для сохранения индекса текущей структуры данных
END_VAR

VAR_OUTPUT
    Storage: ARRAY[0..10] OF "SomeType";
END_VAR

BEGIN
    Storage[Index]:=Data;
    Index:=Index+1;    
END_FUNCTION
 
Вообще, есть много способов решения данной задачи - можно и ANY собрать, для работы через BLKMOV, и ручками смещение для каждой структуры в STL вычислять... Но для связки CFC-SCL, лучше использовать вышеобозначенный.
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Копирование байтов из DB в DB

Сообщение Marrenoloth »

И вот именно сегодня попалась на глаза http://bash.im/quote/427607
Перефразировав автора: ну вот как не ржать, а? я о проблеме темы не могу думать, только об этом отсикании теперь, а ещё говорят: мы ехидные, мы злые, мы не помогаем.... всё, я в ауте, ушел... отсикать

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

Marrenoloth писал(а): И вот именно сегодня попалась на глаза http://bash.im/quote/427607
Перефразировав автора: ну вот как не ржать, а? я о проблеме темы не могу думать, только об этом отсикании теперь, а ещё говорят: мы ехидные, мы злые, мы не помогаем.... всё, я в ауте, ушел... отсикать
Спасибо конечно за юмор. Только мне вот не смешно. Реально сдвиг не получается сделать

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

winb писал(а): 1. Создаёшь промежуточный блок данных, соответственно его размечаешь - должен содержать одну структуру типа, используемого в LotsTable (ты не показал структуру данных, но по всему выходит - там array[0..n] of UDTn).
2. Пересылаешь туда по событию получения данных со сканера (зависит от интерфейса связи со сканером) необходимые данные (хоть простым MOVE).
3. Создаёшь программный блок на SCL, записывающий данные в целевой блок данных. Примерно такой:

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

FUNCTION FCxx: VOID

VAR_INPUT
    Data: "SomeType"; //Записываемые данные
    END_VAR

VAR_IN_OUT
    Index: INT; //Для сохранения индекса текущей структуры данных
END_VAR

VAR_OUTPUT
    Storage: ARRAY[0..10] OF "SomeType";
END_VAR

BEGIN
    Storage[Index]:=Data;
    Index:=Index+1;    
END_FUNCTION
 
Вообще, есть много способов решения данной задачи - можно и ANY собрать, для работы через BLKMOV, и ручками смещение для каждой структуры в STL вычислять... Но для связки CFC-SCL, лучше использовать вышеобозначенный.
А как у вас получилось array вставить в OutPut
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Копирование байтов из DB в DB

Сообщение Marrenoloth »

Для начала, вообще непонятна задача. "Отсекать" - это отбрасывать или именно эти байты и нужны? 13,12,11 байты "в обратном порядке" - это как? Еще, похоже, у вас картинки перепутаны (ну или я вообще не понимаю описания того, что нужно сделать).

Если я правильно понял, нужно сделать массив, в котором в каждом элементе лежат биты 0-1-2-3-4-5-13-12-11, полученные из DB сканера?
Какая логика работы с этим массивом? Стек, очередь, циклическое хранилище, еще что-то?
На каком языке вам нужна эта программа?

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

нужно сделать массив, в котором в каждом элементе лежат биты 0-1-2-3-4-5-13-12-11, полученные из DB сканера также буфер того, чего он отсканировал. Язык программирования SCL, или STL. Картинки просто так вставились, верхнее - что нужно получить, нижнее что есть.
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Копирование байтов из DB в DB

Сообщение Marrenoloth »

Так. Про массив хорошо, понятно. что есть "полученные из DB сканера также буфер того, чего он отсканировал"? Как данные должны храниться в массиве? Первый элемент всегда актуальный, при получении новых значений, сдвигаем все элементы массива вверх по номеру на 1, новые значения из сканера кладем в первый элемент? Так?

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

На второй картинке видно что он отсканировал а а первой к чему нужно прийти
+ второй блок где лежат все данные по сканированию их будет 45 массивов
потом блок будет затиратся
значения кладем в первый элимент
Аватара пользователя

Marrenoloth
завсегдатай
завсегдатай
Сообщения: 524
Зарегистрирован: 05 окт 2009, 11:51
Имя: Тихомиров Дмитрий Викторович
Страна: Россия
город/регион: Москва
Благодарил (а): 17 раз
Поблагодарили: 20 раз

Копирование байтов из DB в DB

Сообщение Marrenoloth »

Уф. Тяжело у нас с взаимопониманием... Что отсканировал и к чему прийти - это понятно. При получении новых данных со сканера, что должно происходить с массивом? 1 элемент перекладывается во 2, 2 в 3, ... , 44 в 45. После этого, новые данные кладутся в элемент 1. Так?

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

Marrenoloth писал(а): Уф. Тяжело у нас с взаимопониманием... Что отсканировал и к чему прийти - это понятно. При получении новых данных со сканера, что должно происходить с массивом? 1 элемент перекладывается во 2, 2 в 3, ... , 44 в 45. После этого, новые данные кладутся в элемент 1. Так?
Совершенно верно

Автор темы
Adovgal
здесь недавно
здесь недавно
Сообщения: 8
Зарегистрирован: 23 фев 2017, 12:15
Имя: Андрей
Страна: Казакстан
город/регион: Алматы

Копирование байтов из DB в DB

Сообщение Adovgal »

Всплыла еще одна проблемка во время тестов.
Раньше считывался с адреса Profibus через стандартный SFC 14. Но в данный момент он перестал, и читается напрямую только с PIW адреса. Что может быть? Что мешает ему считывать и делать Record в DB?
Ответить

Вернуться в «ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)»