Vyčítání dat z BELu
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 1
- Registrován: stř led 18, 2023 8:19 am
- Lokalita: Přerov
Vyčítání dat z BELu
V první řadě děkuji p. Ing. Budinskému za informace a rady.
Zkonstruoval jsem modul pro vyčítání údajů z BEL regulátoru. (Regulátor MR4316AC NG do rozvaděče) BEL má na horní straně UART rozhraní vyvedené do konektoru RJ12 nebo na 4p šroubovací svorkovnici, která není součástí ale lze dopájet.
Přenosová rychlost 9600 Bd. Data se posílají každou sekundu.
Hlavní součástí převodníku je Arduino Nano, modul UART na RS485, optočlen 6N137, DC/DC na 5V a pár kondenzátorů.
Převodník je připojen přes svorku +5V a TX.
Na vstupu převodníku je optočlen s rezistorem, výstup optočlenu je zapojen na pin RX Arduino Nano.
Protože ATmega328p má jen jeden HW UART (BEL regulátor), tak modul RS485 je připojen na SW UART přes piny D2, D3.
Z převodníku lze data vyčítat přes RS485 ModbusRTU.
Pro prvotní testování jsem použil LAN Controller V4. Aktuálně data vyčítám do Siemens Loga přes USR-DR302.
Zatím mám LOGO v8.2, ale čekám na LOGO v8.4, které bude mít otevřené MQTT. Mělo by být v prodeji snad do měsíce.
Nejsem programátor, kód funguje ale neznamená to, že je to správně napsané. Za případné rady budu rád.
Použitá Arduino knihovna: https://github.com/CMB27/ModbusRTUSlave
Hodnoty pod Teplota2 jsou parametry regulátoru, které se nastavují pomocí tlačítka na regulátoru.
Vstupní a výstupní napětí je nutné vydělit 100.
Aktuální stav regulátoru:
0 - zapnutý AC výstup (režim 1)
1 - zapnutý DC výstup (režim 1)
2 - zapnutý DC výstup (režim 2)
3 - zapnutý AC výstup (režim 2)
4 - zapnutý AC výstup - spotřebič 1 (režim 3)
5 - zapnutý AC výstup - spotřebič 2 (režim 3)
6 - napájení spotřebiče z panelů (režim 4)
7 - napájení spotřebiče ze sítě (režim 4)
Zkonstruoval jsem modul pro vyčítání údajů z BEL regulátoru. (Regulátor MR4316AC NG do rozvaděče) BEL má na horní straně UART rozhraní vyvedené do konektoru RJ12 nebo na 4p šroubovací svorkovnici, která není součástí ale lze dopájet.
Přenosová rychlost 9600 Bd. Data se posílají každou sekundu.
Hlavní součástí převodníku je Arduino Nano, modul UART na RS485, optočlen 6N137, DC/DC na 5V a pár kondenzátorů.
Převodník je připojen přes svorku +5V a TX.
Na vstupu převodníku je optočlen s rezistorem, výstup optočlenu je zapojen na pin RX Arduino Nano.
Protože ATmega328p má jen jeden HW UART (BEL regulátor), tak modul RS485 je připojen na SW UART přes piny D2, D3.
Z převodníku lze data vyčítat přes RS485 ModbusRTU.
Pro prvotní testování jsem použil LAN Controller V4. Aktuálně data vyčítám do Siemens Loga přes USR-DR302.
Zatím mám LOGO v8.2, ale čekám na LOGO v8.4, které bude mít otevřené MQTT. Mělo by být v prodeji snad do měsíce.
Nejsem programátor, kód funguje ale neznamená to, že je to správně napsané. Za případné rady budu rád.
Použitá Arduino knihovna: https://github.com/CMB27/ModbusRTUSlave
Kód: Vybrat vše
const int BUFFER_SIZE = 32;
uint8_t buf[BUFFER_SIZE];
uint8_t VerComProt = 0;
uint8_t VelikostDat = 0;
uint8_t VerzeFirmw = 0;
uint8_t DruhZar = 0;
uint8_t VstupU1 = 0;
uint8_t VstupU2 = 0;
uint16_t VstupU = 0;
uint8_t VystupU1 = 0;
uint8_t VystupU2 = 0;
uint16_t VystupU = 0;
uint8_t Teplota1 = 0;
uint8_t Teplota2 = 0;
uint8_t RezimCin = 0;
uint8_t StavReg = 0;
uint8_t PeriodaPanelu = 0;
uint8_t PeriodaTermostatu = 0;
uint8_t MaxVystupU = 0;
uint8_t PrikonBoileru1 = 0;
uint8_t PrikonBoileru2 = 0;
uint8_t DenniSpotVody = 0;
uint8_t MinTeplotaVody = 0;
uint8_t MinUPanelu = 0;
#include <SoftwareSerial.h>
#include <ModbusRTUSlave.h>
const uint8_t rxPin = 3;
const uint8_t txPin = 2;
SoftwareSerial mySerial(rxPin, txPin);
ModbusRTUSlave modbus(mySerial);
uint16_t inputRegisters[18];
void setup() {
Serial.begin(9600);
modbus.configureInputRegisters(inputRegisters, 18); // unsigned 16 bit integer array of input register values, number of input registers
modbus.begin(2, 9600); // slave id, baud rate, config (optional)
}
void loop() {
// check if data is available
if (Serial.available() > 0) {
// read the incoming bytes:
int rlen = Serial.readBytes(buf, BUFFER_SIZE);
VerComProt = buf[1];
VelikostDat = buf[2];
VerzeFirmw = buf[3];
DruhZar = buf[4];
VstupU1 = buf[5];
VstupU2 = buf[6];
VstupU = ((VstupU2 << 8) + VstupU1) * 41.7;
VystupU1 = buf[7];
VystupU2 = buf[8];
VystupU = ((VystupU2 << 8) + VystupU1) * 41.7;
Teplota1 = buf[9];
Teplota2 = buf[10];
RezimCin = buf[11];
StavReg = buf[12];
PeriodaPanelu = buf[13];
PeriodaTermostatu = buf[14];
MaxVystupU = buf[15];
PrikonBoileru1 = buf[16];
PrikonBoileru2 = buf[17];
DenniSpotVody = buf[18];
MinTeplotaVody = buf[19];
MinUPanelu = buf[20];
}
inputRegisters[0] = VerComProt;
inputRegisters[1] = VelikostDat;
inputRegisters[2] = VerzeFirmw;
inputRegisters[3] = DruhZar;
inputRegisters[4] = VstupU;
inputRegisters[5] = VystupU;
inputRegisters[6] = Teplota1;
inputRegisters[7] = Teplota2;
inputRegisters[8] = RezimCin + 1;
inputRegisters[9] = StavReg;
inputRegisters[10] = PeriodaPanelu;
inputRegisters[11] = PeriodaTermostatu;
inputRegisters[12] = MaxVystupU * 41.7;
inputRegisters[13] = PrikonBoileru1 * 100;
inputRegisters[14] = PrikonBoileru2 * 100;
inputRegisters[15] = DenniSpotVody * 10;
inputRegisters[16] = MinTeplotaVody;
inputRegisters[17] = MinUPanelu * 4.17;
modbus.poll();
}
Vstupní a výstupní napětí je nutné vydělit 100.
Aktuální stav regulátoru:
0 - zapnutý AC výstup (režim 1)
1 - zapnutý DC výstup (režim 1)
2 - zapnutý DC výstup (režim 2)
3 - zapnutý AC výstup (režim 2)
4 - zapnutý AC výstup - spotřebič 1 (režim 3)
5 - zapnutý AC výstup - spotřebič 2 (režim 3)
6 - napájení spotřebiče z panelů (režim 4)
7 - napájení spotřebiče ze sítě (režim 4)
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 19 Odpovědi
- 1675 Zobrazení
-
Poslední příspěvek od kyocera
-
- 0 Odpovědi
- 645 Zobrazení
-
Poslední příspěvek od stano22
-
- 10 Odpovědi
- 1427 Zobrazení
-
Poslední příspěvek od cipis
-
- 4 Odpovědi
- 1248 Zobrazení
-
Poslední příspěvek od Solarnoob
-
-
Četnost vyčítání dat ze snímačů výkonu
od rva » » v HomeAssistant
Četnost vyčítání dat ze snímačů výkonu
- 1 Odpovědi
- 766 Zobrazení
-
Poslední příspěvek od PavlikT
-