REchteck(nur x-wachsend) und Linie in Visu darstellen

CoDeSys123456

Level-1
Beiträge
35
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich habe ein weiteres Problem.

Und zwar möchte ich (Programm siehe in diesem Forum Codesys 2.3, mein letzter Eintrag) folgende zwei Funktionen in die Visu "implementieren".

a) eine Linie (schräger Linie durch die halbe Visu) mit einem fixen Punkt und einem variablen Endpunkt realisieren. Das heißt die Linie verändert somit an einem Punkt die x- und y-Richtung. (Ein ähnlichen Forenbeitrag hier im Fourm habe ich bereits gelesen, ist jedoch nicht das slebe meines ERrachtens

b) (wichtiger) Ein Quadrat (siehe blaues Rechteck mit 1 oder 2) das sich in x-Richtung fortbewegt (funktioniert) und gleichzeitgt die X-Länge des Quadrats verändern kann; jedoch nicht die y-Richtung (bis jetzt habe ich dies nur mit der Skalierung hinbekommen. Dadurch wird jedoch bei einem langen Rechteck der ganze Monitor blau,...


Wäre sehr dankbar über Eure Ratschläge, gerade im Bezug auf die Quadrate.

Danke und GRüße
 
Moin Moin,

ich hab mit der Codesys-Visu noch nicht so viel gemacht aber auf den ersten Blick drängt sich zum Quadrat die Option "Bewegung relativ" auf um die einzelnen Kanten zu verschieben.

Wie man den Bezugspunkt eines Objekts in dieser Visu verschiebt und ob das überhaupt geht, hab ich auf die Schnelle nicht herausgefunden.

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich habe ein weiteres Problem.

Und zwar möchte ich (Programm siehe in diesem Forum Codesys 2.3, mein letzter Eintrag) folgende zwei Funktionen in die Visu "implementieren".

a) eine Linie (schräger Linie durch die halbe Visu) mit einem fixen Punkt und einem variablen Endpunkt realisieren. Das heißt die Linie verändert somit an einem Punkt die x- und y-Richtung. (Ein ähnlichen Forenbeitrag hier im Fourm habe ich bereits gelesen, ist jedoch nicht das slebe meines ERrachtens

b) (wichtiger) Ein Quadrat (siehe blaues Rechteck mit 1 oder 2) das sich in x-Richtung fortbewegt (funktioniert) und gleichzeitgt die X-Länge des Quadrats verändern kann; jedoch nicht die y-Richtung (bis jetzt habe ich dies nur mit der Skalierung hinbekommen. Dadurch wird jedoch bei einem langen Rechteck der ganze Monitor blau,...


Wäre sehr dankbar über Eure Ratschläge, gerade im Bezug auf die Quadrate.

Danke und GRüße


(* wurde auf Beckhoff mit 7 Zoll Bildschirm ausprobiert*)

PROGRAM MAIN
VAR
(* Angaben fuer Screen 640x480 *)
_X_Offset:REAL:= -320; (* -320 - 320*) (*Bezogen auf Bildschirm Unten Links Untere linke Ecke x=-320;y=0*)
_Y_Offset:REAL:=0; (* 0 bis -480 *)
_Skalierung:REAL; (* 0 - 2000 in x Achse; 0 - 1500 in y Achse *) (*Linie ueber die Bildschirmbreite *)
_Winkel:REAL; (* 0 - Minus90 *)
_X_Value:REAL; (* x Koordinate*)
_Y_Value:REAL; (* y Koordinate*)
_Y_Value_Max:REAL:=100; (* um Linie zu skalieren *)

_winkel_PI:REAL;

END_VAR

(***********************************************)

(*Winkel*)
IF _X_Value > 0 OR _Y_Value > 0 THEN
_winkel_PI:=(ATAN(_Y_Value/_X_Value));
_Winkel:=_winkel_PI * (-1) * (360/(2*PI));
ELSE
_Winkel:=0;
END_IF;

(*Linienlaenge fuer die x1;y1 Koordinaten => Endpunkt Linie*)
_Skalierung:=( _Y_Value / SIN(_winkel_PI))* (1500/_Y_Value_Max) ;

(*************************************************************)


Das wird in Visu erledigt

Linie_Cfg.jpg


Irek
 
Mit Korrektur

PROGRAM MAIN
VAR
(* Angaben fuer Screen 640x480 *)
_X_Offset:REAL:= -330; (* -320 - 320*) (*Bezogen auf Bidschirm Unten Links Untere linke Ecke x=-320;y=1 fuer 1Pixel breite Linie*)
_Y_Offset:REAL:=-1; (* 0 bis -480 *)
_Skalierung:REAL; (* 0 - 2000 in x Achse; 0 - 1500 in y Achse *) (*Linie ueber die Bildschirmbreite *)
_Winkel:REAL; (* 0 - Minus90 *)
_X_Value:REAL; (* x Koordinate*)
_Y_Value:REAL; (* y Koordinate*)
_Y_Value_Max:REAL:=100; (* um Linie zu skalieren *)
_X_Value_Max:REAL:=100; (* um Linie zu skalieren *)
_winkel_PI:REAL;

END_VAR

(**************************************************)

(*Winkel*)
IF _Y_Value > 0 THEN
_winkel_PI:=(ATAN(_Y_Value/_X_Value));
_Winkel:=_winkel_PI * (-1) * (360/(2*PI));
_Skalierung:=( _Y_Value / SIN(_winkel_PI))* (1500/_Y_Value_Max) ;(*Linienlaenge fuer die x1;y1 Koordinaten => Endpunkt Linie*)
ELSE
IF _X_Value > 0 THEN(*Sonst keine Darstellung bei 0 Grad => y=0; x>0 *)
_Winkel:=0;
_Skalierung:=_X_Value*(1500/_X_Value_Max); (* Linie wird so lang wie Bildschirmhoehe bei _X_Value=100 *)
ELSE
_Winkel:=0;
_Skalierung:=1;
END_IF;
END_IF;
(*************************************************************)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
diesen Beitrag ist zwar schon 2 Jahren her aber ich würde gern wissen, ob das obigen Programm den Rechnteck auch wirklich skaliert denn ich habe das gleiche Programm bei mir im Programm eingefügt und der war ohne Erfolgt.

Könnte mir jemand bitte dabei helfen ?

mfg
Vista
 
Zurück
Oben