EL6021 Ansprechen

egor

Level-1
Beiträge
32
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag Community,

ich habe da ein Problem. Bin ganz neu in der SPS Welt und habe hier das Beckhoff System von mir.

Ich will eine Kommunikation zwischen SPS und einem µController realisieren. Der µController reagiert auf Zeichenbefehle wie z.B T_1_5 (er weiß was das bedeutet).

Meine Frage:
Wie kann ich das mit TwinCAT programmtechnisch lösen? Ich will einen String mit dem Inhalt 'T_1_5' runter zum µController senden. Die RS 484 Schnittstelle ist default eigenstellt, das passt auch soweit mit 9600 baud, 8/1 no pre. Und ich habe auch die ComLib.lib von beckhoff besorgt. Aber ich komme einfahc nicht weiter weil in Hilfen viel zu wenig drin steht.

Hoffe Ihr könnt mir helfen.

MfG
egor
 
Hallo Egor,

Das Kommando "T_1_5" ist wahrscheinlich ein µC spezifisches Kommando. Keine Ahnung was das bedeutet.

Zur Kommunikation:
Verwende aus der ComLib die Bausteine "SerialLineControl" zur Herstellung der Verbindung, und den Baustein "SendString" zum senden einens String, bzw. eines Kommandos über die Serielle Schnittstelle. Wie die Bausteine verwendet und Beschaltet werden, kannst Du hier nachlesen:

http://infosys.beckhoff.com/index.p...l/TcPlcLibSerCom_FB_SerialLineControl.htm&id=

http://infosys.beckhoff.com/index.p...com/html/TcPlcLibSerCom_FB_SendString.htm&id=

Gruß Scrat
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für Antwort, also bin ich auf dem richtigen weg. Habe mir die bausteine schon gestern angeschaut, und konnte erstmal ne Verbindung von Computer zu Computer herstellen. und auch nen string senden.

eine weitere frage:

kann man einen String irgendwie zerreißen?

also das ich sowas senden kann als ein String?

Hallo[Zeilenumbruch]
[Zeilenumbruch]
Welt[Zeilenumbruch]
[Zeilenumbruch]

darf das so ausschene
string := 'Hallo $0D$0A Welt $0D$0A'

oder wie wird das gemacht?
 
Hallo,

ja das sollte so in etwa funktionieren.
Ich würde für den Befehl CR '\r'
und für den Befehl LF '\n' verwenden.

Gruß Scrat
 
Kann mir einer weiterhelfen?

Ich habe hier folgendes Programm:

IF fokus_plus THEN
ststringtosend:= 'T_1_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF fokus_minus THEN
ststringtosend:= 'T_2_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF fern THEN
ststringtosend:='T_3_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF nah THEN
ststringtosend:='T_4_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF blende_auf THEN
ststringtosend:='T_5_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF blende_zu THEN
ststringtosend:='T_6_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF kreisen_rechts THEN
ststringtosend:='T_7_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF kreisen_links THEN
ststringtosend:='T_8_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF blende_auto THEN
ststringtosend:='T_9_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ELSIF blende_man THEN
ststringtosend:='T_10_5';
ststringtosend:= CONCAT (ststringtosend, EndofCode);
ststringtosend:= CONCAT (ststringtosend, EndofCode);
END_IF

IF stStringJustSend <> stStringToSend THEN
fbSendStringEl6021( (*FB "SendString" aufrufen*)
SendString:=stStringToSend , (*Eingngsvariable*)
TXbuffer:=El6021ComBufferOut); (*Sende Buffer*)
END_IF




Sobald ich eine Taste drücke, dann kommt auch der gewünschte text raus, nur ist das so. Dieser String wird die ganze zeit weiter gesendet.

Wie kann ich machen, damit er nur so lange gesendet wird, wie der schalter gedrückt wird?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
für den Stringvergleich :
Code:
IF stStringJustSend <> stStringToSend THEN
die entsprechende Vergleichsroutine benutzen und nicht '<>' ... Jedenfalls wäre das bei SCL der Weg ...

Gruß
LL
 
Hmm ich stehe schon wieder vor einem Problem.

Also ich will eine ID bei dem µController abfragen. Mit dem String 'ID', das klappt auch, ich bekomme dann z.b die 'ID 4' als antwort zurück.

Mein Problem ist jetz, wie kann ich es einrichten, dass er mir sagt.

WEnn ID 1, als antwort kommt, ist es dann Typ X und wenn ID 2, Typ y usw.
Es geht um Kamera Typen.

Und ist es möglich mit TwinCAT automatisch, gespriebene Programme anhand einer ID automatisch in die CPU zu laden? Also die CPU hat 5 verschiedene Programmer zu Steeuerung, mit minimal unterschiedlichen Parametern. und als Beispiel soll bei der ID 2, der Typ2 ermittelt werden, und somit auch das Programm 2 zur verfügung stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
meine Antwort ist eigentlich Steuerungs-unabhängig :
Wenn du mit mehreren unterschiedlichen datensätzen arbeiten willst, so solltest du die (nach meiner Meinung) auch alle gleichzeitig greifbar sein - vielleicht in einem ARRAY_of_STRUCT (oder wie auch immer). Mit der zurückkommenden Meldung baust du dir entweder einen Index auf dieses Array oder du durchsuchst die relevanten Stellen des Array's nach Übereinstimmung mit der Vorgabe und nimmst bei gefundenem Index die nachfolgenden Parameter für die weitere Be-/Verarbeitung ...

Gruß
LL
 
Zurück
Oben