Siemens
Siemens

Digital Industries, Motion Control, Machine Tool Systems

READ Befehl (828/840D sl), READ Befehl (828/840D sl) ganze Zeichenketten...

Beitrag 24.06.2017, 13:37 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
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
   
Beitrag 24.06.2017, 14:21 Uhr
cgTNC
cgTNC
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 21.11.2010
Beiträge: 1.341
QUOTE (Bernd_Blubber @ 24.06.2017, 13:37 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])

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
   
Beitrag 24.06.2017, 14:30 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
QUOTE (cgTNC @ 24.06.2017, 13:21 Uhr) *
Kenne mich mit Sinumerik jetzt nicht so aus.

Gruß
cgTNC

... nicht so schlimm, trotzdem auch Dir ein DANKE für deinen Beitrag zum Thema. ^^
danke.gif
   
Beitrag 24.06.2017, 17:03 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
... 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...)
daumdown.gif
   
Beitrag 24.06.2017, 18:10 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (Bernd_Blubber @ 24.06.2017, 18: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...)
daumdown.gif


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.
   
Beitrag 24.06.2017, 18:33 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
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... wacko.gif
   
Beitrag 24.06.2017, 19:02 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
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...
coangry.gif sauer.gif

Der Beitrag wurde von Bernd_Blubber bearbeitet: 24.06.2017, 19:07 Uhr
   
Beitrag 24.06.2017, 19:16 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (Bernd_Blubber @ 24.06.2017, 20: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

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
   
Beitrag 24.06.2017, 19:19 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
QUOTE (nixalsverdruss @ 24.06.2017, 18:16 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

super.gif danke.gif danke.gif danke.gif
ich bin gar nicht auf die idee gekommen einfach nur einen nuller da einzusetzen !
smile.gif
: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
   
Beitrag 25.06.2017, 09:52 Uhr
nixalsverdruss
nixalsverdruss
Level 7 = Community-Professor
*******
Gruppe: Mitglied
Mitglied seit: 16.11.2003
Beiträge: 1.511
QUOTE (Bernd_Blubber @ 24.06.2017, 20:19 Uhr) *
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"



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 an Doofen Pack im Forum
   
Beitrag 26.06.2017, 18:20 Uhr
Bernd_Blubber
Bernd_Blubber
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 07.04.2016
Beiträge: 47
danke.gif
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: