logo
+7 (951) 999-89-94
428003, г. Чебоксары, ул. Федора Гладкова, д.9, оф.319
16.01.2019

Тестовое программное обеспечение для системы управления шаговыми двигателями

16.01.2019

 

 Как уже отмечалось в прошлой статье, драйвер это сервер, а компьютер - клиент.

Программа драйвера (сервер)
TCP сервер работает на основе библиотеки UIPEthernet. Программа производит инициализацию и задает основные настройки. Форматы:

- Ethernet.begin(mac); (используется, если хотим получить IP адрес автоматически от DNS сервера на роутере)
- Ethernet.begin(mac, ip);
- Ethernet.begin(mac, ip, dns);
- Ethernet.begin(mac, ip, dns, gateway);
- Ethernet.begin(mac, ip, dns, gateway, subnet); (ручная настройка всех параметров)

mac: MAC-адрес модуля (массив из 6 байт). Может быть указан на наклейке модуля и задан программно.
ip: IP-адрес сетевого устройства (массив из 4 байт).
dns: IP-адрес DNS-сервера (массив из 4 байт). Параметр необязательный, при отсутствии аргумента, в качестве адреса DNS-сервера будет установлен IP-адрес модуля, в котором последний октет равен 1.
gateway: IP-адрес сетевого шлюза (массив из 4 байт). Параметр необязательный. При отсутствии аргумента, в качестве адреса шлюза будет установлен IP-адрес модуля, в котором последний октет равен 1.
subnet: маска подсети (массив из 4 байт). Параметр необязательный. По умолчанию задается 255.255.255.0.

Типичное использование выглядит так:

#include <SPI.h>
#include <UIPEthernet.h>
// определяем конфигурацию сети
byte mac[] = {0xAE, 0xB2, 0x26, 0xE4, 0x4A, 0x5C}; // MAC-адрес
byte ip[] = {192, 168, 1, 10}; // IP-адрес
byte myDns[] = {192, 168, 1, 1}; // адрес DNS-сервера
byte gateway[] = {192, 168, 1, 1}; // адрес сетевого шлюза
byte subnet[] = {255, 255, 255, 0}; // маска подсети
void setup() {
Ethernet.begin(mac, ip, myDns, gateway, subnet); // инициализация контроллера
server.begin(); // включаем ожидание входящих соединений
}

Детальное описание библиотеки есть на сайте MYPRACTIC.

После запуска, сервер ожидает подключение клиента. В нашем случае клиентом является программа на компьютере. После успешного соединения сервер ожидает команды управления в формате СССС:MM:DD:SSSS,

где:

CCCC - номер контроллера,
MM - номер двигателя (01 - первый, 02 - второй, 03 - третий),
DD - направление движения (01 - вперед, 10 - назад),
SSSS - количество шагов, на которое необходимо совершить оборот.

Драйвер проверяет правильность номера контроллера и только в этом случае будет выполнена команда. Номер контроллера задаётся параметром CONTROLLER_NUM. В случае успешного выполнения команды клиенту отправляется сообщение «0000». Если номер контроллера был задан в пакете сообщения не правильно, то возвращается сообщение «0001».

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

Программа для компьютера (клиент)

Программа клиента написана на языке C#. Среда программирования Visual Studio 2017 Community (бесплатная). Перед работой с программой необходимо настроить сетевое соединение на компьютере, чтобы быть в одной подсети с драйверами:

 

Интерфейс программы прост.


Выбираем драйвер от 1 до 5. Каждый драйвер определяется уникальным IP адресом.
Выбираем номер двигателя и нажимаем кнопку START. После этого клиент соединяется с сервером (выбранным драйвером).
Далее мы можем задавать количество шагов, на которое мы хотим провернуть вал шагового двигателя.

Исходники программы драйвера TorgmatServer.

Исходники программы компьютера TorgmatClient.

 

Цикл статей:

  1. Подготовка оборудования для системы управления шаговыми двигателями
  2. Тестовое программное обеспечение для системы управления шаговыми двигателями