Важная информация

Автоматика Контроллеры Breezart и JetLogic, VAV-системы, датчики

Ответ
 
Опции темы Опции просмотра
Старый 07.07.2017, 15:53   #1
galust
Новый участник
 
Регистрация: 07.07.2017
Сообщений: 5
Angry с 0 регистра читаются странные цифры

Что должно быть за число, если регистр считать целиком как uint16 ?
galust вне форума   Ответить с цитированием
Старый 07.07.2017, 16:11   #2
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

uint16 - числа от 0 до 0xFFFF
Михаил вне форума   Ответить с цитированием
Старый 07.07.2017, 20:19   #3
galust
Новый участник
 
Регистрация: 07.07.2017
Сообщений: 5
По умолчанию

Я прекрасно понимаю диапазон возможных значений 2х байт.

По документации в input register 0
Может быть довольно ограниченный набор значений.
В старшем байте 1 или 2, в младшем 1,2 или 3.
Так вот, если мы этот регистр, именно ir0 прочитаем целиком, как тип данных uint 16 то у меня все 6 возможных вариантов результата в десятичной системе: 257, 258 и 259, а так же 513,514 и 515. Я прав?
galust вне форума   Ответить с цитированием
Старый 07.07.2017, 20:28   #4
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

0x0102 - в старшем 1, в младшем 2
Михаил вне форума   Ответить с цитированием
Старый 07.07.2017, 20:52   #5
Chell
Активный участник
 
Регистрация: 29.01.2014
Адрес: г. Покров
Сообщений: 503
По умолчанию

В старшем байте не 1 или 2, там гораздо больше, т.к. контроллер постоянно модифицитовался. Другое дело, что документация не обновлялась, печально.., отсюда и непонятки.
Chell вне форума   Ответить с цитированием
Старый 07.07.2017, 22:00   #6
galust
Новый участник
 
Регистрация: 07.07.2017
Сообщений: 5
По умолчанию

Ок, тогда почему мне по 0му регистру приходит ответ либо 6250, либо 8750, что в hex 186A и
222e соответственно?
galust вне форума   Ответить с цитированием
Старый 08.07.2017, 11:38   #7
Chell
Активный участник
 
Регистрация: 29.01.2014
Адрес: г. Покров
Сообщений: 503
По умолчанию

Тогда, возможно, Step прояснит, что это за тип контроллера и его модификация...
Chell вне форума   Ответить с цитированием
Старый 08.07.2017, 13:14   #8
Step
Автоматика
 
Регистрация: 06.10.2010
Сообщений: 708
По умолчанию

Ещё б знать с какого устройства автор топика читает и чем.
Step вне форума   Ответить с цитированием
Старый 08.07.2017, 14:49   #9
galust
Новый участник
 
Регистрация: 07.07.2017
Сообщений: 5
По умолчанию

С logic machine по rs-485, нам нужно как минимум уметь включить и выключить установку, задать скорость вращения вентилятора (это через holding регистры) так же нужно считать статус скорости и работы установки (через input). Об ошибках я уже молчу. Для этого придется штатную панель оставлять.
galust вне форума   Ответить с цитированием
Старый 08.07.2017, 15:11   #10
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

Какая модель вентустановки?
Михаил вне форума   Ответить с цитированием
Старый 08.07.2017, 15:16   #11
galust
Новый участник
 
Регистрация: 07.07.2017
Сообщений: 5
По умолчанию

550 lux
galust вне форума   Ответить с цитированием
Старый 08.07.2017, 15:21   #12
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

Там другой контроллер
http://jetlogic.ru/downloads/%D0%A0%...F/JL204C5.html
Михаил вне форума   Ответить с цитированием
Старый 10.07.2017, 13:47   #13
alex13mitht
Новый участник
 
Регистрация: 10.07.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Михаил Посмотреть сообщение
Там другой контроллер
http://jetlogic.ru/downloads/%D0%A0%...F/JL204C5.html
День добрый, Михаил. Galust ретранслировал Вам мои вопросы.
попытался я поработать с контроллером по новой ссылке. и опять неудача.

начал с INPUT [50]
Формат: IO_DATA

если я правильно понял, то нужно прочитать два регистра подряд (50 и 51) соответственно. значение температуры должно храниться в виде целочисленного в десятых градусах цельсия.
при попытке считать как int32 с прямым порядком регистров и байтов получаю 98303 (9830 градусов как -то многовато).
если пытаюсь менять порядок слов и байтов, получаю еще более громоздкие цифры.

попытался считать год производства контроллера
INPUT [65009]
Формат: UINT32
в ответ приходит 0
попытался считать серийный номер.
INPUT [65001]
Формат: UINT32
в ответ приходит 1

судя по инструкции нумерация регистров начинается с 0, в нашем контроллере тоже. так что сдвигать номер регистра думаю не нужно.

коллеги выручайте. задача то простая вроде
alex13mitht вне форума   Ответить с цитированием
Старый 10.07.2017, 14:02   #14
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

В регистре 50 хранится температура, а в 51 - статус. Если младший байт рег. 51 равен 1, то данные в рег. 50 корректны. Структура рег. 51 (и всех аналогичных):
// IO_Data
typedef struct
{
uint16_t value;
uint8_t status;
const uint8_t type;
} IO_Data;

// Значения поля status
#define STATUS_FALSE 0 //Лог.0 (для дискретных каналов)
#define STATUS_OK 1 //Все хорошо
#define STATUS_NDEF 2 //Данные не достоверны (опрос не завершен,
значение не вычислено и т.д.)
#define STATUS_OFF 3 //Опрос отключен или канал отсутствует
физически
#define STATUS_BREAK 8 //Обрыв на линии
#define STATUS_SHORT 9 //КЗ на линии
#define STATUS_OVERLOAD 10 //Перегрузка дискретного/аналогового вывода,
перегрузка аналогового ввода
#define STATUS_FAIL 11 //Канал неисправен
#define STATUS_CH_NAL 12 //Ошибка конфигурирования или ОК!


// Значения поля type
#define SDT_UNSIGNED 0x00
#define SDT_SIGNED 0x80
Михаил вне форума   Ответить с цитированием
Старый 10.07.2017, 14:16   #15
alex13mitht
Новый участник
 
Регистрация: 10.07.2017
Сообщений: 5
По умолчанию

ок, в 51м регистре действительно 1
но по 50-му у меня возвращается 32767 при чтении как int16 или uint16.
опять получается 3276,7 градуса какое-то большое значение.

и что с регистрами года контроллераи и серийного номера.
их я пытаюсь считать чтобы понять, работает ли вообще связь, так как по ним я точно должен однозначные данные получать.
alex13mitht вне форума   Ответить с цитированием
Старый 10.07.2017, 14:26   #16
Михаил
Administrator
 
Регистрация: 06.10.2010
Сообщений: 542
По умолчанию

Там тип SIGNED, т.е. число со знаком, но значение 32767 действительно странно. Какое значение отображается для этой температуры на пульте?
Михаил вне форума   Ответить с цитированием
Старый 10.07.2017, 14:27   #17
Step
Автоматика
 
Регистрация: 06.10.2010
Сообщений: 708
По умолчанию

А штатный пульт какую температуру отображает? Он как раз из этого регистра должен читать.
Step вне форума   Ответить с цитированием
Старый 10.07.2017, 14:44   #18
alex13mitht
Новый участник
 
Регистрация: 10.07.2017
Сообщений: 5
По умолчанию

Коллеги, я тестирую связь по удаленке, и даже не знаю где сам объект.
насколько знаю сам пульт сейчас отключен и вместо него подключен наш контроллер (если интересно дам ссылку на девайс).

может все же для начала понять почему год не читается и серийный номер?
ведь эта информация должна быть статична в отличии от температуры.
alex13mitht вне форума   Ответить с цитированием
Старый 10.07.2017, 14:50   #19
Step
Автоматика
 
Регистрация: 06.10.2010
Сообщений: 708
По умолчанию

Можете дать ссылку, на месте проще разобраться.
Step вне форума   Ответить с цитированием
Старый 10.07.2017, 15:36   #20
alex13mitht
Новый участник
 
Регистрация: 10.07.2017
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Step Посмотреть сообщение
Можете дать ссылку, на месте проще разобраться.
вроде отправил Вам личным сообщением, проверьте.
alex13mitht вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 18:36.