Hallo Zusammen
Hier (http://www.oscat.de/community/index.php/topic,2033.msg10588.html#msg10588) steht eigentlich die Lösung für mein Problem, doch mit meinem Nichtwissen kann ich die nicht umsetzen.
Wie genau verbaue ich z.B. oscat_STRING250 zu einem eigenen CONCAT FB? Wenn ich das richtig sehe, kann ich bei der Original FB nicht einfach den Typ ändern....
Danke
Bergland
dein problem habe ich noch wirklich verstanden
die string bausteine des systems können ja damit umgehen
string = standard string mit 80 zeichen maximaler länge
oscat_string250 ist nichts anderes als ein string mit 250 zeichen maximaler länge
was ist den dein eigener concat fb kongret ?
Hallo peewit
Ich wollte eigentlich nix anderes machen als ein FB, der längere Strings als die 80 Zeichen verarbeiten kann.
Was ich eigentlich wirklich beräuchte wär ein gutes Lehrbuch. Leider kann mir der Lieferant der Soft (Phoenix) keines empfehlen....
Hättest Du eine Empfehlung für ein Anfänger?
Besten Dank
buch - ISBN-10: 3642002684
eigene baustein , das kannst du ja auch machen
zuerst überlegst du dir wie viele zeichen du maximal benötigst
wenn du mehr als 80 zeichen (standard string) benötigst kannst du einen eigenen string type deklarieren
unter datentypen legst du ein neues blatt an und schreibst das hinein
TYPE
mein_string : STRING(120);
END_TYPE
dann exisitiert eine datentype mit dem namen mein_string und der string kann maximal 120 zeichen aufnehmen
wenn du dann damit arbeiten möchtest musst du variablen mit der type "mein_string anlegen" und damit arbeiten
mehr ist das nicht
alle string bausteine die das system schon hat können automatisch mit string variabler typenlänge umgehen
das ist aber eine eigenschaft die nur diese systembausteine haben
Hallo peewit
Danke für den Buch Tip.
Aktuell erstelle ich den XML-String mit dem original CONCAT FB. Für mich der einfachste Weg Fehler im Stringaufbau schnell zu erkennen. Nur reichen die 80 Zeichen nicht aus, darum wollte ich mir einen eigenen CONCAT FB mit z.B. 250 Zeichen langen String's bauen. Obwohl das eigentlich keine grosse Geschichte ist, will mir dies nicht gelingen.
Mit dem Buch, so hoffe ich, komme ich weiter (bis zur nächsten Baustelle... :D)
Danke
Hallo Zusammen
Habe mir das Buch, welches mir peewit empfohlen hat, gekauft. Leider hilft es nicht so wie erwartet...
Mein Problem ist immer noch, dass ich verschiedene Teilstrings zu einem ganzen zusammenfügen und dann über den STRING_TO_BUFFER FB von PC-Worx via IP_USEND an das Modem senden möchte. Habe mit String_250 von Oscat den String in der gewünschten Länge erzeugen können. Der FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.
Die Versuche mit dem Oscat _STRING_TO_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden.
In ST soll das so aussehen:
_STRING_TO_BUFFER(STR:=(* oscat_STRING250 *),POS:=(* INT *),SIZE:=(* UINT *),PT:=(* oscat_arb_0_249 *));
(* INT *):=_STRING_TO_BUFFER_2._STRING_TO_BUFFER;
(* oscat_arb_0_249 *):=_STRING_TO_BUFFER_2.PT;
Ich habe einen Buffer wie folgt definiert:
TYPE
Send_SMS_Buffer: ARRAY[0..255] OF BYTE;
END_TYPE
Wie erhalte ich die Adresse also den Pointer für den Parameter PT und wie die Grösse meines Array für den SIZE Parameter in _STRING_TO_BUFFER?
Einem Beispiel, wie _STRING_TO_BUFFER im PC-Worx in ST aufgerufen wird, bin ich auch nicht abgeneigt.
Danke aus dem Bergland
ZitatDer FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.
beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst
ZitatDie Versuche mit dem Oscat _STRING_TO_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden
in der network lib für pcworx gibt es ja einen string_to_buffer der ohne ADR und SIZEOF und Pointer arbeitet
diesen baustein kopiert man und passt ihn auf den PT byteararray zielbereich an
du musst deine probleme darstellen, eventuell durch posten deines codes
Hallo peewit
Danke für Deine schnelle Antwort.
Zitat von: peewit
beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst
Ich möchte einen über 80 Zeichen langen XML-String via IP_USEND an das Modem senden. Aktuell mache ich dies zu Testzwecken, indem ich die verschiedenen Teilstrings via CONCAT zusammensetze und dann dem STRING_TO_BUFFER übergebe. Dieses erfolgt in FBS und funktioniert.
Da ich jedoch mit Arrays und Schleifen arbeiten möchte, versuchte ich diese Funktion in ST zu erstellen.
Hier der Versuch mit länderen Strings zu arbeiten
sSMSCallNumber := Array_Alarmempfaenger_cfg[1].F_Telefonnummer;
sSMSMessage := Array_Alarmmeldungen_cfg[1].F_Text_SMS;
sSendSMSText := CONCAT('<?xml version="1.0"?><cmgs destaddrs="', sSMSCallNumber);
sSendSMSText := CONCAT(sSendSMSText, '">');
sSendSMSText := CONCAT(sSendSMSText, sSMSMessage);
sSendSMSText := CONCAT(sSendSMSText, '</cmgs>');
xSendSMSText_LEN := LEN(sSendSMSText);
iSendSMSText_Buffer := STRING_TO_BUFFER(sSendSMSText,rvSendSMSText_Buffer, xSendSMSText_LEN);
Variablen:
======
Arrays:
Array_Alarmempfaenger_cfg
Array_Alarmmeldungen_cfg
oscat_STRING250:
sSMSCallNumber
sSMSMessage
sSendSMSText
INT:
xSendSMSText_LEN
iSendSMSText_Buffer
BYTE:
rvSendSMSText_Buffer
Wo mache ich den Fehler?
Grüsse Bergland
hallo
die infos sind immer noch halb....
BYTE:
rvSendSMSText_Buffer
das muss doch array of byte sein und hast du den string_to_buffer angepasst
exportiere doch mal deinen baustein und stelle ihn mir zur verfügung (und alles was dazu gehört)
du kannst aber auch das gepackte zwt-projekt mir geben
was sagt denn der compiler beim übersetzen ?
schau dir in der oscat-network lib den baustein "TELNET_LOG" an !
Hallo peewit
Der Compiler gibt aktuell keine Fehlermeldung mehr aus, aber es funktioniert immer noch nicht.
Von Phoenix habe ich den Tip erhalten, es mit STRING_TO_BUF zu versuchen. Die Stringübergabe scheint zu funktionieren, jetzt meckert das Kommunikationstool....
Kann denn TELNET_LOG mit einem Socketserver kommunizieren?
Werde mich frühesters gegen Ende nächster Woche wieder um die SPS kümmern können, denn zum Glück habe ich noch "einfachere" Arbeit... :-)
Grüsse
Bergland
Hallo zusammen
Danke für die Hilfe, welche ich in diesem Forum erhalten habe.
So wie es ausschaut, ist für das aktuelle Projekt eine SPS nicht das richtige System.
Werde mich deshalb von diesem Forum zurückziehen.
Grüsse
Bergland