Beiträge von rmac

    Hallo zusammen,


    folgendes Problem auf einer KRC2 4.x/Win95 (genaue Version müsste ich erfragen):


    - Probleme beim Netzwerkzugriff (sowohl TCP/IP als auch Microsoft (NetBEUI/SMB?))
    - KRC ist zwar im Netzwerk sichtbar, beim Zugriff von aussen tritt aber ein Fehler auf ("Netzwerkpfad nicht erreichbar..." oder so ähnlich)
    - auf der KRC erscheint beim Netzwerkzugriff: "Auf das Netzwerk kann nicht zugegriffen werden...."
    - Pingen funktioniert (beide Richtungen)
    - Firewall(s) sind, soweit vorhanden, deaktiviert
    - Arbeitsgruppennamen sind identisch
    - Kabel alle gecheckt; Bypass ausprobiert; mit und ohne Switch getestet.
    - Verbaute Netzwerkkarte ist SMC 8416 (laut Gerätemanager)


    Auf der KRC läuft ein Programm, das als FTP-Server Daten mit einem Client austauscht.
    Das Witzige dabei: kleine Datenmengen (einige hundert Bytes) werden (per FTP) übertragen, bei größeren Datenmengen
    bleibt die Übertragung aber irgendwo stecken.
    Es kommt teilweise sogar zu Komplettabstürzen ("Bluescreen") des W95 auf der KRC.


    Ich habe alle grundsätzlichen Netzwerk-Einstellungen mit einer funktionierenden (nahezu baugleich daneben stehenden)
    Anlage verglichen und keine Abweichungen festgestellt.


    Bis vor Kurzem lief das System wohl noch, wie stabil kann ich allerdings nicht sagen...ich war vor ca. 2 Monaten zuletzt
    dort, da war noch alles gut. Ob und was zuletzt an der Anlage passiert ist bzw. wer möglicherweise daran
    herumgespielt hat, ist leider nicht nachvollziehbar.


    Vielleicht hat ja schon mal einer von euch Experten hier etwas Ähnliches erlebt, und/oder kann mir sonst
    irgendwelche Tipps zur Problemlösung geben.


    Vielen Dank!
    rmac

    RoboBert,


    erstmal Danke :ylsuper:


    Die Montageanleitung ist ja schonmal was und besser als nichts....


    Das Projekt ist erstmal zurückgestellt, insofern würde ich wegen der Betriebsanleitung ggfls.
    später per PN auf dich zukommen, wenn ich darf... :pfeif:


    Gruß
    rmac

    Mahlzeit,


    hat jemand für die KRC4 Handbücher, Unterlagen oder sonstige Dokumente zur Verfügung (PDFs),
    die er mir mailen kann ?


    Bin für alles dankbar was über Werbeprospekte bzw. simple Spezifikationen hinausgeht.


    Besonders interessant wären sicherheitsrelevante Themen / Safety-Konzept (Unser Elektriker braucht was zum Lesen!).


    :applaus: im Voraus
    rmac

    Ich hab auch noch eine relativ übersichtliche Einzeiler-Variante (für 4 Eingänge) :ylsuper:


    ...wenn man nämlich die unzulässigen 3 Bit-Kombinationen explizit aussperrt.
    Sieht dann so aus :


    IF ($IN[1] EXOR $IN[2] EXOR $IN[3] EXOR $IN[4]) and not($IN[1] and $IN[2]) and not($IN[3] and $IN[4]) THEN
    ...
    ENDIF


    gruß :beerchug:
    rmac

    Hi,


    wie für viele andere Fragen im Forum gilt auch hier: Doku lesen hilft meistens weiter !


    Dort steht nämlich (unter "Prioritäten von Operatoren") :
    Grundsätzlich gilt:
    - Geklammerte Ausdrücke werden zuerst bearbeitet.
    - Bei ungeklammerten Ausdrücken wird in der Reihenfolge der Priorität ausgewertet.
    - Verknüpfungen mit Operatoren gleicher Priorität werden von links nach rechts ausgeführt.


    Bei deiner Fragestellung ($IN[1] EXOR $IN[2] EXOR $IN[3] EXOR $IN[4])
    kommt also der dritte Grundsatz zum tragen, d.h. der Ausdruck entspricht:
    ((($IN[1] EXOR $IN[2]) EXOR $IN[3]) EXOR $IN[4])


    Ein einfacher (aber mühsamer) Weg herauszubekommen was da nun wirklich passiert,
    ist das Aufstellen einer entsprechenden Tabelle:


    $IN[1] $IN[2] $IN[3] $IN[4] Ergebnis 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0
    (bitte mal nachrechnen !)


    In Worten: Das Ergebnis ist 1 (=True) wenn
    - genau ein einzelner Eingang 1 ist, oder
    - drei (beliebige) Eingänge 1 sind


    Es gibt bestimmt auch eine einfachere algebraische Methode um das zu bestimmen,
    ist bei mir aber schon ein paar Jahrzehnte her... :wallbash:


    gruß
    rmac

    Stethi
    1. kannst ihm ja deine Schwimmflügel leihen, dann machen wir fifty-fifty :beerchug:
    2. wenn er nicht bis Schritt 11 kommt brauch er natürlich nicht zahlen [size=5pt](steht so im Kleingedruckten)[/size]
    3. ...besser dem Kapitän ins Auge als ins Hirn.... :ylsuper:
    4. Monsterwellen durch spontan auftretende Tsunamis sind auch noch nicht berücksichtigt :angel:


    tja, man kann nicht alles haben....
    gruß
    rmac

    Also wenn das mit einem Roboter gemacht werden muß/soll, dann
    würde ich das folgendermaßen lösen:


    Der Transfer erfolgt mittels eines allseitig (!) umschlossenen Käfigs.
    - der Käfig kann durch eine verriegelbare Tür in der Front betreten werden
    - an der Innenseite der Tür befindet sich eine Leiter, die zu einer Luke im Käfigdach führt
    - der Käfig steht an Deck des Schiffes und ist am Roboter angedockt


    1. die Transferperson betritt frontseitig den Käfig, verriegelt die Tür und schnallt sich an
    2. der Käfig wird durch den Roboter angehoben und
    3. mittels Sensorik (siehe vorherige Postings [Laser, Vision, IMU, ...]) mit der Leiter/Säule synchonisiert
    4. der Roboter hängt den Käfig in die Leiter ein (!) und
    5. entkoppelt sich dann vollständig (!) vom Käfig
    6. die Transferperson schnallt sich ab, öffnet die Luke im Dach des Käfigs und steigt nach oben auf die (Säulen-)Leiter aus
    7. der Käfig bleibt an der Leiter hängen bis die Transferperson ihre Arbeit erledigt hat
    8. danach steigt die Person wieder von oben in den Käfig, schließt die Luke und schnallt sich an
    9. der Roboter synchronisiert sich mittels Sensorik mit dem Andockpunkt am Käfig,
    10. nimmt den Käfig von der Leiter ab und stellt ihn wieder an Deck.
    11. Transferperson steigt aus Käfig und überweist mir 50 € weil ich gerade ihr Leben gerettet hab :applaus::icon_rofl:


    ...besser is das (denke ich)


    gruß
    rmac

    Interessante Anwendung, muß ich schon sagen....


    Also Reflexmarken halte ich in diesem Umfeld für schwierig, weil die Dinger ja
    relativ sauber bleiben müssen und sich auch nicht ablösen dürfen.
    Beides wird in der (salz)wassernahen Umgebung nicht leicht machbar sein.
    Außerdem müsste -abhängig vom Tidenhub- ein größerer/höherer Bereich der
    Säule mit Reflexmarken gepflastert sein.


    Wie schon gesagt: interessante Anwendung, aber ich würde lieber an die
    Leiter springen, als mich von einem Roboter "hinhalten" zu lassen. :liebe029:
    ...und bei diesem Projekt möchte ich auch nicht der verantwortliche
    (Sicherheits-)Ingenieur sein :mrgreen: :
    1. ein Roboter an Deck eines Schiffes ist sehr vielen schädlichen Umwelteinflüssen
    ausgesetzt und wird daher (deutlich) häufiger zu Ausfällen und Problemen neigen
    als seine Kollegen in der warmen, trockenen Halle. Indirekt bedeutet das auch eine
    erhöhte Wartung/Instandhaltung die strikt und feinmaschig ausgeführt werden
    muß, da ja schließich Menschenleben davon abhängen.
    (Das ist auch finanziell nicht zu unterschätzen...)
    2. wenn ich im Robocoaster sitze und eine Not-Aus-Situation eintritt, bleibt alles
    stehen und ich hänge (schlimmestenfalls kopfüber) angeschnallt im Sessel....
    Auf dem Wasser kann ich aber leider nicht per Not-Aus den Seegang abstellen, d.h
    wenn die Not-Aus-Situation eintritt während ich gerade aus der Kabine auf die Leiter
    wechsel, sehe ich (danach) ziemlich alt aus (ich nenn das mal Käsereiben-Effekt)


    Technisch sicherlich machbar, aber die Alltagstauglichkeit und Stabilität sehe ich
    eher kritisch...


    gruß
    rmac

    OK,
    hier ein Zitat aus der Doku:


    [Zitat]
    Syntax:
    FOR Zähler = Startwert TO Endwert <STEP Schrittweite
    <Anweisungen
    ENDFOR


    Erklärung:
    Zähler INT Eine Integer--Variable, die als Schleifenzähler dient.
    Startwert INT Arithmetischer Ausdruck, der den Anfangswert des Zählers bestimmt.
    Endwert INT Arithmetischer Ausdruck, der den Endwert des Zählers bestimmt.
    Schrittweite INT Arithmetischer Ausdruck, um dessen Wert der Zähler bei jedem Schleifendurchlauf erhöht wird:
    - Schrittweite darf negativ sein
    - Schrittweite darf nicht Null sein
    - Schrittweite darf keine Variable sein
    Wird keine Schrittweite angegeben, so wird der Defaultwert 1 verwendet


    Beschreibung:
    Mit der FOR--Schleife kann man sehr übersichtlich eine definierte Anzahl von Durchläufen
    programmieren. Die Schleifendurchläufe werden dabei mit Hilfe des Zählers mitgezählt.
    Die Ausführungsbedingung für FOR lautet:
    - bei positiver Schrittweite: Wenn der Zähler größer als der Endwert ist, dann wird die Schleife beendet.
    - bei negativer Schrittweite: Wenn der Zähler kleiner als der Endwert ist, dann wird die Schleife beendet.
    Die Ausführungsbedingung wird vor jedem Schleifendurchlauf geprüft. Im Extremfall wird
    die FOR--Schleife kein einziges Mal durchlaufen.
    Als Startwert und Endwert des Zählers gibt man jeweils einen Ausdruck vom Typ Integer an.
    Die Ausdrücke werden einmal vor Beginn der Schleife ausgewertet. Der Zähler wird mit dem
    Startwert vorbesetzt und nach jedem Schleifendurchlaufumdie Schrittweite erhöht oder vermindert.
    Die Schrittweite darf nicht Null sein.Wenn keineSchrittweite angegeben ist, hat sie den Standardwert 1.
    Auch negative Werte sind für die Schrittweite zugelassen.
    Sie können den Wert des Zählers in den Anweisungen innerhalb und außerhalb der Schleife
    benutzen. Innerhalb der Schleifen dient er zum Beispiel als aktueller Index für die Bearbeitung
    von Feldern. Nach dem Verlassen der Schleife hat der Zähler den zuletzt angenommenen Wert.
    Zu jeder FOR--Anweisung muß es eine ENDFOR--Anweisung geben. Das Programm wird nach
    Beendigung des letzten Schleifendurchlaufs mit der ersten Anweisung hinter ENDFOR fortgesetzt.
    Die Schleife kann vorzeitig mit der EXIT--Anweisung verlassen werden.


    Beispiele:
    FOR--Schleife, die in 10 Durchgängen die Variable B um eins erhöht.
    FOR A=1 TO 10
    B=B+1
    ENDFOR


    FOR--Schleife, die in Zweier--Schritten den Zähler A nach jedem Durchlauf erhöht und
    die Variable B um den Zählerstand erhöht. Sollte die Variable B den Wert 10 erreichen,
    wird die Schleife vorzeitig beendet.
    FOR A=1 TO 15 STEP 2
    B=B+A
    IF B==10 THEN
    EXIT
    ENDIF
    ENDFOR
    [Ende Zitat]



    Vielleicht hilft dir das erstmal weiter.
    Ansonsten Doku besorgen, lesen, verstehen und ausprobieren... ;)


    gruß
    rmac

    schoenen guten tag kuka neuling ...
    haben ein prob beim ableiten einer frage aus deinem beitrag ...kannst du vllt ein paar tipps geben wo genau dein prob liegt ...waeren dir dankbar

    Hi,
    wenn es sich um eine KRC1 handelt, kann man einzelne Daten/Variablen recht einfach über
    die Crosscom-Schnittstelle ändern. Wurde hier schon mehrfach thematisiert....
    (Siehe z.B.: http://www.roboterforum.de/rob…crosscommexe-t6513.0.html)


    Vorteil: man kann die Daten in der $config.dat ändern auch während ein Submit und/oder Programm geladen ist bzw. läuft.
    Sollte für simple Änderungen von TOOL_NAME[1,] usw. ausreichen....


    gruß
    rmac


    Edit PS.:


    Es geht da um ein Projekt an der Uni, bei dem ständig Werkzeuge gewechselt werden und die zugehörigen Daten quasi per Mouseklick überspielt werden sollen. Also der einmalige Aufwand dürfte beliebig hoch sein :zwink:


    Ist zwar jetzt kein C++, aber mit minimalem Aufwand kann man in MS-Access eine kleine Datenbank mit
    Werkzeugparametern aufbauen und diese dann direkt per VBA/Crosscomm in die $config.dat übertragen.
    Wie gesagt, aber nur mit KRC1 ....

    Hi,


    hier Auszug aus der Doku (KRC 1, R4.1):


    EXT_START
    Mit dem Setzen dieses Eingangs kann bei aktiver E/A--Schnittstelle ein Programmgestartet,
    bzw. wieder fortgesetzt werden.
    Es wird nur die ansteigende Flanke des Signals ausgewertet.
    (ACHTUNG: keine SAK-Fahrt...)


    CONF_MESS
    Durch Setzen dieses Eingangs kann der Leitrechner aufgetretene Fehlermeldungen selbst
    löschen (quittieren).
    Es wird nur die ansteigende Flanke des Signals ausgewertet.
    Ein Quittieren der Fehlermeldungen ist selbstverständlich nur dann möglich, wenn die
    Störungsursache beseitigt wurde.


    DRIVES_ON
    Durch einem High--Impuls von mind. 20 ms Dauer an diesem Eingang kann der Leitrechner
    die Roboterantriebe einschalten.
    Ab dem Software--Stand 1.1.7 und bei Verwendung der Powermodule PM6--600, Fertigungsstände
    A, B oder C und PM0--600 Pro wird dasWiedereinschalten der Antriebe zum
    Schutz des Antriebsrelais K2 13--18.5 Sekunden lang nach dem letzten Einschalten der
    Antriebe verhindert.
    Eine anstehende positive Flanke von DRIVES_ON wird am Ende des Zeitfensters (nach
    18.5 Sekunden) erkannt und die Antriebe werden verzögert eingeschaltet.

    [...]


    Steht unter "Konfiguration | Automatik Extern | Signalbeschreibungen".
    Hier sind auch die entsprechenden Signaldiagramme angegeben.


    Hoffe das reich dir als Antwort...


    Gruß
    rmac


    [...]Von allen COM-Varianten ist die clientseitig am einfachsten zu programmieren (und am langsamsten), das sollte in allen gängigen Programmiersprachen in der Tat recht ähnlich gehen.[...]


    Jo, da hast du wohl recht.
    Aber der Vorteil beim Late-Binding ist eine gewisse Unabhängigkeit vom Versionsstand des Objektes, da ja
    über den Klassenname aufgelöst wird. (Andererseits weiß ich auch nicht wie oft KUKA neue Releases nachgeschoben hat)
    Den Geschwindigkeitsverlust stufe ich nicht als so kritisch ein, da CrossComm ohnehin nicht echtzeitfähig ist.
    Überhaupt sind meine Erfahrungen mit der CrossComm-Performance nicht sonderlich berauschend und ich glaube
    nicht, dass das (nur) an der IDispatch-Schnittstelle liegt.
    Hängt in meinen Augen auch stark von der Rechnerleistung ab: bei meinem letzten Projekt (KRC1 R2.2.8, CPU 100MHz,
    64MB Hauptspeicher !!!) war das echt super-lahm....
    Dürfte so im Leistungsbereich von heutigen mittelpreisigen Handys oder guten MP3-Playern liegen.... :mrgreen:


    Naja, was solls, Hauptsache funktioniert...
    gruß
    rmac

    Hi,


    was den C++ Teil angeht, kann ich dir leider nicht konkrekt weiterhelfen, aber während mein Wohnzimmer
    durch die weiblichen Familienteile und POPSTARS :puke: belegt war, habe ich mal ein rudimentäres
    Delphi Beispiel zusammengebastelt, das für dich möglicherweise nachvollziehbarer sein dürfte als VB-Code.
    Vielleicht bringt es dich der Sache ja etwas näher....


    Die Anwendung besteht aus einem kleinen Fenster mit einer Textbox, einem Button und einem Memofeld.
    (siehe angehängtes Bild)
    Nach Eingabe eines Variablenamens in die Textbox und Drücken des Buttons, wird im Memofeld das Ergebnis
    von CrossComm.ShowVar angezeigt; ziemlich trivial....


    Hier der Code dazu (ohne ausführliche Fehlerbehandlung):


    gruß
    rmac


    PS.: Ich habe auf diesem Wege eine komplette Client/Server-basierte TouchScreen-Anwendung mit Paletten-/Teile-/Benutzer-
    Verwaltung, Parametrierung, Protokollierung und jede Menge anderem Firlefanz zusammengebaut.

    Hi,



    [...]Da kommt vielleicht noch ein Touchmonitor für die Visualisierung mit ins Spiel, der diese Umsetzung jedoch ausschließt, wenn er an einen COM-Port angeschlossen werden muss...
    [...]


    Warum ? Versteh ich ehrlich gesagt nicht :denk:
    Klar, du brauchst den virtuellen COM-Port dann nicht mehr, wenn du das Touchpanel direkt mit der
    KRC-Com verbindest.
    Oder peil ich da etwas nicht richtig ? :wallbash:


    gruß
    rmac

    Hi simeonw,


    erstmal Danke für die Info.
    Werde dein cancelSub() mal probieren, aber ich befürchte das wird auch nicht funzen...


    Die einzige Möglichkeit den Submit abzuwählen, die ich gefunden habe, ist, die $config.dat
    im BOF-Editor zu öffnen und dummy-mäßig zu ändern (Leerzeichen im Kommentar ändern oder so)
    und diese dann zu speichern.
    Danach ist der Submit (erstmal) abgewählt, allerdings wird nach ca. 2-4 Sekunden Wartezeit
    der Submit automatisch wieder vom System angewählt und gestartet (!?)
    Hat dazu vielleicht jemand eine Idee wie man das verhindern kann ?


    Gruß
    rmac

    Hi,


    unter KRC1 R2.2 läuft ein FTP-Server als externes Programm (kukaftpd.exe).


    Gibt's da drüber evtl. eine Doku oder überhaupt irgendetwas Geschriebenes ?
    Hab nix gefunden.... :huh:


    Danke für Infos.
    Gruß
    rmac

    Hi Folks,


    in der BOF des KRC1 R2.2.x gibt es im Konfig-Submit-Untermenu nur die Möglichkeiten "Start" und "Stop", aber nicht "Abwählen"!


    Das ist auch im entsprechenden Benutzerhandbuch so beschrieben.
    Ich gehe deshalb mal davon aus, dass das Abwählen in diesem Release so nicht vorgesehen ist und auch nicht durch einen
    versteckten .ini-Eintrag (oder so) hervorgezaubert werden kann, oder ?


    Gibt es da evtl. eine andere (einfache) Möglichkeit den Submit abzuwählen ???


    Danke für Hinweise....


    gruß
    rmac

    Hi,



    Ich hab noch einen weiteren Eintrag ermittelt:
    Wenn der zu startenden Anwendung Kommandozeilen-Parameter übergeben werden müssen/sollen,
    dann muß man diese über die zusätzliche Zeichenkette "CmdLine" angeben.
    Wenn man nämlich versucht die Parameter direkt in "Exe" anzugeben, oder versucht einen Link
    mit Parametern zu starten, funktioniert das so nicht.


    Vielleicht kann's ja jemand brauchen....


    gruß
    rmac