Hallo,
zur Verbesserung hier im Betrieb möchte ich so ein kleines BDE System
aufbauen.
Hier laufen Maschinen wo man jeden Zyklus ( also ca jede minute ein
"Stromstoß" ) der Produktion einmal ein Signal abgreifen könnte.
Kann so ein Signal ("strom"<oder>"keinStrom"(keine daten)) an eine
Schnitstelle am PC gesendet werden?
Dazu würde ich vermutlich noch ein kleines Programm benötigen,
welches dann einfach z.b. eine "1" in eine mySQL Datenbankzeile
schreibt.
Wenn kein Signal, muss nichts geschrieben werden.
So kann ich über php dann überwachen. Wenn z.b. Seit 3min kein Signal
gekommen ist das irgendeine Aktion ausgeführt wird.
Ist so etwas möglich?
oder ist "Stromstoß" quatsch?
Wie gehe ich hier am besten ran?
Befinde mich noch im "Brainstorming" :)
Von Elektrotechnik habe ich leider keine Ahnung. :(
Von mySQL / PHP schon eher..
Gruß
Simon
Was verstehst du unter "Stromstoß"? Stärke / Dauer?
Kann es sein dass du eher einen Spannungsimpuls (Am Oszi oder Multimeter
von 0 auf 5V/12V/xV) meinst?
Und ich würds nicht in PHP machen sondern wenn du schon nicht in
Hardwarenähe willst dann in Java oder C#, da sind die Schnittstellen
recht einfach...
Man kann eine Spannung -3V > U > -12V an den Empfangspin des
RS232-Schnitstelle legen. Ein Impuls mit 3V < U < 12V "ausreichender
Länge" (Hängt von der Datenrate ab) wird dann als Startbit interpretiert
und ein Dummy-Byte empfangen. Der Empfang dieses "Bytes" ließe sich dann
auswerten.
...
0 auf 12V
ok dann brauche ich wohl einen "impulszähler" o.ä.
Meine Frage ist ja, ob es möglich ist, diesen ca 0,5 sec impuls
an einen Computer oder Siemens Steuerung zu senden.
Dann einen Eintrag in eine mySQL Datenbank erzeugt.
Da php eher serverseitig ist,
muss es schon mit C oder sonst wie gemacht werden.
Hauptsache es kommt in eine mySQL Datenbank.
...dann könnte ich damit arbeiten.
Gruß
IM Grunde bin ich versucht zu sagen:
Ja, es ist möglich.
Aber mit SQL und PHP schiesst du mit Kanonen auf Spatzen.
Was du im Grunde haben willst ist ein simples Monoflop, welches
regelmässig von der Maschine zurückgesetzt wird und wenn das
Zurücksetzen ausbleibt dann läuft das Monoflop aus und schlägt Alarm.
Da du mit dem Signal sowieso nicht direkt in den PC gehen kannst (über
welche Schnittstelle soll das denn gehen), wäre ein anderer Weg denkbar:
zb einen Arduino die Maschinen überwachen lassen und wenn der
Rücksetzpuls ausbleibt, dann schlägt er Alarm, in dem er zb an den PC
eine Nachricht schickt.
Wie gut man mit PHP zb eine serielle Schnittstelle auf eintreffende
Meldungen überwachen kann, weiß ich nicht. Aber sowas ist ja auch in C#
oder VB schnell zusammengeklickt.
Problematisch an der ganzen Sache sehe ich, dass du von der
Elektrik/Elektronik richtiggehend 0-Ahnung hast. Und da liegt der
Pferdefuss an der ganzen Sache.
Ein statisches Signal (bzw. eines, das sich nicht zu schnell* ändert)
kann man mit den Handshakeleitungen der seriellen Schnittstelle
auswerten.
Dazu lassen sich gleich vier Eingänge verwenden: DCD, DSR, CTS und RI.
Die Schnittstellenhardware kann bei Signalpegeländerungen an diesen
Eingängen einen Interrupt auslösen; sofern das Signal aber sich nicht
allzuschnell ändert, lässt sich der Pegel auch durch schlichtes Pollen
(zyklisches Abfragen) ermitteln.
*) Schnell ist ein relativer Begriff. Als minimale Periodendauer im
Pollbetrieb würde ich hier recht willkürlich 100 msec ansetzen, wenn ein
Windows-Usermode-Programm involviert ist.
Karl Heinz Buchegger schrieb:> zb einen Arduino die Maschinen überwachen lassen und wenn der> Rücksetzpuls ausbleibt, dann schlägt er Alarm, in dem er zb an den PC> eine Nachricht schickt.>> Wie gut man mit PHP zb eine serielle Schnittstelle auf eintreffende> Meldungen überwachen kann, weiß ich nicht. Aber sowas ist ja auch in C#> oder VB schnell zusammengeklickt.>> Problematisch an der ganzen Sache sehe ich, dass du von der> Elektrik/Elektronik richtiggehend 0-Ahnung hast. Und da liegt der> Pferdefuss an der ganzen Sache.
Arduino hört sich gut an. So wie ich das auf dem ersten Blick sehe.
Bestelle mir mal so en "starterKit" und acker mich durch die
Tutorials.... Habe ja Zeit, und lerne schnell :)
Ich berichte in ein paar wochen nochmal.. :)
Übersehe ich da was?
Das sind keine 20 Zeilen Code in irgendeiner Programmiersprache. PHP ist
dafür nicht geeignet. Aber das freie MS Visual C/Basic. Da das ganze
wohl auf einem PC laufen soll, hat der vermutlich eine parallele
Schnittstelle, also kein Problem. Und seriell an CTS/DSR/RI/DCD ginge
auch, da die meisten Schnittstellen durchaus TTL Pegel erkennen und
bereits ab 0V LOW annehmen und +12V sowieso OK ist. Da ist keinerlei
Hardware nötig - maximal ein Widerstand. Und wenn man das ganze
galvanisch sauber aufbauen will, dann kann man noch ein Relais + D + RC
spendieren. Keine 3€. Was soll da ein Arduino?
Florian schrieb:> Übersehe ich da was?
Aus dem Eröffnungsposting:
> Hier laufen Maschinen
MaschinEN
also mehrere, bis viele.
Und so wie das in Betrieben/Produktionshallen nun mal ist, soll das
ganze oft auch einfach erweiterbar sein und man hat lange Kabelwege.
Warum nur denke ich bei einer Zykluszeit von ca. 1 Minute an eine
Produktionshalle, in der 30 Spritzgussmaschinen stehen, die zwar alle
ihren eigenes Störlicht haben, das nur blöderweise der Mann im Leitstand
nicht sieht. Und wenn der alle 15 Minuten seine Runde geht, hat er 15
Minuten Produktionsausfall, wenn eine in den Formsschluss gelaufen ist
oder der Stapler sich verheddert hat.
Hmm. Vielleicht weil ich einige meiner Ferialpraxen da gemacht habe?
Wenn man soweit ist...
...ein C - Programm zu schreiben (sowohl für einen PC als auch für einen
Mikrocontroller), das von einem Mikrocontroller Daten empfängt um diese
dann in eine Datenbank zu schreiben...
...ja wenn man soweit ist, dann kann man ruhig auch ein paar zeichen
über die serielle Schnittstelle senden, das ist nämlich soweit Standard,
dass es eher mehr Mühe kostet Handshake - Signale auszuwerten usw.
Gruß Thilo
Nent sich Watchdog (Wachhund) und ist in µC enthalten. µCs haben oft
auch noch ne RS232. Ein kleine Program in einen µC deiner Wahl und die
Software auf dem PC der über die serielle mit dem µC kommuniziert.
Simon schrieb:> Hier laufen Maschinen wo man jeden Zyklus ( also ca jede minute ein> "Stromstoß" ) der Produktion einmal ein Signal abgreifen könnte.>> Kann so ein Signal ("strom"<oder>"keinStrom"(keine daten)) an eine> Schnitstelle am PC gesendet werden?
Ja, aber um würde ich aus diversen Gründen mit einem Logger machen der
dann die Ereignisse mit Zeitstempel zwischenspeichert an auf Anfrage den
PC überträgt.
All das will der Urposter aber nicht!
Er will nichts senden, sondern nur zählen und eine simple SQL Abfrage
machen, die aus einem einzelnen INSERT besteht. Das ganze scheint ja
nicht einmal zeitkritisch zu sein, wenn er nur alle 3 Minuten agieren
will. Und bei 12 V sind Leitungslängen wohl auch eher unerheblich. Eine
Suche nach MySQL und serielle Schnittstelle für MS Visual C liefert
vermutlich schon den gesamten Code. Wenn Simon von PHP Ahnung hat,
wird's wohl auch schnell mit C klappen. Und wenn nicht, kann er ja
fragen. Aber µC und Arduino oder Monoflop ist mit Kanonen auf Spatzen
schießen für so eine simple Problematik. Aber man kann sicher auch bei
Siemens so was für ein paar tausend Euro kaufen oder sich bei Conrad
umschauen ...
Florian schrieb:> wird's wohl auch schnell mit C klappen. Und wenn nicht, kann er ja> fragen. Aber µC und Arduino oder Monoflop ist mit Kanonen auf Spatzen> schießen für so eine simple Problematik.
Dann erklär mir doch bitte mal, wei du 10 Maschinen an die 4 Eingänge
deiner Seriellen hängst?
Und ein Arduino ist nun wirklich nicht der große finanzielle Aufwand.
Ausserdem handelt es sich offenbar um einen Betrieb. Fällt der Rechner
aus, muss Ersatz her. Und zwar pronto. Blöd nur, wenn der dann keine
Serielle mehr hat.
Hört doch endlich auf, Bastlerlösungen für Dinge vorzuschlagen die 24/7
in einem Betrieb laufen müssen.
Wegstaben Verbuchsler schrieb:> Karl Heinz Buchegger schrieb:>> Ferialpraxen>> wasn das?
:-) Der Plural von Ferialpraxis.
(Gibts das in D nicht? Schüler die in den Sommerferien arbeiten gehen.
Bei mir wars so, dass meine Schule sogar welche verlangt hat)
Karl Heinz Buchegger schrieb:> Gibts das in D nicht? Schüler die in den Sommerferien arbeiten gehen.
doch, hier in D heißt das "Praktikum". Ich vergas, du kamst ja aus einem
Land hinter den 7 Bergen...
Karl Heinz Buchegger schrieb:> Der Plural von Ferialpraxis.>> (Gibts das in D nicht?
Wir haben hier weder Paradeiser noch Schlagobers. Das Herkommen lohnt
also definitiv nicht.
Rufus Τ. Firefly schrieb:> Karl Heinz Buchegger schrieb:>> Der Plural von Ferialpraxis.>>>> (Gibts das in D nicht?>> Wir haben hier weder Paradeiser noch Schlagobers. Das Herkommen lohnt> also definitiv nicht.
Ts. Ts. Was will man schon von einem Land erwarten, die zum Herrn Ober
profan Kellner sagen und in dem man in der Trafik nicht mindestens mit
Herr Professor angesprochen wird.
http://www.ephraimkishon.de/Satire_Reisen.htm#Wien
Ich wollte das ganze just for fun mal testen.
Und es ist wie gedacht simpel. Der Code ist sicher kürzer und eleganter
machbar und verträgt auch noch ein paar Ausnahmeabfänge. Aber im Prinzip
geht es so. Verbindung zur DB herstellen und sobald RI von COM1 auf High
(12 V) geht, wird ein Eintrag generiert.
1
' Demoprogramm, wie man eine MySQL DB ansteuert
2
' Wenn die Ring Leitung von COM 1 Port auf High (12 V) geht, wird ein neuer Datensatz in die DB geschrieben.
3
' Die Verbindungsdaten zur Datenbank sind zu setzen, Zugriff auf die DB muß gewährt sein, die Tabelle muß existieren.
4
' Die MySQL Connection muß auf dem System installiert sein: http://openbook.galileocomputing.de/einstieg_vb_2010/einstieg_vb_2010_kap_08_007.htm#mjf360c6b495d6eac65db44e7b9f658df0
5
' Eine Schnittstelle zwischen Visual Basic und MySQL bietet der Treiber Connector/NET. Sie können ihn auf der Internetseite von MySQL herunterladen
6
' Nach der Installation müssen Sie in dem Projekt, in dem der Treiber genutzt werden soll, einen Verweis auf die Bibliotheken des Treibers einrichten. Hierzu gehen Sie über den Menüpunkt Projekt • Verweis hinzufügen. In der Liste auf der Registerkarte .NET findet sich die Komponente MySQL.Data.
7
' Alternativ über die Registerkarte "Durchsuchen" suchen.
8
'
9
' SQL:
10
' CREATE TABLE IF NOT EXISTS `test` (
11
' `id` int(11) NOT NULL auto_increment,
12
' `zeitpunkt` timestamp NOT NULL default CURRENT_TIMESTAMP,
Stimmt. Danke, ist mir nicht aufgefallen. Also noch den Part
verschieben. Ist auch nicht elegant, jedesmal den Insert-String neu zu
erzeugen und den gleichen Code zweimal zu haben. War eh nur eine ad-hoc
Machbarkeitsstudie.
Ich verstehe, Was Du da vorhast Simon.
Sowas haben wir hier in der Produktion auch schon mal "erleben müssen".
Da wurde an eine uralte Nietpresse, die 12 Nieten in einen
Kupplungsbelag presst (Spezialteil für eine Schlagschere) der Stössel
der Presse abgefragt und bei 12 Abläufen + Schalter für Teil ist raus,
in der Datenbank über Netzwerk der Loszähler um 1 reduziert. (Dafür
haben wir eine 200er SPS von Siemens in den Schrank gebaut und die hat
dann für jeden Hub des Stössel einen Zähler hochgezählt und nach 12 +
Halter leer ein "Fertig" Sgnal über RS-232 abgesetzt. (War dann etwa so:
"Presse1;done;1234sec")
Das hat den Loszähler über ein Script in der Datenbank dann um 1
reduziert.
Du glaubst gar nicht, wie schnell an manchen Tagen die 19
Kuplungsscheiben an diesem Arbeitsplatz genietet waren ... Leider
fehlten dann immer so 5 bis 10 Stk. am Ende vom Tag ...
Du wirst, um Deine Sache mit dem Produktionszähler sicher zu machen,
nicht drumherumkommen, mehrere Schritte der Maschine abzufragen und beim
Überspringen / Zurückspringen in den Schritten, den Zählimpuls zu
sperren.