Как уже отмечалось в прошлой статье, драйвер это сервер, а компьютер - клиент.
Как уже отмечалось в прошлой статье, драйвер это сервер, а компьютер - клиент.
Программа драйвера (сервер)
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.
Цикл статей: