Analogsensor Konfigurieren

  • Hallo an alle!!!
    Habe da mal ein paar Fragen und zwar geht es um folgen des!
    Ich habe da grad ein Projekt am Laufen wo ich am Greifer ein Sick DX35 Sensor (Messbereich 4mA-20mA) habe mit dem soll ich mein Bauteilstand in einer Kiste kontrollieren.
    Habe hier schon viel gelesen!! Aber irgendwie kann ich es nicht verstehen.
    Jetzt meine Fragen wie Konfiguriere ich den Analogeneingang in der iosys.ini?
    Was hat das mit den Typen auf sich 0- Rechtsbündig ohne Vorzeichen usw. und dem Offs1 u.Offs2.
    Und woher weiß ich welche Bit breite ich da einstellen muss damit mein Analoger wert auch den Abstand richtig ausgibt?


    Ach ja ist eine KRC 2 mit einer Profibus Master/Slave karte Cp5613/5614 und der Greifer hat ein SMC Modul 32 Out, 16 In und ein 1 Analogen
    :hilfe:

  • Schritt für Schritt zum Roboterprofi!
  • Und woher weiß ich welche Bit breite ich da einstellen muss damit mein Analoger wert auch den Abstand richtig ausgibt?


    Ach ja ist eine KRC 2 mit einer Profibus Master/Slave karte Cp5613/5614 und der Greifer hat ein SMC Modul 32 Out, 16 In und ein 1 Analogen
    :hilfe:


    Moin,
    letzteres ist entscheidend. Dein SMC Modul macht aus dem blöden Strom das Digitalsignal. A/D Wandlung halt. In dessen Schnittstellenbeschreibung steht, wie das Signal aussieht. Vorzeichen oder nicht, Motorola-Format oder auch nicht. usw
    Die Skalierung des Wertes des Messbereiches min/max auf die entsprechenden Entfernungswerte (World Z ?) muss im Programm erfolgen, falls dieses gewünscht wird.
    viel Erfolg

    never touch a running system

  • Hallo sebi123,
    nach einem Blick in die eingetrübte Glaskugel:


    1. Parameter in der IOSYS.INI als Orientierung bzw. Vorschlag:
    ANIN1 = 127,4,1,15
    1 - Analogeingang 1
    127 - Kennung Profibus (bin mir nicht sicher)
    4 - Byte-Offset, je nach Bestückung
    1 - rechtsbündig mit Vorzeichen
    15 - Anzahl Bit der Messwertdarstellung


    2. Messwert-Aufbereitung
    Annahme, dein DX35 ist wie folgt geeicht
    4 mA bei Abstand 12 cm und 20 mA bei Abstand 34 cm


    Eine Siemens-CP würde daraus folgendes machen:
    0000H bei Abstand 12 cm und 6C00H bei Abstand 34 cm


    Das wird an den ANIN1 übergeben. KUKA interpretiert das wie folgt:
    ( KUKA interpretiert 7FFFH als +10 V)
    0 V bei Abstand 12 cm und 8,437 V bei Abstand 34 cm.


    KUKA kann damit den aktuellen Abstand berechnen:
    Abstand_in_cm = (ANIN1)*(34-12)/8.437+12 oder zusammengefasst:
    Abstand_in_cm = 3.081664*(ANIN1)+12


    Beispiel: ANIN1 liest aktuell 3456H ein, dann bedeutet das:
    3456H entspricht 4.0888686 V (berechnet KUKA aus der Hexzahl)


    Abstand = 3.081664*4.0888686+12
    Abstand = 24.6 cm


    Nach Bereinigung der oben gemachten Annahmen dürfte das dann deine Lösung sein.


    Noch ein Wort zur Auflösung 12 Bit:
    Die rechten 3 Bit des Siemens-Wandlungsergebnisses sind verrauscht und sollten gelöschtv werden.
    In der SPS deshalb:
    L Wandlungsergebnis_original
    UW FFF8
    T Wandlungsergebnis_stabilisiert (dieses nach ANIN1 übertragen)


    Ich hoffe das hilft dir.


    MfG
    eNDe

  • Korrektur!
    Abstand_in_cm = (ANIN1)*(34-12)/8.437+12 oder zusammengefasst:
    Abstand_in_cm = 3.081664*(ANIN1)+12


    Abstand_in_cm = (ANIN1)*(34-12)/8.437+12 oder zusammengefasst:
    Abstand_in_cm = 2.6075619*(ANIN1)+12


    und damit das Beispiel:
    ANIN1 liest aktuell 3456H ein, dann bedeutet das:
    3456H entspricht 4.0888686 V (berechnet KUKA aus der Hexzahl)


    Abstand = 2.6075619*4.0888686+12
    Abstand = 22.66 cm


    eNDe

  • Hallo schon mal Danke an alle die mir hier Helfen und auch eNDe!!!
    Meine frage jetzt noch wie kommst du auf den 2.6075619 wert egal wie ich es rechne es kommt ein anderes Ergebnis raus!

  • Hey wie muss ich das rechnen wen mein Modul jetzt nur 4mA - 20mA auswertet auf 12bit?
    Sprich ich Eiche mein Sensor jetzt so das er ab 100mm= 4mA(Eigentlich ja 0) und 500mm= 20mA! (Messbereich 400mm)=0,04mA auf ein 1mm
    Auf meinem Analogeneingang würde ich ja jetzt bestimmt eine Kommazahl angezeigt bekommen?!
    Wie geht das Bits können doch nur ganze zahlen! :wallbash: :wallbash: :nocheck: :kopfkratz:

  • Hallo Sebi123,
    Analogwertverarbeitung ist ein recht komplexes Thema.
    Ich will trotzdem versuchen, es dir für deinen konkreten Fall einfach zu erklären:


    1. Zum Analogeingang ANIN1 (gilt für alle KUKA-Analogeingänge)
    ANIN1 wird einem 16 Bit Eingangsbereich zugeordnet, bei dem das linke Bit das Vorzeichen darstellt.
    0 = positive Zahl, 1 = negative Zahl. Du hast es nur mit pos. Zahlen zu tun, also Bit 15 ist immer 0.
    Die übrigen 14 Bit können, jedes für sich, nur 0 oder 1 sein. Digital bedeutet das
    0000 0000 0000 0000 entspricht dezimal 0
    0111 1111 1111 1111 entspricht dezimal 32767 (einfache Umrechnung dual -> dezimal)
    KUKA multipliziert nun intern, für dich also nicht sichtbar, diese Dezimalzahl mit 0,00030518509475997192297128208258309
    (wahrscheinlich nicht so hochgenau) und speichert das Ergebnis ab in der Variablen ANIN1. Das ergibt eine Realzahl, also eine Kommazahl, die meistens 4 Byte umfasst. Zugriff darauf hast du über "ANIN1".
    ANIN1 umfasst also einen Wertebereich, der von 0.000000 bis 10.000000 geht, in Schritten von etwa 0.0003052. Es sind also nicht alle
    Zahlenwerte zwische 0 und 10 darstellbar.
    Diesen Sachverhalt hatte ich gemeint mit dem Hinweis: KUKA interpretiert 7FFFH als +10 V


    2. Zu deinen Eichwerten.
    Es gilt der gleiche Zusammenhang wie in meinem ersten Beitrag beschrieben, jetzt aber:
    4 mA bei Abstand 100 mm und 20 mA bei Abstand 500 mm (Diesen Strom könntest du mit einem Amp-Meter messen)
    0 V bei Abstand 100 mm und 8,437 V bei Abstand 500 mm ( Diese Spannung kannst du nicht messen)
    Abstand_in_mm = (ANIN1)*(500-100)/8.437+100 oder zusammengefasst:
    Abstand_in_mm = 47.41 * (ANIN1) + 100

    Beispiel: ANIN1 liest aktuell 3456H ein, dann bedeutet das:
    3456H entspricht 13398 dezimal * 0,0003051850... = 4,0888698995941038239692373424482 V


    4.0888699 V (berechnet KUKA aus der Hexzahl) (nicht messbar, da KUKA-intern)


    Abstand = 47.41 * 4.0888699 + 100
    Abstand = 293,853321959 mm


    3. Nochmal zur 12 Bit Auflösung:
    Dein DX35 liefert den Wertebereich 4...20 mA mit 12 Bit Auflösung, also in 2048 Stufen von je 0.0078125 mA/Stufe.
    Siemens wandelt aber viel genauer, nämlich mi 16 Bit und das sind 32767 Stufen nur für die pos. Zahlen.
    Deshalb sollte man die rechten 3 Bit (0...2) löschen, da sie keinen Messanteil enthalten.
    Genaueres würde jetzt zu weit führen.


    Lehrstunde be eNDe et!

  • Hallo zusammen,
    ich stehe vor einem ähnlichen Problem, glaube ich.
    Natürlich habe ich auch schon viel gelesen, aber ich habe da noch ein Paar Fragen:
    Kurz zu meinem Problem:
    Sensor schickt Spannung an Beckhoff, Stromauslesen (4-20MA), A/D-Wandlung von Beckhoff, über DeviceNet(?) in Richtung KRC2.
    Dort liegt jetzt mein Problem:
    ich weiß nicht genau, wie ich die iosys.ini konfigurieren, muss, damit ich den Sensor einbinden kann.
    Von Beckhoff werden 12Bit an die KRC2 gegeben.


    Woher weiß ich, welchen ANIN# ich nehmen muss ? #=1 oder 2 oder vielleicht doch 3?
    Ich habe nur 1 Sensor dabei.
    Was bedeuten die letzten drei ziffern bei: ANIN1=127,4,1,15?


    Vielen Dank für Eure Hilfe! :supi:
    Hat jemand zufällig die DeviceNet Doku zur KRC2 für mich?

    Einmal editiert, zuletzt von candma ()

  • DevNet Doku ist auf der CD SparePartList mit drauf, müsste bei deinem Roboter dabei sein.


    CD installieren und dann unter Dokumentation/Steuerung/KRC2/Deutsch/Option PC-Options schauen

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Hi,
    Danke für die Anmerkung, da der gesamte Anlagenaufbau schon einige Zeit alt ist und verschiedene Bediener gesehen hat, ist diese CD leider nicht mehr aufzufinden.
    Deswegen wäre es für mich hilfreich, wenn mir das zur Verfügung gestellt werden könnte...
    Besten Dank!

  • Hallo zusammen,


    so, nachdem ich nun die DeviceNet-Doku gelesen habe, würde ich folgendes unternehmen, damit der Senor ordnungsgemäß eingebunden wird (MFC-Karte basierend):
    in der devnet.ini:
    [krc]
    DEBUG=0
    BAUDRATE=500
    LOGFILE=1 ;logfile wird angefordert
    [1]
    MACID=1
    in der iosys.ini:
    [Drivers]
    DEVNET=2,dnInit,dn2drv.o
    [Devnet]
    ANIN1=1,1,12,2


    Ich verstehe das so:
    Analogeingang liegt auf ANIN1; MACID 1 (am Buskoppler eingestellt), die nächste 1 kann ich nicht zuordnen, 12 Bit Darstellung, 2: linksbündig ohne Vorzeichen


    Für eine Bestätigung der Darstellung bzw. eine Erklärung der 1 (willkürlich gewählt) für den Adressbereich wäre ich dankbar!


    Beste Grüße

  • ANIN1=1,0,12,2 CAL Faktor


    die 1 steht für die Busadresse MacID
    die 0 steht für den Offset (Anzahl Bytes der Verschiebung, wenn Analogmodul nicht als erstes Byte am Modul hängt)
    die 12 Auflösung des Analogwertes 8-16 Bit
    die 2 Skalierung des Annalogwertes 0=rechtbündig ohne Vorzeichen, 1=rechtsbündig mit Vorzeichen, 2=linksbündig ohne Vorzeichen, 3=linksbündig mit Vorzeichen
    CAL Faktor ist der Wert in Digits, bei dem ein Analogsignal seinen Nennwert hat

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Soweit habe ich das glaube ich verstanden - danke erstmal dafür!


    Aber:
    was besagt das Offset; was bedeutet das technisch gesehen?
    (ich weiß, es ja bereits da, aber ich habs noch nicht verstanden)
    von wem bekomme ich die Info, welcher CAL-Faktor benutzt wird?


    Besten Dank für die Hilfe - ohne das Forum würde ich noch den Schalter zum Anschalten der KRC suchen ;) :danke:


    EDIT:
    ich habe nochmal in der Busklemmendoku von Beckhoff geschaut:
    dort wird gesagt, dass der Messbereich von 0-10V ist.
    Muss ich dann dort: CAL32767 eintragen?


    Das Offset bleibt mir noch verschlossen...


    Ich habe für die Skalierung den Wert 2 genommen, da ich - so denke ich - gelesen habe, dass die letzten vier Bits "ignoriert" werden.

    Einmal editiert, zuletzt von candma ()

  • Offset besagt das wenn z.B. vor deinem Analogeingang noch digitale Eingänge liegen, dein Analoger ja nicht bei Byte 0 anfangen kann sondern einen Byte-Offset von 1 bekommt.


    Cal Faktor musst du nur benutzen wenn dein Analogsignal nicht richtig dargestellt wird.

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Hello again :)


    so, nachdem ich jetzt die vermeintlich richtigen Parameter eingestellt habe, sehe ich leider immer noch nichts vom Signal :huh:


    Deshalb nochmal was ich gemacht habe:
    DIP-Schalter am BK5200: 10000001
    Bedeutet für mich :
    in der devnet.ini:
    [krc]
    debug=0
    baudrate=500
    logfile=1
    [1]
    macid=1


    In der IOSYS.ini steht bisher Folgendes:
    [drivers]
    RSI=50, rsiLibInit,rsiLib.o
    MFC=0,mfcEntry, mfcdrv.o
    DEVNET=2,dnInit,dn2drv.o
    alle anderen sind auskommentiert


    [MFC]; stand so in der IOSYS.ini, habe ich nich verändert
    INW0=0 ;$IN[1-16]
    OUTW0=0 ; $OUT[1-16]
    OUTW2=2; $OUT[17-32]


    [DEVNET]; wie bisher von mir beschrieben:
    ANIN1=1,0,12,2; den CAL-Faktor habe ich noch nicht untergebracht, weil ich bisher auch noch keinen Wert gesehen habe, wird aber noch angepasst.


    nach der ReKonfig kommt der Fehler 6503 Fehler Konfiguration E/A-Treiber DN2DRV
    Für weitere Maßnahmen, die ich ergreifen kann, wäre ich dankbar!


    Wie immer: vielen Dank für die Unterstützung

  • Moin Canda,


    Bus ist mit 24VDC versorgt?
    Abschlusswiderstände 121Ohm sind beidseitig angebracht, oder Stecker auf ON?


    Ändere mal die MacID auf 3 und deine BK5200 ebenfalls auf 3


    Was sagt denn dein Logfile?

    Die Abnahme von GOTO Anweisungen verhält sich reziprok zur Qualität einer Programmierung

  • Hallo,


    also, da das Beckhoffsystem grüne LEDs zeigt, gehe ich davon aus, dass das System mit 24V gespeist wird.
    Die Abschlusswiderstände sind, soweit ich das beurteilen kann auch dabei.
    Habe die MACID auf 3 geändert (DIP und devnet).
    Ich habe jetzt aus der iosys.ini hinter [devnet] alles rausgenommen.
    es kommt keine Fehlermeldung mehr.


    Wie komme ich denn jetzt weiter?
    Danke schön :)


    im devnet.log steht:
    file_ptr_pos=000587dn2drv: log date...


    im iosys.log steht:
    alle driver ready,
    nur unter MFCDRV steht noch input object 1, output objects 2


    Bin mir auch nicht sicher, ob der Buskoppler richtig eingebunden ist, da die mittlere LED weder Rot noch Grün brennt/blinkt...

    Einmal editiert, zuletzt von candma ()

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden