Hoffentlich ist das keine Aufgabe, die Du unter Zeitdruck lösen musst!Ich befinde mich momentan in der Ausbildung und wir haben auch schon ein wenig mit einer SPS programmiert, aber abseits von einfachen Sensor/Aktor Steuerungen (Signal von kapazitivem Sensor, Magnetventil ansteuern, usw.) sind wir noch nicht sehr tief in die Materie eingedrungen.
------+
SM322 |
L+ o-- +24V Optokoppler
| +-------+
| +------+ | CNY17 |
OUT o------| 2,7k |------o A C o------o CLK (DIO)
| +------+ | |
| +---o K E o------o GND
| | | |
M o---+------------+ +-------+
| |
------+ 0V
Keine Adresse? Für die Adressierung der (4 von) 6 AnzeigeBytes schon, aber der Chip kann wohl auch automatisch die Adressen erhöhen (wäre mir für den Anfang aber eher zu unsicher).... es muss/braucht jedoch wohl keine Adresse übertragen werden.
Das Datenblatt scheint allerdings von einer Software übersetzt worden zu sein, die Chinglisch nur rudimentär beherrscht.
Ich vermute eher, dass felix-ep sich nicht darüber im Klaren war, als er die Anzeige gekauft hat.
Aber die restlichen halten zusammen und sagen mit Angelas Worten "Wir schaffen das!" - notfalls, falls der TE uns im Stich lässt, legen wir die 3,49€ für die 7-Segment-Anzeige zusammen ... 2 OptoKoppler gibt die Wühlkiste vermutlich noch her.Respekt!
Mit der Aufgabe hätten wohl geschätzt mehr als 50% der Forumsmitglieder Probleme.
Habe vorhin etwas vermutlich "historisch wertvolles" im Netz gefunden:Also anzeigen möchte ich damit lediglich Zählerstände und ggf. noch hexadezimal Ziffer, also 0-9,A-F ...
Deine Analogausgabebaugruppe 332-5HD01 kann 0-10V und 0/4-20mA-Signale mit einer Auflösung von 12 Bit ausgeben. 7-Segment Anzeigen mit 0-10V oder 0/4-20mA Eingangssignal (auch unter dem Name "Digitales Einbaumessgerät" bekannt) gibt es standardmäßig 3-stellig, weil z.B. für die Übertragung und Anzeige von 0..100 eine Genauigkeit der Analogsignal-Wandlung (DAU + ADU) von max 1% erforderlich/ausreichend ist. Für 3-stellig (0..999) bzw. 4-stellig (0..1000) Anzeigen ist eine Genauigkeit und Auflösung von max 0,1% erforderlich - das wird mit Deiner Analogausgabebaugruppe schon schwierig (Du müsstest vermutlich eine Ausgabeanpassung/kalibrierung programmieren). Echte 4-stellige Signalübertragung (0..9999) geht mit Deiner Analogausgabebaugruppe gar nicht, weil deren DAU nur 12 Bit Auflösung hat.Ich bin bisher davon ausgegangen das ich die Analog Baugruppen brauche um die Anzeige anzusteuern
Moin Harald,1. Zur Reduzierung der Anzahl Digitalausgänge kann man die Signale noch multiplexen, so daß man für 4 Stellen z.B. nur noch 8 bis 9 Ausgänge braucht - das erfordert aber in der Anzeige einen entsprechenden Decoder oder Demultiplexer.
2. Möglich wäre wohl auch noch ein Versatz von 3 ms zwischen CLK und DIO und Ausgabetakt von 6 ms (OB35 alle 3 ms), da würde die Ausgabe von 40 Bits nur ca. 480 ms bis 500 ms dauern (das genau zu durchdenken dauert mir jetzt zu lange)
3. Wegen Deiner langsamen SPS-Digitalausgabebaugruppe könntest Du Dir ein gemischt parallel+seriell Übertragungsprotokoll mit z.B. 5 Digitalausgängen (für 4 Datenbits + CLK) ausdenken, ...
Moin Heinrichich glaube mit 1. und 3. meinst Du (fast) dasselbe.
So wie im Datenblatt das Timing für die Übergabe eines Bits mit DIO und CLK dargestellt ist, sah es für mich so aus als ob man je Bit 4 Schritte braucht. Man soll zuerst den Wert für DIO ausgeben und danach an CLK eine steigende Flanke erzeugen. Um sicherzugehen, daß die Spannung für das Datenbit an DIO stabil anliegt, soll die steigende Flanke von CLK natürlich nicht gleichzeitig mit dem Zustandswechsel an DIO passieren, sondern erst "kurz" danach. Da hatte ich zunächst die Idee, daß man das (meistens) mit nur 3 Schritten realisieren kann:Den Versatz laut 2. verstehe ich nicht so ganz
Schritte Abstand 5ms --> Ausgabe eines Bits dauert 15ms
1 DIO := Datenbit B0
2 CLK := 1 --> Übernahme des Bits in die Anzeige
3 CLK := 0
4 DIO := Datenbit B1
5 CLK := 1 --> Übernahme des Bits in die Anzeige
6 CLK := 0
...
Schritte Abstand 3ms --> Ausgabe eines Bits dauert 12ms
1 DIO := Datenbit B0
2 CLK := 1 --> Übernahme des Bits in die Anzeige
3 nichts tun
4 CLK := 0
5 DIO := Datenbit B1
6 CLK := 1 --> Übernahme des Bits in die Anzeige
7 nichts tun
8 CLK := 0
...
Die pos. Flanke des CLK übernimmt den Zustand des DIO-Signals und mit der neg. Flanke des CLK gibt man den neuen Zustand des DatenBits aus, der mit der nächsten pos. Flanke übernommen wird. Der ZeitPunkt für die Ausgabe des DatenBits (neg. Flanke des CLK) ist also schon versetzt gegenüber dem ZeitPunkt für die Übernahme des Datenbits (pos. Flanke des CLK).
Schritte Abstand 5ms --> Ausgabe eines Bits dauert 10ms
1 CLK := 0 + DIO := Datenbit B0
2 CLK := 1 --> Übernahme des Bits in die Anzeige
3 CLK := 0 + DIO := Datenbit B1
4 CLK := 1 --> Übernahme des Bits in die Anzeige
...
Kurz gesagt: Du musst zunächst Deinen Zahlenwert in 4 Ziffern zerlegen, dann für die Ziffern das 7-Segment-Muster der Ziffer raussuchen und dann die Muster bitweise nacheinander im OB35 an DIO ausgeben und den CLK dazu ausgeben, und auch noch Kommando-Bytes und Start- und End-Bits dazu ausgeben.Ich verstehe nur noch nicht, wie ich meinen Zahlenwert serielle ausgeben kann.
Nein, CLK und DIO müssen zueinander synchronisiert sein. Deshalb muß die SPS DIO und den CLK beide selber steuern. (Dafür einen externen Takt an die SPS geben würde die Aufgabe unnötig verkomplizieren.)Könnte ich nicht einen externen Takt an den CLK Eingang anlegen. Durch einen Quarz oder etwas ähnlichem?
In HW Konfig in den Eigenschaften der CPU den OB35 auf Aufruf alle 5 ms einstellen.Und was den OB35 angeht. Wie benutze ich den?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?