Siemens
Digital Industries, Motion Control, Machine Tool Systems
8832
Follower:innenREAD Befehl (828/840D sl), READ Befehl (828/840D sl) ganze Zeichenketten...
24.06.2017, 13:37 Uhr
hallo professies.
konstruktive infos sind gefragt zum theme:
ganze zeichenkette mit read lesen.
in meinem übungs-bsp bekomme ich immer nur den wert eines einzelnen asci zeichen zurück geliefert.
def int error,cnt,auftrag_nr
def string[1] erw
def string[4] flnr
DEF STRING[12] FOL
def string[13] dat_nme
def string[255] Ergebnis[2]
; FOL="DATEI_NR" / ORDNER WAEHLEN NUR INNERT " " AENDERN ! FOL=Folder/Ordner ;*RO*
FOL="DATEI_NR"
auftrag_nr=11085771
erw="_"
cnt=1
flnr=<<cnt
IF STRLEN(flnr)<2
flnr=<<"000"<<cnt
ENDIF
IF STRLEN(flnr)<3
flnr=<<"00"<<cnt
ENDIF
IF STRLEN(flnr)<4
flnr=<<"0"<<cnt
ENDIF
dat_nme=<<auftrag_nr<<erw<<flnr
MSG("Datei NAME= "<<dat_nme)
M0
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2])
M0
IF ERROR <>0
MSG ("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
M0
ENDIF
M30
wenn ich mehr zeichen verkettet anzeigen möcht die gelesen werden dann bekomm ich dass nur so hin-.
def int error,cnt,auftrag_nr
def string[1] erw
def string[4] flnr
DEF STRING[12] FOL
def string[13] dat_nme
def string[255] Ergebnis[2]
; FOL="DATEI_NR" / ORDNER WAEHLEN NUR INNERT " " AENDERN ! FOL=Folder/Ordner ;*RO*
FOL="DATEI_NR"
auftrag_nr=11085771
erw="_"
cnt=1
flnr=<<cnt
IF STRLEN(flnr)<2
flnr=<<"000"<<cnt
ENDIF
IF STRLEN(flnr)<3
flnr=<<"00"<<cnt
ENDIF
IF STRLEN(flnr)<4
flnr=<<"0"<<cnt
ENDIF
dat_nme=<<auftrag_nr<<erw<<flnr
MSG("Datei NAME= "<<dat_nme)
M0
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2]<<Ergebnis[0,3]<<Ergebnis[0,4])
M0
IF ERROR <>0
MSG ("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
M0
ENDIF
M30
geh ich recht in der annahme dass: der read-befehl gar keine zeichen-ketten auslesen kann,,sonder nur einzelne zeichen ???
oder sieht jemand etwas dass ich falsch mache ?
ich bin für konstruktive hilfe/tips immer offen und dankbar
grus: b_b
Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 13:38 Uhr
konstruktive infos sind gefragt zum theme:
ganze zeichenkette mit read lesen.
in meinem übungs-bsp bekomme ich immer nur den wert eines einzelnen asci zeichen zurück geliefert.
def int error,cnt,auftrag_nr
def string[1] erw
def string[4] flnr
DEF STRING[12] FOL
def string[13] dat_nme
def string[255] Ergebnis[2]
; FOL="DATEI_NR" / ORDNER WAEHLEN NUR INNERT " " AENDERN ! FOL=Folder/Ordner ;*RO*
FOL="DATEI_NR"
auftrag_nr=11085771
erw="_"
cnt=1
flnr=<<cnt
IF STRLEN(flnr)<2
flnr=<<"000"<<cnt
ENDIF
IF STRLEN(flnr)<3
flnr=<<"00"<<cnt
ENDIF
IF STRLEN(flnr)<4
flnr=<<"0"<<cnt
ENDIF
dat_nme=<<auftrag_nr<<erw<<flnr
MSG("Datei NAME= "<<dat_nme)
M0
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2])
M0
IF ERROR <>0
MSG ("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
M0
ENDIF
M30
wenn ich mehr zeichen verkettet anzeigen möcht die gelesen werden dann bekomm ich dass nur so hin-.
def int error,cnt,auftrag_nr
def string[1] erw
def string[4] flnr
DEF STRING[12] FOL
def string[13] dat_nme
def string[255] Ergebnis[2]
; FOL="DATEI_NR" / ORDNER WAEHLEN NUR INNERT " " AENDERN ! FOL=Folder/Ordner ;*RO*
FOL="DATEI_NR"
auftrag_nr=11085771
erw="_"
cnt=1
flnr=<<cnt
IF STRLEN(flnr)<2
flnr=<<"000"<<cnt
ENDIF
IF STRLEN(flnr)<3
flnr=<<"00"<<cnt
ENDIF
IF STRLEN(flnr)<4
flnr=<<"0"<<cnt
ENDIF
dat_nme=<<auftrag_nr<<erw<<flnr
MSG("Datei NAME= "<<dat_nme)
M0
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2]<<Ergebnis[0,3]<<Ergebnis[0,4])
M0
IF ERROR <>0
MSG ("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
M0
ENDIF
M30
geh ich recht in der annahme dass: der read-befehl gar keine zeichen-ketten auslesen kann,,sonder nur einzelne zeichen ???
oder sieht jemand etwas dass ich falsch mache ?
ich bin für konstruktive hilfe/tips immer offen und dankbar
grus: b_b
Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 13:38 Uhr
24.06.2017, 14:21 Uhr
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2])
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2]<<Ergebnis[0,3]<<Ergebnis[0,4])
MSG("READ Ergebnis= "<<Ergebnis[0,2])
READ (ERROR,"/_N_WKS_DIR/_N_"<<FOL<<"_WPD/_N_"<<dat_nme<<"_MPF",1,2,Ergebnis)
MSG("READ Ergebnis= "<<Ergebnis[0,2]<<Ergebnis[0,3]<<Ergebnis[0,4])
Es währe hilfreich, das nächste mal direkt zu schreiben was sich geändert hat und was das bewirkt, nicht jeder hat Zeit und Lust, ellenlange Listings nach Änderungen zu durchsuchen.
Kenne mich mit Sinumerik jetzt nicht so aus.
Aber wenn das 2. MSG alles ausgibt, was du haben möchtest, dann liegt es nicht am READ.
Eher daran, dass bei MSG jeweils nur einzelne Zeichen ausgewählt werden.
Gruß
cgTNC
Der Beitrag wurde von cgTNC bearbeitet: 24.06.2017, 14:24 Uhr
24.06.2017, 14:30 Uhr
24.06.2017, 17:03 Uhr
... hab gerade nochmal extra den schreibtest gemacht (ohne MSG)
direkt in eine zieldatei,, ergebnis bleibt das selbe: READ Ergebnis == immer nur 1 ASCI-Zeichen
sehr schade... ich hatte mir mehr erhofft.
(wenn Ergebnis==String dann auch ECHTE String auslesen und übertragen...)
direkt in eine zieldatei,, ergebnis bleibt das selbe: READ Ergebnis == immer nur 1 ASCI-Zeichen
sehr schade... ich hatte mir mehr erhofft.
(wenn Ergebnis==String dann auch ECHTE String auslesen und übertragen...)
24.06.2017, 18:10 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
... hab gerade nochmal extra den schreibtest gemacht (ohne MSG)
direkt in eine zieldatei,, ergebnis bleibt das selbe: READ Ergebnis == immer nur 1 ASCI-Zeichen
sehr schade... ich hatte mir mehr erhofft.
(wenn Ergebnis==String dann auch ECHTE String auslesen und übertragen...)
direkt in eine zieldatei,, ergebnis bleibt das selbe: READ Ergebnis == immer nur 1 ASCI-Zeichen
sehr schade... ich hatte mir mehr erhofft.
(wenn Ergebnis==String dann auch ECHTE String auslesen und übertragen...)
Bernd ich weis nicht wo dein Problem liegt (ich hab keine Lust deine Code Zeile für Zeile zu überprüfen)
aber wenn du das Beispiel aus dem HANDBUCH ARBEITSVORBEREITUNG mal testest wirst du sehen das man Zeilen lesen kann
kleiner Tipp noch wenn du dein Programm mit M0 anhältst kannst du auf der Seite PARAMETER -> ANWENDER-VARIABLE -> LUD deine
Variablen aus dem Programm mit Werten sehen.
24.06.2017, 18:33 Uhr
genau da liegt der hund begraben ...
ich hab genau das gemacht und bekomme das gleiche ergebnis= NUR 1 asci zeichen als ergebnis...
das war die vorlage aus dem handbuch:
Beispiel
Programmcode
Kommentar
N10 DEF INT ERROR
; Definition der Fehlervariablen.
N20 DEF STRING[255] RESULT[5]
; Definition der Ergebnisvariablen.
N30 READ(ERROR,"/_N_CST_DIR/_N_TESTFILE_MPF",1,5,RESULT)
; Dateiname mit Domain-, Dateikennungund Pfadangabe.
N40 IF ERROR <>0
; Fehlerauswertung.
N50 MSG("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
N60 M0
N70 ENDIF
...
clipboard
...und trotzdem nur EIN zeichen im ergebnis...
ich hab genau das gemacht und bekomme das gleiche ergebnis= NUR 1 asci zeichen als ergebnis...
das war die vorlage aus dem handbuch:
Beispiel
Programmcode
Kommentar
N10 DEF INT ERROR
; Definition der Fehlervariablen.
N20 DEF STRING[255] RESULT[5]
; Definition der Ergebnisvariablen.
N30 READ(ERROR,"/_N_CST_DIR/_N_TESTFILE_MPF",1,5,RESULT)
; Dateiname mit Domain-, Dateikennungund Pfadangabe.
N40 IF ERROR <>0
; Fehlerauswertung.
N50 MSG("FEHLER"<<ERROR<<"BEI READ-BEFEHL")
N60 M0
N70 ENDIF
...
clipboard
...und trotzdem nur EIN zeichen im ergebnis...
24.06.2017, 19:02 Uhr
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT);FUNKTIONIERT NICHT !
N90 M0
FehlerMeldung:
12400
Satz N80 Feld RESULT Element nicht vorhanden.
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT[1,5]);FUNKTIONIERT,,gibt aber nur ascizeichen nr.5 aus zeile 1 zurück
N90 M0
muss ich evtl. <RESULT> noch anders angeben/ergänzen damit ich den gesamten $tring angezeigt bekommen kann ???
habe sogar probiert:RESULT[1,1]-[1,5] aber das ist definitiv eine falsche syntax...
ist aber mein einzigster lösungs ansatz ein array darzustellen...
Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 19:07 Uhr
N80 MSG("READ Ergebnis= "<<RESULT);FUNKTIONIERT NICHT !
N90 M0
FehlerMeldung:
12400
Satz N80 Feld RESULT Element nicht vorhanden.
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT[1,5]);FUNKTIONIERT,,gibt aber nur ascizeichen nr.5 aus zeile 1 zurück
N90 M0
muss ich evtl. <RESULT> noch anders angeben/ergänzen damit ich den gesamten $tring angezeigt bekommen kann ???
habe sogar probiert:RESULT[1,1]-[1,5] aber das ist definitiv eine falsche syntax...
ist aber mein einzigster lösungs ansatz ein array darzustellen...
Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 19:07 Uhr
24.06.2017, 19:16 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT);FUNKTIONIERT NICHT !
N90 M0
FehlerMeldung:
12400
Satz N80 Feld RESULT Element nicht vorhanden.
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT[1,5]);FUNKTIONIERT,,gibt aber nur ascizeichen nr.5 aus zeile 1 zurück
N90 M0
N80 MSG("READ Ergebnis= "<<RESULT);FUNKTIONIERT NICHT !
N90 M0
FehlerMeldung:
12400
Satz N80 Feld RESULT Element nicht vorhanden.
ich ergänze den programmcode aus dem hand buch um folgende 2 zeilen:
N80 MSG("READ Ergebnis= "<<RESULT[1,5]);FUNKTIONIERT,,gibt aber nur ascizeichen nr.5 aus zeile 1 zurück
N90 M0
Versuchs mal mit RESULT[0]
jetzt versteh ich auch deinen Fehler wenn du nur 1 Zeichen aus dem String adressierst wird auch nur eins angezeigt
Der Beitrag wurde von nixalsverdruss bearbeitet: 24.06.2017, 19:18 Uhr
24.06.2017, 19:19 Uhr
Versuchs mal mit RESULT[0]
jetzt versteh ich auch deinen Fehler wenn du nur 1 Zeichen aus dem String adressiert wird auch nur eins angezeigt
jetzt versteh ich auch deinen Fehler wenn du nur 1 Zeichen aus dem String adressiert wird auch nur eins angezeigt
ich bin gar nicht auf die idee gekommen einfach nur einen nuller da einzusetzen !
:HAPPYFACE:
es gibt jetzt natürlich ALLES wieder !
gibt es denn auch eine möglichkeiteinen stringteil wiederzugeben der in einem beliebigen bereich liegt und aber eine definierte zeichenanzahl hat ?
also so etwas:
n1 1234567890abcdefg
result: von"6" bis"c"
ohne einzelstring mittels zähler durchrennen zu lassen ???
Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 19:25 Uhr
25.06.2017, 09:52 Uhr
nixalsverdruss
Level 7 = Community-Professor
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
Mitglied seit: 16.11.2003
Beiträge: 1.511
gibt es denn auch eine möglichkeiteinen stringteil wiederzugeben der in einem beliebigen bereich liegt und aber eine definierte zeichenanzahl hat ?
also so etwas:
n1 1234567890abcdefg
result: von"6" bis"c"
also so etwas:
n1 1234567890abcdefg
result: von"6" bis"c"
Auswahl eines Teilstrings (SUBSTR)
<STRING_ERG>=SUBSTR(<String>,<Index>,<Länge>)
<STRING_ERG>=SUBSTR(<String>,<Index>)
--------------------
There are only 10 types of people in the world: Those who understand binary, and those who don't
Wir haben einen exponentiellen Zuwachs anDoofen Pack im Forum
Wir haben einen exponentiellen Zuwachs an
26.06.2017, 18:20 Uhr
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: