Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: SMS_SEND FB48 nur 11 Zeichen?

  1. #11
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    160
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja ist er.
    Am eingangsparameter Message steht jetzt 123456789123456789
    Dein nächster Satz verstehe ich leider nicht.

    Ich habe festgestellt, dass alle Texte größer als 11 Zeichen zb. 12 er mir im fb48 bei Restlänge = 1 macht, ist der Text nun 20 Zeichen lang, macht er Restlänge 9, alles was Restlänge 0 ist schickt er mir per sms raus.

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Zitat Zitat von babylon05 Beitrag anzeigen
    Am eingangsparameter Message steht jetzt 123456789123456789
    Als Programmierer kann ich mir das irgendwie nicht vorstellen ... Oder meinst Du damit: in dem String, den Du am Eingang angegeben hast, steht jetzt die Zeichenfolge '123456789123456789' drin? Oder wie bekommst Du 123456789123456789 an den Baustein-Eingang geschrieben??? Zeigt doch mal den Programmcode vom Bausteinaufruf. Ich meine nicht den Wert des Aktualparameters sondern den Programmcode.


    Dein nächster Satz verstehe ich leider nicht.
    Angenommen Du hast mal in einem DB "DB1" einen String "Message | STRING[11] | '' " deklariert und dann an den Bausteinparameter geschrieben:
    Code:
          CALL  "SMS_SEND" , DB48
           MPI_TS_ADAPTER:=10
           PHONE_NO      :="DB1".SendSMS.PhoneNo
           SCENTER_NO    :="DB1".SendSMS.ServiceCenter
           MESSAGE       :="DB1".SendSMS.Message
           BUSY          :=#SMS_SEND_BUSY
           STATUS        :=#SMS_SEND_STATUS
    Danach änderst Du die Deklaration des Strings zu "Message | STRING[160] | '' ". Dann kannst Du zwar mehr Zeichen in den String schreiben, der FB48 wird aber nicht mehr Zeichen senden, weil immer noch am Eingang MESSAGE ein ANY für 13 BYTE dransteht:
    Code:
          CALL  "SMS_SEND" , DB48
           MPI_TS_ADAPTER:=10
           PHONE_NO      :="DB1".SendSMS.PhoneNo
           SCENTER_NO    :="DB1".SendSMS.ServiceCenter
           MESSAGE       :=P#DB1.DBX70.0 BYTE 13
           BUSY          :=#SMS_SEND_BUSY
           STATUS        :=#SMS_SEND_STATUS
    Die Parameterversorgung muß aktualisiert werden --> nochmal symbolisch dranschreiben. Danach den Baustein mit dem geänderten FB48-Aufruf erneut in die CPU laden.
    Wenn der Operandenvorrang auf "symbolisch" steht, dann wurde die Parameterversorgung eventuell automatisch angepasst, der geänderte Baustein mit dem angepassten FB48-Aufruf muß trotzdem erneut in die CPU geladen werden.


    Ich habe festgestellt, dass alle Texte größer als 11 Zeichen zb. 12 er mir im fb48 bei Restlänge = 1 macht, ist der Text nun 20 Zeichen lang, macht er Restlänge 9, alles was Restlänge 0 ist schickt er mir per sms raus.
    Was meinst Du mit "Restlänge" ?

    Wenn der FB48 weniger Zeichen als erwartet sendet oder gar nichts sendet, was steht dann im Ausgang STATUS?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Registriert seit
    29.03.2004
    Beiträge
    5.793
    Danke
    144
    Erhielt 1.706 Danke für 1.238 Beiträge

    Standard

    Schaut denn die Funktion auf die Längenangabe des Any-Pointers?
    Wenn man sich das Programmbeispiel im PDF-Handbuch ansieht, könnte man davon ausgehen dass die aktuelle Stringlänge ausgewertet wird. Denn dort wird auch symbolisch der String[160] an den Parameter angeschaltet, obwohl dort weniger Zeichen aktuell enthalten sind.

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Ich habe es nicht ausprobiert, nur mal in den FB48 reingeschaut. Zuerst wird die Sendmessage mit SFC20 BLKMOV in ein ARRAY OF BYTE in den IDB umkopiert (zu DBB98...). Ohne besondere Auswertung der tatsächlichen Stringlänge. SFC20 kopiert max. soviel Zeichen wie im ANY angegeben sind. Ist die Quelle ein String, werden maximal nur die aktuell im String enthaltenen Zeichen kopiert.
    Wahrscheinlich wird später auch noch irgendwo die tatsächliche Stringlänge ausgewertet, doch da wurde der String ja schon durch SFC20 gekürzt.

    Bei allen Beispielen, die ich zu dem FB48 kenne, ist an MESSAGE immer ein String angegeben, der als STRING[160] deklariert wurde. Der ANY hinter dem symbolischen Aktualparameter ist da also immer ein P#... BYTE 162, egal wie kurz der String tatsächlich ist.

    Auch wenn das Senden letztendlich fehlschlägt, müßte man das umkopieren in den IDB.DBB98 von außen beobachten können.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #15
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    160
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Als Programmierer kann ich mir das irgendwie nicht vorstellen ... Oder meinst Du damit: in dem String, den Du am Eingang angegeben hast, steht jetzt die Zeichenfolge '123456789123456789' drin? Oder wie bekommst Du 123456789123456789 an den Baustein-Eingang geschrieben??? Zeigt doch mal den Programmcode vom Bausteinaufruf. Ich meine nicht den Wert des Aktualparameters sondern den Programmcode.
    ja das sollte der SMS Text sein

    also bei mir sieht es so aus in meinem FB100

    Code:
    Netzwerk1
    // Störungen auswerten
          U     #Stoerung_1
          FP    #Flankenmerker_01
          S     #Aufrufbedingung_1
    
    Netzwerk2
    // Prüfen, ob Meldung 1 gesendet werden soll
          U     #Aufrufbedingung_1
          SPBN  A2
    
    // Aufruf des SMS_SEND
          CALL  #SMS_Send_1_IDB
           MPI_TS_ADAPTER:=1
           PHONE_NO      :=#Telefon_Nr
           SCENTER_NO    :=#Servicecenter_Nr
           MESSAGE       :=#SMS_Text_1
           BUSY          :=#Send_1_Busy
           STATUS        :=#Send_1_Status
    Ich muss dazu sagen, das dies ein sehr guter Freund angelegt hat, der Momentan auch nicht weiß wie so er nur 11 Zeichen sendet, vor einem Jahr ging es auch mit mehr als 11 Zeichen.
    Nur an sich wieder an den Bausteinen nicht verändert.

    Nachtrag:

    Habe eben mal nur den FB48 geladen mit Instanz-DB und diesem in einem FC aufgerufen und dort den SMS TEXT mit String[160] und einem 160 Zeichen Text belegt, dort sendet er mir eine sms mit 160 Zeichen.
    Also muss es an meinem Multi instanz DB liegen.

    Vielleicht könnte mir einer noch sagen, wie ich den FB48 umbauen kann damit er die SMS ein 2 Handynummern verschickt.

    mfg
    Geändert von babylon05 (26.03.2013 um 17:23 Uhr)

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 10.05.2010, 00:53
  2. FB48 parametrieren
    Von Mohrchen im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 04.04.2006, 13:59
  3. FB48, SMS_Send
    Von Mohrchen im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 08.02.2006, 02:09
  4. FB48, SMS_Send
    Von Anonymous im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 04.02.2006, 18:00
  5. Ein kleines Programm nur !!! Nur wie !??
    Von Anonymous im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 16.02.2004, 03:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •