Author |
Message |
Written on: 19. 11. 2013 [13:30]
|
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
|
Возможно ли использование Опенскады в slave режиме?Используется modbus tcp.ПЛК с GPRS модемом имеет серый динамический адрес ,Скада имеет белый статический адрес. ПЛК в режиме modbus master шлет данные на внешний IP.Можно ли это организовать штатными средствами или придется реализовывать через Пользовательский протокол?Если что то напутал поправте, с modbus tcp имею дело впервые.
|
Written on: 20. 11. 2013 [08:58]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Godzilla" wrote:
Возможно ли использование Опенскады в slave режиме?
Читаем соответствующую документацию: http://wiki.oscada.org/Doc/ModBus#h592-8
Learn, learn and learn better than work, work and work.
|
Written on: 07. 02. 2014 [12:09]
|
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
|
Создал узел в транспортные протоколы-Modbus.Принимаю данные с устройства в режиме modbus-slave.Целые числа int32 принимаются без проблем,а вот с float проблема.
Последние 4 байта 3f e4 49 bb(на вкладке отчет) , что по спецификациям IEEE754 о числе одинарной точности должны равнятся 1.78350007534027099609375,но вкладка "Данные" показывает мне число 1533948,5. Id прописал как R_f4w так как адрес равен 0x04 и соответственно занимает 2 регистра.
Если что то напутал прошу прощения.Скриншоты прилагаю.
Attachment
kolt2.JPG (File type: image/jpeg, Size: 45.49 kilobytes) — 1775 downloads
|
Written on: 07. 02. 2014 [13:15]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Godzilla" wrote:
Последние 4 байта 3f e4 49 bb(на вкладке отчет) , что по спецификациям IEEE754 о числе одинарной точности должны равнятся 1.78350007534027099609375,но вкладка "Данные" показывает мне число 1533948,5. Id прописал как R_f4w так как адрес равен 0x04 и соответственно занимает 2 регистра.
Если что то напутал прошу прощения.Скриншоты прилагаю.
Порядок регистров 4 и 5 обратный просто.
Learn, learn and learn better than work, work and work.
|
Written on: 07. 02. 2014 [13:27]
|
Godzilla
Арсен Закоян
Contributor
Topic creator
registered since: 12.02.2013
Posts: 123
|
"roman" wrote:
"Godzilla" wrote:
Последние 4 байта 3f e4 49 bb(на вкладке отчет) , что по спецификациям IEEE754 о числе одинарной точности должны равнятся 1.78350007534027099609375,но вкладка "Данные" показывает мне число 1533948,5. Id прописал как R_f4w так как адрес равен 0x04 и соответственно занимает 2 регистра.
Если что то напутал прошу прощения.Скриншоты прилагаю.
Порядок регистров 4 и 5 обратный просто.
Ясно,а будет ли добавлено что то для исправления порядка регистров?На данный момент какой выход?
|
Written on: 07. 02. 2014 [13:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
"Godzilla" wrote:
Ясно,а будет ли добавлено что то для исправления порядка регистров?На данный момент какой выход?
Я и не говорил, что это ошибка!
Документацию читайте, про способы указания регистров составных типов!
Learn, learn and learn better than work, work and work.
|
Written on: 08. 02. 2014 [19:05]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
registered since: 16.09.2010
Posts: 185
|
Согласно:
http://www.binaryconvert.com/result_float.html?decimal=049053051051057052056044053
число 1533948,5 - это 0x7FFFFFFF. так что дело даже не в последовательности байтов, скорее всего.
Кстати, мне уже приходилось байты вертеть. Дело в том, что ИДМ-2М с какого-то года выпуска (по-моему, с 2005) поменяли порядок байтов в своих посылках. Пришлось использовать специальный шаблон для верчения байтов, см скриншоты.
Attachment
IDM_R.tif (File type: image/tiff, Size: 124.24 kilobytes) — 1436 downloads
IDM_modbus.tif (File type: image/tiff, Size: 107.75 kilobytes) — 1499 downloads
|
Written on: 08. 02. 2014 [20:00]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
Тогда в Intel float не IEEE754, или что здесь не так?
union { uint32_t i; float f; } wl;
wl.f = val->getR(0);
val->setI(1,wl.i&0xFFFF);
val->setI(2,(wl.i>>16)&0xFFFF);
Хотя именно Intel предложил IEEE754: http://en.wikipedia.org/wiki/Floating_point
А вообще с разделителем будьте внимательны и глупостей не рассказывайте: http://www.binaryconvert.com/result_float.html?decimal=049053051051057052056046053
"IrmIngeneer" wrote:
Кстати, мне уже приходилось байты вертеть. Дело в том, что ИДМ-2М с какого-то года выпуска (по-моему, с 2005) поменяли порядок байтов в своих посылках. Пришлось использовать специальный шаблон для верчения байтов, см скриншоты.
А порядок байтов тут при чём, и чем обратный порядок регистров (R_f:5,4) не устроил?
Learn, learn and learn better than work, work and work.
|
Written on: 08. 02. 2014 [20:49]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
registered since: 16.09.2010
Posts: 185
|
"roman" wrote:
Тогда в Intel float не IEEE754, или что здесь не так?
union { uint32_t i; float f; } wl;
wl.f = val->getR(0);
val->setI(1,wl.i&0xFFFF);
val->setI(2,(wl.i>>16)&0xFFFF);
Хотя именно Intel предложил IEEE754: http://en.wikipedia.org/wiki/Floating_point
А вообще с разделителем будьте внимательны и глупостей не рассказывайте: http://www.binaryconvert.com/result_float.html?decimal=049053051051057052056046053
"IrmIngeneer" wrote:
Кстати, мне уже приходилось байты вертеть. Дело в том, что ИДМ-2М с какого-то года выпуска (по-моему, с 2005) поменяли порядок байтов в своих посылках. Пришлось использовать специальный шаблон для верчения байтов, см скриншоты.
А порядок байтов тут при чём, и чем обратный порядок регистров (R_f:5,4) не устроил?
В самом деле, разделитель меня подвел :oops: ! Впредь буду осторожнее.
R_f:5,4 - интересно, надо будет попробовать. Видимо, судьба такой, - не искать легких путей... :)
|
Written on: 09. 02. 2014 [09:29]
|
alecs
Александр Курачанский
registered since: 05.03.2013
Posts: 28
|
Прошу прощение за вторжение,но по теме. У нас с продукцией ОВЕН тоже проблемы. В документации написано одно, а на самом деле наоборот.
Простая перестановка регистров запроса и все данные на месте. Иногда складывается впечатление что программист пишет по одной документации, а
описание железяки пишет секретарша. Простите наболело :)
|