Pull to refresh

Arduino+Modbus+MasterScada

Reading time 2 min
Views 30K
Решил создать союз между 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 как модуль сбора данных и индикации на небольших объектах.

Если кому интересно могу описать обмен arduino + Delphi
Tags:
Hubs:
+8
Comments 13
Comments Comments 13

Articles