Sinumerik: Quittierung von M-Funktionen, Variablen NCK <-> PLC

TobiasA

Level-1
Beiträge
373
Reaktionspunkte
36
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich habe eine etwas spezielle Frage, vielleicht weiß das ja jemand von euch...
Und zwar: Wie werden bei der Sinumerik die M-Funktionen quittiert? Die Übergabe ist klar, die steht einen Zyklus lang an, und zwar in DB21, ab DBB194 (Siehe Listen, 840D_LIS.pdf). Wie quittiere ich nun diesen Befehl? Oder muss ich selbst für die Vorschubfreigabe sorgen, indem ich diese M-Funktion bis zur Quittierung in eine Alarmmeldung mit Vorschubfreigabe reinnehme, was ich mir eigentlich nicht vorstellen kann, denn beim WZ-Wechsel geht's ja auch, schließlich kommt da auch die Meldung "Warten auf Hilfsfunktions-Quittierung" oben links.
Bei Fanuc gibt es ja das FIN-Signal, was dann quittiert werden muss, bevor der Vorschub frei gegeben wird. Das, was ich bis jetzt rausgefunden habe, ist, dass wohl jeder M-Befehl einzeln quittiert wird, aber ich weiß nicht, wo.
Ich hab' auch leider noch kein Projekt da, wo eine Drehmaschine drin ist, ansonsten könnte ich ja beim Futter abgucken, die gehen ja auch oft über M-Befehle auf und zu.
Dann noch eine: Ich habe schon mal im DocOnCD geschaut, finde das aber ein wenig dürftig... Wie übergebe ich Variablen über den Koppelspeicher zwischen NCK und PLC an die NCK, bzw wieder zurück?
R-Parameter würden es auch tun, Hauptsache, ich kann in einem CNC-Programm eine alternative Verzweigung damit realisieren (IF... GOTO ABC)
Wenn jemand doch was in der DocOnCD ausgräbt, was das schön beschreibt, bin ich auch schon sehr dankbar.
Kann ich auch die NCK-Eingänge (DB10, DBB0-DBB7, jeweils Bit 4-7) in einem CNC-Programm verarbeiten?

Besten Dank.

Gruß, Tobias
 
Hallo,
die M-Befehle bis 99 werden ja vom Grundprogramm decodiert. Deshalb denke ich, das die auch ohne dein zutun quittiert werden sollten (Ausnahme M0/M1). Bei M-Befehlen über 99 sollte die Quittierung standardmäßig im DB76 stattfinden.
Was die Datenübertragung betrifft, schau dir mal den FC 21 an. Die NC-Eingänge/Ausgänge kannst du mit $A_IN[x]== bzw $A_OUT[x]=1 abfragen bzw setzen.
Gruß
Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ah...

Licht kommt ins Dunkel. Danke :)

Das heißt, wenn ich eine M-Funktion brauche, die eine Quittierung nach Eintreffen eines bestimmten Signals benötigt (wie z.B. die Einschiebefunktion eines Stangenladers bei einer Drehmaschine, oder einen Palettenwechsel bei einem BAZ), dann nehme ich einen M-Befehl oberhalb von M99? Oder kann ich auch bei den M-Funktionen unterhalb von M99 eine temporäre Vorschub- und Einlesesperre einrichten?
Denn sonst müsste ich ja schon einiges ändern, denn die erweiterten M-Funktionen stehen mir nicht in allen Projekten so zur Verfügung.
Gibt es eine Liste, in der die verwendeten NCK-Eingänge stehen? Ansonsten such' ich die in den Querverweisen raus...
Theoretisch könnte ich ja meine M-Funktion auch über die NC-Variablen "quittieren", indem ich nach der M-Funktion eine kleine Verweilzeit einfüge, danach abfrage, ob der NCK-Eingang "1" ist, und wenn nicht, wieder vor der Verteilzeit einspringe, also praktisch eine zyklische Abfrage zu Fuß programmiere. Aber es geht bestimmt auch schöner...
Und kann ich die verwendeten Datenwörter im Koppelspeicher irgendwo sehen? Denn wenn ich etwas verwende, was schon einmal von einer anderen Funktion benutzt wurde, habe ich ja ein Problem. Anders gefragt: Wenn der FC21 nicht aufgerufen wird, kann ich davon ausgehen, dass dieser Koppelspeicher nicht benutzt wird, richtig?
Sorry, wenn ich manchmal vielleicht etwas dumm frage, ich hab' erst vor kurzem mit der Sinumerik angefangen. S7 mach' ich schon etwas länger, aber die Sinumerik ist ja schon praktisch eine eigene kleine Welt...

Danke schonmal für die Hilfe.

Gruß, Tobias
 
Hallo, bei den M-Befehlen über 99 ist es natürlich einfach. Z.B.
U "Endlage"
R "M122"

Bei unter 99 mußt du dann z.B auf den Feed-Stop zugreifen.

U "M21"
S FeedStop"
U "Endlage"
R "Feedstop"

Du kannst natürlich auch die Endlage direkt auf den NC-Eingang legen und ihn mit einem Rücksprung abfragen.

M21 ; Pneumatikzylinder vor
label:
msg (" Zylinder fährt vor")
If $A_IN[9]== 0 gotob label
msg ()

Die verwendeten Datenwörter kannst du in der NC gesammelt nicht sehen. Sie sind ja auch abhängig vom Aufruf im NC-Programm.
Kein FC21 kein Koppelspeicher :)

Mir hilft die DoconCD immer viel weiter.

Gruß

Andreas
 
Ich habe schon oft was in der DocOnCD gesucht und auch gefunden, aber diesmal stand ich irgendwie wie der Ochs vorm Berg.
Ich hab' heute ein Projekt von einem BAZ auf gehabt, da funktionierte das auch über Feed Stop, nicht über den M-Befehl.

Ich habe mich wohl etwas durch die Fanuc irritieren lassen, die das komplett allein über das FIN- Signal (also die Quittierung der M-Befehle) laufen lassen. Fanuc ist von der PLC- Seite her etwas einfacher gestrickt. Dafür komme ich mit der CNC- Seite bei denen nicht so gut klar.
Es muss da wohl eine Gruppe von Alarmen bzw. Meldungen geben, die den Feed Stop auslösen und sonst nichts. Werd' mir das morgen mal angucken. Heute geht's nur noch zu Burger King und dann in's Bett :-D

Die DocOnCD ist mit das beste Nachschlagewerk, was ich kenne. Aber manchmal ist man aufgrund der Fülle der Infos einfach zu erschlagen, um noch was rauszukriegen. Wenn man dann einen hat, der einem die passenden Stichworte liefert (FB1, erweiterte M-Funktionen, FC21), dann findet man auf einmal wieder was :-D

Beim Stangenlader muss ich eh beides machen- Feed Stop für die M-Funktionen und Sprünge im Programm, weil ich mit meinem Anschlag für das Auswerfen vom Restmaterial einen Fahrbefehl brauche, den ich am einfachsten natürlich im CNC- Programm generieren kann :)
Hatte erst überlegt, ob ich mir von Siemens diesen Baustein organisiere, mit dem man R-Parameter schreiben kann. Das würde auch funktionieren.

Besten Dank für die Hilfe, und 'n gutes Nächtle,
Tobias
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Gemeinde,

normalerweise müsste das was du sucht die Einlesesperre sein (DB21.DBX6.1) wird dieses Signal gesetzt wird die Bearbeitung solange gestoppt bis es wieder null ist.

Bsp.

M74 --> DB21.DBX6.1 auf 1 setzen Maschine bleibt stehen
M30--> wird erst eingelesen wenn DB21.DBX6.1 wieder auf 0

hoffe konnte dir helfen
 
Die R-Parameter schreibst du mit dem FB3. Das einzige was du noch dazu brauchst ist der NC-Var-Selektor und der ist auf der Toolbox.

Gruß

Andreas
 
Murks. Die hab' ich leider nicht vorliegen...

Ich such' schon länger eine.

Ich gehe mal davon aus, dass ich mit dem gleichen Baustein auch R-Parameter lesen kann :)

Danke für die Angabe der Einlesesperre.

Gruß, Tobias
 
Also mal folgendes Daul-Port Ram beschreiben mit dem FC21:

PHP:
      CALL  "FC21_SIEM_TRANSFER_840D"
       Enable :=L0.0
       Funct  :=B#16#4
       S7Var  :=P#DB192.DBX0.0 BYTE 32  //Start und länge der Daten
       IVAR1  :=0
       IVAR2  :=-1
       Error  :="m_allgem_schmierm_01"
       ErrCode:=MW502


Einlesesperre M-Funktionen, entweder über die Einlesesperre vom Kanal-DB oder mittels DB2 und FC10 aus dem Grundprogramm.
Da werden dann nur die Bits im DB2 gesetzt (siehe Doku) und der FC10 handelt dann die Sperren und Meldungen ab! Alternativ ist der DB126 und manuelle Einlese und Vorschubsperen möglich.

Für Binäre Abfragen währen die Digitalen EIngänge sehr gut nutzbar.
A_IN[x]

= "DB10_SIEM_NAHTST_NC_840D".A_Set_Inp5 (=DB10.DBX 1.4) bis 39 möglich. Die ersten 4 Bits sind Hardwere mässig auf der NCU vorhanden.

Zum R-Parameter lesen und schreiben sind wenn ich mich gerade richtig erinnere sind verschiedene Bausteine FB2 und FB3 notwendig.
Beispiel habe ich gerade nicht so auf dei schenlle da.

Andere Möglichkeit währe über GUD's kommt halt darauf an was Du machen möchtest.
 
Das hilft mir schon mal enorm weiter. Ma gucken, ob ich meinem Chef 'ne richtig dolle Schulung aus den Rippen leiern kann :ROFLMAO:

"Wir" (also meine Firma) sind Werkzeugmaschinenhändler (+ Service natürlich), und die Hersteller haben's einfach nicht so mit Toolboxen mitgeben... Ich will mich jetzt erst mal kundig machen, weil evtl. mal ein Lader an 'ne Drehmaschine mit Siemens kommt und nicht überall Lader- Interfaces drin sind (leider geben nicht mal alle Hersteller die Projekte mit :???: ) und die außerdem nicht immer passen. Aktuell steht nix an, aber ich kann mich ja kundig machen, bevor's aktuell wird. Bevor ich beim Kunden stehe und nix geht :twisted:

Es geht also hauptsächlich um binäre Eingänge (z.B. Stangenlader legt neue Stange ein, Anschlag Z-Achse wegfahren), die ich an die NC übergeben muss. Das mit den R-Parametern wäre dann noch mal ein Hintertürchen, bzw. eine schöne Möglichkeit, Dezimalzahlen (z.B. die Reitstockposition in Richtung Z-Achse) zu schreiben oder zu lesen.

Danke für eure Hilfe.

Gruß, Tobias
 
Zurück
Oben