ABB Roboterschulung von praxiserfahrenen Trainern
in unserem Schulungszentrum in Mainburg oder vor Ort bei Ihnen
Bediener und Expertenschulungen anfragen

Autor Thema:  Indirekte Adressierung  (Gelesen 2097 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

mod-poser

  • Gast
Indirekte Adressierung
« am: 29. November 2005, 20:58:50 »
Immer wieder muss man Variablen abhängig vom Prozess anders beschreiben.
Meist progrmmieren meine Kollegen dies mit IF THEN ELSE oder TEST Befehlen.
Einfacher aber ist es dafür Arrays zu deklarieren, das geht mit jedem Datentyp.
Einfach unter View > 4 Datentyp auswählwen, und dann mit mit VIEW > 6 NEW ARRAY neues
Datenfeld anlegen.
Unter VIEW > 4 Datenyp auswählen und Variable mit Cursor markieren ENTER drücken,
schon sieht man das Array mit allen Dimensionen.
Jetzt braucht man nur noch eine Prozess-ID,bekommt man meist in Form einer Programm- oder
Werkzeugnummmer, und schon geht's los.
Wo früher stand : IF nMould_No=1 THEN
                                nOutput:=15;
                             ELSEIF nMould_No=2 THEN
                                nOutput:=19;
                              .
                              .
                             ENDIF

steht jetzt nur noch :  PERS num nOutPut_Array{3}:=[15,19,22];

                                    nOutput:=nOutPut_Array{nMould_No};

Gruß
msc
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert


ABB Robotertraining
günstig und verständlich mit Zertifikat
ABB Roboterschulung

Offline Werner Hampel

  • Administrator
  • Forum Legende LV 3
  • *
  • Beiträge: 1583
    • ROBTEC GmbH - Roboter Systemhaus
  • Bewertet: +23
Re: Indirekte Adressierung
« am: 04. Dezember 2005, 11:13:22 »
 :supi:

is zwar kürzer, dafür schauts total kompliziert aus.

Denke das is nix für ne Instandhaltung.
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert
Menschen brauchen Roboter, aber auch Roboter brauchen Menschen.
Roboter sichern die Arbeitsplätze und den Fortschritt der Industrieländer, da sie kostengünstig und qualitativ hochwertig produzieren.
Ohne Automatisierung mit Robotern werden unsere Produkte in Billiglohnländern hergestellt.

Offline rmac

  • Forum Elite LV 4
  • *
  • Beiträge: 281
  • Bewertet: 0
Re: Indirekte Adressierung
« am: 04. Dezember 2005, 15:13:53 »
Also ich würde auch die zweite Version (mit Array) bevorzugen.
Allerdings würde ich (bei beiden Versionen) weitestgehend mit Konstanten arbeiten. Ist zwar mehr Schreiberei und auf den ersten Blick auch nicht wirklich übersichtlich, aber spätestens der nächste Kollege der an diesem Projekt arbeiten muß wird es einem danken...

Also etwa so:
  CONST num CMaxItems:=3;
  CONST num CItemNo4711:=1;
  CONST num CItemNo4712:=2;
  CONST num CItemNo4799:=3;
 
  CONST num CIN4711_Param1:=15;
  CONST num CIN4712_Param1:=19;
  CONST num CIN4799_Param1:=22;

! Das geht leider bei Persistenten nicht, da bei PERS keine Deklaration mit bezeichneten Konstanten erlaubt ist
!  PERS num nOutPut_Array{CMaxItems}:=[CIN4711_Param1,CIN4712_Param1,CIN4799_Param1];  <- Fehler !!!
! aber bei VARs gehts
  VAR num nOutPut_Array{CMaxItems}:=[CIN4711_Param1,CIN4712_Param1,CIN4799_Param1];
! wenn's PERS sein muß, dann nur so:
  PERS num nOutPut_Array{CMaxItems}:=[15,19,22];

! in der "alten" Version sähe es dann so aus:
   TEST nMould_No
     CASE CItemNo4711 : nOutput := CIN4711_Param1;
     CASE CItemNo4712 : nOutput := CIN4712_Param1;
     CASE CItemNo4799 : nOutput := CIN4799_Param1;
     DEFAULT: Stop;
   ENDTEST

Ein Nachteil der Array-Methode ist jedoch das die Indizierung lückenlos sein muß und bei Eins beginnt. Wenn z.B. die Teile/Artikel/Item-Nummer von einem übergeordneten Prozessleitrechner in ASCII-Form ("ABC-221244", "ADB-469809", "XYZ-909850", usw.) geliefert wird, oder als Ganzzahl mit großen Lücken (z.B.: 0, 23, 567, 698977, usw.) dann müsste man diese Nummer erst wieder in einen fortlaufenden Index konvertieren und dann kann man schon fast wieder besser mit TEST bzw. IF THEN ELSE arbeiten.
Bei einer großen Anzahl von Varianten und/oder bei großen Parametersätzen würde ich aber ohnehin alles in eine externe Konfig.-Datei packen die vom Rob gelesen wird und mit einem (Text-)Editor angepasst werden kann.

Schönes WE noch
Rainer
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert

mod-poser

  • Gast
Re: Indirekte Adressierung
« am: 06. Dezember 2005, 12:29:46 »
Klasse Tip Rainer, Danke!

Gruß
msc
  • finde ich gut    Danke, das hat mir geholfen    brauche Hilfe    da stimmt was nicht    Lesenswert


xx
Indirekte Adrresierung der E/As

Begonnen von holly987

3 Antworten
1031 Aufrufe
Letzter Beitrag 14. September 2011, 09:24:00
von Programmiersklave
 

über das Roboterforum

Nutzungsbedingungen Impressum
Sitemap