-> Hier kostenlos registrieren
Hallo liebe Forumsmitglieder,
ich habe mich nun auch frisch hier angemeldet, da ich mit einer Problematik nicht so richtig weiterkomme. Die Beckhoff Dokumentation bzw. im Forum hier habe ich dazu nichts direkt gefunden.
Ich arbeite seit 4 Monaten mit einem Beckhoff BX9000. Programmiert wird jetzt aktuell mit Twincat 2.11 (Build 2241).
Mein Anliegen ist es ein externes Stromnetzgerät (TopCon Quadro der Firma Regatron) mit Hilfe von RS232 zu steuern. Hierzu bietet Regatron ein LowLevel-Protocol an. Hierzu war meine Idee über einen String die benötigten Anfragen zu Senden bzw. Auszuwerten.
Ein Beispielstring wäre z.B. A5 04 E5 10 85 50 00.
Ich habe aber bereits Probleme bei der Einrichtung von der RS232-Schnittstelle. Ich wollte ein Beispiel programmieren und über die PC-Com-Schnittstelle und HTerm die gesendeten Daten auslesen:
Zunächste habe ich die TCSerialCommunication Bibliotheken installiert. Dadurch habe ich ja Zugriff auf die ComLib.
Über die Beckhoff Dokumentation BX9000de.chm habe ich dann ein Beispiel zur Seriellen Kommunikation mit Hilfe der "TcComPortBX.lbx" gefunden:
Dieses lies sich auch über PLC einwandfrei übersetzen und starten. Dabei erschien auch niemals der ErrorCode i= 100, 101 oder 102.
Nur leider konnte ich über HTerm am Rechner nichts empfangen. Die Baudraten waren beide auf 9600 gesetzt.
Muss ich über den Systemmanager bei den Klemmenbelegungen noch irgendetwas ändern?
Da finde ich nur unter E/A-Geräte unter "Verschiedenes" für den BX nur "Serial Slave BC8150"
Die Beckhoff Dokumentation hilft mir nicht so richtig weiter.
Ich hoffe mir kann jemand weiterhelfen.
Mit freundlichen Grüßen,
Forest
ich habe mich nun auch frisch hier angemeldet, da ich mit einer Problematik nicht so richtig weiterkomme. Die Beckhoff Dokumentation bzw. im Forum hier habe ich dazu nichts direkt gefunden.
Ich arbeite seit 4 Monaten mit einem Beckhoff BX9000. Programmiert wird jetzt aktuell mit Twincat 2.11 (Build 2241).
Mein Anliegen ist es ein externes Stromnetzgerät (TopCon Quadro der Firma Regatron) mit Hilfe von RS232 zu steuern. Hierzu bietet Regatron ein LowLevel-Protocol an. Hierzu war meine Idee über einen String die benötigten Anfragen zu Senden bzw. Auszuwerten.
Ein Beispielstring wäre z.B. A5 04 E5 10 85 50 00.
Ich habe aber bereits Probleme bei der Einrichtung von der RS232-Schnittstelle. Ich wollte ein Beispiel programmieren und über die PC-Com-Schnittstelle und HTerm die gesendeten Daten auslesen:
Zunächste habe ich die TCSerialCommunication Bibliotheken installiert. Dadurch habe ich ja Zugriff auf die ComLib.
Über die Beckhoff Dokumentation BX9000de.chm habe ich dann ein Beispiel zur Seriellen Kommunikation mit Hilfe der "TcComPortBX.lbx" gefunden:
Code:
PROGRAM MAIN
VAR
(* EXAMPLE - BRIDGE between PIN 7 and 8 from X01 COM 2 Port *)
fb_COMPortOpen_1 : FB_COMPortOpen;
stCOMConfig_1 : ST_COMConfig;
hCOM : WORD;
Result_R : INT;
Result_W : INT;
Var_M : ARRAY[0..9] OF BYTE:=11,22,0,33,0(6);
Var_R : ARRAY[0..9] OF BYTE;
Value : INT;
Counter_V : BYTE; (* It is all OK, this value counts up *)
i : INT;
i_k : INT;
fbTimer : TON;
END_VAR
stCOMConfig_1.cbRxBufferLen :=300;
stCOMConfig_1.cbTxBufferLen :=300;
stCOMConfig_1.dwMode :=0;
stCOMConfig_1.BaudRate :=9600;
stCOMConfig_1.eCommPort :=COM2;
stCOMConfig_1.eDataBits:=EIGHT_DATABITS;
stCOMConfig_1.eParity:=EVEN;
stCOMConfig_1.eStoppBits:=ONE_STOPPBIT;
CASE i OF
(* Open Port *)
0: fb_COMPortOpen_1(bOpen:=TRUE , stCOMConfig:=stCOMConfig_1 );
IF NOT fb_COMPortOpen_1.bBusy THEN
IF NOT fb_COMPortOpen_1.bError THEN
hCOM:=fb_COMPortOpen_1.iHandle ;
i:=i+1;
ELSE
i:=100;
END_IF
END_IF
(* Write data*)
1: fbTimer(IN:=FALSE);
Result_W:=F_COMPortWrite(hCom, 4, ADR(Var_M[0]));
IF Result_W>0 THEN
i:=i+1;
Var_M[2]:=Var_M[2]+1;
ELSE
i:=101;
END_IF
(*Receive data*)
2: Result_R:=F_COMPortRead(hCom, 100, ADR(Var_R[Value]));
IF Result_R<>0 THEN
Value:=Result_R+Value;
END_IF
IF Value>=4 THEN
FOR i_k:=0 TO Value DO (*Check protocol*)
IF Var_R[i_k-4]=11 AND Var_R[i_k-3]=22 AND Var_R[i_k-1]=33 THEN
Counter_V:=Var_R[i_k-2];
i:=1;
Value:=0;
END_IF
END_FOR
END_IF
fbTimer(IN:=TRUE,PT:=t#1s); (*Watchdog receive*)
IF fbTimer.Q THEN
fbTimer(IN:=FALSE);
i:=102;
END_IF
100: ; (*ERROR open port*)
101: ; (*ERROR send data*)
102: i:=1; (*WD ERROR no data receive*)
END_CASE
Dieses lies sich auch über PLC einwandfrei übersetzen und starten. Dabei erschien auch niemals der ErrorCode i= 100, 101 oder 102.
Nur leider konnte ich über HTerm am Rechner nichts empfangen. Die Baudraten waren beide auf 9600 gesetzt.
Muss ich über den Systemmanager bei den Klemmenbelegungen noch irgendetwas ändern?
Da finde ich nur unter E/A-Geräte unter "Verschiedenes" für den BX nur "Serial Slave BC8150"
Die Beckhoff Dokumentation hilft mir nicht so richtig weiter.
Ich hoffe mir kann jemand weiterhelfen.
Mit freundlichen Grüßen,
Forest