Author |
Message |
Written on: 14. 04. 2010 [16:00]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 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.
|
Written on: 14. 04. 2010 [17:24]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
almaz wrote:
С таким подсчётом LRC опрос 2 байтных регистров весового процессора ПВ-310 пошёл:
return (uint8_t)(-ch);
}
Поправил.
Learn, learn and learn better than work, work and work.
|
Written on: 15. 04. 2010 [12:20]
|
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
|
В весовом процессоре ПВ-310 4-байтные регистры идут непосредственно друг за другом и нет никакой возможности их прочитать полностью в модуле MODBUS. Поискал другие устройства с 4-байтными регистрами. Не нашёл. Везде такие числа выражаются в виде 2 регистров.
Видимо отклонение от стандарта производителя весов http://sweda.com.ua
Выход - использование JavaLikeCalc для опроса.
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
|
Written on: 15. 04. 2010 [12:45]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 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.
|
Written on: 15. 04. 2010 [13:18]
|
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
|
Вот документация. Страницы 54-57. Протокол MODBUS. Просто дополненный новым типом данных. Остальное вроде всё стандартно.
21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Attachment
ВБА.pdf (File type: application/pdf, Size: 839.45 kilobytes) — 7129 downloads
|
Written on: 15. 04. 2010 [13:23]
|
kuzulis
Денис Шиенков
registered since: 10.07.2009
Posts: 128
|
almaz,
Запостите сюда какой нить запрос который у вас получается при опросе вашего оборудования в ASCII протоколе.
Я сверю, правильно или нет считается LRC
Например запостите запрос у которого:
addr = 0x01
fc = 0x03
start_reg_addr = 0x0000
quantity_reg = 0x000A
ну или любой запрос, который можете
[This article was edited 1 times, at last 15.04.2010 at 13:29.]
|
Written on: 15. 04. 2010 [13:35]
|
ruslan
Руслан Нургалин
Topic creator
registered since: 25.06.2009
Posts: 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
|
Written on: 15. 04. 2010 [13:41]
|
kuzulis
Денис Шиенков
registered since: 10.07.2009
Posts: 128
|
и что сие означает?
какой адрес у-ва? какая ф-я чтения? какой стартовый регистр? сколько регистров?
ЗЫ: неохота мне парсить самому
|
Written on: 15. 04. 2010 [13:48]
|
kuzulis
Денис Шиенков
registered since: 10.07.2009
Posts: 128
|
вот правильные запросы для чтения:
dev-addr = 0x01
fc = 0x03
start_addr = 0x0000
quantity = 0x0001
:01030000000AF2[0d][0a]
при чтении 100 регистров (quantity = 0x0064) это:
:01030000006498[0d][0a]
такие запросы ModScan32 выдает
[This article was edited 2 times, at last 15.04.2010 at 13:49.]
|
Written on: 15. 04. 2010 [13:53]
|
ruslan
Руслан Нургалин
Topic creator
registered since: 25.06.2009
Posts: 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
|