TIA Hochsprache für komplexen Baustein

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hi,
Ich bins wieder.
Ich hab mal wieder eine doofe Frage.

Ich hab ein kleines Problem, dass ich ein relativ komplexes Problem lösen muss und am liebsten dafür eine moderne Hochsprache wie C oder C++ benutzen würde.
Auf mein Problem gehe ich jetzt mal nicht so genau ein, da es nicht grundlegend wichtig ist. Es geht um Kompression und dekompression von Daten.

Ich habe sensoren, die aufgrund von öffentlichen Gegebenheiten Messwerte über Funk übertragen muss. Wegen den Beschränkungen des Funkprotokolls sind die Daten mit einem Hemming Code gesichert, komprimiert und bei der Übertragung wird noch eine CRC Prüfsumme berechnet. Mein kleines Funk gateway führt die CRC Prüfung automatisch durch und schneidet die Prüfsumme ab. Jetzt muss ich aber noch immer den Hammingcode und die Kompression entpacken.

Ich weiß, dass das wahrscheinlich in scl/ST möglich wäre, aber ich würde halt nur ungern alles selber bauen, sondern eine Bibliothek dafür verwenden.

Ich hab hier schon mal gelesen, dass das irgendwie gehen muss aber ich weiß nicht wonach ich googlen muss. Außerdem finde ich keine Anleitung.
 

MFreiberger

Well-known member
Beiträge
1.462
Punkte Reaktionen
294
Moin NeoCortex,

könnte es eine Option sein, die Sensoren an ein PC-basiertes System anzuschließen, die Daten aufzubereiten und dann der SPS zur Verfügung zu stellen?

VG

MFreiberger
 

Mok_1988

Well-known member
Beiträge
94
Punkte Reaktionen
16
Zuviel Werbung?
->Hier kostenlos registrieren
Es gibt spezielle CPU die auch mit Hochsprachen umgehen können --> CPU 1518-4 PN/DP MFP ("Multifunktionale Plattform")

Aber ich schätze die sprengen den preislichen Rahmen
 

oliver.tonn

Well-known member
Beiträge
3.984
Punkte Reaktionen
638
Ich vermute der Wechsel auf eine andere Steuerung kommt nicht in Frage, trotzdem erwähne ich hier einmal Beckhoff TwinCAT, damit ließe sich das machen.
 

Heinileini

Well-known member
Beiträge
4.265
Punkte Reaktionen
882
Jetzt muss ich aber noch immer den Hammingcode und die Kompression entpacken.
Hammingcode klingt nicht so sehr nach Kompression. Musst Du z.B. zuerst entpacken und dann noch den HammingCode auswerten, sprich ggfs FehlerKorrekturen vornehmen?
HammingCode ist eigentlich das "Gegenteil" von Kompression. Es werden Informationen hinzugefügt, die es erlauben, bei ÜbertragungsFehlern den ursprünglichen Zustand zu rekonstruieren. Wenn allerdings schon die CRC-Prüfung sagt "die Übertragung ist fehlerhaft" und das Telegramm deshalb nicht ausgewertet wird ... :unsure: ? ?
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Hammingcode klingt nicht so sehr nach Kompression. Musst Du z.B. zuerst entpacken und dann noch den HammingCode auswerten, sprich ggfs FehlerKorrekturen vornehmen?
Also der Datensatz wird binär codiert und dann Komprimiert. Im sicherzustellen, dass ein 4kB Datensatz nicht mehrfach übertragen werden muss, gibt es dann auf dem komprimierten 4k nen Hemming Code.

Fragt nicht, das war eigentlich alles auf lange Kabel ausgelegt und die funk Module sind eine Notlösung. Ich muss trotzdem zumindest die Bits vom Hemming code aus der Nachricht rauspulen. Ggf Werte Ich die auch aus. Aber ich hab keine Lust jetzt bei meinen sensoren überall die firmware zu updaten, indem ich Kabel an Pins löte......


HammingCode ist eigentlich das "Gegenteil" von Kompression. Es werden Informationen hinzugefügt, die es erlauben, bei ÜbertragungsFehlern den ursprünglichen Zustand zu rekonstruieren. Wenn allerdings schon die CRC-Prüfung sagt "die Übertragung ist fehlerhaft" und das Telegramm deshalb nicht ausgewertet wird ... :unsure: ? ?
Weiß ich alles. Die Erklärung ist oben. Das System ist eh schon relativ wackelig und durch eine große Liste an misinformation, Fehlern und eine inkompetente Anforderung gewachsen.

Ursprünglich sollten sie sensoren ihre Messwerte codieren und auf einem rs485 bus raus schicken. Der nächste Knoten empfängt das Telegramm, entschlüsselt es, hängt seine Daten an, codiert es wieder und schickt es zum nächsten. Und damit ich die Kabel ab bestimmten Stellen unterbrechen kann, musste ich Gateways basteln, die für das Protokoll mehr oder weniger transparent sind.
Jetzt soll ein solches gateway direkt an die Sps gehen, ohne dass da ein weiteres Gerät in den Schaltschrank muss.

Ich vermute der Wechsel auf eine andere Steuerung kommt nicht in Frage, trotzdem erwähne ich hier einmal Beckhoff TwinCAT, damit ließe sich das machen.
Stimmt, eine andere Steuerung ist zu aufwändig.

Es gibt spezielle CPU die auch mit Hochsprachen umgehen können --> CPU 1518-4 PN/DP MFP ("Multifunktionale Plattform")

Aber ich schätze die sprengen den preislichen Rahmen
Ne 1500 wäre ein Traum, ist aber wie vermutet deutlich zu teuer. Dann schau ich also besser, ob ich nicht nen kleinen Compiler zu scl finde.

Eine 1500 würde mir das Leben an sooo viellen stellen unendlich viel leichter machen, ist aber leider nicht.

Moin NeoCortex,

könnte es eine Option sein, die Sensoren an ein PC-basiertes System anzuschließen, die Daten aufzubereiten und dann der SPS zur Verfügung zu stellen?

VG

MFreiberger
Potentiell könnte ich nen raspberry pi, oder einen pi pico nehmen, mit nem Netzteil ausstatten und das alles auf dem machen.
Leider ist der Schaltschrank super voll und man müsste ekelhaft basteln. Einen kompletten Server als pseudo scada benutzen ist auch raus. Das will der verantwortliche nicht.
 

Blockmove

Supermoderator und User des Jahres 2019
Teammitglied
Beiträge
9.070
Punkte Reaktionen
2.358
Wie soll man dir helfen?
Andere Steuerung geht, In den Schrank passt nicht mal mehr ein PI, PC geht auch nicht.

Dann geht wohl nur noch eine Cloud-Lösung 😁:ROFLMAO: 😁
Die braucht keinen Platz
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Oder dass ich alles in scl implementiere...

Wollte ich zwar verhindern, wird mir aber in diesem Fall nicht helfen. Dann werde ich das entweder selbst implementieren oder dem Chef sagen, er soll es selbst machen.

Zum Glück ist das ja nicht für die Arbeit, sonst hätte ich Angst um meinen Job.

Alternativ würde mir schon eine art kleine Bibliothek von Algorithmen in scl genügen.
 

Blockmove

Supermoderator und User des Jahres 2019
Teammitglied
Beiträge
9.070
Punkte Reaktionen
2.358
Zuviel Werbung?
->Hier kostenlos registrieren
Alternativ würde mir schon eine art kleine Bibliothek von Algorithmen in scl genügen.

Ich glaub da wirst du um's Selberschreiben nicht rumkommen.
Wenn ich sowas machen muss, dann such ich mir meist Pascal-Code.
Da ist die Portierung nach SCL meist nicht so komplex
 

Thomas_v2.1

Well-known member
Beiträge
8.037
Punkte Reaktionen
2.420
Und wenn von C nach STL, dann irgendwelchen Demonstationscode als Grundlage verwenden. Wenn du etwas aus C-Bibliotheken verwendest die in vielen Projekten zum Einsatz kommen (gerade bei Algorithmen wo es auf Geschwindigkeit ankommt, wie Verschlüsseln oder Komprimieren) ist das bis zum geht nicht mehr optimiert, teilweise mit Inline-Assembler.
 

vollmi

Well-known member
Beiträge
4.906
Punkte Reaktionen
1.089
Ist denn eine Cpu schon vorhanden? Oder wieviel platz ist noch vorhanden für eine Cpu? Günstig für deine Zwecke, wäre wohl ein S7 open controller, oder wenns die 300 Bauform sein soll, ein EC31-Rtx
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Performance ist mir kack egal. Die Anwendung ist, dass alle 30 Minuten ein Paket ankommt und ich das in unter 30 Minuten irgendwann mal verarbeiten muss.

Also wenn mein Code 5 Minuten läuft ist das noch immer mehr als schnell genug.
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Ist denn eine Cpu schon vorhanden? Oder wieviel platz ist noch vorhanden für eine Cpu? Günstig für deine Zwecke, wäre wohl ein S7 open controller, oder wenns die 300 Bauform sein soll, ein EC31-Rtx
Die CPU existiert und langweilt sich großteils. Genaue Infos hab ich leider grad nicht, da ich grad nicht schauen kann.
Hier wurden so weit ich das sehen konnte 3 x S7-1215 CPUs verbaut, obwohl eine für die Logik wahrscheinlich völlig ausreichend wäre.

Aber wie gesagt kann ich leider nicht ohne weiteres in das Projekt reinschauen. Und eine Kopie machen und bei mir öffnen ist soweit ich weiß auch nicht sinnvoll möglich. Zumindest in diesem Fall.

Ich glaub da wirst du um's Selberschreiben nicht rumkommen.
Wenn ich sowas machen muss, dann such ich mir meist Pascal-Code.
Da ist die Portierung nach SCL meist nicht so komplex
Super Tipp, danke. Dann such ich mir mal ne Implementierung von LZ-kompression und von Hemming codes in Pascal.
 

ducati

Well-known member
Beiträge
5.817
Punkte Reaktionen
1.117
Deine ganzen Themen hörn sich grad so an, als wenn Du komplett mit Deiner Aufgabe überfordert bist.
Bearbeite die mal nacheinander und arbeite Dich einzeln in die Themen ein...
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Grundsätzlich hab ich nur ein Problem damit, dass ich mit verkorkster Hardware auf dem Level der späten 90er die Maßstäbe eines modernen Smart Homes anlege.
Ich bin zwar Informatik Student, aber nicht ausgebildet um mit Sps-Steuerungen zu arbeiten. Also mehr das Medium als die Aufgabe.

Könnte ich zumindest teilweise sowas wie Node-red oder wenigstens java benutzen, wäre alles nicht das geringste Problem. So muss ich halt mit meinem eingweschränkten Budget nach Lösungen suchen, die ich umgesetzt bekomme.

Der Person, für die ich hier mein Projekt mache mangelt es nicht an Sachverstand oder können. Es fehlt ihr/ihm einfach an einer Ausbildung ein Projekt zu strukturieren. Das einzige weitgehend separate Problem ist das mit den Sensoren wo ich gerne c in der S7 ausführen würde. Selbe Person anderes Projekt.
 
OP
N

NeoCortex

Well-known member
Beiträge
91
Punkte Reaktionen
0
Dann wirds Zeit für eine Ausbildung.
Ich bin darin ausgebildet software zu schreiben und scl bring ich mir grad bei.
Fup kann ich ebenfalls.

Also ist das reine Schreiben der Logik kein Problem.
Eins meiner Probleme dabei ist, dass siemens einige Dinge nicht kann, die andere hersteller erfolgreich tun.
Wago lässt mich zum Beispiel relativ einfach Infos von einer Webseite holen, oder in ein Formular einer Webseite eintragen. Bei Siemens muss ich erstmal anfangen mir von Hand http request header und Json strings zu bauen. Und dann muss ich mich auch noch selbst drtum kümmern, dass bei einem http request die Verbindung wieder geschlossen wird, auch wenn keine weitere Kommunikation stattfindet.

Ich will nicht sagen, dass Siemens schlecht ist, aber ich bin es halt viele Dinge nicht gewohnt, die in jeder Programmiersprache die ich ansonsten benutze nur eine einfache Zeile ist.
 
Oben