Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Themen - cali

Seiten: [1]
1
oscat.lib fuer TwinCAT/CoDeSys / DIMM_I OUT beschreiben
« am: 04. August 2011, 22:58:32 »
Hallo,

in der Doku zu DIMM_I steht:
Zitat
OUT ist der Wert des Dimmers und wird als I/O Variable extern definiert. dies hat den Vorteil das der Wert des Dimmers jederzeit extern beeinflusst werden kann und auch nach einem Stromausfall wieder rekonstruiert werden kann

Wie programmiere ich das? In meinem Programm wandel ich den OUT-Wert von Byte in Word (Range_to_Wird) um und lege ihn auf einen analogen Ausgang. Das funktioniert ohne Probleme. Wenn ich jedoch davor dem Out-Wert einen Wert zuweise überschreibe ich damit die Funktionalität des DIMM_I. Ein ausschalten/regeln mittels Taster ist nicht mehr möglich.

Grüße
Cali


2
oscat.lib fuer TwinCAT/CoDeSys / ACTUATOR_2P
« am: 05. April 2009, 22:44:31 »
Hallo,
ich nutze derzeit noch Version 2.76 und wollte auf Version 3.04 updaten. In Version 2.79 hatte der ACTUATOR_2P einen Real-Eingang (0-1) nun einen vom Typ Byte (0-255). Ich nutze den CTRL_IN den ich mit einem PID_Regler verbunden habe. Den Ausgang des PID konnte ich direkt auf den Eingang des ACTUATOR_2P legen. Wie ist das nun gedacht? Muß ich einen PWM-Baustein verwenden oder Real nach Byte konvertieren? Vorher war das so einfach...

Grüße
Cali

3
Hallo,

Folgendes Problem. Mein Sensor möchte initialisiert werden, dabei sendet er mir alle Informationen wobei jedoch mein RingBuffer überläuft. Ich suche daher nach einer Möglichkeit mehr als 255 Zeichen zu empfangen, oder nach dem Initialisieren die Informationen abzufragen. Wie muß ich die Struktur ändern um den "SendString" zu überschreiben, wie kann ich neu senden (xStartSend) und die Antwort auswerten. Wahrscheinlich mit einem Zustandsautomaten... nur wie starte ich mehrfach COM1 und empfange dannn?


Hier ist was ich habe und was auch für eine Abfrage funktioniert:
(*---- Solange eine Anforderung gesendet wird -> den Empfangsbuffer löschen *)
IF xSendActive3 THEN  (* neue Anforderung wird gesendet *)
FOR i:= 0 TO 255 DO
ReceiveBuffer.Data[i] := 0; (* Empfangsbuffer löschen*)
END_FOR
ReceiveBuffer.Index := 0; (* Empfangsbuffer löschen*)
END_IF

(*--- Auffuf der Schnittstelle -----------------------------------------------------*)
(* Send and Receive for COM1 *)
COM1( bCOM_PORT_NR := 1,
cbBAUDRATE := BAUD_9600,
cbsBYTESIZE := BS_8,
cpPARITY := PARITY_NO,
csSTOPBITS := STOPBITS_1,
cfFLOW_CONTROL := NO_FLOW_CONTROL,
utRECEIVE_BUFFER := ReceiveBuffer,
ptSEND_BUFFER := ADR(SendString),
xINIT := xInitPort,
      xOPEN_COM_PORT := xOpenPort,
iBYTES_TO_SEND := LEN(SendString) +1,
xSTART_SEND := xSendActive3 );

(*---- Empfangsdaten in String kopieren ---------------------------------------------------------------------------------------*)
ptString := ADR(ReceiveBuffer.Data); (* Stringzeiger auf den Anfang des Empfangsbuffers *)
ReceiveBuffer.Data[ ReceiveBuffer.Index ] := 0; (* String terminieren *)
ReceiveString := ptString^;    (* String kopieren *)
(*-------------------------------------------------------------------------------------------------------------------------------------------*)
temp2:=STRING_TO_REAL(LIST_GET(44,1,ReceiveString));*)

temp:=LIST_GET(44,0,ReceiveString); (*Sensor*)
TEMPIST:=STRING_TO_REAL(LIST_GET(44,1,ReceiveString)); (*Temperatur in Real*)

Bin für jeden Tipp dankbar.
Cali

Seiten: [1]