1. Dashboard
    1. Dashboard
    2. Suche
  2. Forum
    1. Unresolved Threads
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Search Members
  4. Jobs
  5. Articles
  6. Calendar
    1. Upcoming Events
    2. Map
  7. Shop
    1. Orders
    2. Shipping Costs
  • Login or register
  • Search
Roboterprogrammierer finden
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Events
  • Files
  • Products
  • More Options
  1. Roboterforum.de - die Industrieroboter und Cobot Community
  2. Forum
  3. Industrieroboter Support
  4. KUKA Roboter
Your browser does not support videos autonome mobile Roboter von KUKA
besuche unseren Hauptsponsor
Roboterschulung Online
Online Roboterschulung
Advertise in Robotics
Der Roboterkanal
Deutscher Robotikverband
Werben in Robotik
Werben für Robotik

integer im negativen Bereich definieren

  • Sam_J
  • March 17, 2021 at 9:45 AM
  • Thread is Resolved
  • Sam_J
    Reactions Received
    1
    Points
    71
    Posts
    11
    • March 17, 2021 at 9:45 AM
    • #1

    Hallo Leute,

    ich versuche über die SPS_Steuerung 4 Werte als Gruppeneingangssignal an den Roboter zu schicken, die 4 INT-Variablen zugewiesen sein sollten.

    Diese Werte können positiv oder negativ sein.

    Es handelt sich um KUKA KRC4.

    Ich habe das folgendermaßen gemacht.

    Config:

    INT mass_x=0

    INT mass_z=0

    INT ref_x=0

    INT ref_z=0

    SIGNAL GI_Mass_X $IN[265]  TO $IN[280]

    SIGNAL GI_Mass_Z $IN[281] TO $IN[296]

    SIGNAL GI_ref_x $IN[297] TO $IN[312]

    SIGNAL GI_ref_x $IN[313] TO $IN[328]


    SPS:

    mass_x = GI_Mass_X - 32737

    mass_z = GI_Mass_Z - 32737

    ref_x = GI_ref_x - 32737

    ref_z = GI_ref_z - 32737


    Problem:

    nur der erste Wert kann zugewiesen werden und wurde übernommen.

    negative werte konnte ich nicht angeben. sie wurden von der Steuerung nicht übernommen.

    habt ihr eine Idee, wie das funktionieren sollte.

    Vielen Dank im Voraus

  • Schritt für Schritt zum Roboterprofi!
  • Martl
    Reactions Received
    23
    Points
    2,898
    Posts
    516
    Location
    Landshut
    • March 17, 2021 at 10:04 AM
    • #2

    Servus,

    probier erst mal einlesen und dann berechnen.

    SPS:

    mass_x = GI_Mass_X

    mass_x = (mass_x - 32737)

    Berechnungen samt Einlesen von Gruppeneingängen machen Probleme. Hatte ich auch schon mal.

    Ich setze auch immer schön Klammer, notwendig oder nicht. (da streiten sich die Gelehrten) :)

    BTW:

    schon mal in der Variablenanzeige geprüft ob die Werte richtig kommen (Stichwort Motorola/Intel)

    Gruss

    Martl

    http://www.robsoft.de

  • funnougat
    Reactions Received
    14
    Points
    864
    Posts
    169
    • March 17, 2021 at 11:52 AM
    • #3
    Code
    PG1_Offset.x=WordToInt1(giPG1_Offset_X)
    
    DEFFCT int WordToInt1(Wert :IN)
       DECL INT Wert
       IF Wert > 'H7F' THEN
          RETURN WERT - ('HFF')-1
       ELSE
          RETURN WERT
       ENDIF
    ENDFCT

    Einfach ausprobieren was raus kommt und anpassen bis es passt.

  • SJX
    Reactions Received
    238
    Points
    11,403
    Trophies
    64
    Posts
    2,062
    • March 17, 2021 at 1:14 PM
    • #4

    32Bit Signalvereinbarungen in KRL unterstützen eigentlich Positiv wie Negative Integerwerte.

    Evtl. einfacher, dies gleich so zu Lösen.

    Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.

  • panic mode
    Reactions Received
    91
    Points
    3,526
    Trophies
    1
    Posts
    686
    About Me

    Any idea that cannot withstand honest criticism, is not worth believing.

    Location
    Mississauga, Ontario, Canada
    • March 17, 2021 at 4:20 PM
    • #5

    ja, am einfachsten auf 32-bits umwandeln...

    also 32737 ist falsch...

    fuer n=16 bits

    2^(n-1) -1 = 32767

    mit 16-bit, Werte sind interpretiert als

    (-32768)..(+32767) ; mit Vorzeichen

    order

    [0]..[65535] ; ohne Vorzeichen


    (+0)..(+32767) ist binaer wie [0]..[32767]

    und

    (-32768)..(-1) ist binaer wie [32768]..[65535]

    oder:

    (+32767) ~ [32767]

    (+32766) ~ [32766]

    (+32765) ~ [32765]

    ...

    (+2) ~ [2]

    (+1) ~ [1]

    (+0) ~ [0]

    (-1) ~ [65535]

    (-2) ~ [65534]

    (-3) ~ [65533]

    (- 4) ~ [65532]

    ...

    (-32768) ~ [32768]


    also, mit 16-bit SPS Wert

    GI_Mass_X = -1

    und KRC sieht

    GI_Mass_X = 65535

    deshalb KRC braucht so was:

    Code
    IF GI_Mass_X <32768 THEN ; 16 bit conversion
       mass_x = GI_Mass_X
    ELSE
      mass_x = GI_Mass_X - 65536
    ENDIF
  • panic mode
    Reactions Received
    91
    Points
    3,526
    Trophies
    1
    Posts
    686
    About Me

    Any idea that cannot withstand honest criticism, is not worth believing.

    Location
    Mississauga, Ontario, Canada
    • March 17, 2021 at 4:30 PM
    • #6

    Loesung von funnougat ist korrekt...

  • Sam_J
    Reactions Received
    1
    Points
    71
    Posts
    11
    • March 17, 2021 at 6:59 PM
    • #7

    Hallo Alle,

    vielen Dank für eure Antworte und wertvolle Erklärungen.
    Ich sollte heute die Arbeit unterbrechen und darf erst nächste Woche Zugang zur Anlage haben.
    Ich schreibe dann hier welche Ergebnisse erreiche ich.

    Martl  funnougat  SJX  panic mode

    Besten Dank

  • MOM
    Reactions Received
    24
    Points
    1,274
    Trophies
    2
    Posts
    234
    About Me

    Just make it work

    Location
    Wertingen
    • March 19, 2021 at 5:30 PM
    • #8

    Du solltest dir zunächst auch den Wert, der von der SPS kommt, anschauen.

    Negative Zahlen sind hier dadurch gekennzeichnet, dass das höchstwertige Bit 1 ist. In diesem Fall wird das Zweierkomplement zurückgegeben (was macht die SPS?).

    Bei KUKA hat INT eine Bitbreite von 32 und da nur 16 Eingänge verwendest, kann die Zahl nie automatisch ausgegeben werden

    panic mode hat in post #5 die korrekte Umrechnung beschrieben, die Funktion in post #3 ist insofern falsch als hier nicht 'H7F' sondern 'H7FF' und anstatt 'HFF' 'HFFFF' verwendet werden muss

Tags

  • 1
  • 33
  • 2
  • ABB
  • ABB Roboter
  • ABS
  • base
  • constant
  • CP_PARAMS
  • Dialog
  • EX
  • EXT
  • fanuc
  • Fehler
  • FRAMES
  • INIT
  • INITIALIZED
  • INITMOV
  • IRC5
  • joint
  • KRC2
  • KRC4
  • kuka
  • new
  • NONE
  • notify
  • PATH
  • PGNO_GET
  • profinet
  • PTP_DAT
  • PTP_PARAMS
  • P_ACTIVE
  • P_FREE
  • P_RESET
  • P_STOP
  • Quit
  • Roboter
  • RobotStudio
  • Schweißen
  • Sps
  • Sync
  • T1
  • t2
  • tcp
  • Tool
  • VALUE
  • VAR
  • vel_cp
  • vel_ptp
  • Yaskawa
AD
Your browser does not support videos Automatisierung im Handwerk - ich schaffs mit KUKA
Einloggen für weniger Werbung

gesponserte Artikel

  • Gebrauchtroboter kaufen - Was ist zu beachten. Die Checkliste zum kauf von gebrauchten Robotern

    August 11, 2019 at 7:02 PM
  • Was macht ein Roboterprogrammierer genau und was verdient er?

    August 21, 2019 at 8:17 AM
  • Vernetzen, referenzieren, kollaborieren: Das B2B Portal für die Produktionsautomatisierung

    June 2, 2021 at 11:29 AM

Job Offer

  • Sie wollen Ihr Stellenangebot im Roboterforum schalten? Ab 149€

    Werner Hampel June 17, 2021 at 9:52 AM
  • Werde Roboterprogrammierer bei ROBTEC GmbH in Mainburg / Bayern

    Werner Hampel April 5, 2023 at 7:13 PM
Werbung auf Roboterseite
Roboter programmieren lernen
Banner Robotik

Tags

  • 3
  • 5

Wieviele Mitglieder waren heute eingeloggt?

Logge Dich ein, um hier zu lesen wer in den letzten 24h Online war und um weniger Werbung zu sehen.

  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™ 6.0.22
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on Google Play
Roboterforum.de - die Industrieroboter und Cobot Community in the WSC-Connect App on the App Store
Download