Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - HAyMOB

Страницы: [1]
1
OPC UA/DA сервер arOPC / Re: arOPC+SimpleScada+SEGNETICS MATRIX
« : 01 Февраля 2025, 21:52:32 »
Пришлось ставить LECTUS OPC. На нем всё настроил, работает.

2
OPC UA/DA сервер arOPC / arOPC+SimpleScada+SEGNETICS MATRIX
« : 28 Января 2025, 00:44:25 »
Здравствуйте Господа. Пробовал кто подключить MATRIX по MB TCP\IP? Ни в какую не хочет. Может у кого есть пример настроек проекта в SMLogic и OPC?

3
Ваши вопросы / Re: Simple-Scada и Arduino
« : 05 Марта 2016, 23:12:48 »
Неужели никто не подскажет? В примере админа регистрируются цифровые пины, но примера работы с ними нет(((
Пример (переписал местный для теста) для цифровых выходов (НЕ ШИМ) + проект для СКАДы, может потом кому понадобится...

Код: (c++)
#include <OPC.h>
#include <Bridge.h>
#include <Ethernet.h>
#include <SPI.h>

// это переменная для работы с OPC
OPCSerial aOPCSerial;

// Цифровые
int D0 = 0;
int D1 = 1;
int D2 = 2;
int D4 = 4;
int D7 = 7;
int D8 = 8;
int D12 = 12;
int D13 = 13;

// Цифровые ШИМ (или PWM)
int D3 = 3;
int D5 = 5;
int D6 = 6;
int D9 = 9;
int D10 = 10;
int D11 = 11;

// Аналоговые входа
int AI0 = 0;
int AI1 = 1;
int AI2 = 2;
int AI3 = 3;
int AI4 = 4;
int AI5 = 5;

// Это пример объявления виртуальной переменной, которая будет видна в
// Simple-Scada и её значение будет равно 99
byte MyVirtualItem(const char *itemID, const opcOperation opcOP, const byte value){
  return 99;
}


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Далее описаны процедуры которые описывают работу с Цифровыми выходами

int D7_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D7, value);
  }
   
  return digitalRead(D7);
}

int D8_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D8, value);
  }
   
  return digitalRead(D8);
}

int D12_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D12, value);
  }
   
  return digitalRead(D12);
}

int D13_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D13, value);
  }
   
  return digitalRead(D13);
}

int D4_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D4, value);
  }
   
  return digitalRead(D4);
}

int D2_Item(const char *itemID, const opcOperation opcOP, const int value){
  // если Simple-Scada хочет записать новое значение
  if (opcOP == opc_opwrite) {
    digitalWrite(D2, value);
  }
   
  return digitalRead(D2);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Далее описываются процедуры для чтения значений Аналоговых входов

int AI0_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI0);
}

int AI1_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI1);
}

int AI2_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI2);
}

int AI3_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI3);
}

int AI4_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI4);
}

int AI5_Item(const char *itemID, const opcOperation opcOP, const int value){
  return analogRead(AI5);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


void setup()
{
  Serial.begin(57600);
 
  // ОБЯЗАТЕЛЬНО!
  aOPCSerial.setup();

  // для примера объявляем виртуальный тег, который всегда = 99
  aOPCSerial.addItem("MyVirtualItem", opc_readwrite, opc_byte, MyVirtualItem);

  //регистрируем цифровые для Simple-Scada, и даем им имена D2, D4... и так далее
  // эти имена нужно указывать в Simple-Scada в качестве Адреса
  aOPCSerial.addItem("D2", opc_readwrite, opc_int, D2_Item);
  aOPCSerial.addItem("D4", opc_readwrite, opc_int, D4_Item);
  aOPCSerial.addItem("D7", opc_readwrite, opc_int, D7_Item);
  aOPCSerial.addItem("D8", opc_readwrite, opc_int, D8_Item);
  aOPCSerial.addItem("D12", opc_readwrite, opc_int, D12_Item);
  aOPCSerial.addItem("D13", opc_readwrite, opc_int, D13_Item);

  // регистрируем аналоговые входа для Simple-Scada, называя их AI0, AI1... и так далее
  //  эти имена нужно указывать в Simple-Scada в качестве Адреса
  aOPCSerial.addItem("AI0", opc_read, opc_int, AI0_Item);
  aOPCSerial.addItem("AI1", opc_read, opc_int, AI1_Item);
  aOPCSerial.addItem("AI2", opc_read, opc_int, AI2_Item);
  aOPCSerial.addItem("AI3", opc_read, opc_int, AI3_Item);
  aOPCSerial.addItem("AI4", opc_read, opc_int, AI4_Item);
  aOPCSerial.addItem("AI5", opc_read, opc_int, AI5_Item);
 
  pinMode(D2, OUTPUT);
  pinMode(D4, OUTPUT);
  pinMode(D7, OUTPUT);
  pinMode(D8, OUTPUT);
  pinMode(D12, OUTPUT);
  pinMode(D13, OUTPUT);
}

void loop()
{
  // ОБЯЗАТЕЛЬНО! Выполняем OPC-команды в цикле
  aOPCSerial.processOPCCommands();
}

Страницы: [1]