neue frage neues glück =) *KF 16bit-Festpunktzahl erhöhen!

loewe

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten abend! ich bins wieder :rolleyes:

habe eine impuls messung (m³) diese messung wird auf addiert
in KF 16bit-Festpunktzahl bipolar -32768...+32767
und wird im datenwort übertragen!

gibt es eine möglichkeit dieses auf 100 000 zuerweitern und zu übertragen im datenwort?
Welches ein rechner in dezimal bis auf 100 000 anzeigt aber es ist mit +32767 schluss da nullt er wieder ist eine erhöhung möglich?

freue mich auf jede antwort! da ich mich noch nicht so auskenne! (nur grundkenntnisse ;))
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie lorenz schon erwähnt hat. welche cpu?

bei s7 kein problem. einfach dbd's (dword) nehmen.

bei s5 geht dword nur bei cpu's ab der 135u
 
danke für schnelle antwort es ist eine

S5 115U

Code:
Netzwerk 1 von 1                                                 Bib =                                                          
Bez  :EIN       E/A/D/B/T/Z: E  BI/BY/W/D: BI                                                                                   
Bez  :LOW       E/A/D/B/T/Z: A  BI/BY/W/D: W                                                                                    
Bez  :HIGH      E/A/D/B/T/Z: A  BI/BY/W/D: W                                                                                    
Bez  :MERK      E/A/D/B/T/Z: A  BI/BY/W/D: BI                                                                                   
Bez  :FLAN      E/A/D/B/T/Z: A  BI/BY/W/D: BI                                                                                   
     :U    E    0.1                                                                                                             
     :O    E    0.6                                                                                                             
     :SPB  =M001                                                                                                                
     :U    =EIN                                                                                                                 
     :UN   =MERK                                                                                                                
     :=    =FLAN                                                                                                                
     :U    =FLAN                                                                                                                
     :S    =MERK                                                                                                                
     :UN   =EIN                                                                                                                 
     :RB   =MERK                                                                                                                
     :UN   =FLAN                                                                                                                
     :SPB  =M002                                                                                                                
     :U    =FLAN                                                                                                                
     :SPB  =M003                                                                                                                
M003 :L    KF   1                                                                                                               
     :L    =LOW                                                                                                                 
     :+F                                                                                                                        
     :T    =LOW                                                                                                                 
     :                                                                                                                          
M002 :L    KF 10000                                                                                                             
     :L    =LOW                                                                                                                 
     :>=F                                                                                                                       
     :SPP  =M004                                                                                                                
     :SPN  =M001                                                                                                                
M001 :L    KF   0                                                                                                               
     :T    =LOW                                                                                                                 
     :                                                                                                                          
     :L    KF   1                                                                                                               
     :L    =HIGH                                                                                                                
     :+F                                                                                                                        
     :T    =HIGH                                                                                                                
M004 :L    KF 10000                                                                                                             
     :L    =HIGH                                                                                                                
     :>=F                                                                                                                       
     :SPP  =M005                                                                                                                
     :SPN  =M006                                                                                                                
M006 :L    KF   0                                                                                                               
     :T    =HIGH                                                                                                                
M005 :BE

 
die 115u kann keine dwords verarbeiten. ausser die (imho) 945.

schenk dir dir letze stelle. also auf max wert von 10000 scalieren.
evtl so hochrechnen,das du die breite des word (32000) ausnutzt.

weiss ja nicht wie genau du das heben musst.

dein code sagt jetz nicht wirklich viel.
aber ein tip:
wenn du einen parametrierten baustein erstellst, nutze dort keine absoluten operanden.
sonst nutzt dir der baustein im weiten umfeld wenig. ich meine hier e0.1 und e0.6. die solltest du auch parametrieren
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
@volker

also verstehe ich das richtig mit der 945 ist diese umsetzung möglich?
(erhöhung):rolleyes:

um ein genaues bild zu verschaffen kann ich ihnen meine ganze AWL mal schicken! aber nur bei intresse! ;)

verstehe nicht ganz was sie mit dem satz:--->

meinen! :confused:

wenn du einen parametrierten baustein erstellst, nutze dort keine absoluten operanden.
sonst nutzt dir der baustein im weiten umfeld wenig. ich meine hier e0.1 und e0.6. die solltest du auch parametrieren
 
die 115u kann keine dwords verarbeiten. ausser die (imho) 945.
Richtig, die 945 kann Dword, nachzulesen in der Operationsliste. ;)
Für loewe (und natürlich jeden anderen, den's interessiert) hier auch noch die Links zum Handbuch und zur Handbuchergänzung der 945.

verstehe nicht ganz was sie mit dem satz:--->
meinen! :confused:
wenn du einen parametrierten baustein erstellst, nutze dort keine absoluten operanden.
sonst nutzt dir der baustein im weiten umfeld wenig. ich meine hier e0.1 und e0.6. die solltest du auch parametrieren

Damit ist gemeint, dass Du den FB ändern solltest und zwar z.B. so:

ALT
Code:
Netzwerk 1 von 1                                                 Bib =
Bez  :EIN       E/A/D/B/T/Z: E  BI/BY/W/D: BI
Bez  :LOW       E/A/D/B/T/Z: A  BI/BY/W/D: W
Bez  :HIGH      E/A/D/B/T/Z: A  BI/BY/W/D: W
Bez  :MERK      E/A/D/B/T/Z: A  BI/BY/W/D: BI
Bez  :FLAN      E/A/D/B/T/Z: A  BI/BY/W/D: BI
     :U    [COLOR=red][B]E    0.1[/B][/COLOR]
     :O    [COLOR=red][B]E    0.6[/B][/COLOR]
     :SPB  =M001
     ...
NEU
Code:
Netzwerk 1 von 1                                                 Bib =
Bez  :EIN       E/A/D/B/T/Z: E  BI/BY/W/D: BI
[COLOR=red][B]Bez  :EIN2      E/A/D/B/T/Z: E  BI/BY/W/D: BI[/B][/COLOR]
[B][COLOR=red]Bez  :EIN3      E/A/D/B/T/Z: E  BI/BY/W/D: BI[/COLOR][/B]
Bez  :LOW       E/A/D/B/T/Z: A  BI/BY/W/D: W
Bez  :HIGH      E/A/D/B/T/Z: A  BI/BY/W/D: W
Bez  :MERK      E/A/D/B/T/Z: A  BI/BY/W/D: BI
Bez  :FLAN      E/A/D/B/T/Z: A  BI/BY/W/D: BI
     :U    [COLOR=red][B]=EIN2[/B][/COLOR]
     :O    [COLOR=red][B]=EIN3[/B][/COLOR]
     :SPB  =M001
     ...
 
@jörgk
genau das habe ich gemeint.
hast du sehr gut farblich dargestellt. :)

@loewe
ja schick mal
 
ja. das ist auf jeden fall zu beachten.

wenn man die hinten anfügt passiert aber nix. sieht aber nicht so schön aus.
 
Hallo loewe,
ich sehe, du bist gerade online. In 5 Minuten bekommst du von mir eine ausführliche Antwort.
Bis gleich !
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@eNDE

danke ja ich bin da freue mich schon

dank! euch anderen!!
für die superschnellen netten posts!!

@volker
danke für dein intresse
Anhang anzeigen RAGBIO.zip


hier die daten;)
kann auch wenn benötigt wird eine liste mit dem OP,PB,FB,E,A,M kopieren und schicken. Sind 10 seiten, müsste diese erst einscannen!!

es geht um den FB 060 wie schon hochgeladen !
danke !!!!
 
Zuletzt bearbeitet:
@loewe

Der Baustein tut doch genau das, er addiert bis 10000 (Low) und bringt dann einen Übertrag in ein zweites DW (High), das die 10000-der zählt. Wenn du diese 2 DW an den Rechner überträgst, kann der doch sofort daraus den Zählwert errechnen.
 
Also gleich nochmal:
Ich habe mir mal ausführlich deinen S5-Code angesehen und habe im positiven Sinne einige Anmerkungen zu machen.
1. Gleich der erste Befehl ist eine so genannte "Erstanweisung". In dieser ist es egal, ob du diese mit U(nd) oder O(der) beginnst. Erst die nächste Anweisung legt die Verknüpfung fest. Da es sich um eine ODER-Verknüpfung handelt, sollte man dann auch die Erstanweisung mit O(der) beginnen. Es ist übersichtlicher.
2. Eine Sprunganweisung hinterlässt in STEP5 im VKE immer eine 1. Eine sofort nachfolgende Sprunganweisung ist deshalb immer erfüllt und wird ausgeführt. Folge: Niemals 2 unmittelbar aufeinander folgende Sprunganweisungen programmieren. Und erst recht nicht, wenn das Sprungziel sowieso die nächste Programmzeile ist.
3. Der Sprungbefehl SPP hat es richtig in sich und verleitet schnell zu falschen Überlegungen. Er ist mehr gedacht beim abtesten von Rechenergebnissen, denn er prüft das Ergebnis auf positiv. Bei einer Vergleichsfunktion prüft dieser Sprungbefehl, ob der Inhalt von Akku2 größer ist als der Inhalt von Akku1. Ergebnis: Die Funktion deines Programmes erschließt sich erst bei sehr genauer Analyse. Es geht, glaube ich, auch sehr viel einfacher.
4. Die Hinweise hier im Forum bezüglich der absoluten Adressen in deinem FB sind richtig. Wie sie dir dargestellt werden, halte ich aber nicht sehr hilfreich für dich.
Deshalb: FB's sollte man immer voll parametrierbar machen. D.h. im Inneren sollten keine Absolutoperanden vorkommen. Stellt sich nun im Laufe der Zeit heraus, dass noch Formaloperanden eingefügt werden müssen, dann kann man das am einfachsten tun, indem man den Baustein noch einmal komplett neu eintippt. Das vermeidet auf jeden Fall nachträgliche (immer negative) Überraschungen. Warum das so ist, würde jetzt hier zu weit führen.
5. Ich gehe mal davon aus, dass dein Baustein im LOW-Wort bis 10000 zählt und danach das HIGH-Wort um 1 erhöht, gleichzeitig das LOW-Wort wieder löscht (Zählumfang damit 100.000.000). Betätigt man E0.1 ODER E0.6 (Löschtasten) sollen LOW- und HIGH-Wort gelöscht werden. (Das ist bei deinem Code aber nicht so, da zählt das HIGH-Wort mit hoher Geschindigkeit vorwärts!).
6. Nachfolgend ein Codevorschlag, der nach meiner Meinung übersichtlicher ist (und trotzdem funktioniert) Schau ihn dir mal in Ruhe an.
Code:
[FONT=Times New Roman]:U   =  EIN                             pos.Flanke bilden fuer EIN[/FONT]
[FONT=Times New Roman]:UN  =  MERK                      MERK ist der Flankenmerker[/FONT]
[FONT=Times New Roman]:=   =  FLAN                          FLAN ist der Zykluswischer[/FONT]
[FONT=Times New Roman]:U   =  FLAN[/FONT]
[FONT=Times New Roman]:S   =  MERK[/FONT]
[FONT=Times New Roman]:UN  =  EIN[/FONT]
[FONT=Times New Roman]:RB  =  MERK[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:UN  =  FLAN                      Falls keine Flanke,[/FONT]
[FONT=Times New Roman]:SPB =  M001                       <-- dann springe nach M001[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   KF +1                             Zu LOW 1 addieren[/FONT]
[FONT=Times New Roman]:L   =  LOW[/FONT]
[FONT=Times New Roman]:+F[/FONT]
[FONT=Times New Roman]:T   =  LOW[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   =  LOW                          Ist LOW kleiner als 10000[/FONT]
[FONT=Times New Roman]:L   KF +10[/FONT]
[FONT=Times New Roman]:<F[/FONT]
[FONT=Times New Roman]:SPB =  M001                       <-- ja, dann springe nach M001[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   KF +0                             sonst loesche LOW[/FONT]
[FONT=Times New Roman]:T   =  LOW[/FONT]
[FONT=Times New Roman]:L   KF +1                             und addiere zu HiGH 1[/FONT]
[FONT=Times New Roman]:L   =  HIGH[/FONT]
[FONT=Times New Roman]:+F[/FONT]
[FONT=Times New Roman]:T   =  HIGH[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   =  HIGH                         Ist HIGH kleiner als 10000[/FONT]
[FONT=Times New Roman]:L   KF +10[/FONT]
[FONT=Times New Roman]:<F[/FONT]
[FONT=Times New Roman]:SPB =  M001                       <-- ja, dann springe nach M001[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   KF +0                             sonst loesche HIGH[/FONT]
[FONT=Times New Roman]:T   =  HIGH[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]M001    :UN  E  0.1                            E0.1 UND E0.6  = 0 ?[/FONT]
[FONT=Times New Roman]:UN  E  0.6[/FONT]
[FONT=Times New Roman]:SPB =  ENDE                      <-- dann beende das Programm[/FONT]
[FONT=Times New Roman]:[/FONT]
[FONT=Times New Roman]:L   KF +0                             sonst loesche LOW und HIGH[/FONT]
[FONT=Times New Roman]:T   =  LOW[/FONT]
[FONT=Times New Roman]:T   =  HIGH[/FONT]
[FONT=Times New Roman]ENDE    :BE[/FONT]
Falls noch Fragen sind, bitte melden.
Ansonsten mfG eNDe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
frage!!!( teil 2 ) zu KF 16 bit Festpunktzahl erhöhen

ich grüße alle weltbestinnen und weltbesten SPS- Programmierer und
SPS - Fachkräfte westlich des Urals !!!!!!!


möchte mich für die vielen Antworten und Lösungsvorschläge bedanken !
@ Jürgk und Volker


alt
Netzwerk 1 von 1 Bib =
Bez :EIN E/A/D/B/T/Z: E BI/BY/W/D: BI
Bez :LOW E/A/D/B/T/Z: A BI/BY/W/D: W
Bez :HIGH E/A/D/B/T/Z: A BI/BY/W/D: W
Bez :MERK E/A/D/B/T/Z: A BI/BY/W/D: BI
Bez :FLAN E/A/D/B/T/Z: A BI/BY/W/D: BI
:U E 0.1
:O E 0.6
:SPB =M001
...



neu
Netzwerk 1 von 1 Bib =
Bez :EIN E/A/D/B/T/Z: E BI/BY/W/D: BI
Bez :EIN2 E/A/D/B/T/Z: E BI/BY/W/D: BI
Bez :EIN3 E/A/D/B/T/Z: E BI/BY/W/D: BI
Bez :LOW E/A/D/B/T/Z: A BI/BY/W/D: W
Bez :HIGH E/A/D/B/T/Z: A BI/BY/W/D: W
Bez :MERK E/A/D/B/T/Z: A BI/BY/W/D: BI
Bez :FLAN E/A/D/B/T/Z: A BI/BY/W/D: BI
:U =EIN2
:O =EIN3
:SPB =M001
...


die frage ist vielleicht eine dumme , woher weiss U und O das der Eingang E0.1 und E0.6 angesprochen ist ?????:confused:



An eNDe

seine AWL draue ich mich nicht so ran, weil die Anlage laufen muss,
auch wenn sie nicht so top läuft!!! und eine CPU 115 habe ich nicht zu Hause !!!!!!

vieleicht kann man den FB auch auf eine CPU 102 schreiben und prüfen.:rolleyes:


Habe auf siemes service und support unter FAQ :

Umwandlung einer 16-bit Festpunktzahl in 32-bit Festpunktzahl für
Standard-Funktionsbausteine im AG 115, AG 95, AG100

so das ich höher als 32 000 komme über das low signal !!!!!

versuche gleich noch den link anzuhängen !!!!!


Macht es sinn oder nicht weil ja wir eine m³ zahl von 1000 bis 2000
pro tag haben ,die erfasst werden müssen Protokollarisch im Leitrechner.

hoffe auf Antworten, Danke !:)


http://support.automation.siemens.com/WW/view/de/15199571
 
Zuletzt bearbeitet:
@Loewe

Du hast jetzt bei Aufruf des FB zwei Inputs mehr, an die mußt die den E0.1 und den E0.6 schreiben.

Wo hast du deinen zuerst geposteten Baustein her, aus dem Originalprogramm? Weiß nicht was eNDe uns sagen wollte, dein Baustein müßte so laufen.

Es gibt für die S5 Bausteine, die auch mit 32-Bit-Zahlen umgehen können, die muß man aber kaufen, soweit ich mich entsinne. Du bekommst dann aber zum Schluß auch nur zwei getrennte 16-Bit-Zahlen, da die Teile nun mal nur mit 16-Bit-Zahlen umgehen können, also kannst du das auch nicht ohne weiteres weiterverwenden. Das ist das was mir dazu noch im Gedächtnis geblieben ist, vielleicht weiß noch jemand näheres dazu.

Was ist denn nun genau das Problem? Wenn du die 2 16-Bit-Werte aus dem FB an das Leitsystem übermittelst, kann dieses doch problemlos daraus den 32-Bit-Wert berechnen.
 
die frage ist vielleicht eine dumme , woher weiss U und O das der Eingang E0.1 und E0.6 angesprochen ist ?????:confused:
das ist doch das grundlegende der indirekten adressierung. :ROFLMAO:
beispiel:
dem fb übergibts du die variable E0.0 an den parameter EIN2.
intern im fb arbeitest du mit EIN2. der fb weiss durch die parameterübergabe, dass EIN2 der E0.0 ist und arbeitet auch damit.
so einfach ist das. ;)

vieleicht kann man den FB auch auf eine CPU 102 schreiben und prüfen
.
ja, sollte gehen.

......so das ich höher als 32 000 komme über das low signal !!!!!
Macht es sinn oder nicht weil ja wir eine m³ zahl von 1000 bis 2000
pro tag haben ,die erfasst werden müssen Protokollarisch im Leitrechner.
also ich würde das so umschreiben, das ich mit einer INT-Variablen klarkäme. das erleichtert dir die rechnungen im programm ungemein.
nimm deinen absoluten maxwert den du haben könntest und scaliere dir den so, das du mit 32768 klar kommst. nimm dann einen geraden faktor, und nicht irgendeine krumme zahl, das lässt sich im prog dann leichter überblicken.
ich denke nicht, das es hier auf ein paar hundert liter ankommt.

zur änderung deines fb.
s5 handhabt das so, das die parameter nicht nach dem 'text' im folgenden programm benannt werden, sondern nach der stelle an der sie in der deklaration stehen.
beispiel:
deklaration:
EIN1: bit //position 1
EIN3: bit //position 2

u =ein1
= m0.1
u =ein3
= m0.3

nun fügst du einen parameter ein.
deklaration:
EIN1: bit //position 1
EIN2: bit //position 2
EIN3: bit //position 3

s5 macht nun aus deinem code folgendes:
u =ein1
= m0.1
u =ein2
= m0.3

wenn du deine parameter an das ende der deklaration einfügst bleibt der code ok. das sieht zwar nicht so schön aus, ist aber sicher.

also so:
EIN1: bit //position 1
EIN3: bit //position 2
EIN2: bit //position 3

so beilbt dieser code bestehen:
u =ein1
= m0.1
u =ein3
= m0.3
 
Zurück
Oben