Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 10 von 10

Thema: Objektbewegung visualisieren

  1. #1
    Registriert seit
    05.10.2006
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    ich muss eine Gruppe von rechts nach links und wieder zuruecklaufen lassen, unter bestimmten Bedingungen.
    Es gab schon mal ein thema in aehnlicher weise aber ich habe von vbs noch weniger ahnung als von c und komme deshalb nicht so zurecht.
    ein greifer soll von rechts nach links laufen, wenn dafuer das signal aus der sps kommt. mit folgendem skript hab ich mal probiert. da es aber immer nur einmal ausgefuehrt wird, bei variablenaenderung, kommt keine bewegung zustande. mit einer while-schleife bin ich hier auch gescheitert.
    eigenschaft linienfarbe:
    #include "apdefap.h"
    long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
    long lSchrittweite;
    long lEndPos;
    long lLeft;
    lSchrittweite =80; // Angabe in Pixel
    lEndPos = 80; // Angabe in Pixel
    // Die aktuelle Position auslesen
    lLeft = GetLeft(lpszPictureName,lpszObjectName);
    if( lLeft > lEndPos )
    {
    SetLeft(lpszPictureName,lpszObjectName, lLeft - lSchrittweite);
    }
    return CO_BLACK;
    }
    nach erreichen der endlage und nachdem ein teil abgeladen wurde soll der greifer wieder zurueckfahren. als signale stehen mir die ausgaenge fuer links- und rechtsbewegung sowie die endlagen als eingaenge zur verfuegung (WinCC 6,S7-300,MPI).
    wie gehe ich am besten vor? habe ich einen falschen ansatz gewaehlt?
    vielen dank fuer eure hilfe.
    Geändert von Spanier (23.10.2006 um 04:10 Uhr)
    Zitieren Zitieren Objektbewegung visualisieren  

  2. #2
    Registriert seit
    22.09.2006
    Ort
    Bodenseeraum
    Beiträge
    1.022
    Danke
    61
    Erhielt 136 Danke für 122 Beiträge

    Beitrag

    Hi,
    Script bei Wertänderung bringt hier nichts, denke ich. Ich würde
    eine Aktion (z.B.1 Sek. Takt) implementieren, die zyklisch den Script aufruft, und je nach Signal und Position bewegt sich das Ding.
    Nachteil: Performance. Abhilfe: Im Script kann man zuerst abfragen, ob der Greifer überhaupt läuft(binär), falls nicht: return und fertig.

    Gruss: Vladi
    ______________________________________
    relax, take it easy
    Zitieren Zitieren Objekt Bewegung  

  3. #3
    Spanier ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank, das klappt schon mal.
    Jetzt stehe leider vor einem weiteren Problem. Ich moechte ein Rechteck um ca. 15 Grad neigen und dann simulieren, dass dieses "Paket" eine Rutsche runterfaehrt. Aber Drehungen funktionieren anscheinend nur bei Vorgaben aus der WinCC Bibliothek. Ausserdem kann man dann wahrscheinlich nicht einfach mit der X-Y-Position herumspielen.
    Hat das schon jemand gemacht und kann mir einen Tipp zur Realisierung geben?
    Weiterhin will ich eine Linie im Halbkreis rotieren lassen. Kann man so etwas realisieren?
    Bin fuer jeden Tipp dankbar.

  4. #4
    Registriert seit
    23.08.2004
    Beiträge
    565
    Danke
    73
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Hallo... Wenn du die in WinCC vorhandenen Linien Polygon usw verwendest, gibt es unter Geometrie das Attribut Rotationswinkel. Dieses kannst du ja über ein C Funktion dynamisieren (SetRotationAngle)!! Bischen ne fummelei aber sollte funktionieren

  5. #5
    Spanier ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    danke die rotation funktioniert wunderbar.
    leider habe ich nun das problem, dass ich zuviele zyklische trigger habe die mein system belasten. da ich viele bewegungen simuliere, kann ich auch nicht den trigger auf variablenaenderung einstellen. oder gibt es die moeglichkeit eine interne variable anzulegen, die meinen zyklischen trigger ersetzt. hab leider zu wenig ahnung davon. vielleicht kann mir jemand einen tipp zur realisierung geben oder einen komplett anderen weg aufzeigen.
    vielen dank.

  6. #6
    Spanier ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hab mir ein global script erstellt und mit meinen minimalen c-kenntnissen mal versucht einen trigger bzw. an/aus in eine variable zu schreiben. das folgende script rufe ich mit einem standardzyklus auf:

    #include "apdefap.h"
    int gscAction( void )
    {
    #define TAG1 "TEST"
    int i,j;
    while(TRUE)
    {
    SetTagBit(TAG1,TRUE);
    for(i=1;i<=5000;i++)
    {
    if(i==5000)
    {
    SetTagBit(TAG1,FALSE);
    }
    }
    for(j=1;j<=5000;i++);
    }
    return 0;
    }

    leider ist das resultat noch nicht das gewuenschte. ich habe mir die variable mal angeschaut, da ist aber kein "blinken" zu sehen. weiss allerdings auch nicht welche werte ich am besten fuer die zaehlschleife verwenden soll. globalscript runtime sagt, dass die aktion angemeldet ist, aber hat keinen aktualisierungsabstand. was mache ich falsch?
    wenn ich mich recht erinnere habe ich gelesen, dass man keine endlosschleife im script verwenden sollte. dann muesste ich die sache anders loesen.
    vielleicht kann mir diesmal jemand weiterhelfen.
    dankeschoen.
    Geändert von Spanier (20.11.2006 um 04:52 Uhr)
    Zitieren Zitieren neuer versuch  

  7. #7
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hi,

    zur animation benutze ich die zustandsanzeige, ich habe mal ein beispielprojekt auf www.lipro.de/animation.zip gestellt.
    leider ist es etwas ruckelig, da ich normaleweise ein timer-ocx für lineare bewegungen einsetze und ich nicht weis, ob in deinem projekt fremd-ocx
    zugelassen sind, deswegen habe ich ein globalscript eingesetzt.

    WinCC 6.0

  8. #8
    Registriert seit
    13.03.2006
    Beiträge
    428
    Danke
    5
    Erhielt 43 Danke für 43 Beiträge

    Standard

    Mit:
    http://pvbrowser.org

    Installation:###############################
    Download http://pvbrowser.de/pvbrowser/tar/pvb.tar.gz

    Windows:
    Unzip pvb.tar.gz in Zielverzeichnis
    Im Zielverzeichnis Setup.bat dopplet clicken

    Linux:
    Verifizieren, dass die Qt4 Libraries installiert sind (Bei SuSE 10.1 Paket qt)
    tar -zxvf pvb.tar.gz
    cd pvb
    su
    ./install.sh
    exit


    Programmierung erfolgt in C:#########################################
    Beispiel für animierte SVG Grafik:
    - SVG Grafik mit Inkscape erstellen.
    - Den Objekten über rechte Maustaste einen Namen geben
    - Die SVG Grafik in pvdevelop einfügen
    - Der folgende Code ist aus den pvsexample

    typedef struct // (todo: define your data structure here)
    {
    rlSvgAnimator svgAnimator;
    }
    DATA;

    static int drawSVG1(PARAM *p, int id, DATA *d)
    {
    if(d == NULL) return -1;
    gBeginDraw(p,id);
    d->svgAnimator.writeSocket();
    gEndDraw(p);
    return 0;
    }

    static int slotInit(PARAM *p, DATA *d)
    {
    if(p == NULL || d == NULL) return -1;
    //memset(d,0,sizeof(DATA));
    pvResize(p,0,1280,1024);
    pvSetPixmap(p,back,"back.png");
    d->svgAnimator.setSocket(&p->s);
    d->svgAnimator.read("test1.svg");
    drawSVG1(p,svg1,d);
    return 0;
    }

    static int slotNullEvent(PARAM *p, DATA *d)
    {
    if(p == NULL || d == NULL) return -1;
    return 0;
    }

    static int slotButtonEvent(PARAM *p, int id, DATA *d)
    {
    if(p == NULL || id == 0 || d == NULL) return -1;
    if(id == back) return WELLCOME;
    //rlSetDebugPrintf(1);
    if (id == buttonShowCircle)
    {
    d->svgAnimator.show("circle1", 1);
    }
    else if(id == buttonHideCircle)
    {
    d->svgAnimator.show("circle1", 0);
    }
    else if(id == buttonHello)
    {
    d->svgAnimator.svgTextPrintf("text1", "Hello");
    }
    else if(id == buttonWorld)
    {
    d->svgAnimator.svgTextPrintf("text1", "World");
    }
    else if(id == buttonShowMonitor)
    {
    d->svgAnimator.show("monitor1", 1);
    }
    else if(id == buttonHideMonitor)
    {
    d->svgAnimator.show("monitor1", 0);
    }
    else if(id == buttonMonitorPos1)
    {
    d->svgAnimator.svgPrintf("monitor1", "transform=","translate(300.5974,286.613)");
    }
    else if(id == buttonMonitorPos2)
    {
    d->svgAnimator.svgPrintf("monitor1", "transform=","translate(200.5974,286.613)");
    }
    drawSVG1(p,svg1,d);
    return 0;
    }
    Zitieren Zitieren Bewegungen machen wir mit SVG Grafiken  

  9. #9
    Spanier ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    14
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo
    vielen dank fuer eure schnelle hilfe.
    @pvbrowser
    ich habe mich schon mal kurz damit beschaeftigt, aber dafuer reichen leider meine minimalen c-kenntnisse nicht aus um mit diesem programm umzugehen und habe im moment auch nicht die zeit mich intensiv einzuarbeiten. trotzdem danke.
    @praktikant
    danke fuer die bereitstellung des projektes. konnte es mir leider nicht anschauen da er beim oeffnen des bildes im graphics designer bzw. runtime einen fehler bringt. koenntest du mir vielleicht erklaeren was das vb-script macht, ich hatte noch nie mit vbs zu tun. vielen dank schon mal.
    gruss michael

  10. #10
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hi,

    das script zählt nur von 0 bis 15.

    so short

Ähnliche Themen

  1. pH-Messung Visualisieren
    Von Syntaxfehler im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 14.02.2017, 07:39
  2. Messdaten Visualisieren
    Von timod79 im Forum CODESYS und IEC61131
    Antworten: 5
    Letzter Beitrag: 12.03.2009, 10:52
  3. INT Wertänderung visualisieren
    Von Felse im Forum HMI
    Antworten: 2
    Letzter Beitrag: 05.03.2009, 15:37
  4. Visualisieren
    Von ssteff29 im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 25.03.2008, 14:28
  5. OP7 auf PC visualisieren
    Von Reto im Forum HMI
    Antworten: 2
    Letzter Beitrag: 08.01.2007, 13:00

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •