Vipa 313 cs - Modbus RTU

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Здравствуйте.
Пытаемся подключить к контроллеру (Vipa 313 cs) по протоколу Modbus имеющийся у нас ТРМ 212 от Овна.
У ТРМ 212 - Modbus присутствует.

В ходе изучения нашли информацию, что для поднятия связи необходимо использовать стандартные блоки, а именно: в ОВ 1 добавлять SFC 217, в OB 100 - SFC 216. С параметризацией данных блоков в теории вроде бы все ясно, но на некоторые вопросы мы не смогли найти полноценного ответа, а именно:
Необходимо ли в Hardwar добавлять какой либо коммуникационный процессор (типа cp 340) для поднятия связи по протоколу Modbus?
Если у кого нибудь есть опыт реализации данной задачи, будем очень признательны за помощь.

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

И так, расскажу что удалось выяснить и сделать на данный момент, возможно кому то пригодится.
Решая свою проблему, выяснили, что конфигурировать нашу станцию с процессором Vipa 313 sc - 5BF13 нужно стандартно.
Так как данный CPU имеет на борту встроенный интерфейс RS 485, в HW добавлять дополнительное оборудование для настройки данного протокола не нужно.
Далее к нам в руки попала библиотека от vipa, в которой прописан алгоритм работы данного протокола.
Мы настроили SFC 216.
Затем нам удалось начать формирование отсылки пакетов в SFC 217.
А вот получить ответ от SFC 218 у нас не выходит.

Кто нибудь может поделится опытом, как Вы строили связь по данному протоколу?

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Мне купили побаловаться VIPA SLIO CPU315. После праздников планирую написать программку для обмена по модбас (мастер). Думаю, что подход аналогичный для этих контроллеров.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Наврал, VIPA SLIO CPU015

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

С наступающим!
Автоматизатор писал(а):Наврал, VIPA SLIO CPU015
Это было бы здорово, а то у нас дело немного застопорилось.
Сейчас получаем код 7002 - 7001, затем если верить мануалам должны получить код 2000, но вместо него получаем 8090.
Посмотрели по таблице 8090 не правильный таймаут.
Перепробовали кучу вариантов, но к сожалению не выходит.
Если выйдет, обязательно поделимся.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Начал разбираться с реализацией протокола на VIPA. На сайте VIPA в разделе загрузок скачал
Modbus Library für Simatic Manager
Seregas писал(а):Далее к нам в руки попала библиотека от vipa, в которой прописан алгоритм работы данного протокола.
Мы настроили SFC 216.
Затем нам удалось начать формирование отсылки пакетов в SFC 217.
А вот получить ответ от SFC 218 у нас не выходит.
В библиотеке содержатся закрытые функциональные блоки FB72 "RTU_MB_MASTER" и FB73 "RTU_MB_SLAVE", которые формируют отправку и прием сообщений с помощью FC216, FC217, FC218. Есть также описание работы библиотеки.

Продолжаю разбираться.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Нашел пример Modus. Не стал с ним разбираться.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Спасибо за пример.
У Вас получилось поднять связь с помощью этого примера?
У нас ошибка SFC 217 - 8090.

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Автоматизатор писал(а):Нашел пример Modus. Не стал с ним разбираться.
Разобрались, нам удалось считать данные по данному протоколу.
Спасибо большое за пример.

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Автоматизатор, скажите пожалуйста, а Вы пробовали осуществлять запись данных с помощью данного проекта?
Мы вот пытаемся записать задание в ТРМ 212, но как то безуспешно.

Прочитали в мануале, что запись осуществляется с помощью функции 10.
Указав данную функцию мастер получил следующее значение в DBD 0 - 010A0004, что соответствует действительности.
А вот слейв отвечает следующим значением в DBD 0 - 01900000 - и на этом все.

В мануале нашли только 1 строчку по поводу кода ошибки 90: "Код функції 90h - тому що 10h OR 80h = 90"
Не совсем понимаем, что это означает и как с этим бороться.

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: Vipa 313 cs - Modbus RTU

Сообщение Михайло »

10h = 0001 0000
80h = 1000 0000
==============
90h = 1001 0000

То есть 90h - это результат операции "поразрядное ИЛИ". Трактовать этот результат надо так, как будто оба статуса 10h и 80h имеют место одновременно.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Seregas писал(а):Автоматизатор, скажите пожалуйста, а Вы пробовали осуществлять запись данных с помощью данного проекта?
Пока не занимался еще.

Для проверки работы, отладки программ для коммуникаций удобно пользоваться дополнительными утилитами. Я использую ModbusTester (может формировать одно или несколько сообщений и циклически их посылать слейву) и ComPortToolKit (следить за обменом в сети).

Вначале я запускаю ModbusTester и формирую команду Modbus, которую хочу отправить слейву. Слейв начинает отвечать. Весь обмен виден на экране.

Когда посылка проверена, я запускаю функцию коммуникаций на контроллере. С помощью ComPortToolKit (или аналога) вижу весь обмен.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Советы "на вскидку":
1.
Руководство ТРМ212. Стр.66 писал(а):1) «Базовый адрес» следующего прибора в сети задается как <«Базовый адрес» ТРМ212 + 2>.
Проверить адрес.

2.
Seregas писал(а):Указав данную функцию мастер получил следующее значение в DBD 0 - 010A0004
На сколько я понял, функция FC/SFC 217 - SER_SND отправляет сообщение, находящееся в указанном месте, с указанной длиной. Контрольную сумму, скорее всего, добавит автоматом. Таким образом, необходимо сформировать посылку в соответствии стандарта:
адрес ведомого устройства
код функции
количество данных
данные

Тогда:
[01] - адрес (ошибка? - минимальный адрес 2)
[0A] - неправильно, надо писать 10
[00] - адрес
[04] -
[00] - количество данных? - нет
[01]
[00] - сами данные? - нет
[00]

Вот пример формирования сообщения от мастера (с помощью программы ModbusTester): записать слейву с адресом 02 данные, начиная с адреса 0004, в количестве 2 регистра и сами данные 0000 0000
запрос [02][10][00][04][00][02][04][00] [00][00][00][FD][18]

Изображение

Программа бесплатная, доступна по адресу http://www.agrostroy.ru/index.php?page=4

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Спасибо за советы! Мы скачали Modbus Tester и он привел нас к следующему результату.
modbustester.JPG
Из данного скрина следует, что запись в Овен ТРМ 212 - возможна при следующих параметрах:
[01] - адрес слейва (
[01] - адрес (ошибка? - минимальный адрес 2)

Автоматизатор - мы подключаемся к единственному ТРМ212 с адресом 01 - при этих настройках получатся записать с ModbusTester, Owen OPC)
[10] - функция для записи
[00]
[04] - номер регистра. В ТРМ 212 этот регистр отвечает за уставку задания (SP)
[00]
[01] - данные согласно Modbustester
[02] - согласно Modbustester
[00]

В step 7 мы заполнили VAT таблицу в соответствии с данными которые нам дал Modbustester.
vat.jpg
На выходе получаем, номер слейва и ошибку 90, остальные данные не учитываются.
Как подсказал Михаил - это функция + ошибка 80.
Про нее данных не нашли и как ее побороть тоже.
Посмотрите пожалуйста, если Вас не затруднит. Может мы что то не туда отправляем?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Я не совсем точно написал структуру телеграммы. Согласно описанию
[10] - функция для записи
[00] [04] - номер регистра. В ТРМ 212 этот регистр отвечает за уставку задания (SP)
[00] [01] - количество записываемых регистров
[02] - количество записываемых байт
[00] [76] - сами данные

В таблице переменных, следовательно и в DB1, где сами записываемые в слейв данные [00][76]?

Надо вам подключится к линии и посмотреть, какие посылки шлет контроллер.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

В примере "Data te verzenden" переводится как "Данные для отправки". Вам надо в DB1.DBW7 положить "0076".

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Спасибо за совет. Ситуация немного прояснилась.
Попробовали записать в DB1. DBW7 но ничего не происходит.

Я думаю, что пока слейв отвечает нам вот такой теоеграммой 01900000 - то результата мы не дождемся.
Сейчас будем искать конкретно по этой ошибке.
Обязательно отпишемся.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Какой то странный ответ приходит от слейва при опросе с помощью ModbusTester. Должен приходить ответ:
[01] - Адрес слейва
[10] - Код функции
[00][04] - Адрес начального регистра
[00][01] - Количество регистров
[xx][xx] - CRC

А у вас в ответе вначале идет копия сообщения мастера. :shock:

Аватара пользователя
Seregas
Любитель
Сообщения: 39
Зарегистрирован: 07 сен 2013, 19:10

Re: Vipa 313 cs - Modbus RTU

Сообщение Seregas »

Наверное мы друг друга не поняли и говорим о разном.
При работе с Modbustester и ТРМ212 вот что у нас происходит:
Отправляем:
[01]
[10]
[00] [04]
[00]
[01]
[02][00]

Получаем ответ
[01]
[10]
[00] [04]
[00]
[01]
[02][00]

На сколько я понял из мануала, то слейв должен возвращать именно такую телеграмму.

А вот при реальной работе VIPA - ТРМ212, сложилась следующая ситуация отсылаем из sfc217 пакет вида [01] [10] [0004] [00] [01] [02] [00]
SFC 218 отвечает: [01] [90] [0030] [00].....
Безымянный3.jpg
По коду функции нашли только вот это:
Function code 90h
(error message, for 10h OR 80h = 90h) и везде одно и тоже.
Продолжаем поиски.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Автоматизатор
Профессионал
Сообщения: 993
Зарегистрирован: 09 окт 2012, 05:18

Re: Vipa 313 cs - Modbus RTU

Сообщение Автоматизатор »

Может надо писать несколько регистров, пару скажем? Вроде у меня было как, что если 1 регистр писать, то надо использовать другую команду (06 - write single registr).

Ответить