Jump to content

Diseqc 1.2 Motor: Wie?


duddsig

Recommended Posts

Nun ich hatte die Haken in der oberen rechten Ecke nicht gesetzt, danach ging es.

Ist sicher eine sehr gute Hilfe wenn man eine Schüssel von Hand auf einen SAT ausrichten will den man nicht kennt.

Vor allem das mit der Sonne ist sicher gut für Camper. Werde das Tool deshalb gut aufheben.

 

Allerdings ist der Rechner von der Satzentrale in der Lage mir direkt die Stellung der Motorachse auszugeben

(was ich ja für die Berchnung für DVBV benötige). Wenn er jetzt noch gleich die diseqc commands augeben täte, und das ganze

noch offline täte, täte man sagen können das ding wäre perfekt. Jetzt hat man halt das Problem, daß man immer I-Net braucht.

 

Aber man hat ja noch das alte DVB. Ist halt nur von der Bedienung her etwas kryptisch.

 

 

Gruß ddsg

Link to comment

Ich habe hier auf den neuen Testtreiber der 5er-Generation (5.0.0.12) umgestellt!

Im Gegensatz zur 5.0.0.6 funktioniert die DiSEqC - Motorsteuerung damit wieder, soweit ich es bisher (USALS im Osten, CommandString im Westen) probiert habe.

Link to comment

Ich finde nicht wirklich den Fehler in meiner Berechnung:

 

{$APPTYPE console}
program Calculator;

function Tan(const X: Extended): Extended;
begin
 result := Sin(X) / Cos(X);
end;

function ArcCos(const X: Extended): Extended;
begin
 result := ArcTan(Sqrt(1 - Sqr(x)) / x);
end;

function IntToHex(Value: Byte): string;
const
 Hex = '0123456789ABCDEF';
begin
 result := Hex[Value shr 4 + 1] + Hex[Value mod 16 + 1];
end;

function DiSEqCGotoX(Latitude, Longitude, SatLong: Double;
 out Azimuth, Elevation: Double): string;
const
 gotoXTable: array[0..9] of Byte = ($00, $02, $03, $05, $06, $08, $0A, $0B,
$0D, $0E);
var
 x: double;
 SatHourangle: double;
 tmp: integer;
 p1, p2: integer;
begin
 if satlong < 180 then
satlong := -satlong;// East

 azimuth := PI + arctan(tan((satlong - Longitude) * PI / 180) / sin(Latitude *
PI / 180));
 x := arccos(cos((satlong - Longitude) * PI / 180) * cos(Latitude * PI / 180));
 elevation := arctan((cos(x) - 0.1513) / sin(x));
 SatHourangle := 180 +
arctan((-cos(elevation) * sin(azimuth)) / (sin(elevation) *
cos(Latitude * PI / 180) - cos(elevation) *
sin(Latitude * PI / 180) * cos(azimuth))) * 180 / PI;

 azimuth := azimuth * 180 / PI;
 elevation := elevation * 180 / PI;

 tmp := round(abs(180 - SatHourangle) * 10);
 tmp := (tmp div 10) * $10 + gotoXTable[tmp mod 10];

 p2 := (tmp mod $0100);
 p1 := (tmp div $0100);

 if (SatHourangle < 180) then
p1 := p1 or $E0
 else
p1 := p1 or $D0;

 result := 'E0 31 6E ' + IntToHex(p1) + ' ' + IntToHex(p2);
end;

function GetValue(Value: string; Default: Double): Double;
var i: integer;
begin
 val(Value, result, i);
 if i <> 0 then result := Default;
end;

var
 Latitude, Longitude, SatLong, Azimuth, Elevation: Double;

begin
 Latitude := 51.0;
 Longitude := -11.0; // - is east
 Satlong := 19.2;

 if Paramcount = 3 then
 begin
Latitude := GetValue(Paramstr(1), Latitude);
Longitude := GetValue(Paramstr(2), Longitude);
Satlong := GetValue(Paramstr(3), SatLong);
 end;

 writeln(DiSEqCGotoX(Latitude, Longitude, SatLong,
Azimuth, Elevation));
 writeln('Azimut: ', Azimuth);
 writeln('Elevation; ', Elevation);

 readln;
end.

Calculator.zip

Link to comment

if (SatHourangle < 180) then

p1 := p1 or $E0 <1110>

else

p1 := p1 or $D0;<1101>

 

 

Ohne groß die Berechnung nachzuvollziehen:

Wo hast Du das ORen mit 0xD0 für die Westpositionen her?

 

0xE0 (als Flags?) für East lese ich imperativ auch aus meinen Ergebnissen,

die Westpositionen aus AltDVB erscheinen bei mir aber immer als reine Dez/Hex Wandlung ohne Nachbereitung.

 

Wenn das Command 0x6E nur eins der ersten beiden Bits (MSB tippe ich mal) oder die ersten drei Bits als Boolean für E/W auswertet dürfte das der Fehler sein!

Edited by Darwin
Link to comment
Ich finde nicht wirklich den Fehler in meiner Berechnung

..hmm, ich weiss nicht, was die calculator.exe bezwecken soll. Zumindest weiss ich nicht, wie man da was eingeben kann. Die werte für 19E hat ja nie jemand bestritten. Positionen im westen funktionieren nicht !!

 

Für den rotor ist alleine der stundenwinkel wichtig. Der basiert aber auf azimut und elevation. Wenn im westen dieselben werte wie im osten generiert werden, ist gleich am anfang was falsch. Für den azimut braucht man den differenzwinkel zwischen sat-longitude und der longitude des eigenen standorts. Der betrag der 1. berechnung wird bei ost-sats von von 180° subtrahiert und für west-sats addiert.

 

Um was sehen zu können, bedarf es eines logs. Ich kann zwar mit dem diseqc-analyzer die befehlen zu fuss bestimmen, aber das ist aufwendig. Zumindest habe ich festgestellt, was ich weiter vorne in diesem thread beschrieben habe.

Westpositionen sind eine wiederholung der ostpositonen. Z.B. kommt bei 45°E und 45°W dasselbe raw command raus.

Da sich nichts geändert hat, brauch ich auch nicht wieder zu checken..

 

@Darwin, das ORen mit 0xD0 für die Westpositionen kannst du auch bei altdvb beobachten. Allerdings nur für den STAB-motor. Das bedeutet, dass auch beim DVBViewer eine wahlmöglichkeit zwischen den fabrikaten hinzugefügt werden muss. Warum das so ist, weiss ich nicht. Muss man ja auch nicht unbedingt ;)

Link to comment

ja danke :) Damit kommt man der vorzeichenwurstelei langsam auf die spur ;)

 

östliche positionen (<180°) wird als negativ definiert. Das klappt auch soweit. Was muss man dann aber für westliche positionen (>180°) eingeben? Durch trial & error habe ich das nun herausgefunden. Man muss satlong negativ eingeben :)

 

Hier ein beispiel für den mittelpunkt des hackbartschen universums (Erfurt ;) ). Einmal für 30E und einmal für 30W.

 

Calculator 51.0 -11.0 30.0
E0 31 6E E1 50
Azimut:  1.56103455611073E+0002
Elevation;  2.89036957390317E+0001

Calculator 51.0 -11.0 -30.0
E0 31 6E D2 CE
Azimut:  2.28203153370823E+0002
Elevation;  2.01927333273270E+0001

 

..zumindest sehr gewöhnungsbedürtig und aus den inis so nicht herauszulesen.

Link to comment

..hatte ich vergessen. Mit einer kleinen änderung könnten auch die inis im progdvb-format verwendet werden.

 

jetzt:

 

if satlong < 180 then

satlong := -satlong;// East

 

geändert:

 

if satlong > 180 then

satlong := satlong-360;// West

satlong := -satlong

 

Der winkel bleibt ja gleich, egal ob man 360° addiert oder subtrahiert. Wieder am beispiel 30W (Hispasat):

Der ini heisst 3300.ini -> 330.0-360 = -30; anschliessend muss das vorzeichen wird für alle umgedreht werden. Dann müsste es sowohl für ost als auch für west stimmen.

Link to comment

Irgendwie verwirrend, daß die Vorzeichen-Relevanz für East/West bei Satposition (SatLong) und Schüsselposition (Longitude & Latitude) unterschiedlich formuliert wurde.

Solche Fallen verlangen immer große Sorgfalt bei der Bereitstellung der Parameter!

Link to comment
Calculator 51.0 -11.0 30.0
E0 31 6E E1 50
Azimut:  1.56103455611073E+0002
Elevation;  2.89036957390317E+0001

Calculator 51.0 -11.0 -30.0
E0 31 6E D2 CE
Azimut:  2.28203153370823E+0002
Elevation;  2.01927333273270E+0001

 

Hallo Derrick!!

 

Habe den Hackbartschen Calculator jetzt auch mal ausprobiert und die Ergebnisse mal für den Calculator und AltDVB gegenübergestellt.

(mit den Hackbartschen Koordinaten 51,0 und 11,0)

 

30° West Hispasat Calculator : E0 31 6E D2 CE ;)

30° West Hispasat AltDVB : E0 31 6E 02 CE :)

 

30,5° Ost Arabsat Calculator : E0 31 6E D2 D6 ;)

30,5° Ost Arabsat AltDVB : E0 31 6E E1 58 :)

 

Bei West fällt der Unterschied in der 4.Stelle von rechts auf. Bei Ost stimmt gar nichts mehr :wacko:

 

Habe probehalber für den Arabsat noch mal die Satzentrale und den Tachenrechner benutzt. Das Ergebnis der letzten 3Stellen

ist fast identisch mit AltDVB (?1 57).

 

Eventuell hilft das ja jemanden beim Interpretieren??

Link to comment
Mit der 3.9.2.0 klappt es nun!

 

Thx!

5°W über USALS: >>> 67 Sevices auf Anhieb, und das mit einer sehr schlecht eingestellten Anlage. :unsure:

Danke an alle die sich hier Gedanken gemacht haben.

Besten Dank an vor allem an Christian!!

Link to comment

Vielleicht die USALS - Lizenz-Bits?

Der SG2100 hat schließlich keine kostenpflichtige USALS-Zertifizierung... :unsure::tongue:

 

Es funktionieren bei meinem SG2100 aber beide Varianten (6E D* ** und 6E 0* **)

Edited by Darwin
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...