Hallo RobiMan,
warum verwendest Du nicht einfach das Start-Event, so wie es in der Doku beschrieben ist.
Falls Du z.B. nach dem PowerOn-Event noch Änderungen durchführst, musst Du jedesmal die Steuerung neustarten um die Signale zu verbinden.
Außerdem könnten irgenwelche Nebeneffekte auftreten, aufgrund Du dann wieder irgendwelche Workarounds programmieren musst.
Posts by Micky
-
-
Hallo RobiMan,
laut Handbuch sollte man die Alias-Signale im Event "Start" verbinden bzw. vor der ersten Verwendung der Signale.
Das heißt sie sind so lange gültig, bis der Programmzeiger versetzt wird bzw. von "main" gestartet wird (Nur in diesem Fall wird das Start Event ausgeführt).
AliasIO muss damit nicht bei den folgenden Events verwendet werden:
"Restart", "PowerOn" oder "StepEvent", etc. ausgeführt werden.
Falls die Signalverbindung explizit mit "AliasIOReset" gelöscht wurde, muss es vor der nächsten Verwendung neu verbunden werden -
Hallo,
mit AliasIO verbindest ein reales Signal mit einem im Programm verwendeten Signalvariable und kannst damit den Zustand des verbundenen Signals abfragen bzw. setzen.
Die realen Signale behalten ihren Zustand bei auch wenn Du die Verbindung mit dem Alias-Signal trennst oder mit einem anderen Signal neu verbindest.
Beim Verbinden mit AliasIO erhälst Du immer den aktuellen Wert des realen Signals.
Wenn das reale Signal den Zustand bei einem Neustart beibehalten soll, kannst Du dies über die EIO-Konfiguration über den "Signal Safe Level" konfigurieren.
image.png
In dem Step-Event musst m.E. die Alias-Verbindung nicht neu ausführen, da Variablen nur beim Versetzen des Programmzeigers in eine andere Routine zurückgesetzt würden. -
Die Dokumentation findest Du in der "ABB Library" die Du unter dem folgenden Link findest:
ABB Library
Das Dokument siehst Du aber nur, wenn Du einen Premium Account hast. -
Hallo AtoK09,
beim Pfadnamen ("Argument 3") musst du "SYSTEM:" weglassen, einfach "Data/CustomOrdner" verwenden.
Das "Argument 1" in den Systemparametern enthält "System:", um das Backup in einem Verzeichnis oder TAR-File mit dem Systemnamen anzulegen. -
Laut der "Bedienungsanleitung OmniCore" Dokument-Nr: 3HAC065036-003 sieht die Verzeichnisstruktur der OmniCore Steuerung wie folgt aus:
Der Root-Pfad "\hd0a" gibt es in der OmniCore-Steuerung nicht mehr und man kann auch keine Ordner im Root mehr anlegen.
Wenn Du das Backup-Verzeichnis nicht verwenden willst, kannst Du das Data-Verzeichnis verwenden und dort einen Unterordner anlegen.Verwende einfach den folgenden Pfad "BACKUP" oder "DATA/MeinOrdner"
-
Hallo,
du kannst den Reset-Button über dem USB-Port am FlexPendant drücken, um dieses neu zu starten -
-
Hallo,
du kannst den Interrupt als "\SingleSafe" deklarieren,
Das Ereignis des sicheren Interrupts wird bei einem Programmstopp und der schrittweisen Abarbeitung in die Warteschlange gestellt. Wenn die kontinuierliche Abarbeitung fortgesetzt wird, wird der Interrupt ausgeführt.
In der Trap-Routine musst Du den Interrupt immer neu verbinden, da er sonst nicht mehr ausgelöst wird
Z.B. ISignalDI\SingleSafe, di1,1,sig1int; -
Hallo,
es besteht auch die Möglichkeit eine neue UAS-Konfiguration über einen RESTORE in die Steuerung zu laden.
Hierzu muss Du wie folgt vorgehen:- Erstelle ein Backup von der Steuerung [1] die das UAS-Problem hat
- Konfiguriere an einem anderen Roboter [2] die UAS-Daten, so wie Du sie an in der Steuerung [1] benötigst.
- Erstelle ein Backup von dieser Steuerung [2].
- Kopiere die Dateien "uas_groups.xml" und "uas_users.xml" aus dem Verzeichnis "CS" des Backup der Steuerung [2] in das Verzeichnis "CS" des Backup der Steuerung [1].
- Führe einen RESTORE mit dem modifizierten Backup der Steuerung [1] aus, wobei Du die Checkbox "Include Controller Settings" anwählen musst, so dass die UAS-Daten installiert werden.
-
Die RAPID-Module wurden wie folgt geändert
- Das „.prg“-Dateiformat wurde entfernt.
- Das RAPID-Modul "user.sys", das in allen RAPID Tasks geladen und im HOME-Ordner abgelegt wurde, wurde entfernt. Der Inhalt wird in einem Systemmodul abgelegt, das beim Start geladen wird.
- Neue Dateiformate für Module, „.modx“ und „.sysx“, da jetzt die UTF-8-Kodierung verwendet wird.
- „.mod“- und „.sys“-Dateien können noch geladen werden, werden aber in das neue UTF-8 Format konvertiert und können nur als ".sysx" bzw. ".modx" gespeichert werden.
- Die Dateieendungen ".mod" und ".sys" dürfen nicht in ".modx" bzw. ".sysx" umbenannt werden, da anhand der Dateiendung die Kodierung der Module bestimmt wird und somit falsche Zeichen dargestellt werden. D.h. alte Module laden und mit der neuen Dateiendung speichern.
- RAPID-Zeichenfolgen in einem Backup können möglicherweise, beim Konvertieren von ASCII nach Unicode, zu lang sein.
Änderung am String-Format
- Alle RAPID-Anweisungen, die Zeichenketten verwenden, können UTF-8 verarbeiten. Dies führt zu einigen Unterschieden im Verhalten.
- Ein String kann 80 Byte groß sein, wobei ein Zeichen aus mehreren Bytes bestehen kann (z.B. ä,ö,ü sind 2-byte groß). Das heißt, enthält ein String ein „ä“, so reduziert sich die maximale String-Länge auf 79 Zeichen.
- Es gibt neue Instruktionen für die Stringverarbeitung (z.B. Concat, StrSize) sowie die Möglichkeit das Verhalten im Fehlerfall (String ist zu lang) über die Systemparameter einzustellen (Controller -> General Rapid -> TruncateLongRapidStrings) oder den Fehler über die Fehlerbehandlung (ERR_STRTOOLNG).
- Der beste Weg um zwei Strings zusammen zu bauen, ist aber die Verwendung der Funktion "CONCAT", den die kümmert sich um die Bytegröße jedes Zeichens und gibt den Text der nicht mehr in einen String reingepasst, als Variable zurück.
-
Hallo igoslaus,
du kannst entweder den oframe eines Wekobjektes in Z-Richtung verschieben oder Du fährst den Punkt mit Hilfe der Funktion "Offs" an. -
Hallo,
du könntes auch RWS (Robot Web service) verwenden um direkt Deine Werte in eine Rapid-variable zu schreiben oder um geänderte RAPID-Variablen zu subscriben.
Nähere Infos hierzu findets Du unter https://developercenter.robotstudio.com/api/RWS -
Hallo,
eine detailierte Beschreibung zu den Achskonfigurationen findest Du Im Handbuch "Technical reference manual RAPID Instructions, Functions and Data types" im Kapitel "Datentypen, confdata" -
Hallo,
wenn Du mehrere User im UAS anlegst, könntest Du mit der Funktion "GetUASUserName" den gerade am Roboter angemeldeten User abfragen (z.B. "Default User") und in Deinem Menü den Menüpunkt "Geschwindigkeit" ausblenden, wenn nicht der richtige User angemeldet ist. -
Hallo,
verwendest Du den Systemausgang "Motoren Off" oder "Motor Off State".
Der Systemausgang "Motor Off" blinkt und "Motor Off State" steht statisch an.
Wenn die SPS basierend auf dem Systemausgang "Motoren aus" den Systemeingang pulst, solltest Du als Systemausgang "Motor Off State" verwenden. -
Hallo Lukas,
es gibt keinen RAPID-Befehl mit dem man sich an der Robotersteuerung anmelden kann.
Es besteht aber die Möglichkeit sich mit Hilfe der PC-SDK von einem verbundenen Computer über einen Remote-Login an der Robotersteuerung anzumelden.
Siehe https://developercenter.robotstudio.com/api/pcsdk/api/…in.html?q=login -
Hallo Robiman,
den Befehl StartMove solltest Du vor der Instruktion "MoveL pAktPos" einfügen, den sonst bewegt sich der Roboter nicht.
Die Instruktion "Clearpath" wird benötigt, da der Roboter bei "StartMove" die noch nicht beendete Bahn fortsetzen würde. -
Hallo RobiMan,
wie bereits erwähnt, solltest Du einen Single Interrupt verwenden, da du durch den Dialog in der TRAP-Routine verweilst und alle weiteren Interrupts in die Queue eingereiht werden. Diese werden erst nach dem verlassen Deiner TRAP Routine ausgeführt. Das heißt, wenn Dein Interrupt weiterhin Werte liefert läuft Dir zwangsläufig die Queue über.
Du solltest auf jeden Fall sicherstellen das deine Endposition mit einem Fine-Punkt angefahren wird, da ansonsten Dein Programm durch den Programmzeigervorlauf an einer falschen Stelle fortgesetzt wird.
Du solltest einen ClearPath ausführen, falls Du nicht bis zum Endpunkt weiterfahren willst -
Hallo Robiman,
CyclicBool funktioniert nicht mit Gruppeneingängen.
Die Interrupt Queue sollte nicht überlaufen, wenn die Interruptroutine sofort wieder verlassen wird.
Du könntest außerdem einen Single Interrupt verwenden, den Du am Ende der TRAP Routine wieder neu verbindest, so treten zumindest keine weiteren Interrupts auf.
Du musst die TRAP Routine mit einem Long-Jump verlassen, sobald deine Bedingung erfüllt ist,
Das heißt. du verwendest den RAISE Befehl in der TRAP-Routine z.B. RAISE ERR_SEARCHL_GI
und in Deiner SEARCHL_GI-Instruktion verwendet Du in der Fehlerbehandlung