Kommando String Senden an alte Hardware

Antworten
Lucky
Beiträge: 6
Registriert: Freitag 30. April 2010, 16:29

Kommando String Senden an alte Hardware

Beitrag von Lucky » Freitag 28. Mai 2010, 20:34

Hallo zusammen !

ich habe eine etwas kniffelige frage ;-)

Hintergrund ist: ich soll versuchen mehrere alte Benning Ladegeräte (Bj. 1985) mit Profilab anzusteuern.
Die Ladegeräte wurden bisher mit einer uhralten HP1000 gesteuert, die aber jetzt an Altersschwäche gestorben ist.
In den 90er Jahren hat bereits jemand begonnen ein DOS Programm im Pascal zu schreiben (Quellcode ist vorhanden), dies funktioniert auch, allerdings nur in sehr kleinem umfang und nur einem Gerät.

Die Kommunikation ist über RS485, das ist soweit auch kein problem, ich habe das alte DOS Progamm per DOS-Box 486er Emulator und MOXA CP134U Serial Karte auf einem modernen PC zum laufen bekommen.
Den Command String zum ersten ansprechen des Gerätes kann ich mit Serial Monitor auslesen.
auf dieses Kommando antwortet das Gerät wieder mit einem String der Messwerte und Statusmeldungen enthält.

zum Gerät gesended wird der String K01 M

jetzt habe ich versucht diesen String mit PL zum gerät zu senden, (mit COM String Senden und Empfangen) leider ohne erfolg !

hat evtl. jemand eine Idee was ich falsch gemacht haben könnte ?

ich bin keine großer Progammierer, und mit Pascal kenne ich mich erst recht nicht aus

hier eine stück aus dem Quellcode bei dem ich denke das er für die Kommunikation zuständig ist.
Der rote teil baut den String zusammen, und sendet ihn !

USES CRT, SERIAL, {PSEGLB, } HEXSTR;

TYPE { 3 Analog-input-types }
TAin = (U, { voltage: -40V..+40V }
I, { current: -50A..+50A }
T); { temperature: 0°K..473°K }
TADint = ARRAY[TAin] OF Integer;
TADreal = ARRAY[TAin] OF Real;

CONST { ASCII-definitions -------------- }
BS = #$08; { back-space }
CR = #$0D; { carriage-return }
LF = #$0A; { line-feed }
Blank = #$20;
DEL = #$7F; { delete }
NuKel = 273.15;
Dimension : ARRAY[TAin] OF Char = ('V', 'A', 'K');
ADmax = 4095;

TYPE
ConvType = ARRAY[TAin] OF RECORD
Z, N : Integer;
END;

CONST
PseNum : Byte = 1;
Errors : ARRAY[1..24] OF Integer =
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

VAR
InChar : Char;
Online : Boolean;
DebugFlag : Boolean;
selected_PSE : Byte;
PseAnswer : String;
C : TAin;
last_Dauer : LongInt;

CONST
TypTable : ARRAY[1..2] OF String =
(' 1 50 A 20 V',
' 2 200 A 20 V');
ConvTable : ARRAY[1..2] OF ConvType =
{ U I T }
(((Z : 1; N : 2), (Z : 5; N : 4), (Z : 5; N : 2)), { Typ 1 }
((Z : 1; N : 2), (Z : 5; N : 1), (Z : 5; N : 2))); { Typ 2 }


VAR
Conv : ConvType;
PseTyp : Byte;
L : Byte; { Lauf-Index für TypTable }

FUNCTION AD2Real(Value : Integer; Dimension : TAin) : Real;
BEGIN
WITH Conv[Dimension] DO
AD2Real := (Value * Z / N) * 0.01;
END;



FUNCTION Real2AD(Value : Real; Dimension : TAin) : Integer;
BEGIN
WITH Conv[Dimension] DO
Real2AD := Trunc(Value * 100 * N / Z);
END;



FUNCTION Xmax(Dimension : TAin) : Real;
BEGIN
WITH Conv[Dimension] DO
Xmax := AD2Real(ADmax, Dimension);
END;



PROCEDURE Command(CommandStr : String);
VAR
PseChar : Char;
PseAddrStr : String[4];
PseStr : String;
BEGIN
Str(PseNum, PseAddrStr);
IF Length(PseAddrStr) = 1
THEN PseAddrStr := '0' + PseAddrStr;
PseStr := 'K' + PseAddrStr + Blank + CommandStr;
WriteLn(PSE, PseStr);

{ WriteLn(PSE, 'K', PseAddrStr, Blank, CommandStr); {}
PseAnswer := '';
REPEAT
PseChar := Rx;
PseAnswer := PseAnswer + PseChar;
UNTIL PseChar = LF;
Online := (Length(PseAnswer) > 2)
{ Write(PseAnswer); {}
END;



{ ----- driver ----- }

TYPE
TRelay = (Pause, Charge, DisCharge);
VAR
RelayMode : TRelay;

PROCEDURE Relay(Mode : TRelay);
BEGIN
RelayMode := Mode;
CASE Mode OF
Pause : Command('O'); { Pause, Aus, Off }
Charge : Command('L'); { Laden }
DisCharge : Command('N'); { Entladen }
END;

END;

Lucky
Beiträge: 6
Registriert: Freitag 30. April 2010, 16:29

Re: Kommando String Senden an alte Hardware

Beitrag von Lucky » Samstag 5. Juni 2010, 13:51

hat sich erledigt, habs selber geschafft !

KAKTUS
Beiträge: 651
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Kommando String Senden an alte Hardware

Beitrag von KAKTUS » Sonntag 6. Juni 2010, 08:05

Prima, wenn möglich Ergebnis bitte hier uploaden.
stachlige Grüße, Kaktus

Antworten

Zurück zu „Thema RS232“