Hallo Urmel,
ich habe sowohl SerialPort.WriteLine als auch SerialPort.Write Befehl ausprobiert (zweiterer in Kombination mit \r) . Trotzdem bekomme ich keine Rückantwort, daran kann es also nicht liegen.
Hallo Urmel,
ich habe sowohl SerialPort.WriteLine als auch SerialPort.Write Befehl ausprobiert (zweiterer in Kombination mit \r) . Trotzdem bekomme ich keine Rückantwort, daran kann es also nicht liegen.
Ja mit dem Befehl MO 1, C in Kombination mit einem TI Befehl hat das Problem gelöst, so dass ich jetzt Teile verschieben kann. Die Möglichkeit die Position mit geschlossenen Greifer zu speichern hätte ebenfalls zum Ziel geführt.
Als nächster Aufgabenpunkt steht nun an, die aktuelle Position des Roboters zu bestimmen, um eventuelle Kollisionen mit dem TCP zu vermeiden.
Ich habe dazu im Handbuch auch den Befehl WH (where gefunden). Des weiteren ist folgendes Codebsp für Basic im Handbuch beigefügt:
10 Open "COM 1: 96010, E,7,2" AS#1
20# Print #1, "WH"
30 Line Input # 1, A$
40 Print "Momentane Position = " ; A$
50 END
RUN
Momenta Position = +10,0, +380,0, +300,0, -70,0, -40,0
Wenn ich das jetzt abgewandelt in C# wie folgt schreibe, bekomme ich immer eine Timeoutüberschreitung (habe Timeout verschiedene Werte probiert):
serialPort.Write("WH"); // serialPort.WriteLine selbes Ergebniss, serialPort.Open ist ja nicht nötig da eh schon an
textBox1.text = serialPort.ReadLine();
Es scheint so, als ob ich vom Roboter nichts erhalten würde. Mache ich irgendwas falsch bei der Umlegung des Codes in C#?
Gruss
DAvid
Hallo Urmel,
also den MP-Befehl mag er nicht in Kombination mit der Zeilennummer, haben es jetzt wirklich, wie von dir vorgeschlagen, mit PD gemacht.
Jetzt kommt aber schon wieder ein kleines Problem:
serialPort.WriteLine("201 GO");
serialPort.WriteLine("202 TI 5");
serialPort.WriteLine("203 MO 1");
serialPort.WriteLine("204 GC");
serialPort.WriteLine("205 TI 5");
serialPort.WriteLine("206 MO 3");
serialPort.WriteLine("207 ED ");
serialPort.WriteLine("RN 201");
Wenn ich diesen Code eingebe, schließt er zwar den Greifer, öffnet ihn allerdings danach sofort wieder, bevor er in Position 3 fährt, mit anderen Worten ausgedrückt, ich kann momentan nichts von A nach B mit geschlossenen Greifer heben.
Danke für deine Hilfe
Gruss
DAvid
So,
haben uns wohl zu früh gefreut.
Folgender Ablauf funktioniert ohne Probleme:
serialPort.WriteLine("SP 2");
serialPort.WriteLine("100 DW 50, 0, 0");
serialPort.WriteLine("110 DW 0, 30, 0");
serialPort.WriteLine("120 ED ");
serialPort.WriteLine("RN 100");
Wenn ich jetzt aber in der Programmabfolge mit einer Absolutposition (MP)
bzw. mit einer Gelenkverfahrung (MJ) in Verbindung mit einer Relativbewegung anfahren möchte, bekomme ich den beliebten Piepston zu hören.
Anbei ein Bsp dafür:
private void Grundstellung()
{
serialPort.WriteLine("MP 0, 380, 300, -70, -40");
serialPort.WriteLine("100 DW 10, 0, 0");
serialPort.WriteLine("110 ED ");
serialPort.WriteLine("RN 100");
}
Danke für eure Meinung zu meinem Problem
Gruss David
Hallo
Vielen Dank für deine super schnelle Antwort.
Unser Problem ist damit vorerst gelöst.
Aber ich denke, wir werden uns hier auf jeden Fall nochmal melden.
Gruß David
Hallo zusammen,
bin neu hier und benötige mal eure Expertenmeinung.
Nachdem wir den Roboter in Betrieb genommen haben, wollen wir mittels WindowsFormAnwendung über einen Button eine Befehlsfolge starten.
Einzelbefehle lassen sich ohne Probleme absetzen.
Wenn jedoch mehrere Befehle abgesetzt werden wollen, dann wird immer nur der erste Befehl ausgeführt.
hier der Auszug aus dem Programmcode:
private void sendButton_Click(object sender, EventArgs e)
{
try
{
serialPort.WriteLine("MJ -10, 0, 0, 0, 0");
serialPort.WriteLine("MJ +10, 0, 0, 0, 0");
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message,"Error in sendButton_Click");
}
}
Weiß grad echt nicht mehr weiter und häng schon mehrere Tage daran.
Vielen Dank schon mal im Voraus für eure Hilfe
Gruß David