Hallo,
grundsätzlich bin ich mit Codesys relativ gut vertraut, Programme am Raspberry laufen bereits.
Mein Projekt:
Ich will eine Temperaturregelung für einen Ofen fürs Pulverbeschichten bauen. Tempbereich: 20-200°C +- 5 Grad sind kein Problem.
Meine Hardware:
Raspberry Pi 3 B+; Als Thermo-Modul verwende ich das MAX6675 (Datenblatt: https://datasheets.maximintegrated.com/en/ds/MAX6675.pdf).
Verkabelt habe ich es wie in der Tabelle (GPIOs) dargestellt. Müsste doch richtig sein oder?
Nun meine Frage: Wie gehören die Paramter eingestellt? "Max Speed" sind doch die 4,3MHz (aus Datenblatt), '/dev/spidev0.0' müsste auch passen da ich ja CE0 verwende. Welche Paramter gehören bei "SPI Mode" und bei "SPI Bits per Word"?
Ich bekomme zwar einen Temperaturwert herein, allerdings aktualisiert er sich nicht, "friert also ein".
Der besagte Treiber stammt von mir. Die Auflösung und die Bitweite hast du korrekt aus dem Datenblatt übertragen. Warum der Wert nun einfriert kann ich schwer deuten.
Ich hatte recht seltsame Effekte wenn die Frequenz des SPI Masters zu hoch war. Was hier zählt ist im übrigen die Limitierung des RPI und nicht die des Temperaturmoduls. Ich würde mit der Frequenz jedenfalls deutlich runter gehen, da du ohnehin nicht so schnell samplest. Ich kenne das Limit des RPI leider nicht mehr aus dem Kopf.
Sonst fällt mir spontan leider auch nix ein woran es softwaretechnisch noch liegen könnte.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Klingt nach etwas seltsamen in deiner Testapplikation. Denn Stop / Start
macht keinen großen Unterschied zu dem Normalbetrieb. Schick mal die
Applikation rüber. Ich schau drauf.
Was ich kontrollieren will ist die Task Konfiguration und das "Task
Deployment" das ist eine Seite in der PLC Konfiguration. Und dann mal
schauen...
Last edit: Ingo 2020-04-03
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bitte tu mir einen Gefallen und verlangsame die Cycle Time deiner Task auf mehrere Sekunden und erhöhe die Frequenz des SPI Master auf 1000Hz.
Ich habe mir den gesamten Code, inklusive der RPI Peripherals durchgeschaut. Und ich kann mir nur vorstellen, dass wir zu schnell versuchen zu lesen.
Sonst kann ich mir das Symptom nicht erklären. Insbesondere, dass es nach Stop und Start der Applikation wieder funktioniert ergibt sonst keinen Sinn. Denn es wird tatsächlich kein anderer Code durchlaufen. Der Unterschied ist nur, dass wir recht flott versuchen zu lesen bei einer nun sehr niedrigen SPI Frequenz von 5Hz. In dem Meetforge Projekt habe ich 1000Hz für die SPI Master Frequenz verwendet.
Falls es daran liegen sollte, würde ich das natürlich auch im Treiber fixen, sodass das nicht mehr nötig sein wird ;)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Weltklasse! Bei Gelegenheit behandele ich das Problem dann im Treiber. So
ähnlich hatte ich das auch im D-Logg Treiber gemacht, da der auch zu
schnelle Leseanfragen nicht vertragen hatte.
Hallo,
grundsätzlich bin ich mit Codesys relativ gut vertraut, Programme am Raspberry laufen bereits.
Mein Projekt:
Ich will eine Temperaturregelung für einen Ofen fürs Pulverbeschichten bauen. Tempbereich: 20-200°C +- 5 Grad sind kein Problem.
Meine Hardware:
Raspberry Pi 3 B+; Als Thermo-Modul verwende ich das MAX6675 (Datenblatt: https://datasheets.maximintegrated.com/en/ds/MAX6675.pdf).
Verkabelt habe ich es wie in der Tabelle (GPIOs) dargestellt. Müsste doch richtig sein oder?
Ich habe bereits den SPI Master eingefügt, sowie die benötigte Bibliothek importiert und die Gerätebeschreibung eingefügt. (siehe Screenshots)
Anleitung von hier: https://forge.codesys.com/drv/spi-temperature/home/Home/
Nun meine Frage: Wie gehören die Paramter eingestellt? "Max Speed" sind doch die 4,3MHz (aus Datenblatt), '/dev/spidev0.0' müsste auch passen da ich ja CE0 verwende. Welche Paramter gehören bei "SPI Mode" und bei "SPI Bits per Word"?
Ich bekomme zwar einen Temperaturwert herein, allerdings aktualisiert er sich nicht, "friert also ein".
Ich hoffe, dass mir jemand weiterhelfen kann.
Lg
Der besagte Treiber stammt von mir. Die Auflösung und die Bitweite hast du korrekt aus dem Datenblatt übertragen. Warum der Wert nun einfriert kann ich schwer deuten.
Ich hatte recht seltsame Effekte wenn die Frequenz des SPI Masters zu hoch war. Was hier zählt ist im übrigen die Limitierung des RPI und nicht die des Temperaturmoduls. Ich würde mit der Frequenz jedenfalls deutlich runter gehen, da du ohnehin nicht so schnell samplest. Ich kenne das Limit des RPI leider nicht mehr aus dem Kopf.
Sonst fällt mir spontan leider auch nix ein woran es softwaretechnisch noch liegen könnte.
Ok, danke schonmal für deine schnelle Antwort.
Hast du zufällig einen Treiber für ein 128x64 OLED Display über I2C?
Haha nice try, aber leider nein. ;)
Mit diesem einfachen Code müsste ich doch die Werte hereinladen können oder?
Kann mir jemand helfen??
Ich bekomme beim Starten der Applikation einen Wert zB 28.25°C, dieser steht dann aber fest und aktualisiert sich nicht??
Bitte um Hilfe!
OK, kannst du mal weiter damit rumspielen und uns schreiben was du tun musst, dass sich der Wert aktualisiert?
Z.B.:
Je nachdem wie es sich genau verhält können wir den Fehler ggf. weiter eingrenzen.
ausloggen wieder einloggen --> alter Wert, nix ändert sich
stop/start --> neuer Wert
Warm restart --> neuer Wert
Cold restart --> neuer Wert
Reset der Applikation? Was meinst du?
Klingt nach etwas seltsamen in deiner Testapplikation. Denn Stop / Start
macht keinen großen Unterschied zu dem Normalbetrieb. Schick mal die
Applikation rüber. Ich schau drauf.
Was ich kontrollieren will ist die Task Konfiguration und das "Task
Deployment" das ist eine Seite in der PLC Konfiguration. Und dann mal
schauen...
Last edit: Ingo 2020-04-03
Danke für deine Hilfe schonmal! :)
Gern! Dauert aber noch bis heut Abend. Das Wetter ist zu schön, da kann ich
nicht an den Rechner ;)
Bitte tu mir einen Gefallen und verlangsame die Cycle Time deiner Task auf mehrere Sekunden und erhöhe die Frequenz des SPI Master auf 1000Hz.
Ich habe mir den gesamten Code, inklusive der RPI Peripherals durchgeschaut. Und ich kann mir nur vorstellen, dass wir zu schnell versuchen zu lesen.
Sonst kann ich mir das Symptom nicht erklären. Insbesondere, dass es nach Stop und Start der Applikation wieder funktioniert ergibt sonst keinen Sinn. Denn es wird tatsächlich kein anderer Code durchlaufen. Der Unterschied ist nur, dass wir recht flott versuchen zu lesen bei einer nun sehr niedrigen SPI Frequenz von 5Hz. In dem Meetforge Projekt habe ich 1000Hz für die SPI Master Frequenz verwendet.
Falls es daran liegen sollte, würde ich das natürlich auch im Treiber fixen, sodass das nicht mehr nötig sein wird ;)
Vielen vielen Dank!!!
Es funktioniert! Task-Zeit auf 1s, Master max speed auf 1000Hz --> es läuft!
Danke!!
Weltklasse! Bei Gelegenheit behandele ich das Problem dann im Treiber. So
ähnlich hatte ich das auch im D-Logg Treiber gemacht, da der auch zu
schnelle Leseanfragen nicht vertragen hatte.