CREAT_DB . COUNT / Mit WORD rechnen

cosmomaster

Level-2
Beiträge
72
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Freunde,

ich habe folgendes Problem. Ich möchte mit CREAT_DB (SFC_22) Datenbausteine erzeugen dessen Größe ich aber vorher ausrechnen muss.
Nun fordert der COUNT Anschuss ja WORD. Aber wie rechne ich damit :confused: oder wie wandele ich nach einer Rechnung INT in WORD ? Das ginge zur Not auch noch.

Hat jemand eine Idee wie man sowas angeht?

MfG Matthias
 
und wenn du am ende noch ein NOP 0 dran hängst, kann es sogar in KOP/FUP übersetzt werden und heißt MOVE ...
 
Aber warum funktioniert das dann nicht?

Code:
      L     24                                    //INT
      L     #Bytes_fuer_Ventile            //INT
      +I    
      L     #Bytes_fuer_Schritte           //INT
      +I    
      T     #COUNT                            //WORD

      U(    
      U     #Start
      SPBNB _001
      CALL  "DEL_DB"
      DB_NUMBER:=#program_DB
      RET_VAL  :=#err_0
_001: U     BIE
      )     
      SPBNB _002
      CALL  "CREAT_DB"
      LOW_LIMIT:=#program_DB
      UP_LIMIT :=#program_DB
      COUNT    :=#COUNT                      //WORD
      RET_VAL  :=#err_1
      DB_NUMBER:=#program_DB
_002: NOP   0

Übertragung zur CPU 315 mit Ereignis 6x39 abgebrochen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber warum funktioniert das dann nicht?
Übertragung zur CPU 315 mit Ereignis 6x39 abgebrochen.

kann mit der fehlernummer nichts anfangen, sprich: ich find sie noch nicht mal irgendwo dokumentiert ... gibts da vielleicht nen hilfetext zu? :rolleyes:

der DB, den du da löschst, gibts den schon? also hast du den geladen?

weil:

Geladene Datenbausteine dürfen nicht gelöscht und neu erzeugt werden, d.h. die SFC 22 (CREATE_DB) und 23 (DEL_DB) dürfen nicht auf DB-Nummern angewendet werden, die durch geladene DBs belegt sind.
... die berechnung sehe ich als richtig an ...:rolleyes:
 
Fehlerbeschreibung aus dem Diagpuffer im Baugruppenzustand:
Ursache:
Der Onboard-Compiler hat eine unzulässige Anweisung im Baustein erkannt.
Hinweis: Der fehlerhafte Baustein wird nicht auf die CPU geladen.

Behebung:
Korrigieren Sie die unzulässige Anweisung im entsprechenden Baustein (beachten Sie speziell die CPU-spezifischen Mengengerüste der Operanden).
Fehlermeldung beim Laden:
Beschreibung:
Meldung von der Baugruppe: Der Baustein, den Sie laden möchten, enthält einen unzulässigen Operanden, einen unzulässigen Befehl oder die Bausteinnummer von SFC/SFB ist unzulässig.
Behebung:
Korrigieren Sie den unzulässigen Operanden oder die Bausteinnummer

Der DB besteht noch nicht nein.

Sollte ich vielleicht erst Test_DB und dann löschen wenn ich weiß das er besteht sonst nur creat_DB?
 
Sollte ich vielleicht erst Test_DB und dann löschen wenn ich weiß das er besteht sonst nur creat_DB?

das zum einen und dann sollteste den #COUNTER auch noch für

Datenbausteine max. 255 (DB 0 reserviert)
eingrenzen ...

[edit] kokolores ... die länge mußt du einschränken ... sorry ... auf max 16kByte [/edit]
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Fehler liegt bei DEL_DB

Sogar wenn ich nur den DEL_DB übertragen will funktioniert es nicht:

Code:
U     E      4.0
SPBNB _001
CALL  "DEL_DB"
DB_NUMBER:=W#16#2
RET_VAL  :=MW2
_001: NOP   0
Aber die SFC´s werden doch von meiner 315 2 DP unterstützt.
Verbotene Operanden benutz ich nicht, oder?
Der DB 2 ist auf der CPU vorhanden.

Was könnte das bloß noch sein??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
6ES7 315-2AF03-0AB0? ...tut erstmal nichts zur sache, wäre trotzdem interessant...

...kannst du mal im OB1 nen SFC22-aufruf einbauen und versuchen zu übertragen?

...was ist sonst noch in dem baustein drin, den du nicht übertragen bekommst?
 
grad noch einen Tip von Larry bekommen ...

öffne mal den Bausteinordner online und sieh nach ob die SFC22 und SFC23 vorhanden sind ...
 
Zuletzt bearbeitet:
Da häng ich mich doch auch noch mal direkt dran ...

Ich würde auch vielleicht (um den Fehler zu finden) erstmal den einen Aufruf einprogrammieren und zum Laufen bringen und dann den Anderen.
Hierbei würde ich mit dem Create_DB anfangen ...

Des weiteren würde ich bei Create_DB nicht als IN- und OUT-Parameter die gleiche Variable nehmen.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
6ES7 315-2AF03-0AB0? ...tut erstmal nichts zur sache, wäre trotzdem interessant...
315-2AF02-0AB0

...kannst du mal im OB1 nen SFC22-aufruf einbauen und versuchen zu übertragen?
Mit SFC22 funktioniert das aber nicht mit SFC23

...was ist sonst noch in dem baustein drin, den du nicht übertragen bekommst?
Nichts!

...öffne mal den Bausteinordner online und sieh nach ob die SFC22 und SFC23 vorhanden sind ...

SFC23 ist auf der CPU NICHT vorhanden. Was bedeutet das?
 
Zurück
Oben