Werkzeugmagazin 1-48 auslesen

Martin L.

Level-1
Beiträge
219
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Profi´s

habe an einer Fräse ein 48-fach Werkzeugmagazin, der Bediener gibt nur für den Handbetrieb im TP eine Dezimalzahl zwischen 1-48 ein und wählt so die verschiedenen Werkzeuge vor!
So zu meinem Problem, bekomme vom TP meine Werkzeugvorwahl im DB152.DBW6 zu meiner SPS CPU 317, möchte jetzt direkt decodieren

L DB152.DBW6
T MW152

M153.0 = Werkzeug 1
M153.1 = Werkzeug 2
M153.0 + M153.1 = Werkzeug 3 usw.

bekomme jetzt nur binärcodiert, welches Werkzeug vorgewählt wurde.

Mein Wunsch ist aber folgendes:
M152.1 = Werkzeug 1 wurde vorgewählt
M152.2 = Werkzeug 2 wurde vorgewählt
M152.3 = Werkzeug 3 wurde vorgewählt usw.

Wie kann ich den DB152.DBW6 Umrechnen um obiges Ergebnis zu bekommen. Danke für eure Hilfe. Da ich noch die 48 Positionen erfassen muß (FM350) möchte ich pro Werkzeug nur einen
Merker haben. Weiss also sofort Merker 152.7 ist Werkzeug 7 und nicht M153.0+M153.1+M153.2= Werkzeug 7. O.K.
 
Zuletzt bearbeitet:
Hi


L DB152.DBW6
T MW152

M153.0 = Werkzeug 1
M153.1 = Werkzeug 2
M153.0 + M153.1 = Werkzeug 3 usw.
Warum ?

Zeige diesen Wert als Zahl an !

MW 153 hat bei Bit 0=1 --> Werkzeugnummer 1
MW 153 hat bei Bit0=1 + Bit1=1 --> Werkzeugnummer 3


Wo liegt dein Problem.:confused:

Die Darstellung ist eigentlich schon Sinnvoll. :cool:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Profi´s

habe an einer Fräse ein 48-fach Werkzeugmagazin, der Bediener gibt nur für den Handbetrieb im TP eine Dezimalzahl zwischen 1-48 ein und wählt so die verschiedenen Werkzeuge vor!
So zu meinem Problem, bekomme vom TP meine Werkzeugvorwahl im DB152.DBW6 zu meiner SPS CPU 317, möchte jetzt direkt decodieren

L DB152.DBW6
T MW152

M153.0 = Werkzeug 1
M153.1 = Werkzeug 2
M153.0 + M153.1 = Werkzeug 3 usw.

bekomme jetzt nur binärcodiert, welches Werkzeug vorgewählt wurde.

Mein Wunsch ist aber folgendes:
M152.1 = Werkzeug 1 wurde vorgewählt
M152.2 = Werkzeug 2 wurde vorgewählt
M152.3 = Werkzeug 3 wurde vorgewählt usw.

Wie kann ich den DB152.DBW6 Umrechnen um obiges Ergebnis zu bekommen. Danke für eure Hilfe.

edit, verlesen
 
So was ähnliches hatte ich gerade, das hier sollte so bei dir passen:

Code:
FUNCTION FC 52 : VOID
TITLE =
VERSION : 1.0
AUTHOR : Ralle


VAR_INPUT
  Werkzeugnummer : WORD ;    
END_VAR
VAR_OUTPUT
  Werkzeugbits_1_32 : DWORD ;    
  Werkzeugbits_33_64 : DWORD ;    
END_VAR
VAR_TEMP
  SAVE_VKE : BOOL ;    
END_VAR
BEGIN
NETWORK
TITLE =Sichere VKE im BIE

      SET   ; 
      SAVE  ; 
      =     #SAVE_VKE; 
NETWORK
TITLE =

      L     0; 
      T     #Werkzeugbits_1_32; 
      T     #Werkzeugbits_33_64; 

      L     #Werkzeugnummer; 
      L     0; 
      >D    ; 
      SPBN  ENDE; 

      L     #Werkzeugnummer; 
      L     65; 
      <D    ; 
      SPBN  ENDE; 

      L     P##Werkzeugbits_1_32; //Startadresse
      LAR1  ; 
      L     #Werkzeugnummer; 
      +AR1  ; 
      L     -1; 
      +AR1  ; 

      SET   ; 
      S      [AR1,P#0.0]; 

ENDE: NOP   0; 
NETWORK
TITLE =

      U     #SAVE_VKE; 
      SAVE  ; 
      BE    ; 
END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
hier noch eine Lösung:


L DB152.DBW 6
L MW 12
<>I
SPBN L001
L 0
T MW 152
T MW 154
T MW 156
L001: NOP 0
L DB152.DBW 6
T MW 12
LAR1
SET
= M [AR1,P#151.7]


Gruß

Andreas
 
So was ähnliches hatte ich gerade, das hier sollte so bei dir passen:

Code:
FUNCTION FC 52 : VOID
TITLE =
VERSION : 1.0
AUTHOR : Ralle
 
 
VAR_INPUT
  Werkzeugnummer : WORD ;    
END_VAR
VAR_OUTPUT
  Werkzeugbits_1_32 : DWORD ;    
  Werkzeugbits_33_64 : DWORD ;    
END_VAR
VAR_TEMP
  SAVE_VKE : BOOL ;    
END_VAR
BEGIN
NETWORK
TITLE =Sichere VKE im BIE
 
      SET   ; 
      SAVE  ; 
      =     #SAVE_VKE; 
NETWORK
TITLE =
 
      L     0; 
      T     #Werkzeugbits_1_32; 
      T     #Werkzeugbits_33_64; 
 
      L     #Werkzeugnummer; 
      L     0; 
      >D    ; 
      SPBN  ENDE; 
 
      L     #Werkzeugnummer; 
      L     65; 
      <D    ; 
      SPBN  ENDE; 
 
      L     P##Werkzeugbits_1_32; //Startadresse
      LAR1  ; 
      L     #Werkzeugnummer; 
      +AR1  ; 
      L     -1; 
      +AR1  ; 
 
      SET   ; 
      S      [AR1,P#0.0]; 
 
ENDE: NOP   0; 
NETWORK
TITLE =
 
      U     #SAVE_VKE; 
      SAVE  ; 
      BE    ; 
END_FUNCTION

affe00005.gif


Stöhn, wie wärs denn mit einem Ansatz, statt der kompletten Lösung!

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das war keine Hausaufgabe, oder, lol.

Wenn es keine Hausaufgabe ist, dann ist es ja noch viel schlimmer, dass Du hier eine komplette Lösung einstellst.

Was mich aber schier in den Wahnsinn treibt. Sind die ganzen nicht Schüler die auf Kunden losgelassen werden und null Plan von der Automatisierung haben. In letzter Zeit kommen da fragen die mich am Standort Deutschland zweifeln lassen. Die Nation die gerade mal im Maschinenbau noch ein halbwegs guten Ruf hat.

Vielleicht doch an der Zeit sich selbstständig zu machen und sich föniglich für "Feuerwehr" Einsätze entlohnen lassen.

Ich bin mir auch nicht sicher was ich schlimmer finde. Leute die versuchen die Hausaufgaben zu erschnorren oder im Berufsleben stehen und hier nach absoluten Basics fragen.

Manchmal muss man ein Problem nur neu Formuliert bekommen. Oder auch einen Tipp bekommen wie man etwas besser machen kann.

Gruß Kai
 
Hallo Profi´s,

erstmal vielen Dank für die schnelle Hilfe, besondern Dank an Znarf!!!!

Zu Ralle:
Sorry ist leider keine Hausaufgabe sondern eine echte SHW UWZ42 Fräse ausgerüstet von mir mit neuer Siemens Sinumerik 840DI und OP012 mit
5 Achsen über Simodrive 611U etc.

Manchmal fallen einem die Lösungen schneller ein wenn man darüber konstruktiv diskutiert O.K. Ralle
 
Zu Ralle:
Sorry ist leider keine Hausaufgabe sondern eine echte SHW UWZ42 Fräse ausgerüstet von mir mit neuer Siemens Sinumerik 840DI und OP012 mit
5 Achsen über Simodrive 611U etc.

Manchmal fallen einem die Lösungen schneller ein wenn man darüber konstruktiv diskutiert O.K. Ralle

Ich weiß das das keine Hausaufgabe ist, deswegen hatte ich ja auch den Code reingestellt :ROFLMAO:. Hast du den überhaupt gelesen? Der FC war komplett fertig, ich faß es nicht! Außerdem adressierst du an den Falschen in punkto Hausaufgaben. Wenn ich gewußt hätte, daß du diskutieren möchtest, hätte ich dir die Variante natürlich verbal beschrieben, anstatt dir den Code zu schreiben, tut mit wirklich leid. Das mach ich für dich dann das nächste mal.

@Kai
Ohne Worte, :cool:.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das ja in SCL lösen:

Code:
FUNCTION FC12 : INT

VAR_INPUT
  MB_Nr      : INT;
  WerkzeugNr : INT;
END_VAR

VAR_TEMP
  myByteNr : INT;
  myBitNr  : INT;

END_VAR
 

MD[MB_Nr    ] := 0;
MD[MB_Nr + 4] := 0;

IF WerkzeugNr >= 1 AND WerkzeugNr <= 48 THEN
    
  myByteNr := WerkzeugNr DIV 8;
  myBitNr  := WerkzeugNr MOD 8;
  M[myByteNr + MB_Nr ,myBitNr] := TRUE;
  
  FC12 := 0;
  
ELSE
  FC12 := -1;
END_IF;

END_FUNCTION

PS: @Kai: Zitieren hat echt mehr Stil als simples Abschreiben ;o)
 
Zuletzt bearbeitet:
@Ralle
Kann man die Zeilen

L P##Werkzeugbits_1_32
LAR1
L #Werkzeugnummer
+AR1

nicht durch

L #Werkzeugnummer
LAR1

ersetzen, da Werkzeugbits_1_32 eh mit 0 belegt wird?

Gruß

Andreas
 
@Ralle
Kann man die Zeilen

L P##Werkzeugbits_1_32
LAR1
L #Werkzeugnummer
+AR1

nicht durch

L #Werkzeugnummer
LAR1

ersetzen, da Werkzeugbits_1_32 eh mit 0 belegt wird?

Gruß

Andreas

Ich habs mal im Simulator gestestet, bei Werkzugnummer 0 gehts (der Code wird ja umsprungen), bei 1 geht die CPU in Stop:

Bereichslängenfehler beim Schreiben, bei

S [AR1,P#0.0]

Gehl also nicht.

L P##Werkzeugbits_1_32 lädt nicht 0, sondern die Adresse, des außen am FC angelegten MD (z.Bsp. 100.0). In dem Zusammenhang zeigt sich (hab ich auch erst jetzt gemerkt), daß egal, was man an Werkzeugbits_33_64 ranschreibt, immer das nachfolgende MD von Werkzeugbits_1_32 beschrieben wird. Hier hätte man also ab der 33 die 2. Adresse laden müssen. Na ja, war halt rel. schnell zusammengeschrieben. :???:


Also Werkzeugbits_1_32 := MD100 dann immer
Werkzeugbits_1_32 := MD104, so wie der Code ist.

Kann man übrigens schön sehen, wenn man im Simulator Online rechts die Ansicht um Adressregister 1 erweitert.
 
Hi Martin


Wie kann ich den DB152.DBW6 Umrechnen um obiges Ergebnis zu bekommen. Danke für eure Hilfe. Da ich noch die 48 Positionen erfassen muß (FM350) möchte ich pro Werkzeug nur einen
Merker haben. Weiss also sofort Merker 152.7 ist Werkzeug 7 und nicht M153.0+M153.1+M153.2= Werkzeug 7. O.K.

Hast du bereits ein Konzept ?


NORMALERWEISE:

Messung des Istwertes mit einem Drehgeber
( Bei dir Drehgeber und FM350)
(FM350 ? Hast du keinen Messeingang mehr frei, z.b. bei einer Achse OHNE Lineal)

Ablesen des Istwertes Drehgeber. (Anzeige in Modula 360°)

D.h. Pro Werkzeug hast du 7,5°

Werkzeug 1 --> o°
Werkzeug 2 --> 7,5°
Werkzeug 3 --> 15°
. . .

Da du eine FM350 verwendest, musst du noch einen Referenzfahrt machen.


O.K. Soweit gut.


Da der Revolver mechanisch verriegelt, und du NICHT genau 7,5° bei Werkzeug 2 hast, must du ein Positionsfenster berücksichtigen.


ERGEBNIS --> Normalerweise eine

INT-Zahl --> Werkzeug IST
INT-Zahl --> Werkzeug SOLL (Ohne Werkzeugverwaltungsoption)


Warum, SORRY ist dein Code und soll KEINE Kritik sein willst du "bits" haben.

Habe bereits einige Maschinen umgebaut,diverse Sondermaschinen, Scharmann , Wotan, Chiron, Index UND unter anderem auch 2 Heckert CS400 mit 40er Kette.

Möglicherweise mache ich das zu Umständlich, verrate mir deine Gedankengänge/Konzepte.
 
Schlimm?

Und ist das schlimm? es müssen 6 byte genullt werden!:rolleyes:
ab und an muss man ein wenig glück haben !
Richtig ist dann:
L 0.0
T MD0
L 0
T MW4
 
Zuletzt bearbeitet:
Zurück
Oben