УкраїнськаEnglishmRussian
Вхід/Новий
У темі багато повідомлень

ModBus ASCII


Автор Повідомлення
Повідомлення створено: 14. 04. 2010 [16:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
Но это уже не ModBus регистры, это два ModBus регистра.
Что Вам не понятно в подсказке?


Список конфигурации атрибутов. Список формируется строками в формате: [dt:numb:rw:id:name]
Где:
dt - ModBus тип данных (R-регистр, C-бит, RI-регистр входа, CI-бит входа).
R и RI могут быть расширены суффиксами: i2-Int16, i4-Int32, f-Float, b5-Bit5;
numb - адрес ModBus устройства (десят., шестн., или восьмеричн.);
rw - режим чтения-записи (r-чтение; w-запись, rw-запись и чтение);
id - идентификатор создаваемого атрибута;
name - имя создаваемого атрибута.
Пример:
'R:0x300:rw:var:Variable' - доступ к регистру;
'C:100:r:var1:Variable 1' - доступ к биту;
'R_f:200:r:float:Float' - получить вещественное из регистров 200 и 201;
'R_i4:300,400:r:int32:Int32' - получить int32 из регистров 300 и 400;
'R_b10:25:r:rBit:Reg bit' - получить бит 10 из регистра 25.


Learn, learn and learn better than work, work and work.
Повідомлення створено: 14. 04. 2010 [17:24]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
almaz wrote:

С таким подсчётом LRC опрос 2 байтных регистров весового процессора ПВ-310 пошёл:

return (uint8_t)(-ch);
}

Поправил.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 15. 04. 2010 [12:20]
almaz
Almaz Karimov
Contributor
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
В весовом процессоре ПВ-310 4-байтные регистры идут непосредственно друг за другом и нет никакой возможности их прочитать полностью в модуле MODBUS. Поискал другие устройства с 4-байтными регистрами. Не нашёл. Везде такие числа выражаются в виде 2 регистров.
Видимо отклонение от стандарта производителя весов http://sweda.com.ua
Выход - использование JavaLikeCalc для опроса.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Повідомлення створено: 15. 04. 2010 [12:45]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
almaz wrote:

В весовом процессоре ПВ-310 4-байтные регистры идут непосредственно друг за другом и нет никакой возможности их прочитать полностью в модуле MODBUS.

Ссылку на перечень регистров в студию, где видно, что они идут непосредственно друг за другом, И если это действительно так, то это не ModBus вовсе!
Найдите ихнее описание протокола.

almaz wrote:

Поискал другие устройства с 4-байтными регистрами. Не нашёл. Везде такие числа выражаются в виде 2 регистров.

Потому что ModBus это двухбайтные регистры всегда.
Собственно префиксы расширения к регистрам я добавил после ознакомления с документацией на Эргомера 126, где номера четырёх-байтных регистров идут через два, а значит это два смежных ModBus-регистра:
40001
40003
40903
40005
40905
40007
40009
40909
40011
40911
40013
40913
40015
40017
40019
40021
40023
40025
40027
40029

Кроме того, избитая ситуацию с float, сейчас решается префиксами.

А также, у меня есть в наличии частотный привод. В нём 32-разрядные регистры разнесены, все старшие слова идут с разрядом 0x8000.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 15. 04. 2010 [13:18]
almaz
Almaz Karimov
Contributor
Зареєстрован(а) с: 25.09.2008
Повідомлення: 516
Вот документация. Страницы 54-57. Протокол MODBUS. Просто дополненный новым типом данных. Остальное вроде всё стандартно.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Вкладений файл

ВБА.pdf (Тип файлу: application/pdf, Розмір: 839.45 кілобайтів) — 7129 завантажень
Повідомлення створено: 15. 04. 2010 [13:23]
kuzulis
Денис Шиенков
Зареєстрован(а) с: 10.07.2009
Повідомлення: 128
almaz,

Запостите сюда какой нить запрос который у вас получается при опросе вашего оборудования в ASCII протоколе.
Я сверю, правильно или нет считается LRC

Например запостите запрос у которого:

addr = 0x01
fc = 0x03
start_reg_addr = 0x0000
quantity_reg = 0x000A


ну или любой запрос, который можете icon_smile.gif



[Повідомлення редагувалось 1 раз(ів), останній раз 15.04.2010 в 13:29.]
Повідомлення створено: 15. 04. 2010 [13:35]
ruslan
Руслан Нургалин
Автор теми
Зареєстрован(а) с: 25.06.2009
Повідомлення: 15
ruslan wrote:

Запрос - 3a 30 36 30 33 30 30 30 33 30 30 30 31 46 33 0d 0a
Ответ - 3a 30 36 30 33 30 34 30 30 30 35 46 43 39 34 35 45 0d 0a
Повідомлення створено: 15. 04. 2010 [13:41]
kuzulis
Денис Шиенков
Зареєстрован(а) с: 10.07.2009
Повідомлення: 128
и что сие означает?
какой адрес у-ва? какая ф-я чтения? какой стартовый регистр? сколько регистров?

ЗЫ: неохота мне парсить самому
Повідомлення створено: 15. 04. 2010 [13:48]
kuzulis
Денис Шиенков
Зареєстрован(а) с: 10.07.2009
Повідомлення: 128
вот правильные запросы для чтения:

dev-addr = 0x01
fc = 0x03
start_addr = 0x0000
quantity = 0x0001


:01030000000AF2[0d][0a]


при чтении 100 регистров (quantity = 0x0064) это:

:01030000006498[0d][0a]


такие запросы ModScan32 выдает icon_smile.gif

[Повідомлення редагувалось 2 раз(ів), останній раз 15.04.2010 в 13:49.]
Повідомлення створено: 15. 04. 2010 [13:53]
ruslan
Руслан Нургалин
Автор теми
Зареєстрован(а) с: 25.06.2009
Повідомлення: 15
Запрос:
3a - Заголовок
30 36 - адрес 06 устройства в сети RS-485 (код ASCII)
30 33 - функция 03 (код ASCII)
30 30 - cтартовый адрес Hi (код ASCII)
30 33 - cтартовый адрес Lo (код ASCII)
30 30 - количесвто регистров Hi (код ASCII)
30 31 - количество регистров Lo (код ASCII)
46 33 - LRC (код ASCII)
0d 0a - CRLF
Ответ:
3a - Заголовок
30 36 - адрес 06 устройства в сети RS-485 (код ASCII)
30 33 - функция 03 (код ASCII)
30 34 - подсчет байт (код ASCII)
30 30 - данные Hi
30 35 - данные Lo
46 43 - данные Hi
39 34 - данные Lo
35 45 - LRC (код ASCII)
0d 0a - CRLF



4285