Aktuelle Zeit: 16.08.2018 09:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: 15.05.2006 11:40 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Danke, aber die Diskette mit den Programmen habe ich dabei gehabt. Ist halt wirklich sehr kompliziert. Da lobe ich mir die 3D-Step Karte von NC-Step. 4 Motoren, Takt/Richtung und fertich ! Naja, viel Erfolg, wenn Du es schaffst die Motoren sauber zu steuern lass es mich wissen, bevor ich ganz verzweifle. Ich arbeite auch noch weiter dran !

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 15.05.2006 23:06 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Scheint doch schwierig zu sein. Die Beschreibung ist auch sehr bedürftig.
Zwar habe ich eine einfachere Möglichkeit, aber direkt über Centroniks zu steuern wäre auch mal interessant. Also ich werde mich auch mal daran versuchen ;) .

Hier hat schon Jemand dieses direkt unter WindowsXP angesteuert:

http://home.arcor.de/gizzel/appz/dlcnc.html

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.06.2006 21:44 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
@Then

Leider habe ich einige Teile für meine Proxxon MF70 noch nicht fertig bekommen.
Mir fehlen noch die Schrittmotorhalterungen aus Aluminium, die mir
jemand anfertigt, sowie Bohrer Ø6,35mm den ich noch bestellen musste,
um später die Achsverbindungen zum Schrittmotor aufzubohren.

Derweil habe ich mich schon mal daran gemacht, die SMC-800-Karte ins
Gehäuse mit den Anschlüssen sowie ein Kabel für das Centronics-Kabel
von Schrittmotorkarte mit SubD-15 zum iSMF-Controller anzufertigen.

Danach hatte ich noch einige Thermoprobleme mit den 4-Strang-Schrittmotoren
von Conrad. Das lag daran, weil ich zuerst auf 24V ausgelegte Schrittmotoren
und ein 24V - Netzteil und später von Conrad kräftigere Schrittmotoren
mit 0,6Nm, die aber nur 12V verkraften, gekauft habe.
Das folgende Video zeigt mein Labornetzteil, im 12V-Betieb.

Das Programm, welches der iSMF-Controllerkarte bei lag, kann einmal
mit diesen Controller über RS232 mittels einfachen Ascii-Komandos die
SMC-800 steuern, als auch direkt über LPT die SMC-800-Karte direkt ansteuern.

Habe heute beides getestet.

Die Beschreibung zu den Pascal-Source und C-Source (Nur für DOS) aus
den Programmbeispielen ist leider mieserabel ausgeführt.

Mal schauen, wie man das in PB umsetzen kann. Ich will es auf jeden Fall
versuchen :wink:

Aber hier erst mal das Video, was schon mal zeigt, das die Karte mit dem
Programmbeispiel zum iSMF prima läuft und jetzt die 3 Motoren bei
korrekten 12V und auf der Karte eingestellte Referenzspannung von
7,14V (entspricht 0,6A) an den Poti-Schleifern gegen Masse gemessen, prima läuft.


SMC-800-Video
[Edit]
Hier noch ein weiteres Video aus einem Antriebstest, wo ich diese 0,6A ; 0,6Nm ; 12V-Schrittmotoren
von Conrad mit 24V antreibe. Dabei habe ich über die Referenzspannung
and den 3 Potis auf jeweils 4,5V eingestellt um für die Schrittmotoren die maximale Leistung zu erhalten.
Proxxon Antriebstest
[/Edit]



Und hier das Programm auf den man Vectoren etc. testen kann, welches
dem iSMF-Controller beilag.

Bild

MfG Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 07.06.2006 21:36 
Offline
Benutzeravatar

Registriert: 06.09.2004 13:26
Wohnort: Siegen
Hey Falko, sieht gut aus. Habe auch schon 3 Motoren dran gehabt und diese zum Laufen gebracht, aber sie liefen unter PB (Windows) nicht sauber genug. Und sobald sie Last hatten, gingen sie ohne anschubsen gar nicht...
Habe ja die 3D-Step von www.NC-Step.de für 99 Euronen und die läuft super genial mit PB unter Windows - ist ja auch Takt/Richtung
Naja, lass es mich bitte wissen, wenn Du ne saubere PB-Lösung für die SMC hast.....

_________________
PB 5.62 / Windows 10 64Bit (i5/32GB/240GBSSD+2TBHDD/960GTX4GB) / Multitouch Monitor

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 01.08.2006 19:49 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
@Then

Ich bin leider noch nicht soweit mit meiner CNC-Micro-Fräse, aber diese Woche bekomme
ich spezielle Führungsbohrer, 1/4" (Ø6,35mm).
Wenn das damit klappt, kann ich bald mit der Softwareansteuerung anfangen.

Hier habe ich noch eine interessante Seite gefunden:

Mikroschrittansteuerung für SMC Schrittmotorkarten (SMC800/1500)

http://home.pages.at/pcspeed/CNCBook/so ... cmikro.htm


MfG Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 12.08.2008 19:17 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Hallo Then,
nun habe ich endlich was passendes für meine Proxxon Microfräse gefunden und gleich den Umbausatz bestellt.

Darin ist eine Steuerkarte Uni1500 (SMC o. Richtung-, und Taktsteuerung, drei Schrittmotoren sowie mechanische Teile zur Verlängerung der Achsen enthalten

Übrigens, falls du die SMC-800-Karte noch haben solltest, schau dir mal
den Tuningtip im folgenden Link an. Von 800mA auf 1,1A Leistung mit nur 3 Brücken.

http://www.usovo.de/usovoneu/include.ph ... Tuning.php

In den nächsten Tagen werde ich auch mal was nützliches mittels CNC und meiner Micorfräse von Proxxon mithilfe de Emis Interfacecontrollers und PB
auf die Beine Stellen können <).

Naja, wer sehen möchte, was man schon alles mit der kleinen Proxxon
MF70 CNC schon machen kann, braucht nur unter Youtube.de im
Suchfenster "Proxxon MF70 CNC" eingeben.

Man kann diese Microfräse auch komplett fertig kaufen (Siehe Startlink,
oben), falls es jemanden interessieren sollte.

Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: SMC 800 ansteuern?
BeitragVerfasst: 24.11.2008 21:17 
Offline

Registriert: 24.11.2008 21:11
Hallo

brauche dringend Hilfe!

Muss über die Schrittmotorsteuerkarte SMC 800 (Conrad) 2 schrittmotoren und einen Hubmagneten ansteuern. Dazu soll ich ein Windows Programm schreiben über welches ich die Karte ansprechen und Steuern kann.

Bisher hab ich noch keine ahnung wie ich die Karte anspreche.

hat da jemand erfahrung mit?

Bin für jede Hilfe dankbar!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie steuert man die SMC800 ?
BeitragVerfasst: 15.05.2010 23:07 
Offline
Admin
Benutzeravatar

Registriert: 29.08.2004 11:27
Meine Proxxon MF70 CNC ist nun fertig und hierzu habe ich mein erstes Testprogramm geschrieben um
mit einem iSMIF - Schrittmotor - Interface die Uni1800-Karte von Usovo.de damit zu testen.

Bilder vom Umbau der Proxxon MF70: http://www.falko-pure.de/html/proxxon_cnc.html


Falls jemand eine emis Schrittmotor-Interface-Steuerung "iSMIF" sein Eigen nennt, kann ja mal diesen Sourcecode, der dem von emis nachempfunden und als PB-Quelltext hier von mir veröffentlicht wird, gerne
ausprobieren. Zwar habe ich da noch einige Schönheitsfehler aber soweit kann man das schon nutzen um von Hand einige Sachen an zu treiben. Beim Referenzieren und Frequenzen um 1Hz scheint das wohl nicht am Programm zu liegen, sondern von diesem Atmelprogramm selbst. Ich hatte die Firma Emis-GmbH auf einige Fehler angeschrieben, erhalte von denen aber keine Antwort.

Hier nun der Source und wenn ihr Verbesserungsvorschläge habt, würde ich micht freuen, wenn ihr
mir diese mitteilt.

Code:
; Ein Purebasicprogramm zum testen des iSMIF - Schrittmotor-Steuer-Interface,
; welche verschiedene Schrittmotorkarten ansteuern kann. Damit ist man Zeitunabhängig, was
; ansonsten das große Problem bei Windows-CNC-Steuerungen war.
; Man benötigt hierzu das spezielle Interface iSMIF von Emis --> http://www.emisgmbh.de/ismif.htm
; Die prinzipielle Vorgehensweise zur Ansteuerung des isMIF findet ihr hier:
; http://www.emisgmbh.de/ismif.htm  -->  ASCII - Steuerbefehle
; http://www.emisgmbh.de/antriebs/smc/ismif/ismif_prinzip.pdf  --> Programmieranleitung
;
; Zu den Proceduren Senden und Lesen möchte ich mich ganz besonders bei Dark Dragon
; bedanken.
; Damit das Warten korrekt funktioniert, habe ich noch eine Procedure Warten() hinzugefügt, womit
; nun die Möglichkeit besteht, nach der Grundanleitung von Emis-GmbH eigene Steuerprogramme
; zu entwickeln.
;
; Autor und Soucecode von: Falko
; Homepage: www.falko-pure.de

; Falls ihr weitere Tips hierzu habt, würde ich mich sehr freuen, wenn ihr mir diese mitteilt.
; Teile aus diesem Source dürfen frei verwendet werden.

EnableExplicit
Define Ports.s
Define Port.l
Define Event.l
Define WindowID.l
Define GadgetID.l
Define EventType.l
Define Anzahl.l
Declare Standard()
Declare.s ReadLineSerialPort(Port,Immediately = 0)
Declare.s WriteCommand(Port, Command.s,Immediately = 0)

;- Window Constants
;
Enumeration
  #Window
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Button_0
  #String_0
  #Button_1
  #String_1
  #Frame3D_0
  #Frame3D_2
  #String_2
  #Button_2
  #String_3
  #Button_3
  #Frame3D_4
  #String_5
  #Button_5
  #String_7
  #Button_7
  #CheckBox_0
  #CheckBox_1
  #Text_0
  #Text_1
  #Frame3D_6
  #Button_9
  #String_9
  #Frame3D_9
  #Frame3D_11
  #Radio_3
  #Radio_5
  #Radio_6
  #Radio_7
  #Text_7
  #Text_8
  #Text_9
  #Text_10
  #Frame3D_13
  #Button_17
  #Frame3D_14
  #Radio_17
  #Radio_18
  #Text_20
  #Text_21
  #Frame3D_16
  #Text_24
  #Text_25
  #Button_19
  #Radio_23
  #Radio_24
  #Frame3D_20
  #Text_32
  #Text_33
  #Button_21
  #Radio_31
  #Radio_32
  #Frame3D_22
  #Text_36
  #Text_37
  #Button_22
  #Radio_35
  #Radio_36
  #Frame3D_26
  #Text_44
  #Button_24
  #Frame3D_29
  #Radio_43
  #Radio_44
  #Text_47
  #Button_26
  #String_11
  #Frame3D_32
  #Button_29
  #Button_31
  #Button_32
  #Button_33
  #Button_34
  #Button_35
  #Frame3D_34
  #Frame3D_36
  #Text_52
  #Text_53
  #Button_37
  #Radio_51
  #Radio_52
  #Radio_57
  #Text_60
  #String_14
  #Frame3D_38
  #String_16
  #String_18
  #String_19
  #Button_39
  #Frame3D_40
  #Radio_61
  #Radio_62
  #Text_62
  #Text_63
  #Text_66
  #Text_67
  #Text_68
  #Frame3D_42
  #Text_71
  #Text_72
  #Button_41
  #Text_75
  #CheckBox_3
  #CheckBox_4
  #CheckBox_5
  #Frame3D_46
  #Text_81
  #Text_82
  #Button_43
  #Text_83
  #CheckBox_8
  #CheckBox_9
  #CheckBox_10
  #String_24
  #Text_87
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_4
EndEnumeration


;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Arial", 11, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Arial", 9, #PB_Font_Bold)

Procedure Open_Window()
  If OpenWindow(#Window, 297, 87, 1009, 671, "ISMiF - Datenprotokoll testen",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateStatusBar(#StatusBar_4, WindowID(#Window))
      AddStatusBarField(80)
      AddStatusBarField(170)
      AddStatusBarField(70)
      AddStatusBarField(170)
      AddStatusBarField(60)
      AddStatusBarField(170)
      AddStatusBarField(120)
      AddStatusBarField(40)
      AddStatusBarField(70)
      AddStatusBarField(70)
      StatusBarText(#StatusBar_4, 0, "Serial Output:",#PB_StatusBar_BorderLess)
      StatusBarText(#StatusBar_4, 1, "")
      StatusBarText(#StatusBar_4, 2, "Serial Input:",#PB_StatusBar_BorderLess)
      StatusBarText(#StatusBar_4, 3, "")
      StatusBarText(#StatusBar_4, 4, "Speicher:",#PB_StatusBar_BorderLess)
      StatusBarText(#StatusBar_4, 5, "")
      StatusBarText(#StatusBar_4, 6, "Serielle Schnittstelle:",#PB_StatusBar_BorderLess)
      StatusBarText(#StatusBar_4, 7, "")
      StatusBarText(#StatusBar_4, 8, "")
      StatusBarText(#StatusBar_4, 9, "")
      EndIf
        ButtonGadget(#Button_0, 20, 40, 123, 25, "Versionsabfrage")
        SetGadgetFont(#Button_0, FontID1)
        StringGadget(#String_0, 160, 40, 130, 22, "", #PB_String_ReadOnly)
        SetGadgetFont(#String_0, FontID1)
        ButtonGadget(#Button_1, 20, 80, 123, 24, "Statusabfrage")
        SetGadgetFont(#Button_1, FontID1)
        StringGadget(#String_1, 160, 80, 130, 23, "", #PB_String_ReadOnly)
        SetGadgetFont(#String_1, FontID1)
        Frame3DGadget(#Frame3D_0, 10, 20, 300, 98, "")
        Frame3DGadget(#Frame3D_2, 10, 130, 300, 110, "")
        StringGadget(#String_2, 20, 151, 60, 23, "200")
        SetGadgetFont(#String_2, FontID1)
        ButtonGadget(#Button_2, 100, 150, 190, 24, "Startgeschwindigkeit (Hz)")
        SetGadgetFont(#Button_2, FontID1)
        StringGadget(#String_3, 20, 198, 60, 23, "250")
        SetGadgetFont(#String_3, FontID1)
        ButtonGadget(#Button_3, 100, 197, 190, 24, "Rampenlänge (ms)")
        SetGadgetFont(#Button_3, FontID1)
        Frame3DGadget(#Frame3D_4, 10, 250, 300, 180, "")
        StringGadget(#String_5, 20, 275, 60, 22, "600")
        SetGadgetFont(#String_5, FontID1)
        ButtonGadget(#Button_5, 100, 273, 190, 25, "Endgeschwindigkeit (Hz)")
        SetGadgetFont(#Button_5, FontID1)
        StringGadget(#String_7, 20, 313, 60, 22, "0")
        SetGadgetFont(#String_7, FontID1)
        ButtonGadget(#Button_7, 100, 313, 190, 24, "Bremswinkel (Grad)")
        SetGadgetFont(#Button_7, FontID1)
        CheckBoxGadget(#CheckBox_0, 20, 364, 13, 14, "")
        SetGadgetState(#checkBox_0,1)
        CheckBoxGadget(#CheckBox_1, 20, 394, 14, 15, "")
        SetGadgetState(#checkBox_1,1)
        TextGadget(#Text_0, 50, 361, 86, 20, "Vektorfahrt")
        SetGadgetFont(#Text_0, FontID1)
        TextGadget(#Text_1, 50, 392, 101, 20, "Referenzfahrt")
        SetGadgetFont(#Text_1, FontID1)
        Frame3DGadget(#Frame3D_6, 10, 444, 300, 130, "")
        ButtonGadget(#Button_9, 20, 460, 190, 24, "Referenzoffset (XYZ)")
        SetGadgetFont(#Button_9, FontID1)
        StringGadget(#String_9, 230, 460, 50, 22, "25")
        SetGadgetFont(#String_9, FontID1)
        Frame3DGadget(#Frame3D_9, 10, 584, 300, 52, "")
        Frame3DGadget(#Frame3D_11, 20, 593, 283, 34, "")
        OptionGadget(#Radio_3, 26, 604, 13, 15, "")
        OptionGadget(#Radio_5, 99, 604, 13, 15, "")
        OptionGadget(#Radio_6, 171, 604, 13, 15, "")
        OptionGadget(#Radio_7, 249, 604, 13, 15, "")
        TextGadget(#Text_7, 43, 606, 30, 13, "COM1")
        TextGadget(#Text_8, 116, 606, 30, 13, "COM2")
        TextGadget(#Text_9, 189, 606, 30, 13, "COM3")
        TextGadget(#Text_10, 267, 606, 30, 13, "COM4")
        Frame3DGadget(#Frame3D_13, 329, 22, 319, 201, "")
        ButtonGadget(#Button_17, 20, 510, 190, 24, "Referenzrichtung (XYZ)")
        SetGadgetFont(#Button_17, FontID1)
        Frame3DGadget(#Frame3D_14, 220, 490, 80, 60, "")
        OptionGadget(#Radio_17, 230, 504, 13, 15, "")
        SetGadgetState(#Radio_17,1)
        OptionGadget(#Radio_18, 230, 524, 13, 15, "")
        TextGadget(#Text_20, 252, 505, 42, 16, "negativ")
        SetGadgetFont(#Text_20, FontID2)
        TextGadget(#Text_21, 252, 523, 39, 13, "positiv")
        SetGadgetFont(#Text_21, FontID2)
        Frame3DGadget(#Frame3D_16, 543, 32, 96, 60, "")
        TextGadget(#Text_24, 571, 47, 42, 16, "3-Achs")
        SetGadgetFont(#Text_24, FontID2)
        TextGadget(#Text_25, 571, 66, 39, 13, "Plotter")
        SetGadgetFont(#Text_25, FontID2)
        ButtonGadget(#Button_19, 339, 52, 190, 24, "Modus Z-Achse")
        SetGadgetFont(#Button_19, FontID1)
        OptionGadget(#Radio_23, 549, 46, 13, 15, "")
        SetGadgetState(#Radio_23,1)
        OptionGadget(#Radio_24, 549, 66, 13, 15, "")
        Frame3DGadget(#Frame3D_20, 543, 93, 97, 60, "")
        TextGadget(#Text_32, 571, 108, 63, 16, "Halbschritt")
        SetGadgetFont(#Text_32, FontID2)
        TextGadget(#Text_33, 571, 127, 59, 13, "Vollschritt")
        SetGadgetFont(#Text_33, FontID2)
        ButtonGadget(#Button_21, 339, 113, 190, 24, "Schrittmodus")
        SetGadgetFont(#Button_21, FontID1)
        OptionGadget(#Radio_31, 549, 107, 13, 15, "")
        SetGadgetState(#Radio_31,1)
        OptionGadget(#Radio_32, 549, 127, 13, 15, "")
        Frame3DGadget(#Frame3D_22, 542, 154, 97, 60, "")
        TextGadget(#Text_36, 571, 169, 42, 16, "PBL")
        SetGadgetFont(#Text_36, FontID2)
        TextGadget(#Text_37, 571, 188, 57, 13, "Takt/Rich")
        SetGadgetFont(#Text_37, FontID2)
        ButtonGadget(#Button_22, 339, 174, 190, 24, "Ansteuersignal")
        SetGadgetFont(#Button_22, FontID1)
        OptionGadget(#Radio_35, 549, 168, 13, 15, "")
        OptionGadget(#Radio_36, 549, 188, 13, 15, "")
        SetGadgetState(#Radio_36,1)
        Frame3DGadget(#Frame3D_26, 329, 232, 319, 123, "")
        TextGadget(#Text_44, 573, 256, 24, 16, "aus")
        SetGadgetFont(#Text_44, FontID2)
        ButtonGadget(#Button_24, 341, 261, 190, 24, "Signal setzen")
        SetGadgetFont(#Button_24, FontID1)
        Frame3DGadget(#Frame3D_29, 541, 241, 88, 60, "")
        OptionGadget(#Radio_43, 551, 255, 13, 15, "")
        SetGadgetState(#Radio_43,1)
        OptionGadget(#Radio_44, 551, 275, 13, 15, "")
        TextGadget(#Text_47, 573, 274, 39, 13, "ein")
        SetGadgetFont(#Text_47, FontID2)
        ButtonGadget(#Button_26, 341, 310, 189, 24, "Wartezeit (msec.)")
        SetGadgetFont(#Button_26, FontID1)
        StringGadget(#String_11, 549, 310, 67, 22, "0")
        SetGadgetFont(#String_11, FontID1)
        Frame3DGadget(#Frame3D_32, 329, 372, 319, 201, "")
        ButtonGadget(#Button_29, 343, 390, 290, 24, "Reset ausführen")
        SetGadgetFont(#Button_29, FontID1)
        ButtonGadget(#Button_31, 343, 426, 290, 24, "Achsen sofort stoppen")
        SetGadgetFont(#Button_31, FontID1)
        ButtonGadget(#Button_32, 343, 461, 290, 24, "Achsen anhalten")
        SetGadgetFont(#Button_32, FontID1)
        ButtonGadget(#Button_33, 343, 496, 290, 24, "Pause (Fahrt unterbrechen)")
        SetGadgetFont(#Button_33, FontID1)
        ButtonGadget(#Button_34, 343, 533, 290, 24, "Pause beenden (Weiterfahrt)")
        SetGadgetFont(#Button_34, FontID1)
        ButtonGadget(#Button_35, 342, 593, 290, 33, "Programm beenden")
        SetGadgetFont(#Button_35, FontID1)
        Frame3DGadget(#Frame3D_34, 660, 22, 341, 118, "")
        Frame3DGadget(#Frame3D_36, 883, 39, 108, 82, "")
        TextGadget(#Text_52, 924, 52, 50, 16, "X-Achse")
        SetGadgetFont(#Text_52, FontID2)
        TextGadget(#Text_53, 924, 74, 50, 15, "Y-Achse")
        SetGadgetFont(#Text_53, FontID2)
        ButtonGadget(#Button_37, 679, 44, 190, 24, "Position abfragen")
        SetGadgetFont(#Button_37, FontID1)
        OptionGadget(#Radio_51, 902, 51, 13, 15, "")
        SetGadgetState(#Radio_51,1)
        OptionGadget(#Radio_52, 902, 74, 13, 15, "")
        OptionGadget(#Radio_57, 902, 94, 13, 17, "")
        TextGadget(#Text_60, 924, 95, 49, 13, "Z-Achse")
        SetGadgetFont(#Text_60, FontID2)
        StringGadget(#String_14, 680, 96, 188, 22, "", #PB_String_ReadOnly)
        SetGadgetFont(#String_14, FontID1)
        Frame3DGadget(#Frame3D_38, 660, 154, 341, 137, "")
        StringGadget(#String_16, 680, 180, 90, 23, "400")
        SetGadgetFont(#String_16, FontID1)
        StringGadget(#String_18, 680, 215, 90, 23, "400")
        SetGadgetFont(#String_18, FontID1)
        StringGadget(#String_19, 680, 250, 90, 23, "400")
        SetGadgetFont(#String_19, FontID1)
        ButtonGadget(#Button_39, 820, 250, 173, 24, "Vektor fahren")
        SetGadgetFont(#Button_39, FontID1)
        Frame3DGadget(#Frame3D_40, 883, 170, 108, 60, "")
        OptionGadget(#Radio_61, 901, 184, 14, 15, "")
        SetGadgetState(#Radio_61,1)
        OptionGadget(#Radio_62, 901, 204, 14, 15, "")
        TextGadget(#Text_62, 923, 185, 43, 16, "Relativ")
        SetGadgetFont(#Text_62, FontID2)
        TextGadget(#Text_63, 923, 203, 46, 13, "Absolut")
        SetGadgetFont(#Text_63, FontID2)
        TextGadget(#Text_66, 777, 182, 10, 16, "x")
        SetGadgetFont(#Text_66, FontID1)
        TextGadget(#Text_67, 777, 219, 10, 16, "y")
        SetGadgetFont(#Text_67, FontID1)
        TextGadget(#Text_68, 777, 252, 10, 16, "z")
        SetGadgetFont(#Text_68, FontID1)
        Frame3DGadget(#Frame3D_42, 660, 305, 341, 103, "")
        TextGadget(#Text_71, 931, 335, 50, 21, "X-Achse")
        SetGadgetFont(#Text_71, FontID2)
        TextGadget(#Text_72, 931, 360, 50, 15, "Y-Achse")
        SetGadgetFont(#Text_72, FontID2)
        ButtonGadget(#Button_41, 679, 354, 190, 24, "Referenzfahrt")
        SetGadgetFont(#Button_41, FontID1)
        TextGadget(#Text_75, 931, 384, 49, 13, "Z-Achse")
        SetGadgetFont(#Text_75, FontID2)
        CheckBoxGadget(#CheckBox_3, 902, 336, 14, 13, "")
        SetGadgetState(#CheckBox_3,1)
        CheckBoxGadget(#CheckBox_4, 902, 361, 14, 13, "")
        SetGadgetState(#CheckBox_4,1)
        CheckBoxGadget(#CheckBox_5, 902, 384, 14, 13, "")
        SetGadgetState(#CheckBox_5,1)
        Frame3DGadget(#Frame3D_46, 660, 414, 341, 159, "")
        TextGadget(#Text_81, 933, 497, 50, 21, "X-Achse")
        SetGadgetFont(#Text_81, FontID2)
        TextGadget(#Text_82, 933, 522, 50, 15, "Y-Achse")
        SetGadgetFont(#Text_82, FontID2)
        ButtonGadget(#Button_43, 669, 540, 190, 24, "Dauerbetrieb")
        SetGadgetFont(#Button_43, FontID1)
        TextGadget(#Text_83, 933, 546, 49, 13, "Z-Achse")
        SetGadgetFont(#Text_83, FontID2)
        CheckBoxGadget(#CheckBox_8, 902, 498, 14, 13, "")
        SetGadgetState(#CheckBox_8,1)
        CheckBoxGadget(#CheckBox_9, 902, 523, 14, 13, "")
        SetGadgetState(#CheckBox_9,1)
        CheckBoxGadget(#CheckBox_10, 902, 546, 14, 13, "")
        SetGadgetState(#CheckBox_10,1)
        StringGadget(#String_24, 670, 500, 60, 22, "", #PB_String_ReadOnly)
        SetGadgetFont(#String_24, FontID1)
        TextGadget(#Text_87, 670, 430, 320, 60, "  Ausgabe von Vektoren im Dauerbetrieb,         um die Speicherfunktoinen des Controllers   und die Zeichen 02 und 03 zu testen", #PB_Text_Border)
        SetGadgetFont(#Text_87, FontID1)
    EndIf
EndProcedure


Open_Window()

Procedure.s Warte(Port); Warte, wenn Speicher voll ist.
  Protected Result.s, Ascii.a,Event.l,WindowID.l,GadgetID.l,EventType.l
  ReadSerialPortData(Port, @Ascii, 1)
  If Ascii = #ETX
    StatusBarText(#StatusBar_4, 5, "voll")
    While Ascii <> #STX
      ReadSerialPortData(Port, @Ascii, 1)
      Result + Chr(Ascii)
      ;Leider wußte ich keine andere Lösung, während dieser Schleife einen @Befehl freizulassen
      Event = WindowEvent() ; This line waits until an event is received from Windows
      WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
      GadgetID = EventGadget() ; Is it a gadget event?
      EventType = EventType() ; The event type
      If Event = #PB_Event_Gadget
        ElseIf GadgetID = #Button_29; Reset durchführen
        If WriteCommand(0, "@R")
          Debug "Reset"
        EndIf
        ElseIf GadgetID = #Button_31 ; Achsen sofort stoppen
         WriteCommand(0, "@S")     
        ElseIf GadgetID = #Button_32 ; Achsen anhalten
         WriteCommand(0, "@B")
        ElseIf GadgetID = #Button_33  ; Pause setzen
         WriteCommand(0, "@A")
        ElseIf GadgetID = #Button_34 ; Pause beenden
         WriteCommand(0, "@C")
        EndIf
     
    Wend
    StatusBarText(#StatusBar_4, 5, "leer")
  EndIf
 
  ProcedureReturn Result
EndProcedure

Procedure.s ReadLineSerialPort(Port,immediately=0) ;Lese Rückgabe vom ismif-Interface
  Protected Result.s, Ascii.a                     
   
  Result = ""
   If IsSerialPort(Port)
     If Immediately = 0
     While Chr(Ascii) <> #CR$
      ReadSerialPortData(Port, @Ascii, 1)
      If Chr(Ascii) <>  #CR$
         Result + Chr(Ascii)
      EndIf
    Wend
   
  ElseIf Immediately = 1
     Debug warte(Port)
     While Chr(Ascii) <> #CR$
      ReadSerialPortData(Port, @Ascii, 1)
      If Chr(Ascii) <>  #CR$
         Result + Chr(Ascii)
      EndIf
     Wend
   
    EndIf
   EndIf
   Debug "Empfangen: "+ Result
   StatusBarText(#StatusBar_4, 3, Result)
  ProcedureReturn Result
     
EndProcedure

Procedure.s WriteCommand(Port, Command.s, Immediately = 0);Sende an ismif. Bei Immediately=1
  Protected Result.s                                      ;Wird der Befehl sofort ausgeführt!
  If IsSerialPort(Port)
    StatusBarText(#StatusBar_4, 1, Command)
    Debug "Gesendet: " + Command
    If Immediately
      WriteSerialPortString(Port, Command + #SOH$)
      Result = ReadLineSerialPort(Port,1)
    Else
      WriteSerialPortString(Port, Command + #CR$)
      Result = ReadLineSerialPort(Port,0)
    EndIf
  EndIf
  StatusBarText(#StatusBar_4, 3, Result)
  ProcedureReturn Result
EndProcedure


Procedure Standard() ;--- Grundeinstellungen
;auskommentierte Funktionen sind schon in der Grundeinstellung vorhanden 
;WriteCommand(0,"@R");Reset
WriteCommand(0,"T1",1);Ansteuersignal: PBL-Signal=0 , Takt u. Richtungssignal=1
;WriteCommand(0,"F0",1);Halb-,Vollschrittbetrieb: Vollschritt=1 , Halbschritt=0
;WriteCommand(0,"Z1",1);Z-Achse einstellen: 1 = 3-Achssystem , 0 = Plotterbetrieb
;WriteCommand(0,"#S200",1);Startgeschwindigkeit einstellen (Vierstellig)
;WriteCommand(0,"#E25,600",1);Endgeschwindigkeit einstellen: Tabelle 1 600Hz eingetragen
;WriteCommand(0,"#E4,200",1);Endgeschwindigkeit einstellen: Tabelle 1 600Hz eingetragen
;WriteCommand(0,"#R250",1);Rampenlänge 250ms (4-stellig)
;WriteCommand(0,"#DX,0,2,4,4",1);Referenz u. Geschw.: X,negative rest aus Tabellengeschw. entnehmen
;WriteCommand(0,"#DY,0,2,4,4",1);Referenz u. Geschw.: Y,negative rest aus Tabellengeschw. entnehmen
;WriteCommand(0,"#DZ,0,2,4,4",1);Referenz u. Geschw.: Z,negative rest aus Tabellengeschw. entnehmen
WriteCommand(0,"#OX,400",1);Offset nach Referenz einstellen 35 Schritte vom Schalter wegfahren
WriteCommand(0,"#OY,400",1);Offset nach Referenz einstellen
WriteCommand(0,"#OZ,400",1);Offset nach Referenz einstellen und abschließend sofortiges Senden des Buffers
EndProcedure

SetGadgetState(#Radio_3,1)
Ports="COM1"
StatusBarText(#StatusBar_4, 7, Ports)
If IsSerialPort(0): CloseSerialPort(0): EndIf
If OpenSerialPort(0,Ports,19200,#PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
  StatusBarText(#StatusBar_4, 7, Ports)
  Standard() 
Else
  MessageRequester("Achtung!", Ports+" nicht vorhanden!")
EndIf

Repeat ; Start of the event loop
 
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
 
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
 
  GadgetID = EventGadget() ; Is it a gadget event?
 
  EventType = EventType() ; The event type
 
  ;You can place code here, and use the result as parameters for the procedures
 
  If Event = #PB_Event_Gadget
   
    If GadgetID = #Button_0

      SetGadgetText(#String_0,Mid(WriteCommand(0,"@V") ,3))
     
    ;ElseIf GadgetID = #String_0
     
    ElseIf GadgetID = #Button_1
     
      SetGadgetText(#String_1,Mid(WriteCommand(0,"@X") ,3))
       
    ;ElseIf GadgetID = #String_1
     
    ElseIf GadgetID = #Button_2 ; Startgeschwindigkeit (Hz)
      WriteCommand(0, "#S"+GetGadgetText(#String_2),1)
     
    ElseIf GadgetID = #Button_3  ;Rampenlänge (ms)
      WriteCommand(0, "#R"+GetGadgetText(#String_3),1)
               ElseIf GadgetID = #String_5
     
    ElseIf GadgetID = #Button_5  ;Endgeschwindigkeit (Hz)
      WriteCommand(0, "#E25,"+GetGadgetText(#String_5),1)
    ElseIf GadgetID = #Button_7  ;Bremswinkel (Grad)
     
     
    ElseIf GadgetID = #Button_9  ;Referenzoffset(XYZ)
      WriteCommand(0, "#OX,"+GetGadgetText(#String_9))
      WriteCommand(0, "#OY,"+GetGadgetText(#String_9))
      WriteCommand(0, "#OZ,"+GetGadgetText(#String_9),1)
    ElseIf GadgetID = #Radio_3
      Ports = "COM1"
      If IsSerialPort(0): CloseSerialPort(0): EndIf
      If OpenSerialPort(0,Ports,19200,#PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
        StatusBarText(#StatusBar_4, 7, Ports)
        Standard()
      Else
        MessageRequester("Achtung!", Ports+" nicht vorhanden!")
      EndIf
    ElseIf GadgetID = #Radio_5
      Ports = "COM2"
      If IsSerialPort(0): CloseSerialPort(0): EndIf
      If OpenSerialPort(0,Ports,19200,#PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
        StatusBarText(#StatusBar_4, 7, Ports)
        Standard()
      Else
        MessageRequester("Achtung!", Ports+" nicht vorhanden!")
      EndIf
    ElseIf GadgetID = #Radio_6
      Ports = "COM3"
      If IsSerialPort(0): CloseSerialPort(0): EndIf
      If OpenSerialPort(0,Ports,19200,#PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
        StatusBarText(#StatusBar_4, 7, Ports)
        Standard()
      Else
        MessageRequester("Achtung!", Ports+" nicht vorhanden!")
      EndIf
    ElseIf GadgetID = #Radio_7
      Ports = "COM4"
      If IsSerialPort(0): CloseSerialPort(0): EndIf
      If OpenSerialPort(0,Ports,19200,#PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
        StatusBarText(#StatusBar_4, 7, Ports)
        Standard()
      Else
        MessageRequester("Achtung!", Ports+" nicht vorhanden!")
      EndIf
    ElseIf GadgetID = #Button_17  ; Referenzrichtung (XYZ)
       If GetGadgetState(#Radio_17)=0 ; negative Richtung
         WriteCommand(0, "#DZ,0,4,4,4",1)
         WriteCommand(0, "#DX,0,4,4,4")
         WriteCommand(0, "#DY,0,4,4,4")
       Else
         WriteCommand(0, "#DZ,1,4,4,4",1)
         WriteCommand(0, "#DX,1,4,4,4")
         WriteCommand(0, "#DY,1,4,4,4")
       EndIf
       
    ElseIf GadgetID = #Button_19 ; Modus Z-Achse
      If GetGadgetState(#Radio_23)=1
        WriteCommand(0, "Z1",1)
      Else
        WriteCommand(0, "Z2",1)
      EndIf
 
    ElseIf GadgetID = #Button_21   ; Schrittmodus
      If GetGadgetState(#Radio_31)=1
        WriteCommand(0, "F0",1)
      Else
        WriteCommand(0, "F1",1)
      EndIf
 
    ElseIf GadgetID = #Button_22  ; Ansteuersignal
      If GetGadgetState(#Radio_35)=1
        WriteCommand(0, "T0",1)
      Else
        WriteCommand(0, "T1",1)
      EndIf
     
    ElseIf GadgetID = #Button_24 ; Signal setzen
      If GetGadgetState(#Radio_44)=1
        WriteCommand(0,"A1",1) ; Signal an
      Else
        WriteCommand(0,"A0",1) ; Signal aus
      EndIf
    ElseIf GadgetID = #Button_26 ; Wartezeit einfügen
      WriteCommand(0, "W"+GetGadgetText(#String_11))
    ElseIf GadgetID = #String_11
     
    ElseIf GadgetID = #Button_29; Reset durchführen
      If WriteCommand(0, "@R")
        Debug "Reset"
      EndIf
    ElseIf GadgetID = #Button_31 ; Achsen sofort stoppen
      WriteCommand(0, "@S")     
    ElseIf GadgetID = #Button_32 ; Achsen anhalten
      WriteCommand(0, "@B")
    ElseIf GadgetID = #Button_33  ; Pause setzen
      WriteCommand(0, "@A")
    ElseIf GadgetID = #Button_34 ; Pause beenden
      WriteCommand(0, "@C")
    ElseIf GadgetID = #Button_35
      Event = #PB_Event_CloseWindow
    ElseIf GadgetID = #Button_37 ;Position abfragen
      If GetGadgetState(#Radio_51)=1
         SetGadgetText(#String_14,Mid(WriteCommand(0, "@LX"),4))
      ElseIf GetGadgetState(#Radio_52)=1
        SetGadgetText(#String_14,Mid(WriteCommand(0, "@LY"),4))
      ElseIf GetGadgetState(#Radio_57)=1
         SetGadgetText(#String_14,Mid(WriteCommand(0, "@LZ"),4))
      EndIf
    ElseIf GadgetID = #Button_39 ;Vektorfahrt ausführen
      If GetGadgetState(#Radio_61)=1; Relativ
         WriteCommand(0, "L25,x"+GetGadgetText(#String_16)+",y"+GetGadgetText(#String_18)+",z"+GetGadgetText(#String_19),1)
       Else                         ; Absolut
         WriteCommand(0, "L25,X"+GetGadgetText(#String_16)+",Y"+GetGadgetText(#String_18)+",Z"+GetGadgetText(#String_19),1)
      EndIf
     
    ElseIf GadgetID = #Button_41
      ;Referenzfahrt ausführen je nachdem, wie die CheckBoxes aktiviert sind
      If GetGadgetState(#CheckBox_3)=1 And GetGadgetState(#CheckBox_4)=1 And GetGadgetState(#CheckBox_5)=1
         WriteCommand(0, "$HZXY",1)
       ElseIf GetGadgetState(#CheckBox_3)=1 And GetGadgetState(#CheckBox_4)=1
         WriteCommand(0, "$HXY",1)
       ElseIf GetGadgetState(#CheckBox_3)=1 And GetGadgetState(#CheckBox_5)=1 
         WriteCommand(0, "$HXZ",1)
       ElseIf GetGadgetState(#CheckBox_4)=1 And GetGadgetState(#CheckBox_5)=1
         WriteCommand(0, "$HYZ",1)
       ElseIf GetGadgetState(#CheckBox_3)=1
         WriteCommand(0, "$HX",1)
       ElseIf GetGadgetState(#CheckBox_4)=1
         WriteCommand(0, "$HY",1)
       ElseIf GetGadgetState(#CheckBox_5)=1
         WriteCommand(0, "$HZ",1)
       EndIf
     ElseIf GadgetID = #Button_43
       For Anzahl=1 To 5
       If GetGadgetState(#Radio_61)=1; Relativ
         WriteCommand(0, "L25,x"+GetGadgetText(#String_16)+",y"+GetGadgetText(#String_18)+",z"+GetGadgetText(#String_19),1)
       Else                         ; Absolut
         WriteCommand(0, "L25,X"+GetGadgetText(#String_16)+",Y"+GetGadgetText(#String_18)+",Z"+GetGadgetText(#String_19),1)
      EndIf
      Next Anzahl
   EndIf
   
  EndIf
 
Until Event = #PB_Event_CloseWindow ; End of the event loop
WriteCommand(0, "@R")
 If IsSerialPort(0):CloseSerialPort(0):EndIf
End
;


Gruß Falko

_________________
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 28 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye