Sie sind nicht angemeldet.

Werbung

Boote kaufen

Windstärken

Windstärkentabelle

Hallo Besucher, willkommen im Segeln-Forum! Hier kannst Du Dich registrieren, um unser Forum in seiner vollen Pracht genießen zu können! - Weitere Infos zur Registrierung - Login für Mitglieder -

Homberger

Seebär

Beiträge: 1 153

Wohnort: Ratingen

Bootstyp: Bavaria 30 Cruiser

Heimathafen: Buyshaven

Rufzeichen: PE3215

MMSI: 244010500

  • Nachricht senden

41

Dienstag, 23. Februar 2021, 07:25

Interessante Erkenntnisse! Sie bestärken mein Misstrauen in die von raymarine verwendeten Protokolle.


Hallo,

irgendwie geht das in die falsche Richtung.

Was soll Raymarine (und die anderen Hersteller) denn sonst machen. Es gibt keine standardisierten NMEA2000 PGNs zur Autopilotsteuerung.

Einzig der Vorwurf, die verwendeten PGNs nicht offenzulegen wäre ein valider Vorwurf. Aber auch da hat NMEA etwas mit zu tun. Die Hersteller haben sich per NDA verpflichted keine Details zur NMEA2000 Implementierung preiszugeben.

Viele Grüße
Andreas
------------
Meine Projekte auf GitHub (Link)

Homberger

Seebär

Beiträge: 1 153

Wohnort: Ratingen

Bootstyp: Bavaria 30 Cruiser

Heimathafen: Buyshaven

Rufzeichen: PE3215

MMSI: 244010500

  • Nachricht senden

42

Dienstag, 23. Februar 2021, 07:57

Hallo zusammen,

es ist ja nicht so, dass überhaupt nicht über die PGNs bekannt ist.
Mit diesen beiden Kommandos wäre es möglich, eine Route abzufahren.

Erst: Mode Auto setzen und dann den Kurs entsprechend der Route ändern

Viele Grüße
Andreas


void RaymarinePilot::SetEvoPilotMode(tN2kMsg &N2kMsg, uint8_t destinationAddress, RaymarinePilotModes mode) {
N2kMsg.SetPGN(126208UL);
N2kMsg.Priority = 3;
N2kMsg.Destination = destinationAddress;
N2kMsg.AddByte(1); // Field 1, 1 = Command Message, 2 = Acknowledge Message...
N2kMsg.AddByte(0x63);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0xf8);
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x01);
N2kMsg.AddByte(0x3b);
N2kMsg.AddByte(0x07);
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x04);

// 0x00 = standby, 0x40 = auto, 0x0100=vane, 0x0180=track
switch (mode) {
case PILOT_MODE_STANDBY:
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0x00);
break;
case PILOT_MODE_AUTO:
N2kMsg.AddByte(0x40);
N2kMsg.AddByte(0x00);
break;
case PILOT_MODE_WIND:
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0x01);
break;
case PILOT_MODE_TRACK:
N2kMsg.AddByte(0x80);
N2kMsg.AddByte(0x01);
break;
}

N2kMsg.AddByte(0x05);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0xff);

/*N2kMsg.Add3ByteInt(126208UL); // Field 2, commanded PGN 3 byte, LSB is transmitted first
N2kMsg.AddByte(0xf0 | 0x8 ); // Field 3, 0x8 = Do not change priority and field 4 is nmea reserved
N2kMsg.AddByte(1); // Field 5, 1 field/value pair
N2kMsg.AddByte(4); // Field 6, field 4 to be commanded
N2kMsg.Add4ByteUInt(0); // Field 7, value for first pair =0 for reset distance log.*/
}

void RaymarinePilot::SetEvoPilotCourse(tN2kMsg &N2kMsg, uint8_t destinationAddress, double heading, int change) {
double course = heading + change;
if ((course) >= 360) {
course -= 360;
} else if ((course) < 0) {
course += 360;
}

uint16_t courseRadials10000 = (uint16_t) (DegToRad(course) * 10000); //(newCourse * 174.53);


byte byte0, byte1;
byte0 = courseRadials10000 & 0xff;
byte1 = courseRadials10000 >> 8;

//01,50,ff,00,f8,03,01,3b,07,03,04,06,00,00

N2kMsg.SetPGN(126208UL);
N2kMsg.Priority = 3;
N2kMsg.Destination = destinationAddress;
N2kMsg.AddByte(1); // Field 1, 1 = Command Message, 2 = Acknowledge Message...
N2kMsg.AddByte(0x50);
N2kMsg.AddByte(0xff);
N2kMsg.AddByte(0x00);
N2kMsg.AddByte(0xf8);
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x01);
N2kMsg.AddByte(0x3b);
N2kMsg.AddByte(0x07);
N2kMsg.AddByte(0x03);
N2kMsg.AddByte(0x04);
N2kMsg.AddByte(0x06);
N2kMsg.AddByte(byte0);
N2kMsg.AddByte(byte1);
}
------------
Meine Projekte auf GitHub (Link)

Andreas29

Salzbuckel

Beiträge: 2 836

Wohnort: OWL-zu weit weg vom Wasser

Schiffsname: Farewell

Bootstyp: Friendship 28

Rufzeichen: Gibt´s nur auf Anfrage

MMSI: die auch

  • Nachricht senden

43

Dienstag, 23. Februar 2021, 08:58

Hi,

Andreas ich kann den TE schon verstehen. Warum kann ein alter ST2000 Pinnenpilot von Raymarine der stumpf mit einigen wenigen von NMEA 0183 auf Seatalk übersetzten Datensätzen gefüttert wird eine Route vom GPS vorgegeben abfahren und ein moderner Autopilot von Ray kann das nicht.

Die gesamten Routeninfos sind im GPS gespeichert und werden dort abgearbeitet, der AP bekommt immer nur die Infos für den aktuellen Abschnitt. Bei Wechsel zum nächsten erkennt der AP "oha nächster Abschnitt", dass muss ich am AP bestätigen und dann fährt er entsprechend den neuen XTE-Infos den nächsten Abschnitt ab. Warum kann das so stumpf der EVO nicht?
Das bisschen minimale "Intelligenz" im Bedienteil/Kurscomputer einzusparen und alles durch ein MFD machen zu lassen ist aus Sicht Raymarine verständlich, aus Sicht des Anwenders aber weniger.

Das hilft aber dem TE nicht weiter, weil das eine Entscheidung bei Ray über deren Philosophie ist.

Grüße

Andreas
Jahrzehntelang haben sie die Kriegsgeneration gefragt, wie das alles passieren konnte.
Jetzt glauben sie jeden Mist aus dem Internet, schimpfen auf die Lügenpresse, verachten das Politikerpack, pöbeln gegen Flüchtlinge,
verunglimpfen den Rechtsstaat und wählen eine "Alternative für Deutschland".
So passiert das!

Homberger

Seebär

Beiträge: 1 153

Wohnort: Ratingen

Bootstyp: Bavaria 30 Cruiser

Heimathafen: Buyshaven

Rufzeichen: PE3215

MMSI: 244010500

  • Nachricht senden

44

Dienstag, 23. Februar 2021, 10:14

Hallo,

es wurde ja vorher im Thread schon erwähnt, dass der AP wohl PGN129284 für den nächsten Punkt nutzt. Das passt auch zum Handbuch des p70. PGN129285 (Waypoint List) wird laut Handbuch nicht verwendet.

Man könnte das selbt mit einem kleinen Programm ausprobieren. Laut NMEA2000-Bibliothek ist der Aufbau wie folgt:

//*****************************************************************************
// Navigation info

void SetN2kPGN129284(tN2kMsg &N2kMsg, unsigned char SID, double DistanceToWaypoint, tN2kHeadingReference BearingReference,
bool PerpendicularCrossed, bool ArrivalCircleEntered, tN2kDistanceCalculationType CalculationType,
double ETATime, int16_t ETADate, double BearingOriginToDestinationWaypoint, double BearingPositionToDestinationWaypoint,
uint8_t OriginWaypointNumber, uint8_t DestinationWaypointNumber,
double DestinationLatitude, double DestinationLongitude, double WaypointClosingVelocity);

//*****************************************************************************

Dann hätte man die volle Kontrolle über den Aufbau der Nachricht.

Viele Grüße
Andreas
------------
Meine Projekte auf GitHub (Link)

cr838

Bootsmann

  • »cr838« ist der Autor dieses Themas

Beiträge: 123

Bootstyp: Westerly Fulmar

Heimathafen: Cuxhaven

  • Nachricht senden

45

Dienstag, 23. Februar 2021, 22:09

Moin,

jetzt muß ich mich notabene auch mal dazu äußern.

Grundsätzlich bin ich mit dem AP - was das Steuerverhalten angeht - hochzufrieden. Überhaupt kein Vergleich zu meiner alten Autohelm ST 2000; wäre auch unfair: Fluxgate gegen 9-Achs-Gyro!
Außerdem war der Einbau durch auch nach über 30 Jahren unveränderte Einbauorte in der Plicht (Hülse und Pin) supereinfach: neue Schubstange in die alten Befestigungen einsetzen (die neuen liegen vor mir auf dem Schreibtisch ...) und fertig.

Das es für die Kommunikation der Komponenten untereinander keine Standardsätze gibt ist schade, aber wohl den Partikularinteressen der Hersteller geschuldet. Es möchte sich ja nicht jeder in die Karten sehen lassen, was da so ausgetauscht wird. Insofern für mich keine Überraschung, wenn die NMEA so etwas verbietet. Wäre es offen, so würde es z.B. sofort Nachbauten p70 geben; insofern kann ich Ray da durchaus verstehen.

Wenn Ray zusätzliche Daten und Features vom MFD zum AP überträgt, um z.B. dessen Bedienung komfortabler zu machen, so ist dagegen überhaupt nichts zu sagen. Wenn über diese Schiene allerdings letztendlich die Nutzung eines Modus zumindest erschwert wird, dan ist das für mich nicht in Ordnung. Ich habe schließlich ein Komplettsystem gekauft, welche neben der "Serienmäßigen" Steuerung über Kompaß auch "Track" und "Windrichtung" beinhaltet. Das ich dafür Daten bereitstellen muß ist klar, aber nicht, daß ich dafür zwangsweise Geräte von Ray nehmen muß.
Dann sollte Ray so ehrlich sein und ein komplett eigenes Protokoll entwickeln.

Zwischenzeitlich habe ich mich nochmals mit den beiden von mir genannten Themen (Douwe's Plugin und Anthony's Problemen) eingehend beschäftigt. Danach stellen sich die Dinge doch etwas anders dar:
  1. Das von Douwe entwickelte Plugin für OpenCPN kommuniziert über das NGT-1 Gateway direkt via N2K mit den Geräten im STNG-Backbone. Das NGT-1 übersetzt nichts, sondern stellt lediglich eine Verbindung PC (via USB) <--> STNG-Backbone her.
  2. Das Plugin wird aktiviert, wenn an der p70 im "Auto"-Modus erneut "Auto" gedrückt wird. Daraufhin errechnet das Plugin mit den Daten von OpenCPN fortwährend neue Sollkurse zum nächsten WP und übermittelt die an dem Kurscomputer. Der nimmt an, das diese vom p70 kommem, also der Benutzer den Sollkurs manuell verändert hat. Somit wird eine Routenkontrolle ohne Umschaltung des AP in den "Track"-Modus realisiert. Clever!!
  3. Der Konverter YDWG-02 bei Anthony hat neben der Konvertierung 0183 <--> N2K auch besagten "Raw"-Modus analog dem NGT-1. Wenn letzterer aktiv war, hinkt natürlich dervon mir angestellte Vergleich zu meiner Konfiguration. Dann müßte OpenCPN aber auch N2K ausgeben. Ist das der Fall?
Tja, blöde Geschichte. Aber ich lasse mich da nicht entmutigen.

Übrigens: Diese ganzen Erkenntnisse hätte mir Yacht Devices auch mal erklären können. Weder in deren Anleitungen noch in der Email-Kommunikation wurde klar gesagt, was das YDNG 03 zusätzlich leisten muß (MFD teilweise emulieren), um die Routenkontolle zu realisieren. Hätte mir etliches an Zeit erspart.
Mast- und Schotbruch,

Jürgen

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »cr838« (23. Februar 2021, 22:52)


Andreas29

Salzbuckel

Beiträge: 2 836

Wohnort: OWL-zu weit weg vom Wasser

Schiffsname: Farewell

Bootstyp: Friendship 28

Rufzeichen: Gibt´s nur auf Anfrage

MMSI: die auch

  • Nachricht senden

46

Dienstag, 23. Februar 2021, 22:29

Moin,

Übrigens: Diese ganzen Erkenntnisse hätte mir Yacht Devices auch mal erklären können. Weder in deren Anleitungen noch in der Email-Kommunikation wurde klar gesagt, was das YDNG 03 zusätzlich leisten muß (MFD teilweise emulieren), um die Routenkontolle zu realisieren. Hätte mir etliches an Zeit erspart.


Na dafür haste ja uns :D

Grüße

Andreas
Jahrzehntelang haben sie die Kriegsgeneration gefragt, wie das alles passieren konnte.
Jetzt glauben sie jeden Mist aus dem Internet, schimpfen auf die Lügenpresse, verachten das Politikerpack, pöbeln gegen Flüchtlinge,
verunglimpfen den Rechtsstaat und wählen eine "Alternative für Deutschland".
So passiert das!

cr838

Bootsmann

  • »cr838« ist der Autor dieses Themas

Beiträge: 123

Bootstyp: Westerly Fulmar

Heimathafen: Cuxhaven

  • Nachricht senden

47

Dienstag, 23. Februar 2021, 22:57

Moin,

ja, dafür bin ich Euch auch sehr dankbar!
Auf die harte Tour zu lernen, ist zwar nicht angenehm, aber vermutlich auch nicht schädlich.
Wie schon meine Mutter zu mir sagte, wenn mal was nicht so lief, wie ich wollte: "Jürgen schimpf' nicht! Wer weiß, wozu es gut ist!"
Mast- und Schotbruch,

Jürgen

Der Beitrag von »cr838« (Dienstag, 23. Februar 2021, 23:09) wurde vom Autor selbst gelöscht (Dienstag, 23. Februar 2021, 23:33).

Homberger

Seebär

Beiträge: 1 153

Wohnort: Ratingen

Bootstyp: Bavaria 30 Cruiser

Heimathafen: Buyshaven

Rufzeichen: PE3215

MMSI: 244010500

  • Nachricht senden

49

Mittwoch, 24. Februar 2021, 07:39

Daraufhin errechnet das Plugin mit den Daten von OpenCPN fortwährend neue Sollkurse zum nächsten WP und übermittelt die an dem Kurscomputer. Der nimmt an, das diese vom p70 kommem, also der Benutzer den Sollkurs manuell verändert hat. Somit wird eine Routenkontrolle ohne Umschaltung des AP in den "Track"-Modus realisiert. Clever!!


Das ist doch genau das, was ich oben mit den beiden Routinen beschrieben hatte...
------------
Meine Projekte auf GitHub (Link)

cr838

Bootsmann

  • »cr838« ist der Autor dieses Themas

Beiträge: 123

Bootstyp: Westerly Fulmar

Heimathafen: Cuxhaven

  • Nachricht senden

50

Mittwoch, 24. Februar 2021, 13:02

Moin,

sorry, so genau hatte ich mir Deine C-Funktionen nicht angesehen.

Aber mal 'ne andere Frage: wenn ich es richtig verstanden habe, gibt OpenCPN NMEA 0183 'raus. Für die AP's der ST-Serie - ja wie bereits beschrieben - völlig ausreichernd und unproblematisch. Aber wie steht's mit den Evolution Systemen? Geht da nur was über die Douwes Plugin bzw. Deine Funktionen. also direkte Kommunikation via N2K und permanente Sollkursänderungen von außen? Oder evtl. doch was über 0183 <--> STNG Konverter (sieh meine Eingangsfrage)?
Mast- und Schotbruch,

Jürgen

Counter:

Gezählt seit: 4. Februar 2014, 08:39, nur eingeloggte Mitglieder
 Zugriffe:   Hits heute: 69   Hits gestern: 2 939   Hits Tagesrekord: 12 076   Hits gesamt: 6 316 561   Hits pro Tag: 2 449,35 
 Seitenaufrufe:   Klicks heute: 615   Klicks gestern: 19 196   Klicks Tagesrekord: 154 353   Klicks gesamt: 48 014 044   Klicks pro Tag: 18 618,26 

Kontrollzentrum