Arduino+Modbus+MasterScada

от автора

Решил создать союз между arduino и Master Scada

Почему именно Master Scada? Отвечу — Master Scada работает через собственный OPC сервер имеющий множество настроек, что позволяет хорошо рассмотреть процесс опроса каналов, ну и он бесплатный на 32 канала)

Для теста воспользовался двумя ультразвуковыми дальномерами HC-04 и платой arduino uno.

Передачу осуществил по протоколу modbus

Чтобы воспользоваться в arduino библиотекой SimpleModbusSlaveV9 нужно её сперва установить

Скетч залитый в arduino:

//подключаем библиотеку
#include <SimpleModbusSlave.h>
//объявляем переменные
#define echoPin 2
#define trigPin 3
#define echoPin1 4
#define trigPin1 5

enum
{
ADC_VAL,
PWM_VAL,
HOLDING_REGS_SIZE=4 //вводим количество каналов

};

unsigned int holdingRegs[HOLDING_REGS_SIZE];

void setup()
{

modbus_configure(&Serial, 115200, SERIAL_8N2, 1, 2, HOLDING_REGS_SIZE, holdingRegs); //вводим скорость опроса

modbus_update_comms(115200, SERIAL_8N2, 1);

// для УЗ датчиков

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
}

void loop()
{
int duration, cm;

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;

int duration1, cm1;
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
cm1 = duration1 / 58;
delay(100);

// Полученные значения передаем в OPC
modbus_update();
holdingRegs[1] =cm1; //адрес 1
holdingRegs[2] = cm; //адрес 2
holdingRegs[3] = cm; //адрес 2

}

Далее настраиваем OPC
Выбираем номер порта и скорость опроса

Создаем устройство выставляем время ответа и период опроса

Добавляем Тэги, для каждого параметра свой тэг. Вводим в графе адрес значение соответствующее holdingRegs[ ]

и запускаем

Теперь переходим к настройке MasterScada

Соединяем OPC сервер со скадой рисуем мнемосхему для визуализации

И запускаем

Сбоев в работе обнаружено не было, в перспективе подключение датчиков с токовым выходом 4-20 мА и использование платформы arduino как модуль сбора данных и индикации на небольших объектах.

ссылка на оригинал статьи https://habrahabr.ru/post/278269/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *