- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Копирование байтов из DB в DB
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
Коллеги, добрый день прошу помощи ситуация следующия :
У меня есть DB блок куда со сканера прилетают данные до 34 битов (Скрин MY)
мне нужно эти данные складировать в другой DВ как только они туда прилетают от сканера и до момента пока не придет сигнал стоп
А также мне нужно в том блоке DB в который будет все складироватся отсикать байты с начала с 0 по 6 а также байты 13,12,11 но с конца и записывать еще в один DB в виде (скринн NEED ).
Помогите пожалуйста умные люди уже третий день на работе живу
Моя система
STEP 7 v 5.5
SCL v 5.3 SP6
CFC v 7.1 SP3
S7-400 416 2DP
за рание огромное спасибо всем !!!!!
У меня есть DB блок куда со сканера прилетают данные до 34 битов (Скрин MY)
мне нужно эти данные складировать в другой DВ как только они туда прилетают от сканера и до момента пока не придет сигнал стоп
А также мне нужно в том блоке DB в который будет все складироватся отсикать байты с начала с 0 по 6 а также байты 13,12,11 но с конца и записывать еще в один DB в виде (скринн NEED ).
Помогите пожалуйста умные люди уже третий день на работе живу
Моя система
STEP 7 v 5.5
SCL v 5.3 SP6
CFC v 7.1 SP3
S7-400 416 2DP
за рание огромное спасибо всем !!!!!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 19 раз
- Поблагодарили: 64 раза
Копирование байтов из DB в DB
1. Создаёшь промежуточный блок данных, соответственно его размечаешь - должен содержать одну структуру типа, используемого в LotsTable (ты не показал структуру данных, но по всему выходит - там array[0..n] of UDTn).
2. Пересылаешь туда по событию получения данных со сканера (зависит от интерфейса связи со сканером) необходимые данные (хоть простым MOVE).
3. Создаёшь программный блок на SCL, записывающий данные в целевой блок данных. Примерно такой:
Вообще, есть много способов решения данной задачи - можно и ANY собрать, для работы через BLKMOV, и ручками смещение для каждой структуры в STL вычислять... Но для связки CFC-SCL, лучше использовать вышеобозначенный.
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
-
- завсегдатай
- Сообщения: 524
- Зарегистрирован: 05 окт 2009, 11:51
- Имя: Тихомиров Дмитрий Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 17 раз
- Поблагодарили: 20 раз
Копирование байтов из DB в DB
И вот именно сегодня попалась на глаза http://bash.im/quote/427607
Перефразировав автора: ну вот как не ржать, а? я о проблеме темы не могу думать, только об этом отсикании теперь, а ещё говорят: мы ехидные, мы злые, мы не помогаем.... всё, я в ауте, ушел... отсикать
Перефразировав автора: ну вот как не ржать, а? я о проблеме темы не могу думать, только об этом отсикании теперь, а ещё говорят: мы ехидные, мы злые, мы не помогаем.... всё, я в ауте, ушел... отсикать
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
Спасибо конечно за юмор. Только мне вот не смешно. Реально сдвиг не получается сделатьMarrenoloth писал(а): И вот именно сегодня попалась на глаза http://bash.im/quote/427607
Перефразировав автора: ну вот как не ржать, а? я о проблеме темы не могу думать, только об этом отсикании теперь, а ещё говорят: мы ехидные, мы злые, мы не помогаем.... всё, я в ауте, ушел... отсикать
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
А как у вас получилось array вставить в OutPutwinb писал(а): 1. Создаёшь промежуточный блок данных, соответственно его размечаешь - должен содержать одну структуру типа, используемого в LotsTable (ты не показал структуру данных, но по всему выходит - там array[0..n] of UDTn).
2. Пересылаешь туда по событию получения данных со сканера (зависит от интерфейса связи со сканером) необходимые данные (хоть простым MOVE).
3. Создаёшь программный блок на SCL, записывающий данные в целевой блок данных. Примерно такой:Вообще, есть много способов решения данной задачи - можно и ANY собрать, для работы через BLKMOV, и ручками смещение для каждой структуры в STL вычислять... Но для связки CFC-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
-
- завсегдатай
- Сообщения: 524
- Зарегистрирован: 05 окт 2009, 11:51
- Имя: Тихомиров Дмитрий Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 17 раз
- Поблагодарили: 20 раз
Копирование байтов из DB в DB
Для начала, вообще непонятна задача. "Отсекать" - это отбрасывать или именно эти байты и нужны? 13,12,11 байты "в обратном порядке" - это как? Еще, похоже, у вас картинки перепутаны (ну или я вообще не понимаю описания того, что нужно сделать).
Если я правильно понял, нужно сделать массив, в котором в каждом элементе лежат биты 0-1-2-3-4-5-13-12-11, полученные из DB сканера?
Какая логика работы с этим массивом? Стек, очередь, циклическое хранилище, еще что-то?
На каком языке вам нужна эта программа?
Если я правильно понял, нужно сделать массив, в котором в каждом элементе лежат биты 0-1-2-3-4-5-13-12-11, полученные из DB сканера?
Какая логика работы с этим массивом? Стек, очередь, циклическое хранилище, еще что-то?
На каком языке вам нужна эта программа?
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
нужно сделать массив, в котором в каждом элементе лежат биты 0-1-2-3-4-5-13-12-11, полученные из DB сканера также буфер того, чего он отсканировал. Язык программирования SCL, или STL. Картинки просто так вставились, верхнее - что нужно получить, нижнее что есть.
-
- завсегдатай
- Сообщения: 524
- Зарегистрирован: 05 окт 2009, 11:51
- Имя: Тихомиров Дмитрий Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 17 раз
- Поблагодарили: 20 раз
Копирование байтов из DB в DB
Так. Про массив хорошо, понятно. что есть "полученные из DB сканера также буфер того, чего он отсканировал"? Как данные должны храниться в массиве? Первый элемент всегда актуальный, при получении новых значений, сдвигаем все элементы массива вверх по номеру на 1, новые значения из сканера кладем в первый элемент? Так?
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
На второй картинке видно что он отсканировал а а первой к чему нужно прийти
+ второй блок где лежат все данные по сканированию их будет 45 массивов
потом блок будет затиратся
значения кладем в первый элимент
+ второй блок где лежат все данные по сканированию их будет 45 массивов
потом блок будет затиратся
значения кладем в первый элимент
-
- завсегдатай
- Сообщения: 524
- Зарегистрирован: 05 окт 2009, 11:51
- Имя: Тихомиров Дмитрий Викторович
- Страна: Россия
- город/регион: Москва
- Благодарил (а): 17 раз
- Поблагодарили: 20 раз
Копирование байтов из DB в DB
Уф. Тяжело у нас с взаимопониманием... Что отсканировал и к чему прийти - это понятно. При получении новых данных со сканера, что должно происходить с массивом? 1 элемент перекладывается во 2, 2 в 3, ... , 44 в 45. После этого, новые данные кладутся в элемент 1. Так?
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 23 фев 2017, 12:15
- Имя: Андрей
- Страна: Казакстан
- город/регион: Алматы
Копирование байтов из DB в DB
Всплыла еще одна проблемка во время тестов.
Раньше считывался с адреса Profibus через стандартный SFC 14. Но в данный момент он перестал, и читается напрямую только с PIW адреса. Что может быть? Что мешает ему считывать и делать Record в DB?
Раньше считывался с адреса Profibus через стандартный SFC 14. Но в данный момент он перестал, и читается напрямую только с PIW адреса. Что может быть? Что мешает ему считывать и делать Record в DB?