Siemens S7 oefening Temperatuurconversie

Ik zit MUURVAST met een oefening voor mijn avondschool Siemens S7.
Ik zou dus in de simulator de temperatuur in Celsius ingeven en deze zou in QW124 in Fahrenheit moeten staan. Ik heb al verschillende mogelijkheden geprobeert maar ik krijg geen correcte uitlezing. Kan iemand mij in grote lijnen duidelijk maken hoe ik dit moet aanpakken? Zelf denk ik dat ik ergens in de datatypes fout zit maar als ik zou weten waar stelde ik nu deze vraag niet :).

Hieronder leest u de opgave:

Met een duimwielschakelaar (IW124) worden waarden in graden celsius ingegeven.

Op een display (QW 124) worden waarden in fahrenheit weergegeven.

De omzetting van waarden in graden celsius naar fahrenheit wordt met behulp van de volgende formule uitgevoerd:

F = C x 1.8 + 32

Datatypes spelen in deze oefening een zeer belangrijke rol.

Aan de hand van tabel kan je nagaan of de uitwerking van jouw oefening klopt.

In de simulator worden voor de adressen van de duimwielschakelaar en de display het BCD-formaat geselecteerd.

Wat heb je zelf al gemaakt of bedacht.
Welke datatypes zou je voor F Gebruiken

Op 20 april 2020 00:08:37 schreef benleentje:
Wat heb je zelf al gemaakt of bedacht.
Welke datatypes zou je voor F Gebruiken

Ik had de ADD_R instructie voor een reël getal gebruikt voor de optelling en de MUL_R voor de vermenigvuldiging. Mijn redenatie hierachter was als ik beide reële getallen gebruik ik geen problemen zou hebben met de conversie tussen datatypes.
Maar zoals aangegeven ben ik nog student en heb ik zoals elke student heb ik soms geen flauw benul wat ik nu juist aan het doen ben.

* En alvast bedankt voor je snelle reactie!

Sorry ik ken de Siemens S7 omgeving niet ik dacht eerder aan andere datatypes zoals byte, integer, word, floatingpoint . Een reëel getal zal dan wel een floatingpoint zijn.

Wat je leest uit het IW124 register is een "normale" 16 bits waarde (WORD).

Bedenk maar eens hoe je daar dan een REAL van maakt. Dan kun je verder met hetgene je al zelf bedacht hebt.

Andersom is hetzelfde, dan moet je van een real weer een WORD maken.

Voor beide zijn conversie functies.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
GJ_

Moderator

De duimwielschakelaar geeft een BCD waarde lees ik. Dat is geen normale 16 bits integer.

Die functies van TS gebruik ik nooit. Dit soort dingen gaat veel eenvoudiger en sneller in AWL. Bovendien zie je dan ook beter en sneller waar het mis gaat.

Dat bedacht ik net ook dat in de opdracht stond dat de input BCD was.
Ook daar heb een standaard conversie blokje voor om die om te zetten naar een WORD.

In de simulator worden voor de adressen van de duimwielschakelaar en de display het BCD-formaat geselecteerd.

Dit is dan weer lekker ongelukkig opgeschreven, het is de DATA en niet adressen.

[Bericht gewijzigd door henri62 op 20 april 2020 08:43:02 (40%)

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

In SCL kun je het in 1 regel intikken

Je hebt nodig
BCD16_TO_INT
INT_TO_REAL
REAL_TO_INT
INT_TO_BCD

Allemaal alvast bedankt voor jullie reacties!
Ik ben er ondertussen uit, mede dankzij jullie hulp! Ik was niet goed vertrouwd met de verschillende datatypes.
IK heb de omzetting gedaan van BCD naar double integer naar real, dan de formule uitgevoerd voor celsius naar fahrenheit. Daarna terug naar bcd en het werkt.

En het allerbelangrijkste, ik begrijp ook wat ik aan het doen ben :D