Forum: Mikrocontroller und Digitale Elektronik Impulszähler-Chip


von Max M. (jens2001)


Lesenswert?

Moin!

Suche für eine Geräteentwicklung einen Zähler-Chip

Anforderung:
Zählerbreite: 20-32bit
Zählerstand bleibt auch ohne Strom erhalten
Zähler nicht rücksetzbar
Auslesbar über I2C
Separater Zählimpuls-Eingang

Schön wäre:
Dil Gehäuse
Serien-Nummer
Doppel-Zähler (2 Zähler in einem Chip)

Wem ist schon mal sowas begegnet oder kann mir sagen wo o. wonach ich 
suchen soll?

Danke!

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Max Mustermann schrieb:
> Wem ist schon mal sowas begegnet oder kann mir sagen wo o. wonach ich
> suchen soll?

 Nimm doch einen Mega88.
 Selbst mit 1MHz langweilt der sich doch zwischen den Impulsen.

von Gerd E. (robberknight)


Lesenswert?

Max Mustermann schrieb:
> Wem ist schon mal sowas begegnet oder kann mir sagen wo o. wonach ich
> suchen soll?

Mikrocontroller.

Das "nicht rücksetzbar" kannst Du über eine Kombination aus dem 
Flash-Ausleseschutz und einem geheimen Wert im Flash realisieren. Mit 
dem geheimen Wert, zusammen mit der vom Hersteller fest im µC 
hinterlegten Seriennummer, werden die gültigen Daten signiert. Wurde das 
gesamte Ding geleert und neu beschrieben, fehlt der geheime Wert und die 
Signaturen stimmen nicht mehr.

Für meine Begriffe sollte eine Erkennung der Manipulation ausreichen, 
denn wirklich "nicht rücksetzbar" hilft nicht gegen Zerstören durch 
Auslöten, Hammer,...

von Max M. (jens2001)


Lesenswert?

Marc Vesely schrieb:
> Nimm doch einen Mega88.

Gerd E. schrieb:
> Mikrocontroller.

Ach ne, da wär ich jetzt nicht drauf gekommen;-)

Und wo soll der Zählerstand non volatil abgespeichert werden?
20 Bit hochzählen sind über 1.000.000 Schreibzugriffe.
Das EEPROM der atmega ist aber nur für 100.000 Schreibzugriffe 
spezifiziert.

von Markus (Gast)


Lesenswert?

Max Mustermann schrieb:
> Marc Vesely schrieb:
>> Nimm doch einen Mega88.
>
> Gerd E. schrieb:
>> Mikrocontroller.
>
> Ach ne, da wär ich jetzt nicht drauf gekommen;-)
>
> Und wo soll der Zählerstand non volatil abgespeichert werden?
> 20 Bit hochzählen sind über 1.000.000 Schreibzugriffe.
> Das EEPROM der atmega ist aber nur für 100.000 Schreibzugriffe
> spezifiziert.

Den ATmega-8 Zähler als extra Schaltung konzipieren mit Pufferelko.
Bei Spannungsverlust werden die Zählwerte vom SRAM ins EEPROM 
geschrieben. Fertig...

von Max M. (jens2001)


Lesenswert?

Gerd E. schrieb:
> Wurde das
> gesamte Ding geleert und neu beschrieben, fehlt der geheime Wert und die
> Signaturen stimmen nicht mehr

Schön!
Aber kann ich dann trotzdem nicht feststellen welcher Wert mindestens im 
Zähler war!

von spontan (Gast)


Lesenswert?

>Ach ne, da wär ich jetzt nicht drauf gekommen;-)

Wenn Du es eh schon weißt, dann mach es einfach.

Du kannst ja nach 500.000 Schreibzugriffen die Schreibadresse ändern. 
Und schon hast Du wieder ein paar Zugriffe gewonnen.

Andernfalls brauchst Du ja nur schreiben, wenn die Betriebsspannung des 
µC weggeht. Mit Schaltungsmaßnahmen kannst Du erreichen, daß das 
Programm noch schreiben kann, bevor der µC schläft.

Damit kannst du den µC 1.000.000 mal ein und ausschalten, bevor der 
Datenerhalt nicht mehr garantiert ist.

...aber das hast du bestimmt schon alles gewußt.

von Mathias O. (m-obi)


Lesenswert?

Max Mustermann schrieb:
> Marc Vesely schrieb:
>> Nimm doch einen Mega88.
>
> Gerd E. schrieb:
>> Mikrocontroller.
>
> Ach ne, da wär ich jetzt nicht drauf gekommen;-)
>
> Und wo soll der Zählerstand non volatil abgespeichert werden?
> 20 Bit hochzählen sind über 1.000.000 Schreibzugriffe.
> Das EEPROM der atmega ist aber nur für 100.000 Schreibzugriffe
> spezifiziert.

Deswegen nutzte ich FRAM. Perfekt!

von MaWin (Gast)


Lesenswert?

Max Mustermann schrieb:
> Aber kann ich dann trotzdem nicht feststellen welcher Wert mindestens im
> Zähler war!

Das kannst du bei ausgebautem und ersetztem Zähler sowieso nicht, egal 
welcher Chip. Du weisst nur noch, dass das Original nicht mehr da ist.

von Gerd E. (robberknight)


Lesenswert?

Max Mustermann schrieb:
> Und wo soll der Zählerstand non volatil abgespeichert werden?
> 20 Bit hochzählen sind über 1.000.000 Schreibzugriffe.
> Das EEPROM der atmega ist aber nur für 100.000 Schreibzugriffe
> spezifiziert.

Du hast aber nicht nur eine Speicherstelle zur Verfügung und die 
spezifizierte Zahl der Schreibzugriffe gilt pro Speicherzelle.

Also ganz einfach: Du schreibst wie in einen Ringpuffer Deinen Wert 
zuerst an Adresse eeprom[0], dann eeprom[1], ..., eeprom[EEPROM_MAX], 
eeprom[0], eeprom[1],...

Da Dein Zähler immer nur hochzählt, brauchst Du keinen Pointer der Dir 
sagt wo Du gerade bist, Du kannst beim Start einfach einmal durchs 
EEPROM loopen und den höchsten Wert finden.

Damit bei plötzlichem Spannungsabfall nix durcheinanderkommt, brauchst 
Du nur von der Spannungsversorgung eine Diode und dann einen Elko der 
dick genug ist um die Zeit eines EEPROM-Schreibvorgangs zu überbrücken.

von Max M. (jens2001)


Lesenswert?

spontan schrieb:
> ...aber das hast du bestimmt schon alles gewußt.

Ja!
Wird auch im jetzigen Prototypen teilweise so gemacht.

von Asko B. (dg2brs)


Lesenswert?

Max Mustermann schrieb:
> Ja!
> Wird auch im jetzigen Prototypen teilweise so gemacht.

Wieso nur "teilweise2 ???

von A-Freak (Gast)


Lesenswert?

Wird das wieder so etwas wie Tintenpatronen für Drucker?

von Max M. (jens2001)


Lesenswert?

Asko B. schrieb:
> Wieso nur "teilweise2 ???

Weil nicht Narrensicher genug. Eine Hardwaremanipulation ist einfach 
leichter nachzuweisen als eine Softwaremanipulation.

A-Freak schrieb:
> so etwas wie Tintenpatronen für Drucker

Nein! Die Geräte sollen vermietet/verleast werden. der Kunde zahlt neben 
einem Grundbetrag einen kleinen Betrag pro Arbeitstakt. Da ist dann auch 
eine benutzungsabhängige Wartung mit abgegolten.

von Max M. (jens2001)


Lesenswert?


von Schlumpf (Gast)


Lesenswert?

Und wie schnell ist dieser Arbeitstakt?

von Gerd E. (robberknight)


Lesenswert?

Max Mustermann schrieb:
> Die Geräte sollen vermietet/verleast werden. der Kunde zahlt neben
> einem Grundbetrag einen kleinen Betrag pro Arbeitstakt. Da ist dann auch
> eine benutzungsabhängige Wartung mit abgegolten.

Nehmen wir mal einen böswilligen Kunden an, der wirklich jemanden mit 
ordentlichen Elektronikkenntnissen ne Weile an einer solchen 
Manipulation arbeiten lässt.

Was hindert den daran, die Leitung zum Zählereingang während des 
Betriebs zu kappen und hinterher, wenn er das Gerät zurückgibt (oder der 
Kundendienst kommt), sie wieder zu verbinden?

Ich würde hier die oben beschriebenen Signaturen im Zählercontroller zum 
Einsatz kommen lassen. Der Hauptcontroller schickt ein Nonce an den 
Zähler und bekommt das vom Zähler signiert zurück. Der Zähler zählt in 
diesem Moment eins hoch und der Hauptcontroller führt einen Arbeitstakt 
auf der Maschine aus.

Kommt die Signatur dagegen falsch zurück, sperrt sich der 
Hauptcontroller.

Ein Austauschen oder Abklemmen des Zählercontrollers hilft nix weil dann 
die Maschine still steht. Auch die Kommunikation mitzuschneiden und mit 
einem Fake-Zählercontroller wieder abzuspielen ist wirkungslos weil das 
Nonce ja jedesmal anders ist.

Wenn Du Angst hast, daß der Kunde vor dem Zurückgeben der Anlage den 
Zählercontroller ausbaut und zerstört, dann helfen folgende Lösungen:
a) Vertragsbedingungen mit saftiger Vertragsstrafe für diesen Fall
b) Der Controller ist immer nur für x Takte freigeschaltet. Jedesmal 
wenn der Servicetechniker vorbeikommt, liest er den Zählerstand aus und 
schaltet wieder x Takte frei. Das kann natürlich auch Online gemacht 
werden.

von Max M. (jens2001)


Lesenswert?

Schlumpf schrieb:
> Und wie schnell ist dieser Arbeitstakt?

Bei Hochbetrieb ca. 2/min. Meist aber weniger da das Gerät manuel 
bestückt wird.
Aber bei teilweise Zweischichtbetrieb mit Extraschicht am Samstag kommt 
da trotzdem was zusammen.

von Max M. (jens2001)


Lesenswert?

Gerd E. schrieb:
> Nehmen wir mal einen böswilligen Kunden an, der wirklich jemanden mit
> ordentlichen Elektronikkenntnissen ne Weile an einer solchen
> Manipulation arbeiten lässt.

Davon gehe ich nicht aus!
Die Kunden sind alle persönlich bekannt und seriös.
Die Miet/Leasingverträge laufen über mehrere Jahre.

Bin nur auf der suche nach einer möglichst simplen Ein-Chip-Lösung.

Der Haupt-MC soll bei nicht vorhandenem Zählerchip einfach die Arbeit 
verweigern

von Gerd E. (robberknight)


Lesenswert?

Max Mustermann schrieb:
> Die Kunden sind alle persönlich bekannt und seriös.
> Die Miet/Leasingverträge laufen über mehrere Jahre.
>
> Bin nur auf der suche nach einer möglichst simplen Ein-Chip-Lösung.

Und warum dann "Aber kann ich dann trotzdem nicht feststellen welcher 
Wert mindestens im Zähler war!"?

Nimm doch einfach nen µC wie oben beschrieben und fertig. Die ganzen 
Sachen mit den Signaturen erhöhen die Sicherheit gegen Manipulation, 
sind aber eben nicht mehr möglichst simpel.

> Der Haupt-MC soll bei nicht vorhandenem Zählerchip einfach die Arbeit
> verweigern

Dann musst Du irgendeine Art Bestätigungssignal vom Zählerchip 
zurückliefern was dann vom Haupt-MC ausgewertet wird.

von Max M. (jens2001)


Lesenswert?

Wird wohl auf eine ATtiny12 im DIP8 Gehäuse hinauslaufen.
Bei geschickter Schreibstrategie sollten die 64 Byte EEPROM locker 
reichen

von Schlumpf (Gast)


Lesenswert?

Das wären dann ca 0,5 Mio Zyklen/a

Wenn es dir nur darum geht, dass der ATmega nur 100 000 Zyklen kann, 
dann hänge halt ein besseres, extrenes EEPROM dran. Von ST gibt es z.B. 
welche, die können 4 Mio Zyklen. Das sollte ja dann wohl reichen, oder?

Aber ich verstehe immer noch nicht, was schlecht daran ist, im ATmega 
die Werte eben auf unterschiedlichen Speicherstellen abzulegen, oder die 
Methode zu verwenden, dass du geschrieben wird, wenn die Spannung 
einbricht.

Was spricht da konkret dagegen?
Das wäre doch die von dir gesuchte 1-Chip-Lösung.

Einen Counter zu finden, der exakt das tut, was du dir vorstellst, wird 
wohl schwer sein.

von Max D. (max_d)


Lesenswert?

nehmen wir den atmega8
der hat einen eeprom mit 128 pages zu je 4 byte
jedes schreiben "belastet" immer eine ganze page
damit kannst du 128 * 100k = 12,8 Millionen mal schreiben bevor das Ding 
aufgibt.
Das lässt sich noch gut vergrößern indem du halt den avr größer wählst 
(atmega328 hat auchnoch dip28).
Dann setzt du die lockbits so, dass der eeprom via isp nurnoch lesbar 
ist.
Damit hast du maximal billig (son mega kostet ja keine 2€) deinen 
zählerchip.
Dann kannst du zur authentifizierung gegenüber der steuerung jede noch 
so abgefahrene kryptographie nutzen.
zusätzlich kann sich auchnoch die steuerung dem mega gegenüber 
"ausweisen", damit verhinderst du auch replay-angriffe in diese richtung 
(warum der kunde auch immer den zähler absichtlich hochzählen will sei 
dahingestellt).

von Max M. (jens2001)


Lesenswert?

Gerd E. schrieb:
> Dann musst Du irgendeine Art Bestätigungssignal vom Zählerchip
> zurückliefern was dann vom Haupt-MC ausgewertet wird.

Der Haupt-MC liest beim Einschalten den Zählerstand aus und speichert 
ihn im eigenen EEPROM.
Kann der MC keinen Zähler finden geht das Programm in einen Fehlerstatus 
und stopt.
Wird ein bestimter Wert Überschritten bekommt der Bediener einen 
Wartungshinweis den er quittieren muss.
Dann läuft das normale Arbeitsprogramm.Der Zähler zählt die 
Arbeitstakte.
Der Bediener schaltet das Gerät einfach am Hauptschalter ab.
Beim erneuten einschalten liest der MC den Zähler erneut aus und 
vergleicht den Zähler aus und vergleicht ihn mit dem im eigenen EEPROM 
gespeicerten Wert.
Ist der Wert im Zähler kleiner als der im EEPROM so ist was nicht in 
Ordnung!

von Max M. (jens2001)


Lesenswert?

Max D. schrieb:
> nehmen wir den atmega8

zu groß!
wird wohl ATtiny12.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Max Mustermann schrieb:
> zu groß!
> wird wohl ATtiny12.

 Ich glaube du hast beim kehren der Werkstatt irgendein Gespräch
 mitgeschnappt aber so richtig wissen, wovon die Rede war, weisst
 du immer noch nicht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.