Date_and_Time an FC übergeben.

Aksels

Level-2
Beiträge
257
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich habe eine Wochenschaltuhr als FB programmiert.
Funktioniert super.
Nun habe ich festgestellt, daß ich gar keine Stat Variablen benutze.
Um keinen InstanzDB deklarieren zu müssen, habe ich den ganzen Code und alle Variablen in einen FC kopiert.
Ich kann aber die IN-Variable E_ZeitUndDatum vom Typ Date_and_Time nun nicht mehr an den IN vom DT_TOD legen.
Code:
CALL  "DT_TOD"
       IN     :=#E_ZeitUndDatum
       RET_VAL:=#TMPZeit
      NOP   0

Ich bekomme eine "Unzulässige Parameterversorgung für IN".
Ist das irgendeine FC Einschränkung?
Im FB lief das....

Gruß,
Aksels
 
Hallo,
es handelt sich hier (ebenfalls wie in deiner anderen Anfrage) um eine Variable, die als Pointer übergeben wird. Auch hier gilt das gleiche - du kannst den Pointer nicht durchreichen sondern mußt in abbilden ...

Gruß
Larry
 
In dem anderen Thread habe ich dir einen Link gepostet zu dem Thema.
Nach meiner Meinung hätte es genauso in dem FB nicht funktioniert haben dürfen (keine sinnvolle Rückmeldung des versorgten FC's).
 
Alter Baustein.

Sehr interessant.
In dem Fb geht es aber.
Im Netzwerk Zeit extrahieren und Tag extrahieren.
Das setze ich so schon in mehreren SPSen ein.
Wenn ich alles in einen FC kopiere, dann gehen diese beiden Netzwerke nicht mehr.

Hier der Code:

Code:
FUNCTION_BLOCK 100
TITLE = Wochenschaltuhr
AUTHOR : ASpallek
VERSION : 0.1

VAR_INPUT
  E_Mo : BOOL ; 
  E_Di : BOOL ; 
  E_Mi : BOOL ; 
  E_Do : BOOL ; 
  E_Fr : BOOL ; 
  E_Sa : BOOL ; 
  E_So : BOOL ; 
  E_UZ_Von : TIME_OF_DAY ; 
  E_UZ_Bis : TIME_OF_DAY ; 
  E_ZeitUndDatum : DATE_AND_TIME ; 
END_VAR
VAR_OUTPUT
  A_Ein : BOOL ; 
END_VAR
VAR_TEMP
  TMPZeit : TIME_OF_DAY ; 
  TMPTag : INT ; 
  TMPAus : TIME_OF_DAY ; 
END_VAR
BEGIN
NETWORK
TITLE =Zeit Extrahieren
      CALL "DT_TOD" (
           IN                       := #E_ZeitUndDatum,
           RET_VAL                  := #TMPZeit);
      NOP   0; 
NETWORK
TITLE =
      L     #TMPZeit; 
      L     1000; 
      /D    ; 
      T     #TMPZeit; 
      NOP   0; 
NETWORK
TITLE =
      L     #TMPZeit; 
      L     1000; 
      *D    ; 
      T     #TMPZeit; 
      NOP   0; 
NETWORK
TITLE =Tag Extrahieren
//1 = So 
//7 = Sa
      CALL "DT_DAY" (
           IN                       := #E_ZeitUndDatum,
           RET_VAL                  := #TMPTag);
      NOP   0; 
NETWORK
TITLE =
//Wenn Aus kleiner Ein und akt Zeit < Ein 24 h zu Zeit hinzu
      U(    ; 
      L     #TMPZeit; 
      L     #E_UZ_Von; 
      <D    ; 
      )     ; 
      U(    ; 
      L     #E_UZ_Bis; 
      L     #E_UZ_Von; 
      <D    ; 
      )     ; 
      SPBNB _001; 
      L     #TMPZeit; 
      L     T#1D; 
      +D    ; 
      T     #TMPZeit; 
_001: NOP   0; 
NETWORK
TITLE =
//Wenn Aus kleiner Ein 24 h zu Aus hinzu
      L     #E_UZ_Bis; 
      L     #E_UZ_Von; 
      <D    ; 
      =     L     10.0; 
      U     L     10.0; 
      SPBNB _002; 
      L     #E_UZ_Bis; 
      L     T#1D; 
      +D    ; 
      T     #TMPAus; 
_002: NOP   0; 
      UN    L     10.0; 
      SPBNB _003; 
      L     #E_UZ_Bis; 
      T     #TMPAus; 
_003: NOP   0; 
NETWORK
TITLE =
      U(    ; 
      U     #E_Mo; 
      U(    ; 
      L     #TMPTag; 
      L     2; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Di; 
      U(    ; 
      L     #TMPTag; 
      L     3; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Mi; 
      U(    ; 
      L     #TMPTag; 
      L     4; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Do; 
      U(    ; 
      L     #TMPTag; 
      L     5; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Fr; 
      U(    ; 
      L     #TMPTag; 
      L     6; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Sa; 
      U(    ; 
      L     #TMPTag; 
      L     7; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_So; 
      U(    ; 
      L     #TMPTag; 
      L     1; 
      ==I   ; 
      )     ; 
      )     ; 
      U(    ; 
      L     #TMPZeit; 
      L     #E_UZ_Von; 
      >=D   ; 
      )     ; 
      U(    ; 
      L     #TMPZeit; 
      L     #TMPAus; 
      <=D   ; 
      )     ; 
      =     #A_Ein; 
END_FUNCTION_BLOCK
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja ... bei einem FB wird der Pointer als Wert (also mit Inhalt) in der Instanz mit abgelegt - bei einem FC nicht. Mag also schon sein, dass du deshalb des Pointer so weiterreichen kannst - hatte ich bslang so noch nicht ausprobiert ...
 
Umschreiben in Temp Bereich geht nicht.

Guten Tag.

Nachdem ich das Put/Get-Problem gelöst habe war ich ganz glücklich und dachte mit dem Pointer-Wissen geh ich jetzt an meinen Zeitschaltuhr-PC-Baustein. Und Pustekuchen. Ich komm mir so doof vor! Seid gädig mit mir.

Ich habe einen IN I_Uhrzeit vom Typ Day_And_Time deklariert.
Zusätzlich einen Temp T_Uhrzeit Typ Day_And_Time der bei 0 losgeht.
Nun versuche ich, da die Uhrzeit ja als Pointer übergeben wird diese in den Temp-Bereich zu kopieren.

Code:
      L     P##I_Uhrzeit
      LAR1  


      L     B [AR1,P#0.0]
      T     LB     0
      L     B [AR1,P#1.0]
      T     LB     1
      L     B [AR1,P#2.0]
      T     LB     2
      L     B [AR1,P#3.0]
      T     LB     3
      L     B [AR1,P#4.0]
      T     LB     4
      L     B [AR1,P#5.0]
      T     LB     5
//      L     B [AR1,P#6.0]
//      T     LB     6

Bei Byte 6 knallt es mit einem Bereichslängenfehler und zwar schon beim Lesen.
Eine Date_And_Time hat doch aber 8 Byte?

Gruß,
Aksels
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe einen IN I_Uhrzeit vom Typ Day_And_Time deklariert.
Zusätzlich einen Temp T_Uhrzeit Typ Day_And_Time der bei 0 losgeht.
Day_and_Time ?
Was hast du deklariert ? Eine IN-Variable mit dem Namen Datum (z.B.) und dem Typ DATE_AND_TIME ... oder eine IN-Variable mit dem Name Day_And_Time vom Typ Pointer ?
Ich glaube eher letzteres denn :
Eine Date_And_Time hat doch aber 8 Byte?
Richtig ...

Gruß
Larry
 
Vertippt.

Klar, Larry, vertippt. Typ Date_and_Time.

Ich bin auch gerade durch rumprobieren darauf gekommen, daß ich einen ANY-Pointer nehmen könnte. Bedeutet das, daß ich Date_And_Time gar nicht an FCs übergeben kann? Egal, was ich damit im FC machen will? Ich dachte das Problem besteht nur bei weitergabe an einen Baustein, den man im FC aufruft. Wenn das für alle Variablen mit Länge > 4 Byte gilt .... oh, ihr Götter, das erklärt viele vergeudete Stunden und Bausteine, die nie liefen.

Kann man das so sagen: Wenn Variable kompliziert oder > 4 Byte, dann immer mit Any-Pointer übergeben?

Ok, ich habe das in einen ANY-Pointer geändert.
Was ich mit meinem Obigen Code jetzt aber byteweise auslese ist 10,2,0,8,0,64,8400,0.... das ist die übergebene Adresse P#Db100.DBX8.0 Byte 8. Dort steht meine Uhrzeit drin.
Hätte da jetzt nicht direkt die Uhrzeit rauskommen sollen?

Das bedeutet, ich habe hier den Zeiger auf einen Zeiger bekommen. Mann, ich werd noch verrückt. Muss ich den jetzt in einen Temp Any-Pointer laden und dann nochmal Umlesen in eine Variable mit Date_And_Time?

Ich geh am Stock.

Gruß,
Aksels
 
Hallo,

Date_and_time ist ein zusammengesetzter Datentyp.

Im Simatic-Manager F1 drücken. "zusammengesetzter Datentypen" eingeben.

ist recht gut beschrieben
 

Anhänge

  • dt.jpg
    dt.jpg
    564 KB · Aufrufe: 20
Zuviel Werbung?
-> Hier kostenlos registrieren
Weia.

@Verpolt: Nach dieser Tabelle könnte ich ja Date_And_Time ganz normal übergeben. Geht aber nicht.
Larry Laffer meinte das wird als Pointer übergeben.
Irgendwas stimmt doch dann mit der Tabelle nicht.

Also muss ich das Ding "abbilden" wie Larry Laffer schreibt.

Habe deswegen folgendes gemacht:

Eine Eingangsvariable I_Any vom Typ Any.
Dort liegt im übergeordneten Baustein die Adresse der Uhrzeit an: DB_Daten.D_UhrzeitDatum im Format date_and_time
Ohne Symbole: DB100.DBX8.0


Eine Temporärvariable T_Any vom Typ Any der an Adresse 0 startet.

Speichere die Eingangs-any in die Temp-any (abbilden):
Code:
L     P##I_Any
      LAR1  


      L     B [AR1,P#0.0]
      T     LB     0
      L     B [AR1,P#1.0]
      T     LB     1
      L     B [AR1,P#2.0]
      T     LB     2
      L     B [AR1,P#3.0]
      T     LB     3
      L     B [AR1,P#4.0]
      T     LB     4
      L     B [AR1,P#5.0]
      T     LB     5
      L     B [AR1,P#6.0]
      T     LB     6
      L     B [AR1,P#7.0]
      T     LB     7
      L     B [AR1,P#8.0]
      T     LB     8
      L     B [AR1,P#9.0]
      T     LB     9

Klappt prima. Da kommen folgende Bytes vorbei:
10,2,0,8,0,64,84,0,0,40
Das ist laut Handbuch
Db100.DBX8.0 Byte 8

Prima. Habe ich hiermit in T_Any geschaufelt.
Jetzt will ich auf die Daten zugreifen die sich dort befinden wo der Pointer hinzeigt.
Also flugs in AR1 geladen und....


Code:
L     P##T_Any
      LAR1  


      L     B [AR1,P#0.0]

In der letzten Zeile knallts schon. Beireichsfehler. Aber warum? Wenn ich den ersten Teil beobachte kommt doch meine Adresse der Uhrzeit Byteweise vorbei.


Gruß,
Aksels
 
Guten Tag.

Nachdem ich das Put/Get-Problem gelöst habe war ich ganz glücklich und dachte mit dem Pointer-Wissen geh ich jetzt an meinen Zeitschaltuhr-PC-Baustein. Und Pustekuchen. Ich komm mir so doof vor! Seid gädig mit mir.

Ich habe einen IN I_Uhrzeit vom Typ Day_And_Time deklariert.
Zusätzlich einen Temp T_Uhrzeit Typ Day_And_Time der bei 0 losgeht.
Nun versuche ich, da die Uhrzeit ja als Pointer übergeben wird diese in den Temp-Bereich zu kopieren.

Code:
      L     P##I_Uhrzeit
      LAR1  


      L     B [AR1,P#0.0]
      T     LB     0
      L     B [AR1,P#1.0]
      T     LB     1
      L     B [AR1,P#2.0]
      T     LB     2
      L     B [AR1,P#3.0]
      T     LB     3
      L     B [AR1,P#4.0]
      T     LB     4
      L     B [AR1,P#5.0]
      T     LB     5
//      L     B [AR1,P#6.0]
//      T     LB     6

Bei Byte 6 knallt es mit einem Bereichslängenfehler und zwar schon beim Lesen.
Eine Date_And_Time hat doch aber 8 Byte?

Gruß,
Aksels

So sollts gehen, mit In-Variable vom Typ DATEANDTIME:

Code:
  L     P##dtm
      LAR1  
      L     D [AR1,P#0.0]
      T     LD     0
      L     W [AR1,P#4.0]
      T     LW     4

      L     LW     0
      U     ==0
      SPB   kDB
      AUF   DB [LW 0]
kDB:  L     LD     2
      LAR1  

//Sekunden:
      L     B [AR1,P#5.0]

Du bekommst ja einen Pointer, keinen Any! Ein Pointer hat nur 6 Byte. (Step7 Hilfe, Format des Parametertypes POINTER)
 
Noch als kleine Verbesserung, das es auch mit DI geht:

Code:
      L     P##dtm
      LAR1  
      L     D [AR1,P#0.0]
      T     LD     0
      L     W [AR1,P#4.0]
      T     LW     4

      L     LW     0
      U     ==0
      SPB   kDB
      L     84
      T     LB     2                    //Speicherbereich immer DB, auch bei DI
      AUF   DB [LW 0]
kDB:  L     LD     2
      LAR1  

//Sekunden:
      L     B [AR1,P#5.0]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Axel,
Sorry ... mein Beitrag war nicht so ganz sauber ...

Bei Verwendung eines FC bekommst du einen Pointer übergeben, der auf die Adresse zeigt, wo der DT herkommt. Du hast also mit deinen 6 Byte vollkomen Recht. Die korrekte Lösung ist dann so :

Code:
L p##myDateTime
LAR1
L W [AR1,p#0.0]  // Falls die Quell aus einem DB kommt ...
T #DB_Nr            // DB_Nr wäre hier eine TEMP-Variable vom Typ WORD
AUF DB [DB_Nr]    // den ggf. übergebenen DB aufschlagen
L D [AR1,p#2.0]   // AR1 auf neuen Pointer
LAR1
 
// nun hast du im AR1 die Adresse der Quelldaten und kannst hier mit deinem Code weitermachen ...

Das kommt davon, wenn man (wie in meinem Fall) solche Dinge immer mit FB's macht. Ich bitte nochmals um Entschuldigung und wünsche (nun aber) Viel Erfolg ...

Gruß
Larry

Nachsatz :
Nach näherem Hinsehen habe ich dann auch noch erkannt, das Jochen so etwas in der Art auch schon gespostet hat.
Naja ... aber mein Code-Schnipsel ist ja etwas kompakter - von daher hat dann vielleicht trotzdem noch eine Berechtigung ... ;)
 
Zuletzt bearbeitet:
Oh Mann!

Ich danke Euch allen vielmals. Jetzt habe ich es (hoffentlich endgültig) gefressen. Es funktioniert.
Aber sagt mal, ich komme mir zwischen Euch immer so unwissend vor. Habt Ihr das alles selber rausgefunden, oder gibt es dafür einen Spezialkurs?

Andererseits: wie soll jemand, der nur das normale Handbuch zu Step7 gelesen hat darauf kommen, daß Date_and_Time nicht in FCs weitergegeben werden kann?

Vor allem, da Verpolt ja sogar eine Siemens-Tabelle hervorgezaubert hat, in der drinsteht, daß Date_and_Time mit FCs gehen sollte...

Naja, ich sehe schon, ich muss noch viel lernen....

Gruß,
Aksels
 
Eine Kleine Frage zur AWL Ansicht.

Ich habe nun meine Zeitschaltuhr fertig.
Wenn ich in die AWL ansicht Umschalte sehe ich immer wieder Zwischenspeicherungen im Code. Warum die nötig sind sei mal dahingestellt (zur FUP-Darstellung vermutlich).
Aber wo gehen die hin? Beispiel:

Netzwerk 7
.....
= L 24.0

Meine Temp Variablen hören bei L 23 auf.
Das bedeutet, die Bausteine benutzen nach Lust und Laune (also je nach Kompliziertheit der FUP-Darstellung) mehr temporären Speicher als auf den ersten Blick ersichtlich?
Und das kann ich nur mit AWL vermeiden?

Gruß,
Aksels

Hier der Zeitschaltuhr Code zu freien Weiterverwendung (fast alles in FUP).
Sollte dsd zweite Zeitpaar nicht gebraucht werden einfach mit dem ersten belegen.


Code:
FUNCTION "FC_Zeitschaltuhr" : VOID
TITLE =
AUTHOR : Aksels
VERSION : 0.1


VAR_INPUT
  E_Mo : BOOL ;    
  E_Di : BOOL ;    
  E_Mi : BOOL ;    
  E_Do : BOOL ;    
  E_Fr : BOOL ;    
  E_Sa : BOOL ;    
  E_So : BOOL ;    
  E_UZ_Von_1 : TIME_OF_DAY ;    
  E_UZ_Bis_1 : TIME_OF_DAY ;    
  E_UZ_Von_2 : TIME_OF_DAY ;    
  E_UZ_Bis_2 : TIME_OF_DAY ;    
  E_ZeitUndDatum : DATE_AND_TIME ;    
END_VAR
VAR_OUTPUT
  A_Ein : BOOL ;    
END_VAR
VAR_TEMP
  T_I_UZeit : DATE_AND_TIME ;    
  TMPZeit : TIME_OF_DAY ;    
  TMPTag : INT ;    
  T_UZ_Bis_Anpass_1 : TIME_OF_DAY ;    
  T_UZ_Bis_Anpass_2 : TIME_OF_DAY ;    
  T_DBNr : WORD ;    
END_VAR
BEGIN
NETWORK
TITLE =Date_And_Time kann nicht an FCs direkt übergeben werden.
//Hier wird die übergebene Zeit in eine temporäre Variable umgespeichert.

      L     P##E_ZeitUndDatum; 
      LAR1  ; 
      L     W [AR1,P#0.0]; 
      T     #T_DBNr; 
      AUF   DB [#T_DBNr]; 
      L     D [AR1,P#2.0]; 
      LAR1  ; 
      L     D [AR1,P#0.0]; 
      T     LD     0; 
      L     D [AR1,P#4.0]; 
      T     LD     4; 


NETWORK
TITLE =Zeit Extrahieren

      CALL "DT_TOD" (
           IN                       := #T_I_UZeit,
           RET_VAL                  := #TMPZeit);
      NOP   0; 
NETWORK
TITLE =Millisekunden Abschneiden

      L     #TMPZeit; 
      L     1000; 
      /D    ; 
      T     #TMPZeit; 
      NOP   0; 
NETWORK
TITLE =Millisekunden Abschneiden

      L     #TMPZeit; 
      L     1000; 
      *D    ; 
      T     #TMPZeit; 
      NOP   0; 
NETWORK
TITLE =Tag Extrahieren
//1 = So 
//7 = Sa
      CALL "DT_DAY" (
           IN                       := #T_I_UZeit,
           RET_VAL                  := #TMPTag);
      NOP   0; 
NETWORK
TITLE =
//Wenn Aus kleiner Ein und akt Zeit < Ein dann 24 h zu Zeit hinzu
      U(    ; 
      L     #TMPZeit; 
      L     #E_UZ_Von_1; 
      <D    ; 
      )     ; 
      U(    ; 
      L     #E_UZ_Bis_1; 
      L     #E_UZ_Von_1; 
      <D    ; 
      )     ; 
      SPBNB _001; 
      L     #TMPZeit; 
      L     T#1D; 
      +D    ; 
      T     #TMPZeit; 
_001: NOP   0; 
NETWORK
TITLE =
//Wenn Aus kleiner Ein 24 h zu Aus hinzu
      L     #E_UZ_Bis_1; 
      L     #E_UZ_Von_1; 
      <D    ; 
      =     L     24.0; 
      U     L     24.0; 
      SPBNB _002; 
      L     #E_UZ_Bis_1; 
      L     T#1D; 
      +D    ; 
      T     #T_UZ_Bis_Anpass_1; 
_002: NOP   0; 
      UN    L     24.0; 
      SPBNB _003; 
      L     #E_UZ_Bis_1; 
      T     #T_UZ_Bis_Anpass_1; 
_003: NOP   0; 
NETWORK
TITLE =
//Wenn Aus kleiner Ein 24 h zu Aus hinzu
      L     #E_UZ_Bis_2; 
      L     #E_UZ_Von_2; 
      <D    ; 
      =     L     24.0; 
      U     L     24.0; 
      SPBNB _004; 
      L     #E_UZ_Bis_2; 
      L     T#1D; 
      +D    ; 
      T     #T_UZ_Bis_Anpass_2; 
_004: NOP   0; 
      UN    L     24.0; 
      SPBNB _005; 
      L     #E_UZ_Bis_2; 
      T     #T_UZ_Bis_Anpass_2; 
_005: NOP   0; 
NETWORK
TITLE =Auswertung

      U(    ; 
      U     #E_Mo; 
      U(    ; 
      L     #TMPTag; 
      L     2; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Di; 
      U(    ; 
      L     #TMPTag; 
      L     3; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Mi; 
      U(    ; 
      L     #TMPTag; 
      L     4; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Do; 
      U(    ; 
      L     #TMPTag; 
      L     5; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Fr; 
      U(    ; 
      L     #TMPTag; 
      L     6; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_Sa; 
      U(    ; 
      L     #TMPTag; 
      L     7; 
      ==I   ; 
      )     ; 
      O     ; 
      U     #E_So; 
      U(    ; 
      L     #TMPTag; 
      L     1; 
      ==I   ; 
      )     ; 
      )     ; 
      U(    ; 
      U(    ; 
      L     #TMPZeit; 
      L     #E_UZ_Von_1; 
      >=D   ; 
      )     ; 
      U(    ; 
      L     #TMPZeit; 
      L     #T_UZ_Bis_Anpass_1; 
      <=D   ; 
      )     ; 
      O     ; 
      U(    ; 
      L     #TMPZeit; 
      L     #E_UZ_Von_2; 
      >=D   ; 
      )     ; 
      U(    ; 
      L     #TMPZeit; 
      L     #T_UZ_Bis_Anpass_2; 
      <=D   ; 
      )     ; 
      )     ; 
      =     #A_Ein; 
END_FUNCTION
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber sagt mal, ich komme mir zwischen Euch immer so unwissend vor. Habt Ihr das alles selber rausgefunden, oder gibt es dafür einen Spezialkurs?

Also dazu würde ich sagen :
- ca. 75 % gesunder Auto-Didaktimus
- ca. 25 % fleissiges Mitlesen (und mitmachen) hier im Forum
 
Wenn ich in die AWL ansicht Umschalte sehe ich immer wieder Zwischenspeicherungen im Code. Warum die nötig sind sei mal dahingestellt (zur FUP-Darstellung vermutlich).
ja ... das macht der FUP-Editor. Der bildet sich da Zwischen-Variablen, die dann natürlich nicht korrekt dokumentiert werden.

Das bedeutet, die Bausteine benutzen nach Lust und Laune (also je nach Kompliziertheit der FUP-Darstellung) mehr temporären Speicher als auf den ersten Blick ersichtlich?
Und das kann ich nur mit AWL vermeiden?
Ja zum "nach Lust und Laune" und Jein zum "nur in AWL vermeiden".
In AWL kannst du das genauso machen - ist aber eigentlich ein bißchen Selbstmord. Der "gute Programmierer" würde immer eine Variable, die er im Programm verwendet, auch benennen - auch eine Temporäre ...

Gruß
Larry
 
@Aksels

Vor allem, da Verpolt ja sogar eine Siemens-Tabelle hervorgezaubert hat, in der drinsteht, daß Date_and_Time mit FCs gehen sollte...

Zaubern = F1 im S-Manager.

"elementare datentypen" eingeben

"Zulässige Datentypen beim Übergeben von Parametern" auswählen

voila....
 
Zurück
Oben