22. Juli 2019, 20:38:37
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[gelöst] Numerische Daten Trennen


normal_post Autor Thema: [gelöst] Numerische Daten Trennen  (Gelesen 1941 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

31. Oktober 2017, 14:27:05
Gelesen 1941 mal
Offline

padostms


PERS num FB6318{9}:=[110,43,10,10,15.09,12,60,0,0];
 PERS num FB224{9}:=[215,40,14,14,6.317,3.6,1,2,2];
 PERS num FB1014{9}:=[145,27,7,7,11.81,4,1,1,1];
 PERS num FB210{9}:=[110,65,0,0,15,15,6,0,0];
 PERS num FB212{9}:=[110,27,6,6,12.347,2.8,18,20,20];
 PERS num FB215{9}:=[100,18,0,0,13.59,15,8,0,0];
 PERS num FB222{9}:=[150,70,16,11,9,18,48,20,20];
 PERS num FB226{9}:=[130,58,0,0,10.45,18,40,0,0];
 PERS num FB2471{9}:=[384,54,21,33,3.574,4,25,18,20];
 PERS num FB3202{9}:=[215,34,5,14,6.317,3,1,1,1];


Das Sind meine Daten.Da brauche ich wenn ich numerische daten aufrufe Getrennt angezegt werden sollen( nur die Obere 3).
Geht es??

Danke
« Letzte Änderung: 21. Februar 2018, 13:50:07 von padostms »

Heute um 20:38:37
Antwort #1

Werbung

Gast

01. November 2017, 18:40:33
Antwort #1
Offline

Hermann



02. November 2017, 04:39:49
Antwort #2
Offline

Sven Weyer

Global Moderator
Moin padostms,
wäre es Dir eventuell möglich einen Weg zu finden deine Frage so zu formulieren das man den Inhalt deiner Frage verstehen kann?
Grundsätzlich kann man Datenfelder absolut ansprechen.


VAR num nTest;

nTest:=FB318{6} würde dann der Variablen nTest den Wert "12" zuweisen, für die "6" kannst Du auch eine Variable definieren mit welcher Du dann beliebig den gewünschten Wert aus- bzw. einlesen kannst.

Hoffe das war dein Problem.


Gruß


Sven
Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!

02. November 2017, 06:35:04
Antwort #3
Offline

padostms


Sorry das meine frage unverständlich war!
Hätte ich mehrere Type die gleiche name haben.Aufs bild sieht man die numerische daten.Wie kann ich hier nur bestimmte datenfelder anzeigen bzw. die angezeigte daten sortieren?
PERS num FB6318{9}:=[110,43,10,10,15.09,12,60,0,0]; da brauche ich die 9 weil ich 9 parameter drinnen habe!
Beim Produktion muss ich manchmal diese daten ändern meistens die letzte 3.Nur wenn ich die numdaten aufrufe habe 210 verschiedene FB-s drinnen.Ja kann ich mit filter auch sortieren aber mir wäre besser wenn es ein andere lösung wäre.
« Letzte Änderung: 02. November 2017, 07:27:32 von padostms »

09. November 2017, 13:33:32
Antwort #4
Offline

Micky


Hi,
wenn Du den Namen des "FB" Deklaration kennst, könntest Du auch mit GetDataVal und SetDataVal die Daten ändern.
Beispiel:
An die Routine "ChangeFB" wird der Name der zu Ändernden Deklaration übergeben und über die optionalen Parameter "Value7", "Value8" und "Value9" die zu ändernden Werte. Der Zahlenwert hinter Value wird als Arrayindex verwendet und der Wert in das Array eingetragen.

 PROC main()
    ChangeFB "FB224"\Value7:=10\Value8:=20;
    ChangeFB "FB1014"\Value7:=3.2\Value9:=5.8;
  endproc
 
  PROC ChangeFB(string Name\num Value7\num Value8\num Value9)
   VAR num nArray{9}; 
  
   !Daten des Arrays lesen
   GetDataVal Name,nArray;
  
   !werte ändern
   IF Present(Value7) nArray{7}:=Value7;
   IF Present(Value8) nArray{8}:=Value8;
   IF Present(Value9) nArray{9}:=Value9;
  
   !Werte in FB zurückschreiben
   SetDataVal Name,nArray;
      
  ENDPROC
Gruß
Micky
  • gefällt mir x 1    Danke x 1 (Details | 3 Danke)
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

Heute um 20:38:37
Antwort #5

Werbung

Gast

09. November 2017, 13:51:13
Antwort #5
Offline

padostms


Ja diese funktion für änderung ist sehr gut,nur mich stört beim numerische daten das ich immer aufrufen muss.
Habe dann FB-s die gleich heissen aber komplett andere bearbeitung haben.Deswegen brauche ich diese trennung
« Letzte Änderung: 08. Februar 2018, 16:28:26 von padostms »

09. November 2017, 21:29:11
Antwort #6
Offline

Micky


Hallo,
um die angezeigten Daten im Datenfenster auf die FB-Daten zu reduzieren, könntest Du Dir einen eigenen Datentyp anlegen. Diesen neuen Datentyp wählst Du dann am FlexPendant aus und siehst nur die FB-Daten.

Einen eigenen Datentyp kannst Du entweder durch die Defiition eines RECORDs oder durch einen Alias-Datentyp erzeugen.

  RECORD fb_data
       num Value;
   endrecord

   PERS fb_data FB123{9}:=[[0],[0],[0],[0],[0],[0],[0],[0],[0]];

Da der RECORD für die Aufnahme von mehreren Daten vorgesehen ist, solltest Du einen Alias-Datentyp vom Datentyp "num" erzeugen. Dieser kann dann im Programm genauso wie der Datentyp "num" verwendet werden.

   ALIAS num fb_data;

   PERS fb_data FB456{9}:=[1,2,3,4,5,6,7,8,9];


Wenn Du nach der Größe des Arrays unterscheiden möchtest könntest Du auch mehrere Alias-Datentypen erzeugen.

   ALIAS num fb_data5;
   ALIAS num fb_data9;

   PERS fb_data5 FB456{5}:=[1,2,3,4,5];
   PERS fb_data9 FB789{9}:=[1,2,3,4,5,6,7,8,9];

In RAPID ist es aber nicht möglich den Namen einer Datendeklaration mehrmals zu verwenden, außer die Daten sind lokal in unterschiedlichen Modulen deklariert.

Gruß
Micky
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

10. November 2017, 08:37:51
Antwort #7
Offline

padostms


Kann die gleiche FB nummer verwenden so das ich zb. FBAR456 definiere und FBIR456 :)

Diese lösung ist sehr gut.

Nochwas ,kann ich diese daten vom  TP oberfläche definieren verbunden mit eine Programmierbare taste?
Also das ein menü aufkommt wo die aktuelle FB drinnen ist zb: FBAR456 und da die daten editieren kann?
Ist es so möglich?

Danke nochmals für die Unterstützung!!!!


« Letzte Änderung: 10. November 2017, 09:10:02 von padostms »

10. November 2017, 14:26:17
Antwort #8
Offline

Micky


Hallo,

RAPID instruktionen können keine neuen Datendeklarationen erzeugen, d.h. das geht nur über das Datenfenster oder durch Anpassen des Moduls in dem die Daten gespeichert sind.

Zum Ändern der Daten könntest Du eine Hintergrundtask erstellen, die auf den virtuellen Ausgang reagiert, der mit der programmierbaren Taste verbunden ist.

Über UiMsgBox oder UiListView kannst Du dann einen Dialog anzeigen und die Daten der aktuellen FB-Daten  anzeigen und ggf. ändern.

Da Deine Arrays als Persistent deklariert sind, kannst Du mit GetDataVal auf die Datendeklaration in einer anderen Task zugreifen, indem zusätzlich die Task angegeben wird.

Bedingung hierzu ist, dass Du den Namen des aktuellen Arrays der Menütask zur Verfügung stellst (z.B. über eine Persistente die in beiden Tasks deklariert ist).

Sobald die Daten geändert sind, kannst Du sie mit SetdataVal wieder zurück in die andere Task schreiben.

Alternativ könntest Du Dir auch eine FlexPendant Applikation in C# mit Visual Studio 2008 und der FlexPendant-SDK erstellen, so dass Du auch neue Daten erzeugen und ändern kannst.

Gruß
Micky
« Letzte Änderung: 10. November 2017, 14:29:38 von Micky »
  • gefällt mir x 1    Danke x 1 (Details | 3 Danke)
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

Heute um 20:38:37
Antwort #9

Werbung

Gast

14. November 2017, 09:28:10
Antwort #9
Offline

padostms


Ergänzung zur Thema!
Habe vieles ausprobiert was Ihr vorgeschlagen habts!Danke dafür.
Immer wieder kommen neue Fragen,Probleme.
Also mit der Gleiche FB-s wird nicht gehen, weil beim Produktion ist schwierig eine extra Name zu geben und habe nur numerische datenfelder.Dazu muss ich alle FB-s umbenennen.Sind sehr viele!!
Wisst Ihr mehres von der laden ,speichern und unload funktion?Damit habe ich auch experimentiert aber bekomme nur Fehlermeldungen.Des würde mir helfen weil da könnte ich gleiche daten benutzen.Oder sehe ich es Falsch?
Danke Im Voraus
  • gefällt mir    Danke

10. Januar 2018, 07:53:57
Antwort #10
Offline

padostms


Statusbericht!
Trennen von numerische daten funktioniert!Habe mit ALIAS gemacht.Geht super!!
Ausser wenn ich 2 gleiche numersiche habe da schreibt immer duplikate symbol.
Habe ausprobiert wenn ich umbenenne dann geht aber ausser zahl kann ich nix anderes eingeben.
ZB:
CASE 1144A:
Lagerdaten_zuweisen(FB1144A);geht nicht
CASE 1144:
Lagerdaten_zuweisen(FB1144);
Ein andere idee währe dass ich die module immer lade und speichere dann würde gehen mit die gleiche namen.
Hat jemand von Euch erfahrung dabei?Kann man testen welche modul geladen wurde bzw welche aktiv ist??
Danke im Voraus!
« Letzte Änderung: 16. Januar 2018, 06:11:54 von padostms »
  • gefällt mir    Danke

15. Januar 2018, 17:14:21
Antwort #11
Offline

Micky


Hallo,
du könntest die Funktion "ModExist" zum Prüfen ob ein Modul bereits vorhanden ist verwenden.
Mfg
Micky
  • gefällt mir x 1    Danke x 1 (Details | 3 Danke)
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

16. Januar 2018, 08:41:11
Antwort #12
Offline

padostms


Danke werde Ausprobieren!
Module Laden ,Speichern funktioniert das hat noch gefählt!
MFG
Tamas
  • gefällt mir    Danke

Heute um 20:38:37
Antwort #13

Werbung

Gast

22. Januar 2018, 09:01:52
Antwort #13
Offline

padostms


Hallo!
Habe diese variante mit Daten laden und ein 2. mit Unterstützung von ABB!!
Beim 2. Variante werden die daten im String definiert und im Array  geschrieben.
Des Funktioniert auch!
Danke an Alle für die Hilfe!
« Letzte Änderung: 08. Februar 2018, 16:28:51 von padostms »


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH