форум асутп
 На главную                       Здесь может быть Ваша реклама, подробнее...


 Наверх  |  Перейти к теме  |  Поиск  |  Вход  |  Дерево    
 Проконсультируйте по MODBUS
Автор: cap hook 
Дата:   15.04.13 13:35

Здравствуйте! Есть MODBUS-устройство. Есть список регистров: адреса, содержимое.
Из описания "Для чтения регистров доступны команды 0x03, 0x04."
Читаю регистр, где содержится текущий год и функцией 0x03 и 0x04.
Результат получаю один и тот же.

Из описания протокола MODBUS:
3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers)
4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers)

То есть я считал, что поскольку функции разные, то и служат они для разных целей?
А получается -- нет.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: san 
Дата:   15.04.13 14:10

Это из-за специфики Modbus Mapping.
Многие устройства дают доступ к своим переменным через одни и те же функции Modbus. Например, согласно Modbus память делится на 4 зоны:
- Input Bits
- Coils
- Input Registers
- Holding Registers
Но у многих устройств эти зоны могут перекрываться. В Вашем случае зоны Input Registers и Holding Registers перекрываются, значит функции чтения с этих зон вернут одни и те же результаты.

Александр Пупена.
Кафедра ИАСУ,Национальный университет пищевых технологий. Киев.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: cap hook 
Дата:   15.04.13 15:06

Вот участок адресов. В документе на устройство написано:

Размер в адресах 0x0XXX: 278 байт, в адресах 0x4XXX: 148 байт
Адрес Размер в байтах Тип Доступные команды Описание

0x0000 2 16 разрядный, беззнаковый, целый Чтение и запись Дата: год
0x0001 2 16 разрядный, беззнаковый, целый Чтение и запись Дата: месяц и день
...
0x0007 2 16 разрядный, беззнаковый, целый Чтение Версия ПО
0x4020 6 48 разрядный, время в миллисекундах Чтение и запись Текущее время
0x4023 6 48 разрядный, время в миллисекундах Чтение и запись Установка времени с точностью до минуты
0x4026 6 48 разрядный, время в миллисекундах Чтение Время последнего сохранения уставок
...
Пытаюсь читать программой CAS Modbus Scanner.
Читаю Год - задаю Offset=1 (0 не разрешает), Length=1
Получаю uint16=int16=2013. То есть правильно. Читаю дальше все 2-байтные регистры. Тоже читаются. Как только читаю 6-байтный offset=4021, Length=3, то получаю "0x02 - ILLEGAL DATA ADDRESS".
То есть, только до чтения 6-байтных параметров дохожу, получаю ошибку адресации.
В чем может быть дело?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: san 
Дата:   15.04.13 15:14

Проверьте, может там адресация в 8-ричном или 16-ричном формате. Ещё лучше скиньте описание девайса, может так помогу.

Александр Пупена.
Кафедра ИАСУ,Национальный университет пищевых технологий. Киев.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Querto 
Дата:   18.04.13 06:40

Добрый день!

В протоколе MODBUS в запросе на данные указывается количество считываемых регистров, а не количество считываемых байт с регистра/ов. Каждый регистр занимает 16 бит или 2 байта. Если вы пытаетесь считать, например, 6 байт с регистра 0x4020, то это значит, что вы можете отдельно считать: 0x4020, 0x4021, 0x4022.
В каждом регистре будет храниться по 2 байта. Если при сквозном считывании 6 байт с адреса 0х4020 не будет существовать, например, адреса 0x4021, то соответсвенно и получите "0x02 - ILLEGAL DATA ADDRESS". Для проверки, считайте отдельно каждый регистр из 6 байт: 0x4020, 0x4021, 0x4022 и посмотрите,что получите.

P.S. Может я телепат, но случайно вы пытаетесь не с терминалом Сириус запустить обмен?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: cap hook 
Дата:   18.04.13 10:02

Спасибо за полезные поясения. Да, Сириус.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Querto 
Дата:   19.04.13 04:58

Если возникнут вопросы, обращайтесь.
Имеется большой опыт с настройкой различных версий и модификаций.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: SemenovEB 
Дата:   04.03.14 11:27

Здравствуйте уважаемый Querto не могли бы Вы выслать карту регистров MODBUS для сириусов.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Otacon 
Дата:   21.11.15 12:53

Подскажите, как преобразовать данное время - "48 разрядное время в мс" в десятичное, считывая 3 регистра по 2 байта (регистры  0x404b, 0x404с, 0x404d). Считываю с Сириус-2-ОМП дату и время последнего отключения.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Зоркальцев А.А. 
Дата:   21.11.15 13:32

Здравствуйте,
>Подскажите, как преобразовать данное время - "48 разрядное время в мс" в
десятичное, считывая 3 регистра по 2 байта (регистры  0x404b, 0x404с,
0x404d).
Считываю с Сириус-2-ОМП дату и время последнего отключения.

Тип "48 разрядное время в мс" содержит в себе время в миллисекундах начиная
с 1900 года.
В первых четырех байтах содержится время с точностью до секунды. В последних
двух байтах миллисекунды.

---
С уважением,
Зоркальцев Александр
ООО ЭлеТим, г. Томск.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Otacon 
Дата:   21.11.15 19:06

Спасибо за ответ. Но вопрос остается открытым - как преобразовать эти регистры в значение времени? Можете пояснить по шагам? Например, у меня регистр 0x404b = 55680 , 0x404с = 5917, 0x404d = 425
Также интересует формат  и порядок байт в этих регистрах, возможно, я неправильно их считываю.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Vyatcheslav Perevalov 
Дата:   21.11.15 22:41

В Sat, 21 Nov 2015 19:06:00 +0300
Otacon <forumasutp@xxxxx.xx.xx> пишет:

> Спасибо за ответ. Но вопрос остается открытым - как преобразовать эти
> регистры в значение времени? Можете пояснить по шагам? Например, у
> меня регистр 0x404b = 55680 , 0x404с = 5917, 0x404d = 425
> Также интересует формат  и порядок байт в этих регистрах, возможно, я
> неправильно их считываю.
>
> ----
> E-mail автора: mspnesterenko@xxxxx.xxx
> (по данным регистрации на iprog.pp.ru/forum)
>

что тут непонятно?
55680 десятичные = 0xD980 hex. сдвигаем влево на 16 разрядов, получаем
0xD8900000 hex или 3649044480 десят. Прибавляем 5917, получаем
количество секунд, прошедших с 1 января 1900 года (3649050397)
Потом подсчитываем сколько это минут, часов, суток и наконец лет. В
первом приближении у меня получилось 115.631429418 лет, что
соответствует предположению о текущем, т.е. 2015 годе
Дальше считайте сами.

--
С уважением,
Вячеслав Перевалов

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Зоркальцев А.А. 
Дата:   23.11.15 06:55

>>Спасибо за ответ. Но вопрос остается открытым - как преобразовать эти
регистры в значение времени? Можете пояснить по шагам?

Порядок байт в этих регистрах без перестановки.

Год = [0x404b]*65536 + [0x404c]
Миллисекунды = [0x404d]

Из дробной части года высчитывать уже месяц, день, час, секунды. Формат
Майкрософт использует.


---
С уважением,
Зоркальцев Александр
ООО ЭлеТим, г. Томск.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Querto 
Дата:   24.11.15 20:42

Добрый день!
Время храниться в регистрах: [0x404b] [0x404c] [0x404d]
[0x404b] [0x404c] - время от 01.01.1900 00:00:00, выраженное в секундах
[0x404d]          - значение миллисекунд

! при переводе времени нужно учитывать високосный год, причем, если текущий год високосный, то в феврале текущего года будет 28 дней, а не 29 (не знаю, может в последних версиях прошивок исправили).

Если год високосный, то он будет без остатка делиться на 4, например:
1900 /4 = 475    => 1900 високосный
1901 /4 = 475,25 => 1901 не високосный

Високосный год периодически повторяется (1 раз в 4 года), возьмем интервал [366, 365, 365, 365] - данный интервал повторяется, а последний может быть не полным.
Посчитаем, сколько секунд в среднем году, в данном интервале:
(366+365+365+365)/4 = 365,25 - дней в 1-ом среднем году
365,25*24*60*60 = 31557600 - сек. в 1-ом среднем году

Ваши значения:
0x404b = 55680  => HEX =>  0x404b = 0xD980
0x404с = 5917   => HEX =>  0x404с = 0x171D

Записываем как одно число из 4 байт: 0xD980171D  => DEC => 3649050397 (сек.) - это время как раз и нужно перевести.

Посчитаем количество лет от 1900 года:
3649050397 / 31557600 = 115,63142941795320303191624204629 лет (115 + 1900, получаем, 2015 год)
остаток от деления - значение, выраженное в годах, содержащее [сутки:часы:минуты:секунды]

Посчитаем количество суток(дней) от начала 2015 года:
0,63142941795320303191624204629 * 365,25 = 230,62959490740740740740740740741 дней
остаток - значение, выраженное в днях, содержащее [часы:минуты:секунды]
230 дней: количество дней с января по июль включительно 212 => 230 -212 = 18 августа

Посчитаем количество часов от начала 18 августа:
0,62959490740740740740740740741 * 24 = 15,110277777777777777777777777778 часов
остаток - значение, выраженное в часах, содержащее [минуты:секунды]

Посчитаем количество минут после 15 часов:
0,110277777777777777777777777778 * 60 = 6,6166666666666666666666666666667 минут
остаток - значение, выраженное в минутах, содержащее [секунды]

Посчитаем количество секунд:
0,6166666666666666666666666666667 * 60 = 37 (ровненько :-) )

Миллисекунды хранятся в отдельном регистре:
0x404d = 425

Итоговое значение:
18 августа 2015 15:06:37.425

:-) проще простого

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Вениамин Иосифович 
Дата:   26.11.15 19:38

Мадбус сейчас практически нигде не используется.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Зоркальцев А.А. 
Дата:   27.11.15 07:12

Здравствуйте Вениамин Иосифович,
>Мадбус сейчас практически нигде не используется.
Мадбус может быть, а общепромышленных сетей в России MODBUS и его клоны в
разных видах
до сих пор много (Modbus Plus очень редко стал, из "старых" систем наверно
остались потребности).
Даже по международным оценкам не менее 17%.
Не зря же его включили в IEC 61158 и 61784-2 (коммуникационный профиль CPF
15/1)

Есть приложения где Modbus стал совсем непременим.



---
С уважением,
Зоркальцев Александр
ООО ЭлеТим, г. Томск.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Otacon 
Дата:   27.11.15 08:44

Всем спасибо большое!

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: kozin_ae 
Дата:   27.11.15 09:55

Тут я полностью согласен с Вениамином Иосифовичем: Мадбус не используется, можно сказать прямо - нигде! А вот Модбас, у нас, к примеру, используется везде, практически во всех системах. Тем более там, где есть частотные приводы. Единственный универсальный протокол, который на сегодняшний день есть практически во всех частотниках, кроме самых убогих.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Вениамин Иосифович 
Дата:   27.11.15 21:50

Убогий и давно уже устаревший протокол

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Ivan Zhukov 
Дата:   27.11.15 23:15

Вениамин Иосифович писал(а):

> Убогий и давно уже устаревший протокол

Тем не менее это фактически промышленный стандарт.
В сфере АСУТП много всего, что давно не меняется.

Пишите содержательные комментарии, иначе придётся
вас забанить, уже предупреждал.

модератор

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Зоркальцев А.А. 
Дата:   30.11.15 11:37

Здравствуйте,

>Убогий и давно уже устаревший протокол
Есть вещи достаточно давно и хорошо себя зарекомендовавшие.
Вот Modbus Plus и ModBus II не выдержал испытание временем,
но 1 и 5 Мбит/с актуально и сейчас для FieldBus.

RS-485 вот не меняют и протокол Modbus RTU популярен, хоть маркетологи
продвигают и другие сети.

Мне тоже не нравится кое-что в модбасе, но если это удовлетворительно для
системы, зачем другое ?
Да и реализовать можно в 1-2 кб кода с реакцией единицы мс. на МК 8-и
битном.

Какие технические недостатки Вам мешают в этом Modbus протоколе и что
востребовано в Ваших комплексах ?
Я тоже поделюсь идеями.


---
С уважением,
Зоркальцев Александр
ООО ЭлеТим, г. Томск.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: kozin_ae 
Дата:   30.11.15 11:55

Да Вениамин Иосифович и не говорит ничего про какой-то Modbus. У него свой протокол - Мадбус, а это ого-го-го! :)

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   19.10.16 11:36

Помогите пожалуйста уважаемые коллеги!
Я пытаюсь начать программировать свой вариант Модбас ТСР

И хочу использовать функцию с кодом 0x16 (которая может изменять значение побитово, так сказать атомарно), но написано в спецификации к Модбас что это поддерживается только в контроллерах 984-785. Получается так, что нет возможности записать всего один бит в программе ПЛК BMX Р34 2020 ?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   24.10.16 10:30

а вот еще вопрос по Модбас ТСР:

если мне нужно записать один и тот же массив данных на один ПЛК со своим индивидуальным IP и на другой ПЛК тоже с индивидуальным IP - мне нужно будет вызывать функцию Write_var например сперва для одного ПЛК потом с задержкой - для другого ПЛК ??  или как-то можно обойтись одним вызовом? ведь область передаваемых данных идентична.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   24.10.16 11:39

Если нужно записать из ПЛК (Master) один и тот же массив данных на первый ПЛК со своим индивидуальным IP и на второй ПЛК тоже с индивидуальным IP, то нужно будет вызывать функцию Write_var сперва для первого ПЛК, потом, с задержкой или после завершения выполнения первой функции, для второго ПЛК.

Даже оператор присвоения массива для двух копий без сетевой пересылки нужно вызывать два раза, даже если область передаваемых данных идентична.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   24.10.16 11:43

так получается в этом случае, что и массивы параметров для процедуры Write_var также будут индивидуальными?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   24.10.16 11:58

конечно
А как иначе следить за каждым слэйвом: правильно ли адрес указан, есть ли связь и т.д.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   24.10.16 12:50

Спасибо Сергей.

У меня кроме записи с двух этих индивидуальных ПЛК - есть еще и чтение с двух этих устройств по Модбас ТСР.

Я думаю, что в этом случае, правильно сделать так: сперва за один шаг (одновременно то есть), читать с ПЛК1 и записывать в ПЛК2, а во втором шаге - читать с ПЛК2 и записывать в ПЛК1. Для того чтобы уходило меньше времени на ожидание. Хотя наверное это непринципиально?
важно наверное задержку по времени (между вызовами) установить правильную?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   24.10.16 14:16

По спецификации для Modicon M340 2020 допустим одновременный вызов до 16 функций READ_VAR/WRITE_VAR для Modbus TCP.
Можно попробовать вызывать одновременно и посмотреть результат.
Если будут трудности - то нужно тогда использовать бит активности функции, я про него многократно говорил. Ну или задержки, если с ним сложно.
Последнее сообщение внесло сумятицу: кто откуда и куда пишет, какая в итоге топология?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   24.10.16 14:55

как бы "Главному" ПЛК1 (P34 2020) одновременно нужно писать 8 слов состояния и на ИнТач и на ПЛК2.
также ПЛК1 должен читать 8 слов с Интач и 8 слов с ПЛК2.
У всех трех участников разные IP адреса и подключены к одной группе адресов через коммутатор эзернет.

Вот и хотелось бы красиво сделать :)

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   24.10.16 15:48

Тогда получается, что ПЛК1 должен выполнять два запроса в ПЛК2, я бы делал одновременно, например, раз в секунду.
И InTouch должна опрашивать (чтение/запись) ПЛК1 - как это реализовано: через OPC или через Native-драйверы - вам виднее.
Но ПЛК1 в итоге должен выполнять только две функции

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   25.10.16 11:15

Сергей, не по ОРС точно. Наши видные специалисты по InTouch сказали что эта программная среда будет работать с обеими ПЛК только по Модбас ТСР.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   25.10.16 11:35

Я думаю, что для InTouch стандартная процедура обращения к ПЛК1 по Modbus TCP, сам ПЛК1 к SCADA обращаться не должен.
А вот от ПЛК1 к ПЛК2 нужно будет сделать два запроса - на чтение и на запись.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   25.10.16 11:44

Сергей, вы полагаете, что ПЛК1 и скада InTouch могут обмениваться данными без каких-либо программных дел в программе ПЛК1 ?

т.е. только прописывать вызовы и программно обрабатывать связь именно между ПЛК1 и ПЛК2 ?

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Огородников Сергей 
Дата:   26.10.16 12:42

Я думаю, да.
Для SCADA опрос ПЛК - это стандартная задача, правда, для некоторых SCADA требуются отдельные покупные модули для связи по Modbus TCP (хотя у многих Modbus встроен стандартно).
Задача ПЛК1 для связи со SCADA - создать адресные переменные для чтения-записи.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: servo85 
Дата:   27.10.16 09:40

Осмелюсь заметить, что для обмена данными, InTouch использует протокол «SuiteLink» основанный на технологии Dynamic Data Exchange (DDE). Для конвертации иных протоколов связи в DDE, необходимо соответствующее ПО.

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: Curr93 
Дата:   27.10.16 09:48

DDE это же устаревший протокол обмена. Мы на Модбас ориентируемся только... хотя и модбас не новее

Адрес этого сообщения    Ответить на это сообщение
 
 Re: Проконсультируйте по MODBUS
Автор: servo85 
Дата:   27.10.16 10:10

Это никак не меняет того факта, что InTouch работает по DDE.

Адрес этого сообщения    Ответить на это сообщение
 Список форумов    


 Список форумов  |  Нужен логин? Регистрируйтесь здесь 
 Логин пользователя
 Имя пользователя:
 Пароль:
 Помнить пароль:
   
 Забыли ваш пароль?
Введите имя пользователя или e-mail, и новый пароль будет послан на email, указанный в вашем профиле.

Рейтинг@Mail.ru