Показать сообщение отдельно
Старый 29.08.2016, 16:19   #5
Gromov
Тарапунька
 
Аватара для Gromov
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 1 505
По умолчанию Ответ: Получение данных от Pixel по Modbus

Цитата
Сообщение от ngs Посмотреть сообщение
Стоит туча Pixel, на них залиты программы, получить которые невозможно. Необходимо обеспечить чтение данных с Pixel и управление ими.

Документ modbus_list.doc прочитан, все данные из него введены, частично что-то получаю осознанное. Дополнил переменными из мануала на Pixel.

Но далеко не все работает, а то, что работает, делает это странно.

Скажем "Показания датчика температуры воздуха на выходе из вентустановки" - 40996, SCo_t_(канала), real

SCADA, при помощи которой ведется опрос, предлагает несколько вариантов типов данных - 2/4/8 байт, судя по шагу modbus адресов нужно выбирать один из типов по 4 байта? - unit/float/int?

А потом нужно еще и как-то преобразовать полученное значение? Датчик температуры другого устройства требует преобразования такого:
(значение канала)х(диапазон измерения)/65 535. Но тут такой подход явно не годиться - значение сильно изменяется.
Существует вероятность, что не все программы созданы в конструкторе. Кроме того, даже если они созданы в конструкторе - они могут быть изменены.

Далее - по регистрам. Число от датчика, которое имеет тип real - это 32 бита (4 байта), и это число с плавающей точкой, то есть float. В зависимости от того, каким софтом вы его читаете и формируется необходимость его приводить к чему-то. Как правило, ничего не нужно.

Про пуск и стоп: создайте программу в конструкторе, посмотрите как в ней это реализовано. Там никаких ухищрений. От скады есть "пуск" и есть "стоп" . данные bool(битовые). Правда, вам может помешать режим управления (мест/дист). Ну и, само собой, блокировка тоже не даст пуск.


__________________
Oh, the dragon's balls were blazin' as I stepped into his cave (С) JB
Gromov сейчас на форуме   Ответить с цитированием