SIEMENS, DF&PD

Предыдущее посещение: Вс янв 31, 2016 21:06 Текущее время: Вс янв 31, 2016 21:06

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




 [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: S7-1200 Modbus TCP
СообщениеДобавлено: Ср июл 06, 2011 7:48 
Не в сети
Известный Писатель

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Добрый день, коллеги.
Возможно ли использовать библиотеку PAC3200_ModbusTCP_library, предназначенную для опроса PAC3200 по Modbus TCP для опроса сторонненнего Modbus-TCP устройства?.. Возможно, в библиотеке есть какие-то заточки именно под пак.
\\Похоже, эта библиотека заточена все-таки под PAC3200.
Более общий вопрос: кто-нибудь юзал\делал библиотеку для S7-1200 для работы по Modbus TCP?..


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

Зарегистрирован: Ср авг 02, 2006 9:56
Сообщения: 976
Откуда: SIEMENS I IA AS Москва
Здравствуйте,

Пока это только для PAC'а. Пробовали с другими устройствами-результат никакой.
Вместе со следующими обновлениями, будет добавлена универсальная бибилотека для MODBUS TCP, по аналогии с существующей MODBUS RTU.


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

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Когда ее следует ожидать?..
Насколько трудоемко, по Вашему мнению написать такую библиотеку?


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

Зарегистрирован: Ср авг 02, 2006 9:56
Сообщения: 976
Откуда: SIEMENS I IA AS Москва
Сроки пока не известны.
Скажем так - это выполнимо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 08, 2011 1:50 
Не в сети
Новый писатель

Зарегистрирован: Вт апр 26, 2011 15:11
Сообщения: 26
Откуда: Хабаровск
Библиотека нужна срочно. Существуют ли "базовые" блочки FB типа "SEND" - "RECIEVE", на основе которых можно её написать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт июл 08, 2011 8:12 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
FarEast_Engineer писал(а):
Библиотека нужна срочно. Существуют ли "базовые" блочки FB типа "SEND" - "RECIEVE", на основе которых можно её написать?
T... блоки, пример здесь: http://support.automation.siemens.com/W ... n/40556214 в файле CE-X18B_Slave_v1d2.zip


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 11, 2011 1:04 
Не в сети
Новый писатель

Зарегистрирован: Вт апр 26, 2011 15:11
Сообщения: 26
Откуда: Хабаровск
j.hlebnikov, спасибо за наводку. Попробуем что-нибудь нашаманить.


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

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Я правильно понимаю, что при реализации Modbus нужно в данные, посылаемые TCP воткнуть пакет Modbus, т.е. и адрес, и код функции, и длину данных, данные и CRC?.. при этом все рассчитывается ручками.
Нужны ли какие-то особые навороты для Modbus over TCP, может что-то с соединениями там или еще что...

PS. копнул википедию:
Для Modbus TCP ADU выглядит следующим образом:
ид транзакции ид протокола длина пакета адрес ведомого устройства код функции данные

где

* ид транзакции — два байта, обычно нули
* ид протокола — два байта, нули
* длина пакета — два байта, старший затем младший, длина следующей за этим полем части пакета
* адрес ведомого устройства — адрес подчинённого устройства, к которому адресован запрос. Обычно игнорируется, если соединение установлено с конкретным устройством. Может использоваться, если соединение установлено с бриджем, который выводит нас, например, в сеть RS485.

Поле контрольной суммы в Modbus TCP отсутствует.

Следовательно, пакетик можно готовить ручками, что не трудно, к тому же CRC не надо писать. Надо экспериментировать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 11, 2011 7:49 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
Teemon писал(а):
Я правильно понимаю, что при реализации Modbus нужно в данные, посылаемые TCP воткнуть пакет Modbus, т.е. и адрес...
Адрес не надо, обращение идет по IP-адресу и номеру порта. Вместо википедии надо читать оф.протокол.


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

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Только что попробовал использовать стандартные блочки TCON, TSEND, TRECV. Подготовил сырой дата-блок посылки, послал. Для Modbus сервера использовал
http://www.simplymodbus.ca/TCP.htm в ней очень просто и легко.
Получилось обменяться байтами и битами в ходе приемо-передачи.
Адрес Modbus задавал, т.к. он присутствует в PDU.
Вы имеете ввиду, что можно не писать туда адрес, оставляя байты пустыми, 0000?

\\Вывод: TCP драйвер написать возможно, не очень это затруднительно.
\\ Аналогично, вместо TCP-драйвера для CP341 за бешеные деньги можно написать самописный. Если кто пробовал - отпишитесь плз))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 11, 2011 9:14 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
Был не прав, есть: Unit Identifier – This field is used for intra-system routing purpose. It is typically used to communicate to a MODBUS or a MODBUS+ serial line slave through a gateway between an Ethernet TCP-IP network and a MODBUS serial line. This field is set by the MODBUS Client in the request and must be returned with the same value in the response by the server.
Наверное для шлюзования.


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

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Кстати, далее такой вопросец:
например, мне нужно опрашивать 2 устройства, т.е. у меня будет 2 разных Unit ID (адреса, по русски). В каждом устройстве мне нужно опрашивать 2 области данных, к примеру, битовую и регистры хранения.
Так вот. Раньше в Modbus RTU мы делали так:
1. Посылка запроса 1 устройству;
1.1 Успешная посылка?
Да 2 - прием данных...
Данные приняты?
Да - 3 парсинг данных.
Ну, может это и логично: ведь полудуплексная передача данных, как правило, ведь RS485, т.е. в один момент времени шлем, в другой момент - принимаем.

С блочками TSEND и TRECEIVE в мануале и на практике было сделано так: посылки по какому либо событию (после установки соединения или еще както), а прием - висит перманентно (на EN постоянная единица), т..е "слушает" всегда.
Так вот. В Modbus TCP есть Transaction Identifier, который мастер устанавливает сам, а slave при ответе его шлет точно такой же.
Т.е. можно (и нужно для увеличения скорости?) слэйвы долбить запросами, а все, что приходит в ответ - уже парсить по факту прихода пакета. А парсить легко: зная Transaction Identifier можно знать, что находится в принятом пакете и складывать данные в нужный блок.

Кстати, тут тогда вопрос с проверкой наличия связи... как ее идентифицировать?..

Внимание, вопрос: верны ли мои рассуждения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт июл 12, 2011 15:47 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
С блочками TSEND и TRECEIVE в мануале и на практике было сделано так: посылки по какому либо событию (после установки соединения или еще както), а прием - висит перманентно (на EN постоянная единица), т..е "слушает" всегда.
Так вот. В Modbus TCP есть Transaction Identifier, который мастер устанавливает сам, а slave при ответе его шлет точно такой же.
Т.е. можно (и нужно для увеличения скорости?) слэйвы долбить запросами, а все, что приходит в ответ - уже парсить по факту прихода пакета. А парсить легко: зная Transaction Identifier можно знать, что находится в принятом пакете и складывать данные в нужный блок.

В приведенном выше примере прием и передача явным образом разведены во времени. Я тоже поначалу наивно пологал что в изернете можно слать в обе стороны и 2 недели ходил по граблям:
j.hlebnikov писал(а):
Вот уже неделю бьюсь с задачей связать два контроллера CPU315-2PN/DP по Modbus TCP и сейчас уже понял что такую задачу проще решить отказавшись от Modbus, однако накопился кое какой опыт, интересует стороннее мнение.
Прописал Modbus TCP сервера и клиента на блоках TCON, TDISCON, TRCV, TSEND, связь работает, но происходит следующее: клиент и сервер устанавливают коннект, клиент посылает запрос, сервер его принимает и посылает ответ, клиент его принимает и посылает следующий запрос, но здесь сервер отказывается его принимать, блок TRCV дает статус 80A1
80A1 писал(а):
Коммуникационная ошибка:
• FB 65 "TCON" еще не вызывался для указанного ID
• Указанное соединение в настоящее время закрыто. Прием с использованием данного соединения не возможен.
• Интерфейс принимает новые параметры.
единственно что помогает - переконнект. Если делать переконнект на сервере сразу после ответа, то связь типа работает, а типа потому что посылки проходят через раз.
Интересно что в данной ошибке значит "Интерфейс принимает новые параметры"?
Странно что данная реализация сервера стабильно, четко и быстро работает при связи с панелью стороннего производителя.
Когда четко развел во времени прием и передачу все заработало так же четко и стабильно.

Кстати, тут тогда вопрос с проверкой наличия связи... как ее идентифицировать?..
По таймеру: нет запроса (для сервера) или ответа (для клиента) какое то время - обрыв.

Внимание, вопрос: верны ли мои рассуждения?
Это покажет только практика, на 300-ке я отлаживал сервер-клиента 2 недели, на 1200 остается только пожелать вам удачи)


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

Зарегистрирован: Пт ноя 21, 2008 9:39
Сообщения: 352
Откуда: Хабаровск
Да, я читал Ваш пост.
но все же, как логичней и правильней делать обмен (не только Modbus, в вообще, в принципе):

1. Коннект.
2. При успешном коннекте посылка.
3. При успешной посылке прием...
3. Прием... прием...
4. Данные приняты.
go to 2: посылка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср июл 13, 2011 7:50 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
Teemon писал(а):
Да, я читал Ваш пост.
но все же, как логичней и правильней делать обмен (не только Modbus, в вообще, в принципе):

1. Коннект.
2. При успешном коннекте посылка.
3. При успешной посылке прием...
3. Прием... прием...
4. Данные приняты.
go to 2: посылка.
Да, примерно так.


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

Зарегистрирован: Чт янв 13, 2005 10:42
Сообщения: 129
Teemon писал(а):
Да, я читал Ваш пост.
но все же, как логичней и правильней делать обмен (не только Modbus, в вообще, в принципе):

1. Коннект.
2. При успешном коннекте посылка.
3. При успешной посылке прием...
3. Прием... прием...
4. Данные приняты.
go to 2: посылка.

или сделать два коннекта - один на сенд, другой на ресив...


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

Зарегистрирован: Вт янв 11, 2005 8:36
Сообщения: 146
Откуда: Москва
При использовании Modbus TCP на S7-1200 возможны ли другие коммуникации на порту контроллера, например, связь с панелью оператора?


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

Зарегистрирован: Ср дек 26, 2012 15:40
Сообщения: 145
Дмитрий писал(а):
При использовании Modbus TCP на S7-1200 возможны ли другие коммуникации на порту контроллера, например, связь с панелью оператора?


Возможны. Из своего опыта могу сказать, что мой контроллер опрашивали два устройства по Modbus TCP. Т.е. на одном порту два мастер-устройства.


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

Зарегистрирован: Вт янв 11, 2005 8:36
Сообщения: 146
Откуда: Москва
Подскажите, пожалуйста, верно ли я понимаю - блок MB_Client служит для использования контроллера в качестве мастера модбас, а MB_Server - slave.

Ну а соединение можно выполнять с любыми устройствами поддерживающими Modbus TCP, например, модулями ICP CON.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт авг 08, 2013 9:00 
Не в сети
Известный Писатель

Зарегистрирован: Ср дек 26, 2012 15:40
Сообщения: 145
Как ни странно, но судя по описанию, да :). Вообще я не использовал в своих проектах стандартные блоки ModBus, писал свои. Контроллер у меня опрашивался панелью Weintek и одновременно эмулятором Modbus TCP на компе. Периодически панель теряла связь с контроллером, но проблема решилась увеличением паузы между опросами.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 22 ]  На страницу 1, 2  След.

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


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

Сейчас этот форум просматривают: YandexBot и гости: 1


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

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