Merhabalar,
Arduino mega kullanarak autonics in tx4s-b4r termostatından rs485 ile haberleştirip veri çekmeye çalışıyorum.
Ancak sürekli olarak 226 hatası alıyorum . 226 timeout hatasıdır.
Yanlışım yada eksiğim nerede yardımlarınızı bekliyorum.
Kodum aşağıda mevcuttur.
#include <ModbusMaster.h>
#define MAX485_DE 2
#define MAX485_RE 3
// ModbusMaster nesnesi
ModbusMaster node;
void preTransmission()
{
digitalWrite(MAX485_RE, 1);
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_RE, 0);
digitalWrite(MAX485_DE, 0);
}
void setup() {
Serial.begin(9600); // Seri monitör
Serial1.begin(9600); // RS485 haberleşmesi için Serial1 (TX1: 18, RX1: 19)
// DE ve RE pinlerini ayarla
pinMode(MAX485_RE, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
digitalWrite(MAX485_RE, LOW); // Alım modu (RE = LOW)
digitalWrite(MAX485_DE, LOW); // Alım modu (DE = LOW)
Serial.println("Modbus Başlatılıyor...");
node.begin(1, Serial1); // 1: Slave ID (TX4S-B4R'yi kontrol edin)
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
uint8_t result;
result = node.readHoldingRegisters(0x03e8, 1);
// Alım moduna geç
digitalWrite(MAX485_RE, LOW); // Alım modu (RE = LOW)
digitalWrite(MAX485_DE, LOW); // Alım modu (DE = LOW)
if (result == node.ku8MBSuccess) {
uint16_t temperature = node.getResponseBuffer(0); // İlk buffer değerini al
Serial.print("Device found, temperature: ");
Serial.println(temperature / 10.0); // Ondalık sıcaklık değeri (10'a böl)
}
else {
Serial.print("ModBus Hata Kodu: ");
Serial.println(result);
}
delay(1000); // Bir sonraki okuma için bekleme
}