32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

ModbusEasy — моя утилита для работы с протоколом Modbus.

Утилита opensource, исходники и бинарники доступны для скачивания здесь: https://github.com/arktur04/modbuseasy/archive/master.zip.

Добавлены несколько команд:

getdb -a  -получить список всех переменных в текущей конфигурации

getdb <varname>  -получить текущее значение переменной

setdb <varname>  -установить текущее значение переменной

 

Также добавлено простое консольное приложение, работающее с modbuseasy в режиме slave. Оно изменяет по таймеру значения двух переменных и может использоваться как для тестирования приложений, работающих с протоколом Modbus в режиме master.

Также данное приложение может служить примером работы с modbuseasy и основой для написания собственных программ, работающих с modbuseasy.

Все исходники на C#.

32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

Написал простую утилиту для работы с протоколом Modbus. Утилита поддерживает работу как в режиме Master, так и в режиме Slave, что позволяет не только обращаться к устройству по шине Modbus, но и эмулировать устройство. Утилита пока поддерживает только протокол Modbus RTU, функции 1-6, 15, 16.

Графического интерфейса нет (и пока не предвидится), конфигурируется из файла xml, его структура проста и понятна, его легко можно править руками.

Пока функциональность утилиты минимальна, буду ее улучшать, когда будет на это время. В ближайших планах — поддержка Modbus TCP.

Утилита написана на C#.

Скачать исходники можно здесь: https://github.com/arktur04/modbuseasy

Ссылка на скачивание бинарника: https://www.box.com/s/ob8938m0cl93oglktnm6

 

32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

Модуль аналогового ввода со снятым корпусом:

Нажмите на фото для увеличения

Технические характеристики:

  • 8 каналов разрядностью 16 или 24 бита (в зависимости от того, какие микросхемы АЦП установлены)
  • каналы  изолированы друг от друга и от источника питания (напряжение изоляции 1 кВ)
  • типы входов:
    • ток 0-20 мА (4-20 мА),
    • напряжение 0-70 мВ (для подключения термопар)
    • напряжение 0-10 В
  • токовые входы защищены самовосстанавливающимися предохранителями
  • встроенный калиброванный датчик температуры с погрешностью не более 1 °С, служит датчиком температуры холодного спая
  • контроль обрывов входных цепей термопар (состояние цепи отображается в логическую переменную, доступную по Modbus)
  • по Modbus доступны как напряжения входов термопар в мВ, так и значения температуры
  • порт RS-485, поддержка протокола Modbus (возможне поддержка протокола DCON)
  • порт RS-232 (опционально, для большего удобства подключения к компьютеру)
  • порты гальванически изолированы
  • каждый канал имеет индикатор состояния (выключен, в работе, обрыв)
  • Напряжение питания 24 В
  • Установка на DIN-рейку

Еще фото (под катом)

Читать запись полностью »

32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

Образец модуля аналогового ввода, предназначенный для лабораторных испытаний.

Рис. 1. Модуль аналогового ввода с поканальной развязкой.

Читать запись полностью »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Контроллер для промышленного применения. Содержит 4 входа термосопротивлений, 6 дискретных входов и 8 выходов реле (220 В, 5 А) и интерфейс связи Modbus (RS-485). Всё это работает под управлением микроконтроллера Fujitsu.

С крышкой он выглядит так (под катом):

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Интерфейс прибора реализован на базе монохромного индикатора разрешением 128х64, и включает в себя 35 различных экранов, в которых выполняются все манипуляции с прибором, включая его наладку и тестирование всех узлов (ЦАП, АЦП, все дискретные входы и выходы), установку параметров алгоритма обработки сигналов (DSP), а также все переменные настройки прибора (более 200 переменных).

Программно интерфейс реализован в виде библиотеки классов C++, представляющих элементы управления (кнопки, поля ввода, текстовые поля и пр.)

Так это выглядит в натуральном виде:

Ещё  несколько картинок под катом.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Фотография старого прибора, для которого я разрабатывал прошивку.

Кроме разработки программного обеспечения, я также отлаживал некоторые узлы прибора, принимал участие в испытаниях, а также частично разрабатывал документацию на прибор.

Прибор содержит микроконтроллер с ядром ARM7 (фирмы Atmel), и имеет 8 каналов АЦП (16 бит), 8 каналов ЦАП (12 бит), 16 дискретных входов, 16 дискретных выходов, 2 силовых выхода управления ТЭНами, интерфейсы RS-232 и RS-485 (протокол Modbus). Все входы и выходы прибора имеют гальваническую изоляцию друг от друга.

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Для поддержки протокола Modbus RTU программа должна принимать символы, поступающие в порт и размещать их в буфере приёма. Признаком окончания сообщения служит тайм-аут, т.е. прекращение поступления символов в течение 3,5 – 4.5 длительностей передачи одиночного символа.

По окончании приёма сообщения управление должно передаваться специальному обработчику, который декодирует команду протокола, исполняет её, и формирует строку ответа, которая размещается в буфере передачи.

Передача ответа также ведётся с помощью прерываний. Начало передаваемого сообщения размещается в аппаратном буфере UART, при его исчерпании формируется прерывание, и буфер заполняется снова.

Работа с сообщениями ModbusASCII происходит аналогичным образом, за исключением того, что признаком конца приёма сообщения служит не тайм-аут,  а специальный символ конца сообщения.

В этой статье будет рассмотрен только режим Modbus RTU, как наиболее распространённый в настоящее время.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: http://32bit.me/?p=355 – введение; http://32bit.me/?p=373 – часть 1.0; http://32bit.me/?p=377 – часть 1.1; http://32bit.me/?p=395 – часть 1.2; http://32bit.me/?p=406 – часть 1.3.

Перед тем, как перейти к программной реализации поддержки протокола Modbus, необходимо прояснить ещё один вопрос.

Регистры протокола (3х и 4х) имеют разрядность 16 бит, а значения переменных, которые требуется передавать, часто имеют разрядность 32 бита. Каким образом 32-битные переменные передаются в 16-битных регистрах?

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: http://32bit.me/?p=355 – введение; http://32bit.me/?p=373 – часть 1.0; http://32bit.me/?p=377 – часть 1.1; http://32bit.me/?p=395 – часть 1.2.

Кратко рассмотрим обмен данными между ведущим и ведомым устройством для других типов регистров.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: http://32bit.me/?p=355 – введение; http://32bit.me/?p=373 – часть 1.0; http://32bit.me/?p=377 – часть 1.1.

Перед тем, как приступить к дальнейшим экспериментам с протоколом Modbus, разберёмся с ещё одной темой, относящейся к этому протоколу: с регистрами Modbus.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: http://32bit.me/?p=355 – введение; http://32bit.me/?p=373 – часть 1.0.

Продолжим эксперименты по исследованию протокола Modbus. Для этого воспользуемся контроллером ICP-DAS i7188EGD:

Он может служить ведомым устройством с поддержкой протокола Modbus RTU.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Продолжение. Начало здесь: http://32bit.me/?p=355

Оставим пока в стороне скучную теорию и примемся за эксперименты.

Возьмём панель оператора Weintek MT6070TV и зальём в неё проект, состоящий из нескольких числовых полей (Numeric Display) и кнопки, устанавливающей значение переменной (Set Word). Вид экрана изображён на рис 1.

Рис. 1. Вид экрана панели

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Протокол Modbus находит широкое применение в устройствах промышленной автоматики, давая возможность организовывать удалённый сбор данных и управление с помощью операторских панелей и SCADA-систем, а также подключать к вашему устройству различные модули расширения. В статье рассматривается применение устройств с протоколом Modbus, а также простейшая реализация протокола в микроконтроллерном устройстве.

Рис. 1. Операторская панель Weintek MT6070TV и промышленный контроллер ICP-DAS i-7188EGD. Передача данных происходит по протоколу Modbus.

Статья не является переводом официального стандарта Modbus, в ней рассматриваются практические вопросы применения протокола.

Read the rest of this entry »

Profile

32bit_me: (Default)
32bit_me

July 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
232425262728 29
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 01:29 am
Powered by Dreamwidth Studios