Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Roboter mit QBasic programmieren

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 12.03.2022, 16:58    Titel: Roboter mit QBasic programmieren Antworten mit Zitat

Hallo,
ich möchte einen Roboter ( Mitsubishi Movemaster RV-M2 ) mit QBasic
programieren.Vielleicht kann mir ja hier jemand einen Tip geben wie ich das hin bekomme. Ich würde mich sehr über eure Hilfe freuen .
Aktuell kann ich den Roboter mit der Software Cosirop steuern.Der Roboter hat einen Befehlssatz : "Movemaster Command",der ca. 80 Befehle umfasst.
Das reicht auch um ihn zu bewegen etc.,aber ich kann leider keine
Variablen definieren,habe keine Mathematischen Funktionen +-x/ und
kann keine Bedingungen wie " IF / Then " ,Kreisbewegungen etc.
Der Roboter ist ca. 35 Jahre alt und lief wohl damals noch unter DOS.

Die Einstellungen in "Cosirop"für die serielle Schnittstelle mit denen der PC und der Controller des Roboters kommunizieren sind folgende :

Com1 , Baudrate 9600,Datenbits 7,Parität Gerade ,Stopbits 2
Flusskontrolle : DTR aktiviert ,RTS/CTS aktiviert.

Und das funktioniert auch wunderbar. Um ihn mit Basic zu programmieren
geht man laut Anleitung folgender Maßen vor :
MS-Dos aktivieren ,MBasic4 laden und den Comport öffnen .

Das habe ich in Qbasic im unteren Fenster (direct) versucht mit :
open"com1:9600,e,7,2"as#1 Ergebnis = Laufzeitfehler
mit open"com1:9600,e,7,2,cs,ds,rs"as#1 scheint er den Port geöffnet zu haben.Denn wenn ich den Befehl erneut eingebe,sagt er das der Port bereits geöffnet ist. Soweit so gut .
In der Anleitung steht auch das ich dann für die serielle Schnittstelle die Befehle in folgendem Format sende
print #1,"NT" (Grundstellung) print #1,"Mo1" (Move Pos.1).
wenn ich es so mache kommt zwar keine Fehlermeldung aber bewegen
tut sich auch nix.Wenn ich ins obere Fenster ein Programm schreibe passiert auch nichts.
Ich bin leider kein Computerexperte und bin ohnehin
schon froh das ich den Roboter überhaupt ans laufen gebracht habe.
Ich habe die Dosbox installiert und QBasic ,daß funktioniert ja auch soweit.Auf dem Rechner läuft Windows Pro.
Ich weiß nicht ob es an den Kommunikations Einstellungen liegt ,an der Dos-Version oder an irgendetwas anderem ?
Höchstwahrscheinlich liegts an mir zwinkern
Im voraus besten Dank
Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 110

BeitragVerfasst am: 13.03.2022, 19:32    Titel: Antworten mit Zitat

Versuch's erstmal mit einem Terminal-Programm.

Z. B. Terminal.exe (B.Kainka)
oder Hterm.

Wenn das funktioniert verwende besser Freebasic oder VB.net oder Powerbasic (CC oder Win)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 14.03.2022, 12:30    Titel: Antworten mit Zitat

Hallo,
danke für die schnelle Antwort. Über Hterm hatte ich auch schon mal eine Verbindung aufgebaut ,der Roboter hat aber nur auf wenige Befehle reagiert.

Mit dem Programm Cosirop ,kann ich ihn ja auch steuern.Ich möchte ihn aber,
so wie im Handbuch des Roboters beschrieben ,mit Basic programmieren.
Da ich dadurch viel mehr Möglichkeiten habe.

In Qbasic kann ich ja auch den Comport öffnen.Ich weiß aber nicht ob die einzelnen Parameter ( CS,DS,RS ) stimmen. Der Controller ist auf jeden Fall
per Dip Schalter auf 9600,e,7,2 eingestellt und läuft ja auch unter Cosirop.
Laut Handbuch müssen DTR und RTS/CTS aktiviert sein.Habe ich das durch die angehängten Parameter ( CS,DS,RS ) dann richtig aktiviert ??

Wie bereits geschrieben,reagiert er auf die Befehle ,denen print #1, voran-gestellt sind nicht . ER sollte bei dem Befehl print #1,"NT" in seine Grundstellung fahren .

Ich denke es ist ein kleines Kommunikations Problem mit der seriellen Schnittstelle.

Im voraus besten Dank

Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1235
Wohnort: Ruhrpott

BeitragVerfasst am: 14.03.2022, 14:16    Titel: Antworten mit Zitat

Welche Windows - Version hast du denn installiert? Seit XP ist der Zugriff auf die Schnittstellen nicht mehr so ohne weiteres möglich. Und QBasic ist aus der Sicht von Windows ein ganz "normales" Programm und kein Bestandteil des Betriebssystems.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 14.03.2022, 15:49    Titel: Antworten mit Zitat

Hallo,
Eine genauere Beschreibung des Problems steht oben in meinem ersten Post. Ich habe Windows 7 auf dem Rechner.
Die Kommunikation Roboter und PC funktioniert ja bereits unter Win7 ,mit der für den Roboter mitgelieferten Software ( Cosirop ).

Bevor es die Cosirop Software überhaupt gab, wurde der Roboter laut Handbuch unter dem Betriebssystem DOS mit Basic programmiert .

Das möchte ich auch ! Den Roboter mit Basic programmieren !

Laut Handbuch wird im Basic Programm die Schnittstelle mit dem Befehl :
open ,geöffnet und die Befehle dann im folgenden Format :
print #1,"Befehl" zum Roboter übertragen .
Auf die Print Befehle reagiert er aber nicht .

Ich denke es liegt nur an den Parameter Einstellungen der Schnittstelle.

Im voraus besten Dank
Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 110

BeitragVerfasst am: 14.03.2022, 15:55    Titel: Antworten mit Zitat

Zitat:
Ich habe die Dosbox installiert und QBasic


Ich vermute es liegt an der DODBox.

Mit einem 32-Bit Win7 (ohne DOSBox) gab's bei mir keine Probleme mit der seriellen Schnittstelle.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 14.03.2022, 16:16    Titel: Antworten mit Zitat

Mein Betriebssystem ist Windows 7 Pro. 64bit . Und mit der Software Cosirop
funktioniert die Datenübertragung über die serielle Schnittstelle ja auch .

In Qbasic im unteren Fenster (direct) gebe ich ein:

open"com1:9600,e,7,2"as#1 Ergebnis = Laufzeitfehler

mit open"com1:9600,e,7,2,cs,ds,rs"as#1

scheint er den Port geöffnet zu haben.Denn wenn ich den Befehl erneut eingebe,sagt er das der Port bereits geöffnet ist.

Wie aktiviere ich mit dem "OPEN" Befehl "DTR" ?
Ich denke RTS/CTS habe ich mit den Parametern "CS,RS" schon aktiviert .

Oder muss ich zu dem "Print #1" Befehl noch weitere Angaben machen ,
das die Daten über die serielle Schnittstelle zum Roboter geschickt werden und nicht woanders hin ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4648
Wohnort: ~/

BeitragVerfasst am: 14.03.2022, 18:12    Titel: Antworten mit Zitat

Ich habe zugegebenermaßen überhaupt keine Ahnung von der Materie, sondern nur mal einen Thread herausgefischt, der mir vielversprechend erschien. Vielleicht ist da etwas hilfreiches dabei.
https://forum.qbasic.at/viewtopic.php?t=8611
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 955
Wohnort: Austria

BeitragVerfasst am: 14.03.2022, 21:38    Titel: Antworten mit Zitat

Du musst DosBox entsprechend konfigurieren, damit dies die COM-Schnittstelle wirklich nach außen anspricht und nicht nur simuliert. Standardmäßig ist die Konfiguration nämlich folgende:
Code:
serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled


Was du brauchst ist aber etwas in dieser Art:
Code:
serial1=directserial realport:com1
oder eventuell
Code:
serial1=directserial realport:com1 defaultbps:9600 parity:n bytesize:8 stopbit:1 irq:4

siehe https://www.dosbox.com/wiki/Configuration:SerialPort
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 15.03.2022, 10:34    Titel: Antworten mit Zitat

Hallo,
danke für eure Hilfe.Ich werde es nachher mal ausprobieren

und die Einstellungen der Dosbox ändern.

serial1=directserial realport:COM1

Hört sich viel versprechend an !

Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 20.03.2022, 13:58    Titel: Antworten mit Zitat

Hallo,
ich bin erst heute dazu gekommen es auszuprobieren .
Mit der Einstellung " serial1=directserial realport:COM1 "
hatte sich nichts geändert . Dann habe ich es mit der Einstellung :
" serial1=directserial realport:com1 defaultbps:9600 parity:e bytesize:7 stopbit:2 irq:4 " versucht ,

Und es hat funktioniert ! Vielen Dank für die Hilfe !

Mit " open"com1:9600,e,7,2"as#1 kann ich den Comport öffnen.
Ich kann jetzt im unteren Fenster (direct ) Befehle in der Form :
Print #1,"Befehl" eingeben und ausführen.
Dann habe ich ein kleines Programm geschrieben :

10 open"com1:9600,e,n,7,2"as#1
20 Print #1,"NT (Grundstellung)
30 Print #1,"SP 7" (Geschwindigkeit auf Stufe 7)
40 Print #1,"Mo 1" (Position 1 anfahren)
50 Print #1,"Ti 1" (Wartezeit 1 Sekunde)
60 Print #1,"Mo 4" (Position 4 anfahren)
70 End
Im Einzelschritt führt der Roboter die Befehle dann aus.

Will ich das Programm komplett ablaufen lassen ,dann stopt er
bei Zeile 40 und es kommt die Meldung " Laufzeit Fehler am Gerät".
Ich habe schon in den Unterlagen des Roboters nachgesehen ob man
die Zeit Wartezeit für das erhalten der Befehle irgendwie verändern kann.
Habe aber nichts gefunden . In der Roboter Software "Cosirop" kann ich
die Zeiten einstellen,wie lange er auf Befehle warten soll.
Ich weiß auch nicht ob man mit den Parametern (cs,ds,rs etc.) die
Einstellungen für den Comport so anpassen kann das sich die Warte-
zeiten verlängern oder ob es nur am Roboter Controller einzustellen ist.

Vielleicht hat ja noch jemand einen Tip ,was man da machen könnte.

Nochmals besten Dank

Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1235
Wohnort: Ruhrpott

BeitragVerfasst am: 20.03.2022, 17:34    Titel: Antworten mit Zitat

Mika hat Folgendes geschrieben:
Vielleicht hat ja noch jemand einen Tip ,was man da machen könnte.
Wie wäre es mit einem
Code:
SLEEP 3
(oder eine andere geeignete Anzahl von Sekunden) nach Zeile 40?

Noch besser wäre es natürlich, wenn der Roboter bzw. das Steuerprogramm jeweils ein Rückmeldesignal ausgeben würde, sobald ein Befehl komplett abgearbeitet ist. Damit wäre ein perfektes Timing möglich.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 21.03.2022, 12:52    Titel: Antworten mit Zitat

Hallo,
habe es mit dem Befehl "Sleep" probiert,es ändert nichts.

Bei meinem Programm wird immer nur der 1.Befehl ausgeführt,
egal welcher Befehl (NT oder Mo )etc..

Danach meldet der Roboter Controller eine Störung (lautes Piepen)
und ich muss den Reset Taster betätigen um den Fehler zu löschen.

In QBasic erscheint dann meistens die Meldung "Laufzeit Fehler am Gerät".

Lass ich das Programm im Einzelschritt Modus ablaufen führt er jeden
einzelnen Befehl aus .

Nur das ganze Programm nicht,immer nur den 1.Befehl !

Ich habe auch schon bei dem "Open Com Befehl" die Parameter
CS,DS,CD auf eine längere Wartezeit hochgesetzt z.B. (CS 60000)=60 Sekunden. Das ändert aber auch nichts .

Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1235
Wohnort: Ruhrpott

BeitragVerfasst am: 21.03.2022, 15:19    Titel: Antworten mit Zitat

Hmmm...


Versuche es mal mit einem
Code:
SLEEP
nach jeder Zeile, so daß du jedesmal eine Taste drücken mußt, um zum nächsten Befehl zu kommen.

Falls das nicht hilft, setz mal ein Semikolon nach jeder PRINT #1... - Zeile. Möglicherweise stört das angehängte LF/CR die Kommunikation.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mika



Anmeldungsdatum: 12.03.2022
Beiträge: 8

BeitragVerfasst am: 04.04.2022, 16:31    Titel: Antworten mit Zitat

Hallo,
ich bin leider erst jetzt dazu gekommen es auszuprobieren.
Mit dem " ; Semikolon ; "hinter jeder Programmzeile bringt leider
auch nichts.Das mit dem " Sleep " Befehl hatte ich ja bereits
schon versucht,hat aber leider auch nichts gebracht.
Trotzdem besten Dank für die Hilfe.
Gruß Michael
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 110

BeitragVerfasst am: 05.04.2022, 12:56    Titel: Antworten mit Zitat

Bei den gefundenen Beispielen kommt nach dem Print ein Input.
Versuch' mal:
Code:

...
20 Print #1,"NT ' (Grundstellung)
25 D$ = Input$(1,1)
26 Print D$
30 Print #1,"SP 7" '(Geschwindigkeit auf Stufe 7)
35 D$ = Input$(1,1)
36 Print D$
40 Print #1,"Mo 1" '(Position 1 anfahren)
45 D$ = Input$(1,1)
46 Print D$
50 Print #1,"Ti 1" '(Wartezeit 1 Sekunde)
55 D$ = Input$(1,1)
56 Print D$
60 Print #1,"Mo 4" '(Position 4 anfahren)
65 D$ = Input$(1,1)
66 Print D$
70 End


Nochmal mein Tipp mit einem Terminalprogramm z. B. Hterm oder Terminal.exe zum Testen.
Dann siehst du evtl. Rückmeldungen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz