Audac SMA350 Endstufe

Hey Leute,

ich hab mir für meine Hausinstallation eine Endstufe der Marke Audac zugelegt.
Leider erschließt sich mir mal wieder nicht wie die Endstufe die rs232 Befehle übertragen haben will.

Link zum Manual
wenn der nicht klappt dann hier:

Leider ist das ne pdf und ich weiß nicht wie ich dazu einen direkten link mache aber egal.

Versucht habe ich den Beispiel befehl zu übertragen mit:

Serial.print ("#|Q001|web|SV01|30|U|return");  
Serial.print("237C513030317C5765627C535630317C33307C313262317C0D0A");

bestimmt kann man den hexa Code auch irgendwie so senden mit

Serial.print (0x23);
Serial.print (0x7C); usw..

aber da bin ich ewig beschäftigt und glaube nicht, dass das die Lösung ist oder doch?

Ich brauch eure Hilfe

MFG Jonas Zieker

Was willst du denn damit machen?
Was genau ist deine Frage?

Lieben Gruß,
Chris

Die entstufe ist über rs232 steuerbar. die codes stehen im Manual.

Dieser hier ist als Beispiel aufgeführt

Using the commands
The SMA and SMQ amplifiers have an RS-232 communication port which can control the
standard operation functions of the amplifier as further described in this manual.
It must be configured with 19200 baud, 8 data bits, 1 stop bit, no parity
Command overview
Startsymbol|destination|source|command|argument’s|checksum|stopsymbol
Example: Set volume output 1 to -30dB
ASCII: #|Q001|web|SV01|30|U|return
HEX: 237C513030317C5765627C535630317C33307C313262317C0D0A
Important:

  • The address of the SMA or SMQ is fixed at Q001.
  • The checksum is CRC-16 excluding the ‘#’. You can replace the checksum with
    ‘U’, this is always accepted as checksum.
  • return = 0x0d 0x0a
  • source address has a maximum length of 4 characters and cannot contain “|” or
    “#”

Meine Frage ist, wie ich das mit dem Arduino sende.

Der Link funktioniert leider nicht.
Hier ein funktionierender Link zum Manual.

Zum Thema:
So funktioniert das nicht:

Serial.print ("#|Q001|web|SV01|30|U|return");
Serial.print("237C513030317C5765627C535630317C33307C313262317C0D0A");

Das ist zwar im Manual so beschrieben, aber das ist eine sehr "unglückliche" Beschreibung.
Es sollte in etwa so funktionieren:

Serial.write(0x23);
Serial.write(0x7C);
Serial.write(0x51);
...
Serial.write(0x0A);

oder

Serial.println("#|Q001|web|SV01|30|U|");

also das "return" darf nicht mitgesendet werden, sondern damit sind die Endzeichen gemeint.

Ich würde senden:

Serial1.print ("#|Q001|web|SV01|30|U|\r\n");

beim Mega. Ob softserial 19200 Baud schafft, weiß ich nicht. Meist wird bei der von 9600 ausgegangen.

Achtung, das sind keine TTL-Pegel. Du brauchst einen Wandler.

Gruß Tommy

Und beachte bitte:
RS232 ist eine serielle Schnittstelle, die du nie direkt an den Arduino anschließen darfst.
Die höheren Spannungen werden deinen Arduino zerstören.
Also gehört ein serieller RS232-Adapter dazwischen.
Und verwende nicht die Pins D0 und D1 dazu, diese werden vom USB-Serialwandler benutzt. Zumindest auf dem Uno und Nano.

Lies dir die Dokumentation zur seriellen Schnittstelle des Arduino durch:
Serielle Kommunikation

Tommy56:
..... Ob softserial 19200 Baud schafft, weiß ich nicht. Meist wird bei der von 9600 ausgegangen......

SoftwareSerial schafft das.
Allerdings bin ich mir bei den übrigen Parametern nicht sicher.

HotSystems:
SoftwareSerial schafft das.
Allerdings bin ich mir bei den übrigen Parametern nicht sicher.

Danke für die Klarstellung bei Softserial.
Die Parameter (Beispiel) sollten stimmen, wenn das Manual stimmt.

Für die verschiedenen Kommandos muss man halt mehrere Serial.print kombinieren.

Gruß Tommy

Leider Funktionieren beide Varianten von HotSystems und uxomm nicht :confused:

char CMD=0;
boolean UT1=false;

void setup() {
Serial1.begin (19200);
Serial.begin (19200);
}

void loop() {

if (UT1==false)
{
  Serial1.print ("#|Q001|web|SV01|30|U|\r\n");
  delay(5000);
Serial1.write(0x23);  //1
Serial1.write(0x7C);  //2
Serial1.write(0x51);  //3
Serial1.write(0x30);  //4
Serial1.write(0x30);  //5
Serial1.write(0x31);  //6
Serial1.write(0x7C);  //7
Serial1.write(0x57);  //8
Serial1.write(0x65);  //9
Serial1.write(0x62);  //10
Serial1.write(0x7C);  //11
Serial1.write(0x53);  //12
Serial1.write(0x56);  //13
Serial1.write(0x30);  //14
Serial1.write(0x31);  //15
Serial1.write(0x7C);  //16
Serial1.write(0x33);  //17
Serial1.write(0x30);  //18
Serial1.write(0x7C);  //19
Serial1.write(0x31);  //20
Serial1.write(0x32);  //21
Serial1.write(0x62);  //22
Serial1.write(0x31);  //23
Serial1.write(0x7C);  //24
Serial1.write(0x0D);  //25
Serial1.write(0x0A);  //26
UT1=true;
}

if (Serial.available () >0) {
  CMD = Serial1.read();
  Serial.print (CMD);
  
}

} 
    
/*
23  1
7C  2
51  3
30  4
30  5
31  6
7C  7
57  8
65  9
62  10  
7C  11
53  12
56  13
30  14
31  15
7C  16
33  17
30  18
7C  19
31  20
32  21
62  22
31  23
7C  24
0D  25
0A  26
*/

Das man kein Nullmodem kabel benötigt bin ich mir sicher, da ich bei einem vorherigen versuch bereits ein Rückmeldung bekommen habe. Also ist RX und TX definitiv richtig angeschlossen.

Habt ihr sonst noch Ideen.

und keine Sorge ich Arbeite öfters mit RS232 einen TTL Konverter verwende ich selbstverständlich auch.

Also TX von Arduino/Wandler muss schon auf RX vom Verstärker und umgekehrt. Oder habe ich Dich falsch verstanden und das ist schon so?

Gruß Tommy

Ja das ist schon so