Добрый день. Есть еще вопрос.
Упрощенно: есть небольшая линия, состоящая из 3 машин - 3 контроллера - 3 программы, объединенные в один проект.
Нужно объяснить "продвинутому лузеру" как при установке бита (например) DB104 DBX1.3 в программе машины 2, устанавливается и бит DB104 DBX11.3 в программе машины 3 (со сдвигом на 10). Все эти DB по 20 байт, первые 10 названы "передача данных", последние 10 - "прием данных".
Как устанавливаются биты?
Re: Как устанавливаются биты?
1. "Продвинутый лузер" - это кто-то из коллег? Сами разбираетесь?
2. Используются функции PUT/GET для обмена данными между ЦПУ?
2. Используются функции PUT/GET для обмена данными между ЦПУ?
-
- Дилетант
- Сообщения: 7
- Зарегистрирован: 26 июл 2016, 23:12
Re: Как устанавливаются биты?
Немножко флуда: Может, всё-таки, "продвинутому ламеру"? Нюанс, как говорится.
Варианта два: Или через обменные сигналы (Реле между выходом одного контроллера и входом другого). Или через общую сеть (Тут надо понять, есть ли у них физически общая сеть и, если есть, искать примеры на сайте сапорта Сименса - там тысячи их).
Варианта два: Или через обменные сигналы (Реле между выходом одного контроллера и входом другого). Или через общую сеть (Тут надо понять, есть ли у них физически общая сеть и, если есть, искать примеры на сайте сапорта Сименса - там тысячи их).
Re: Как устанавливаются биты?
1. Нет, это скорее я по отношению к коллегам (в плане сименса)Михайло писал(а):1. "Продвинутый лузер" - это кто-то из коллег? Сами разбираетесь?
2. Используются функции PUT/GET для обмена данными между ЦПУ?
2. Скорее всего Вы правы (везде есть SFB14,15), просто ничего не знал (и не знаю собственно) про них. Продолжу в понедельник,
так как дома ничего не устанавливал, дабы не путать отдых с работой.
Re: Как устанавливаются биты?
Добрый вечер. Ну как я понял SFB14,15 пересылают первые 10 байт DB в последние 10 байт DB другого контроллера и наоборот.
Номера DB взяты одинаковые (для удобства наверно). Но у меня SFB "под замочком". Можно ли их как-то разблокировать, дабы посмотреть
параметры блоков и что им присвоено?
Номера DB взяты одинаковые (для удобства наверно). Но у меня SFB "под замочком". Можно ли их как-то разблокировать, дабы посмотреть
параметры блоков и что им присвоено?
Re: Как устанавливаются биты?
Системные блоки SFB всегда под замочком. Они делают то, что они делают. Описание работы блоков можно найти в справке Степ7.
Re: Как устанавливаются биты?
А как же их программируют?
В смысле, вот я открываю первый раз проект. Вижу SFB14,15. Как мне узнать что куда передается?
В смысле, вот я открываю первый раз проект. Вижу SFB14,15. Как мне узнать что куда передается?
Re: Как устанавливаются биты?
Ну вот Вы видите "квадратик" PUT SFB15, у этого "квадратика" слева на входе всякие числа и даже логические цепочки - по сути это и есть настройки передачи данных. Скриншот не помешал бы!nicss писал(а):В смысле, вот я открываю первый раз проект. Вижу SFB14,15. Как мне узнать что куда передается?
Если выделить квадратик и нажать F1 - вылезет инструкция по этому блоку.
Re: Как устанавливаются биты?
Функциями PUT/GET организуется обмен данными между любыми процессорами (ЦПУ) серии S7. Только между своими родными процессорами!
Функция PUT (SFB15)
ADDR_1 - "куда положить" (адрес в памяти ЦПУ-партнера). Например, P#DB106.DBX10.0 WORD 5 - здесь "WORD 5" означает передачу пяти слов. "P#" - это символ указателя. Если не знаешь, что это такое, то просто запомни, что надо писать эту штуку перед любым адресом в функции PUT и точка.
SD_1 - "откуда взять" (адрес на этом ЦПУ, на котором исполняется программа)
REQ - это условие запуска процесса передачи; тут надо понять, что передача данных и обработка программы работают асинхронно на разных процессорах - программа обрабатывается на основном процессоре, передача данных - на коммуникационном процессоре. Асинхронная работа - это значит, что за один цикл обработки программы на основном процессоре коммуникационный процессор допустим успевает передать, допустим, 3,73 пакета в сеть Profinet или Profibus. Стоит вопрос синхронизации. Функция PUT лишь организует временный мостик между процессорами, по сигналу REQ. При чем важно: передача команды PUT ("положи") производится по фронту сигнала REQ и после этого уже остановить коммуникационный обмен уже невозможно.
ID - идентификатор передачи данных, идентификатор должен быть уникальным числом 1, 2, 3, ... во избежание путаницы при множественной передаче всяких данных.
DONE - "сделано" - это уже сигнал обратной связи с коммуникационного процессора. Соответственно, сразу после загрузки коммуникационного процессора новым заданием сигнал DONE устанавливается в 0. При выполнении задания устанавливается 1. Если попытаться дать новое задание с помощью подачи фронта REQ при занятом коммуникационном процессоре (DONE=0), то новый сигнал REQ не будет принят. Поэтому правильнее всего сигнал REQ блокировать инверсией сигнала DONE, во избежание таких "холостых выстрелов".
ERROR - "ошибка" - задание может выполнено успешно (ERROR=0) или с ошибкой (ERROR=1). Код ошибки можно прочитать в параметре STATUS (число от 0 до 65535), расшифровать код ошибки можно по справочнику функции PUT. Ошибки могут быть разными - элементарно оборвался кабель или выключилось питание ЦПУ-партнера.
Можно передать до четырех пачек данных (ADDR_1, ADDR_2, ADDR_3, ADDR_4, SD_1, SD_2, SD_3, SD_4) за один присест.
Аналогично работает функция GET.
Функция PUT (SFB15)
ADDR_1 - "куда положить" (адрес в памяти ЦПУ-партнера). Например, P#DB106.DBX10.0 WORD 5 - здесь "WORD 5" означает передачу пяти слов. "P#" - это символ указателя. Если не знаешь, что это такое, то просто запомни, что надо писать эту штуку перед любым адресом в функции PUT и точка.
SD_1 - "откуда взять" (адрес на этом ЦПУ, на котором исполняется программа)
REQ - это условие запуска процесса передачи; тут надо понять, что передача данных и обработка программы работают асинхронно на разных процессорах - программа обрабатывается на основном процессоре, передача данных - на коммуникационном процессоре. Асинхронная работа - это значит, что за один цикл обработки программы на основном процессоре коммуникационный процессор допустим успевает передать, допустим, 3,73 пакета в сеть Profinet или Profibus. Стоит вопрос синхронизации. Функция PUT лишь организует временный мостик между процессорами, по сигналу REQ. При чем важно: передача команды PUT ("положи") производится по фронту сигнала REQ и после этого уже остановить коммуникационный обмен уже невозможно.
ID - идентификатор передачи данных, идентификатор должен быть уникальным числом 1, 2, 3, ... во избежание путаницы при множественной передаче всяких данных.
DONE - "сделано" - это уже сигнал обратной связи с коммуникационного процессора. Соответственно, сразу после загрузки коммуникационного процессора новым заданием сигнал DONE устанавливается в 0. При выполнении задания устанавливается 1. Если попытаться дать новое задание с помощью подачи фронта REQ при занятом коммуникационном процессоре (DONE=0), то новый сигнал REQ не будет принят. Поэтому правильнее всего сигнал REQ блокировать инверсией сигнала DONE, во избежание таких "холостых выстрелов".
ERROR - "ошибка" - задание может выполнено успешно (ERROR=0) или с ошибкой (ERROR=1). Код ошибки можно прочитать в параметре STATUS (число от 0 до 65535), расшифровать код ошибки можно по справочнику функции PUT. Ошибки могут быть разными - элементарно оборвался кабель или выключилось питание ЦПУ-партнера.
Можно передать до четырех пачек данных (ADDR_1, ADDR_2, ADDR_3, ADDR_4, SD_1, SD_2, SD_3, SD_4) за один присест.
Аналогично работает функция GET.
Re: Как устанавливаются биты?
Спасибо.
Не совсем понял про ID. Написано - идентификатор локального соединения (определен в Step7 - конфигурации).
Что-то не могу найти где посмотреть какой "номер" присвоен какому контроллеру?
Не совсем понял про ID. Написано - идентификатор локального соединения (определен в Step7 - конфигурации).
Что-то не могу найти где посмотреть какой "номер" присвоен какому контроллеру?
Re: Как устанавливаются биты?
S7-коммуникации настраиваются отдельно, поищи где-то в проекте в Step7. Найди номер ID, этот номер полностью определяет два ЦПУ-партнера.
Re: Как устанавливаются биты?
Братья PUT и GET относятся к S7-коммуникациям. Если есть S7, то значит удобно и просто.
Re: Как устанавливаются биты?
Еще один вопросик.
Прочитал, что сигнал DONE = 0, когда задание либо не началось либо выполняется
DONE = 1, когда задание выполнено
Как разделить "задание не началось" и "задание выполнено". Или, другими словами, после выполнения задания DONE установится в 1, а когда сбросится назад на 0?
Прочитал, что сигнал DONE = 0, когда задание либо не началось либо выполняется
DONE = 1, когда задание выполнено
Как разделить "задание не началось" и "задание выполнено". Или, другими словами, после выполнения задания DONE установится в 1, а когда сбросится назад на 0?
Re: Как устанавливаются биты?
DONE=0 устанавливается после подачи импульса REQ. Разве нет?
Re: Как устанавливаются биты?
Т.е. после выполнения, допустим записи на другой цпу, единица на DONE "висит" до прихода следующего фронта REQ?
И какой сигнал будет на DONE в первом цикле программы до вызова SFB (при включении контроллера)?
И какой сигнал будет на DONE в первом цикле программы до вызова SFB (при включении контроллера)?
Re: Как устанавливаются биты?
Ну как только блок готов к приему импульса на вход REQ, то DONE=1.
Re: Как устанавливаются биты?
Спасибо.
Еще вопрос. Для чего (как работают) в FC119 (приведенном выше) первые 7 строк кода и последние 7 строк (по метке А1)
Вот они:
(программистам должны нравится такие вопросы )
Еще вопрос. Для чего (как работают) в FC119 (приведенном выше) первые 7 строк кода и последние 7 строк (по метке А1)
Вот они:
Код: Выделить всё
А1:
O "StartSend"
O "StartRecV"
L S5T#5S
SD T 122 //timeout
A T 122
R "StartSend"
R "StartRecV"
BE