S7 Programm zur Signalverarbeitung

Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, ich bin ein neues und total unerfahrenes Mitglied und würde mich freuen hier support zu bekommen.

Also ich will mal kurz mein Problemchen schildern.

Eine Neuentwicklung in unserer Firma ist es den Massenstrom (g/s oder g/min) in Abhängigkeit der Schwingweite eínes Motors zu regeln.
Dazu haben wir einen Motor an einem Transportband befstigt und danach eine Waage, die befüllt wird.

Meine Vorstellung der Lösung ist, dass ich von der Waage (Serielle Schnittstelle) auf eine RS232 Schnittstelle bei der z.B. S7 300 mit Zusatz gehe, dann die Daten verarbeite, auf einen PID Regler gebe und damit den Motor ansteueren.

Wenn jemand fragen zum Aufbau etc. hat bitte schreiben, ich werde dann ggbf. noch Bilder hochladen.

Das Ziel ist nachher in der Software den Massenstrom einstellen zu können und zudem ein Maximalgewicht bis zu dem gefüllt werden soll.

Jetzt kommen meine vielen kleinen Problemen:
Von der Waage kommt alle 100ms das Gewicht als Zeichenkette.
Beispiel wäre so für +1225,5g:
12345678910111213141516
+***1255.7*g**CRLF

Ich denke dieses Code wird in der SPS als Hex/Decimal Zahl auftauchen. Wie kann ich jetzt nur die Stellen herausfiltern die ich benötige also z.B. Stelle 5-10?
Wie bekomme ich dann daraus eine Zeichenkette, wie geht sowas?
Anschließend muss ich, so denke ich, bevor ich auf den Istwerteingang des Reglers gehe eine Umrechnung/Normierung druchführen, wie mache ich so etwas?
Das gleiche muss ich für den Sollwert machen, oder?
Dann werden die Parameter eingestellt.
Zu guter letzt muss das Ausgangssignal nocheinmal umgerechnbet werden auf ein analog Signal von 0-10V, wie geht das?

Wie schon gesagt ich bin ganz neu auf dem Gebiet der S7 Programmierung aber bereit sehr schnell zu lernen.
 
Das sind viele Fragen auf einmal. ;)

Also, für die Normierung analoger Ein- und Ausgänge gibt es in der Standard-Library im Simatic-Manager die Bausteine Scale und Unscale. Ich denke mal, dein Text mit dem Gewicht liegt in einem Datenbaustein, nachdem du ihn von der seriellen Baugruppe abgeholt hast. Auch dafür liefert Siemens einen (bzw. mehrere) Baustein/e inkl. Beispiel zur Baugruppe (CP340/341) mit, so du diese nutzt. Die Daten liegen dann in einzelnen Bytes vor. Wenn die Formatierung fest ist, wie du es schreibst, würde ich das wirklich von Hand in einen DInt umrechnen (natürlich dann um einen Kommastelle verschobenm denn Int haben keine).

Du nimmst also das 5. Byte, die 1, da steht wohl eine 31 Hex (49 dez) drin, das sollte der Hexcode für das Zeichen "1" sein.

Davon ziehst du also 30 Hex ab, dann hast du deine 1 diese mal 10000 und in Zwischenvariable_Wert abspeichern.

Dannn nimmst du das 6. Byte, die 2 , da steht eine 32 hex (50 dez) drin.

Davon ziehst du also 30 Hex ab, dann hast du deine 2 diese mal 1000 und zu Zwischenvariable_Wert dazuaddieren.

Weiter so mit Byte 7, 8 und 10

Byte 7 --> 35 hex --> 5*100
Byte 8 --> 35 hex --> 5*10
Byte 9 --> Komma (nix tun)
Byte 10 --> 37 hex --> 7

Zum Schluß steht in deiner Zwischenvariable_Wert --> 12557

Das kannst du nun z.Bsp. mit dem Befehl DTR in eine Real wandeln, danach durch 10 dividieren, fertig.

Ich würde sagen, du fängst mal an und bei Problemen meldest du dich hier, dann wird so nach und nach der Code korrigiert und du bekommst Tips und Hilfen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du bereits erfahrung in Hochsprachenprogrammierung hast, würde ich dir für dieses Problem die Programmierung in SCL ans Herz legen, dann musst du dich nicht in AWL einarbeiten.

Berechnungen kannst du da sehr einfach ausführen (Pascal syntax).

Auch die Stringverarbeitung ist ganz simpel. Du kannst den CP (Serielle Schnittstelle) so konfigurieren, dass er auf CRLF reagiert und du die Daten dann in einem String abholen kannst. Anschliessend kannste mit MID(...) die benötigten Stellen aus deinem String rausfiltern.
 
..

Vielen Dank für eure Infos.
Ich hatte bisher noch keine Erfahrung mit anderen Programmiersprachen.

Wir sind im Moment dabei uns eine SPS anzuschaffen. Wahrscheinlich werden wir uns die S7 300 314SDP zulegen und dabei noch eine RS232 udn eine Analog Ein/Ausgangskarte, ich denke das müsste reichen.

Oder kann mir jemand davon abraten? Das Problem ist, dass die Software so teuer ist, oder gibt es da auch nicht indusrielle Versionen.

Na ja also zum Problem kann ich sagen, dass es immer noch ein Problem ist, so ist es halt immer wenn man etwas neues macht.

Nachdem ich die Daten in die SPS RS232 eingelesen habe kommt der Inhalt in einen DB (wie bekomme ich das hin)?
Wie bekomme ich genau die Umwandlung hin und wie kann ich dann den Wert in einer Zwischenvariablen abspeichern?
Denke das sind erst mal genug Fragen?

Vielen Dank für jede Info!
 
Hallo misterelektro,


muß es denn Siemens sein? Vielleicht darf es auch ein CoDeSys basierendes System sein, da wären die Softwarekosten bestimmt geringer.


mfG Jan
 
Hallo MisterE,
da willst du ja etwas anfangen ...

Also vorab - die Problemstellung ist lösbar, erfordert aber einiges an SPS-Grundwissen und etwas Erfahrung wäre auch schon hilfreich ...

Ich kann mich grundsätzlich hier nur Ralle anschliessen : du solltest nicht zu viele Fragen auf einmal stellen - nicht dass es dazu keine Antworten gäbe - ich fürchte nur, dass dann irgendwann der Thread (und auch du) vollkommen durcheinander kommt.

Nehmen wir einmal das Daten abholen :
Von der SPS her gibt es da einen Funktionsbaustein, der die serielle Schnittstelle abfragt und empfangenen Daten in einen Datenbaustein der SPS schreibt. Damit solltest du erstmal anfangen und das zum Laufen bringen. Ob es allerdings machbar ist, alle 100ms einen neuen Datensatz real zu erhalten, halte ich für ein bißchen fragwürdig (ich glaube nicht, dass das klappt). Es käme aber auf den Versuch an.

Hast du dann deinen Daten in der SPS und kannst sinnvoll darauf reagieren dann käme die Auswertung und Weiterverarbeitung.
Bis dem nicht so ist würde ich alle weiteren Fragen erstmal zurückstellen ...
Ich würde also zunächst erstmal das System aufbauen ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
..

Ja vielen dank, ich denke das wird der beste Weg sein.

Kann mir jemand eine Firma empfehlen die ich mir in die Firma einladen kann um mich zu informieren über eine S7 300. Unsere Firma sitzt in Remscheid.

Danke!
 
Ob es allerdings machbar ist, alle 100ms einen neuen Datensatz real zu erhalten, halte ich für ein bißchen fragwürdig (ich glaube nicht, dass das klappt). Es käme aber auf den Versuch an.

Gruß
LL

Ich denke schon. Bei 9.6 kBaud kannst du etwa 1000 Byte pro Sekunde übertragen, vielleicht auch etwas weniger. Bei 100ms kannst du also max. 100 Zeichen einlesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke schon. Bei 9.6 kBaud kannst du etwa 1000 Byte pro Sekunde übertragen, vielleicht auch etwas weniger. Bei 100ms kannst du also max. 100 Zeichen einlesen.

Das ist aber ein sehr theoretischer Wert ...
Du denkst schon daran, dass der Kommunikations-Prozessor nicht unbedingt optimal an die CPU gekoppelt ist - auch hier wird sehr viel Zeit verschleudert ...
Ich hatte aber auch geschrieben, dass ich das für fraglich halte ...

Gruß
LL
 
Hallo Zusammen,
das mit der lite Version ist gut zum Üben und zur "Anreicherung" von Erfahrung, eine Waage- oder einen Dosierer wird damit nicht realisierbar sein.
Die Frage die sich mir Aufdrängt: warum keine Siwarex- da habe ich schon die Integration in die Simatic Umgebung ohne Umweg von Serieller Schnittstell etc.
Um einen Dosierer zu "bauen" würde ich mal bei " Schenk" oder "Hassler" (Beides Waagenfarikanten) nachschauen. Die Fa. Pfister hat auf Ihrer HP (www.pfister.de) unter Downloads auch eine Schnittstellenbeschreibung Ihrer CSC (kann aber mit etwas Übung abgewandelt werden.
Nun Denke ich das Programm sollte von der Struktur her einen Vergleicher (Soll- Istvergleich) mit einem PID Regler sein. Analoger Ausgang oder Profibus (würde der einfachheits halber den Profibus vorziehen). Der Antrieb sollte dann ein Rückführsignal (Geber/Encoder) haben um die Geschwindigkeit des Bandes zu regeln. Hast du eine "Aufgabemessung" und willst du die "Beladung" des Bandes stabil halten?
Bei Frage eine PN und ich kann dann vielleicht etwas helfen (war mehrere Jahre in der Zementindustrie und habe jeden Scheiß dosiert :))
Grüße
 
Zurück
Oben