Решил создать союз между 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/
Добавить комментарий