УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Как обозначить в протоколе Modbus id с другой последовательностью байт?


Автор Сообщение
Сообщение создано: 20. 03. 2017 [12:38]
Godzilla
Арсен Закоян
Contributor
Создатель темы
Зарегистрирован(а) с: 12.02.2013
Сообщения: 123
Столкнулся с такой проблемой, в модуле ModBUS в подсистеме Транспортные Протоколы не могу в коде обозначить id параметра с обратной последовательностью байт в регистре. То есть например
JAVASCRIPT
r36=R0x36w;
все нормально работает.
а если написать
JAVASCRIPT
r01=R_f0x01,0x00w;
то получим "Ошибка компиляции: Переменная R_f0x01 не определена но использована...."
Каким образом можно это обойти?

[Сообщение редактировалось 1 раз(а), в последний раз 20.03.2017 в 12:48.]
Вложенный файл

1.jpg (Тип файла: image/jpeg, Размер: 172.68 килобайт) — 1477 загрузок
Сообщение создано: 20. 03. 2017 [13:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
Чтением документации:
Поскольку в указателе расширенных типов регистров может использоваться недопустимый символ ',' то доступ к нему из процедуры можно осуществить только альтернативным способом, через объект "arguments":
arguments["R_s10,5w"] = "9876543210";


Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2017 [12:23]
Godzilla
Арсен Закоян
Contributor
Создатель темы
Зарегистрирован(а) с: 12.02.2013
Сообщения: 123
Спасибо, Роман, помогло. Но есть еще одна проблемка, нужно в коде модуля ModBUS из Транспортных Протоколов прописать следующее
JAVASCRIPT
arguments["R_f0x01,0x00"]=EVAL_REAL
arguments["R0x37w"]=EVAL_INT

и в колонке Значения будут значится <EVAL>, но когда в сборе данных создаешь контроллер и перечень параметров, например
JAVASCRIPT
R_f:0x01,0x00:r:hex0:параметр с вещественным
R:0x37:r:hex37: параметр с целым числом

то видим следующее Атрибутах
параметр с вещественным:<EVAL>
параметр с целым числом:1
Почему параметр с целым числом равен единице? Разве так должно быть?

[Сообщение редактировалось 1 раз(а), в последний раз 22.03.2017 в 12:25.]
Вложенный файл

3.png (Тип файла: image/png, Размер: 208.91 килобайт) — 1401 загрузок
Сообщение создано: 22. 03. 2017 [14:25]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"Godzilla" wrote:

Почему параметр с целым числом равен единице? Разве так должно быть?

Может и такое быть, поскольку через ModBus регистры внутренний EVAL_INT OpenSCADA, размером 64 разряда, очевидно неизменным не дойдёт, не говря уже о том, что прочитающий в принципе про всякие EVAL знать ничего не может.

EVAL это внутреннее зарезервированное значение OpenSCADA!

Learn, learn and learn better than work, work and work.
Сообщение создано: 22. 03. 2017 [15:47]
Godzilla
Арсен Закоян
Contributor
Создатель темы
Зарегистрирован(а) с: 12.02.2013
Сообщения: 123
А это можно как нибудь исправить, ведь чтение EVAL_REAL происходит без проблем?
Сообщение создано: 22. 03. 2017 [16:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"Godzilla" wrote:

А это можно как нибудь исправить, ведь чтение EVAL_REAL происходит без проблем?

Это не ошибка!

Learn, learn and learn better than work, work and work.



16365