For-Schleife visualisieren

  • VBScript

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Beginner12345.

    For-Schleife visualisieren

    Hallo zusammen,

    ich arbeite zurzeit an einem Programm für das Ansteuern eines Traversenprüfstandes, welcher sich in alle Raumrichtungen verfahren lässt. Dafür werden die Koordinaten aus einer Excel Datei herangezogen. Ich habe eine Schleife im Skript angelegt, sodass die Koordinaten für jeden einzelnen Schritt nacheinander an den Controller übergeben werden. Mein Problem ist, dass ich die aktuelle Position der einzelnen Achsen, wegen der Schleife, nicht im Visual darstellen kann. Mir wird lediglich der letzte Wert der Schleife verzögert angezeigt.

    Hat da jemand vielleicht eine Idee?

    Gruß Beginner

    Ins vermutlich richtige Unterforum verschoben ~VaporiZed

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Willkommen im Forum.

    Habe die anderen Doppelposts gelöscht: VBA ist vermutlich korrekt, wenn Du mit Excel arbeitest; identische Mehrfachthemeneröffnung ist nicht erlaubt; melde notfalls Deinen Thread, wenn es verschoben werden soll; In welcher Umgebung arbeitest Du? Excel? Visual Studio? Mit einem VBS-Script?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Beginner12345 schrieb:

    Mein Problem ist, dass ich die aktuelle Position der einzelnen Achsen, wegen der Schleife, nicht im Visual darstellen kann.
    Was meinst Du damit? Was ist Visual?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich arbeite zurzeit mit dem Softwarepaket "DIAdem", dass so ähnlich wie LabVIEW ist. Werden mit DIAdem Messungen durchgeführt, lassen sich durch einzelne Felder z.B. die Werte ausgeben die x-Achse in jedem Schleifenschritt fährt. Bei mir klappt das aufgrund der For-Schleife nicht, da diese zuerst durchläuft und erst dann den letzten Wert übergibt.
    Dann übergib den Wert an DIAdem in jedem Schleifendurchgang. Sorry, aber genauer geht's ohne Code von Deiner Seite aus nicht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Das habe ich dann auch probiert indem ich meine Schleife in die Subroutine geschrieben habe, welche für das übergeben der Werte an den Treiber sowie den Controller zuständig ist.
    Quellcode folgt:

    Visual Basic-Quellcode

    1. Dim oUDIM, x, y, z, Eingang_x, Eingang_y, Eingang_z, i, Umrechnung, Schleifenkontrolle, Geschwindigkeit, Gewindesteigung, Teilung, Warten, Status, Eingang_z_alt
    2. Sub SFD_ProcessChannel( ChannelNumberP, InputListV, ParamP, DataP, ErrorP )
    3. if InputListV(0)=1 then 'Freigabe Referenzfahrt
    4. Call oUDIM.Write("@07") 'Initialisierung von x,y,z-Achse
    5. Call oUDIM.Write("@0J1") 'Wert für Beschleunigung
    6. Call oUDIM.Write("@0r7") 'Referenzfahrt x,y,z-Achse
    7. end if 'InputListV(0)=1 Initialisieren und Referenzfahrt
    8. if InputListV(1) = 1 then
    9. Teilung = 800
    10. Gewindesteigung=2.5
    11. Umrechnung=Teilung/Gewindesteigung
    12. Geschwindigkeit = InputListV(5)
    13. Status = 0
    14. for i = 1 to 11
    15. Eingang_x(i)=chdx(i,2) *Umrechnung
    16. Eingang_y(i)=chdx(i,3)*(-1)*Umrechnung
    17. Eingang_z(i)=chdx(i,4)*(-1)*Umrechnung
    18. Call oUDIM.Write("@0M"&Eingang_x&","&Geschwindigkeit&","&Eingang_y&","&Geschwindigkeit&","&Eingang_z&","&Geschwindigkeit&",0,200")
    19. Warten = oUDIM.Read(,1)
    20. if Warten = "0" then
    21. Status = 1
    22. Call Pause(5)
    23. end if
    24. next
    25. end if 'Freigabe
    26. Select case ChannelNumberP
    27. case 0:DataP = x
    28. case 1:DataP = y
    29. case 2:DataP = z
    30. case 3:DataP = Status
    31. End select
    32. End Sub


    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Was würde passieren, wenn Du die For-Schleife weglässt und manuell an der Stelle 2 Commands schickst? Kommen beide am Zielort an oder nur der letzte?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Natürlich kannst Du die weglassen. Die Schleife! Nicht den Inhalt.

    Visual Basic-Quellcode

    1. Eingang_x(1) = chdx(1, 2) *Umrechnung
    2. Eingang_y(1) = chdx(1, 3)*(-1)*Umrechnung
    3. Eingang_z(1) = chdx(1, 4)*(-1)*Umrechnung
    4. Call oUDIM.Write("@0M"&Eingang_x&","&Geschwindigkeit&","&Eingang_y&","&Geschwindigkeit&","&Eingang_z&","&Geschwindigkeit&",0,200")
    5. Warten = oUDIM.Read(,1)
    6. If Warten = "0" then
    7. Status = 1
    8. Call Pause(5)
    9. End If
    10. Eingang_x(2) = chdx(2, 2) *Umrechnung
    11. Eingang_y(2) = chdx(2, 3)*(-1)*Umrechnung
    12. Eingang_z(2) = chdx(2, 4)*(-1)*Umrechnung
    13. Call oUDIM.Write("@0M"&Eingang_x&","&Geschwindigkeit&","&Eingang_y&","&Geschwindigkeit&","&Eingang_z&","&Geschwindigkeit&",0,200")
    14. Warten = oUDIM.Read(,1)
    15. If Warten = "0" then
    16. Status = 1
    17. Call Pause(5)
    18. End If
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Es geht hier erstmal nur darum rauszufinden, ob das prinzipiell klappt. Denn wenn das nicht klappt, klappt es auch mit der For-Schleife nicht und man muss an anderer Stelle suchen, wo das Problem liegt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.