Перейти к содержанию
    

Подскажите, где взять порт MODBUS для STM32F4

У меня Eval Board stm32f439. Нужен порт MODBUS RTU. Ha FreeModbus подходящего не нашел. Буду признателен за любую информацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня Eval Board stm32f439. Нужен порт MODBUS RTU. Ha FreeModbus подходящего не нашел. Буду признателен за любую информацию.

 

Мастер или ведомый нужен - это раз,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую библиотеку FreeModbus (freemodbus.org) взял за основу для LPC214x. Развития проекта нет уже с 2010 года, но то как она сделана и как работает меня устраивает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мастер или ведомый нужен - это раз,

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

Только будьте готовы, что многие производители оборудования с RTU используют просто 8N1. Иногда расщедриваются на 8N2, и я лично не видел честного RTU с включенной четностью.

Это я к тому, что нужно быть готовым к использованию различных конфигураций. Если библиотека этого не может, то ее придется допиливать.

У меня самая частая конфигурация- когда я принимаю 8N1 (то есть корректно приму и 8N2), а передаю 8N2.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только будьте готовы, что многие производители оборудования с RTU используют просто 8N1. Иногда расщедриваются на 8N2, и я лично не видел честного RTU с включенной четностью.

Это я к тому, что нужно быть готовым к использованию различных конфигураций. Если библиотека этого не может, то ее придется допиливать.

У меня самая частая конфигурация- когда я принимаю 8N1 (то есть корректно приму и 8N2), а передаю 8N2.

 

Стандарт MODBUS как раз указывает 8N2, и никак иначе. Остально бангалор, имхо. К сожалению, это частенько встречается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стандарт MODBUS как раз указывает 8N2, и никак иначе. Остально бангалор, имхо. К сожалению, это частенько встречается.

Even parity is required, other modes ( odd parity, no parity ) may also be used. In order to ensure a maximum compatibility with

other products, it is recommended to support also No parity mode. The default parity mode must be even parity.

Remark : the use of no parity requires 2 stop bits.

Это для RTU.

Т.е. все должны уметь 8E1, желательно (но не обязательно) поддерживать также 8N2, и другие варианты при взаимном непротивлении сторон.

Для ASCII режима обязательным является 7E1, аналогично рекомендуется поддерживать 7N2.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стандарт MODBUS как раз указывает 8N2, и никак иначе. Остально бангалор, имхо. К сожалению, это частенько встречается.

 

Цитата из Modbus Serial Line Protocol and Implementation Guide V1.02 с Modbus.org. Стандартней некуда.

 

The format

( 11 bits )

for each byte in RTU mode is

:

Coding System:

8–bit binary

Bits per Byte:

1 start bit

8 data bits, least significant bit sent first

1 bit for parity completion

1 stop bit

Even parity is required, other modes ( odd parity, no parity ) may also be used. In order to ensure a maximum compatibility with

other products, it is recommended to support also No parity mode. The default parity mode must be even parity.

Remark : the use of no parity requires 2 stop bits.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а в том стандарте что у меня был когда я реализовывал модбас, там дефолтный был 8N2... может меняется со временем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Реальность сильно хуже, ни брендовость ни цена ничего не гарантируют. Нужно читать техописание прибора, а не стандарт.

Будьте готовы к тому, что может попасться 8N1. И можете хоть много раз тыкать в заказчика спецификацией MODBUS, но если у того установлен прибор "MODBUS RTU" умеющий только 8N1 - придется принимать посылки 8N1.

 

Но, извините, я увел в сторону от заданного вопроса. Собственно просто хотел отметить, что при использовании чужих библиотек нужно быть готовым менять эту конфигурацию порта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Реальность сильно хуже, ни брендовость ни цена ничего не гарантируют. Нужно читать техописание прибора, а не стандарт.

Будьте готовы к тому, что может попасться 8N1. И можете хоть много раз тыкать в заказчика спецификацией MODBUS, но если у того установлен прибор "MODBUS RTU" умеющий только 8N1 - придется принимать посылки 8N1.

 

Но, извините, я увел в сторону от заданного вопроса. Собственно просто хотел отметить, что при использовании чужих библиотек нужно быть готовым менять эту конфигурацию порта.

Спасибо за советы. У меня будет ведомое устройство. Попытаюсь использовать статью http://we.easyelectronics.ru/Yanichar/port...mere-stm8l.html (Портируем FreeModbus rtu на примере STM8L)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...