SIEMENS, DF&PD

Предыдущее посещение: Ср июн 08, 2016 19:33 Текущее время: Ср июн 08, 2016 19:33

Часовой пояс: UTC + 3 часа




 [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Обмен по Profinet-IO
СообщениеДобавлено: Пт сен 30, 2011 8:11 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
В системе имеется центральная стойка и 4 подчиненных. Все сделано на 300ой серии, в центральной стойке установлен CP343-1, в подчиненных - CP343-1 Lean.

Требуется организовать двунаправленный обмен данными (отправка команд и уставок из центра, получение состояния подчиненных). Планирую реализовать сее мероприятие на протоколе Profinet-IO, где центральный CPU ялвяется контроллером PN, подчиненные - девайсами.

Возникает ряд вопросов.

1. Функции PNIO_SEND/PNIO_RECV должны вызываться, как на ведущем, так и на ведомых контроллерах?

2. Каков тайный смысл бит IOCS ? Я правильно понял, что количество байт этой посылки должно определяться по формуле ЦЕЛОЕ ((БАЙТЫ + 7)/8) ? Или вообще сделать режим = 80h и забыть?

3. В скаченном примере отправка и получение ведется одним вызовом на несколько подчененных устройств. Сее меня не устраивает, надо мониторить состояние связи с каждым из контроллеров. Что-то мне подсказывает, что обмен в данном случае реализован по аналогии с работой Profibus-DP с комуникационником CP 342-5. Но в этом случае доступ к конкретному устройству на шине определется в указателе на данные чтения/записи, то при PN есть еще и поле LEN.

Как бы поточнее разобраться с обменом отдельно с каждым подчиненным контроллером? Подчиненные абсолютно идентичны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 30, 2011 14:34 
Не в сети
Ведущий специалист

Зарегистрирован: Вт янв 11, 2005 9:27
Сообщения: 4990
Откуда: SIEMENS I IA AS Москва
Сразу отвечу на вопрос 3 - вы действительно правы и все работает по аналогии с СР342-5. Таким образом тут кроется и ответ на вопрос 1 - вызов блоков для обеспечения работы протокола Profinet IO через коммуникационные процессоры обязателен как для мастера, так и для слейвов.
2. IOCS - это бит качества переданной информации, т.е. статус передачи информации, один бит на передаваемый байт + 1 байт. Таким образом формула выглядит - (кол-во бит/8 + 1) байт.
Т.к. этот параметр является выходным, то определить длину области, в которую блок будет возвращать информацию, вам придется в любом случае.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 01, 2011 3:55 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
Благодарю.

То есть, если у меня контроллер общается с двумя девайсами в два вызова PNIO_SEND, то в каждом вызове какие значения параметров LEN и поля BYTE в указателе ставить?

LEN актуальный (сколько реально передаем), и размер указателя - по области ввода соответствующего девайса?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 01, 2011 13:21 
Не в сети
Ведущий специалист

Зарегистрирован: Вт янв 11, 2005 9:27
Сообщения: 4990
Откуда: SIEMENS I IA AS Москва
Получается, что вы не очень владеете информацией по работе СР342-5 в режиме Profibus-DP ведущего и ведомого устройства, а следовательно и СР343-1 (любого варианта) в режиме Profinet-IO!!
Контроллер может общаться с любым количеством устройств, но вызов блока PNIO-SEND и PNIO-RCV (точно также, как и соответсвующих блоков для СР342-5) может быть только один на общую длину передаваемых и считываемых данных всех устройств ввода-вывода! CPU скидывает на СР343-1 всю информацию комплектно для всех ведомых устройств, которые подключены к СР. А СР уже в соответствии с конфигурацией шины Profinet-IO и устройств ввода-вывода на этой шине, делит информацию на части и рассылает куда нужно. Это для контроллера ввода-вывода.
Для устройства ввода-вывода все немного проще - длина данных соответствует длине приема и передачи конкретно этого устройства ввода-вывода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 03, 2011 5:40 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
Очевидно, что я не владею информацией о таком обмене, иначе и не было бы этой темы. Если точнее - фактически вообще не владею информацией.

В справке на функции упоминается, что вызов PNIO_SEND в OB допускатеся более, чем один раз - это уже меня настораживает.

Второе, и самое главное - каким образом я буду мониторить состояние связи с каждым устройством отдельно? Результат вызова (Error, Done, NDR и прочее) - один на всю функцию. А если из N устройств (уже неважно, Profinet или Profibus, да и там устройства тоже неважен) половина элементарно обесточены? По уму надо в этом случае выставлять сигнал неготовности.

Ломаю голову который день. Отсутствие соответствующего железа лишь усугубляет, да и делает головоломание совершенно бессмысленным.

Почитаю я про функции диагностики по соответствующим соединениям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 03, 2011 7:13 
Не в сети
Известный Писатель

Зарегистрирован: Вт июл 06, 2010 11:44
Сообщения: 314
Откуда: Газ-Система-Сервис Пермь
akcount писал(а):
В справке на функции упоминается, что вызов PNIO_SEND в OB допускатеся более, чем один раз - это уже меня настораживает.

Чему тут настораживаться? Стандартная для симатика "отложенная обработка" системных функций - сам вызов только подготавливает данные для СР. Непосредственно обмен он не вызывает.
akcount писал(а):
Второе, и самое главное - каким образом я буду мониторить состояние связи с каждым устройством отдельно?

Как и в profibus-dp: заведите переменные-счетчики, нет изменения - нет обмена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 03, 2011 7:47 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
BETEP59 писал(а):
Как и в profibus-dp: заведите переменные-счетчики, нет изменения - нет обмена.


Для тех же Aumatic с блоком управления DP это не пройдет, но для профибуса есть DP_DIAG.

Пока еще не понял, список станций (DTYPE B#16#0 в функции DP_DIAG) возвращает список оффлайновых или онлайновых слейвов?

А для Profinet я аналогичной функции пока не нашел. Хотя, в данном случае можно обойтись и счетчиком - обмен ведется между CPU.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 03, 2011 8:05 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
Хвала Кришне, я не совсем тупой.

С шестого прочтения FAQа по DP_DIAG понял, что и как возвращает диагностическая функция при запросе списка адресов.

p.s. Держать в бите 0 байта 0 ответа функции состояние адреса DP = 7 - безусловно, оригинально.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 31, 2011 6:14 
Не в сети
Известный Писатель

Зарегистрирован: Пт июл 06, 2007 6:41
Сообщения: 325
Откуда: г. Тюмень, Россия
Кухаренко Сергей писал(а):
Получается, что вы не очень владеете информацией по работе СР342-5 в режиме Profibus-DP ведущего и ведомого устройства, а следовательно и СР343-1 (любого варианта) в режиме Profinet-IO!!


После вдумчивого многократного чтения документации и выезда на объект связь поднялась без затруднений.

Еще надо бы разобраться с FB54 "PNIO_ALARM".

Заодно и убедился в корректной работе DP_DIAG.

Благодарю за выданный волшебный пендель.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group