Hallo Forum, ich habe einen funktionierenden Thermostaten gebaut, der auch noch nen Drucksensor hat, und kann den auch wunderbar über die RS232 fernsteuern. Damit den jeder benutzen könnte will ich jetzt statt des eigenen Befehlssatz SCPI-Steuerung implementieren. Leider beschränken sich meine Erfahrungen damit auf ein Multimeter, dessen Steuerungs- und Messkommandos ich einfach umsetzen kann. (IDN, RST, MEAS:TEMP?, MEAS:PRESS?, solche Sachen um genauer zu sein.) Jetzt kann aber dieses Gerät mehr als nur lesen, sondern auch schreiben, und zwar eine Zieltemperatur in den Regler. Daraus würde ich jetzt erstmal ein APPLY:TEMP Zielwert bauen. Gut so ? Dann würde der Regler loslegen und den Zielwert anfahren. Problem: Die Host-Software müsste dauernd, mit MEAS:TEMP?, pollen ob der Regler inzwischen erfolgreich war. Gibt es eine Möglichkeit, zusätzlich zu einem APPLY:TEMP, nach dem das Gerät wieder ansprechbar wäre, dafür zu sorgen daß der Regler mitteilt, wenn der Zeilwert stabil eingeregelt ist ? Ich dachte an ein zusätzliches Kommando wie APPLY:THERMOSTAT Zieltemperatur das erst dann antwortet, wenn der Regler im Sollbereich ist. Ist das sinnvoll, oder was ist da üblich ? Gruß, Hendrik
Also üblicherweise wird halt gepollt. Aber ich könnte mir sowas wie ACK:TEMP oder so vorstellen.
Hi Henk, danke für die Antwort. Dann bleibe ich bei Polling - dann kann die Software im Host-System selbst "entscheiden", unter welchen Umständen der Thermostat als eingeregelt betrachtet wird (Abweichung, Haltedauer.) Finde die Lösung auch einfacher. Gruß HD
Hallo Hendi ( schön das man sich auch mal hier trifft ) Der IEC-Bus stellt noch ein Befehl zur Verfügung das nennt sich "SPE" Das ist glaube ich ein Mehrdrahtbefehl. Es ermöglicht das Gerät an den Rechner ein Interupt zu senden. ( Halt ich hab hier was für dich , poll mich mal an !).Dazu wird meine ich das 5.Bit gesetzt. Geht also in der Reihenfolge ( nach dem am Gerät Seiell-Poll aktiviert ist ). Gerät meldet sich mit einem SRQ. Der Rechner fragt ein Gerät nach dem anderen ab, wer den SRQ gesetzt hat. Das Gerät meldet dann das er was vorliegen hat.Der Rechner fragt das Seriellpollregister ab und entscheidet dann was er machen soll. Wenn der Vorgang nicht andauernd passiert, entlastet dieses Verfahren den Bus, weil nur dann ein Datentransver sattfindet wenn notwendig. Wenn du aber nur selten Daten abrufen willst, dann bleibe besser beim üblichen pollen. Viel Spass beim Programmieren. Darf man fragen mit welcher Software im Steuerechner du dein Gerät abfragst? Oder verwendest du kein IEC-Bus? Für die SCPI Sprache ist soviel ich weis ein Standart vereinbart worden an dem sich zwar alle mehr oder weniger halten, aber jeder Hersteller kreiert dann noch neue eigene Befehle die noch nicht standarisiert sind. ( Was eigentlich nicht der Sinn der Sache war ). Kannst dich ja mal melden wenn du Lust hast. Das Packet-Relais in Trier ist leider abgeschaltet worden. Bin also zur Zeit nicht in Packet QRV. Ralph DF6WU
Mönsch Ralph, das erklärt das dann ja ! :) Also, GPIB kann das Gerät mangels Hardware nicht, momentan läuft es per RS232, wird aber wahrscheinlich noch um Telnet ergänzt, wenn der Kunde das so mag. Ich habe hier mal diverse Queries und Antworten geschickt, wie sie bis jetzt sind. Du kannst mich gerne verbessern, denn das Multimeter hier auf der Arbeit, das SCPI macht, ist grade im Produktiveinsatz und ich komme nicht dran. Also denn mal ein Beispiel für die Ergebnisse des heutigen Tages, die Sensoren lesen alle 1,0. ---8<--- schnipp ---8<---- *IDN? Mein Broetchengeber,HIMS-Kalibrierkammer,0 *RST +0,"No error" :SYST:STAT? Mein Broetchengeber HIMS-Kalibrierkammer Kundendienst (06021) 34970 (C) Mein Broetchengeber 2009 APPLY:TEMP 37.0 +0,"No error" APPLY:TEMP ente -104,"Data type error" APPLY:TEMP -0.1 -222,"Data out of range" APPLY:TEMP 60.1 -222,"Data out of range" meas:press? 1.0 meas:temp? 1.0 conf? 37.0 syst:rem +0,"No error" syst:loc +0,"No error" :APPLY:TEMP Extra für Ralph: Katze ! -104,"Data type error" ---8<--- schnapp ---8<---- Kann ich das so lassen, oder kann ich mich dem Standard noch weiter annähern ? Grüße, Hendi
Mehrdrahtbefehle hast du schon richtig mit einen * am Anfang versehen. *rst ist ein Resetbefehl des Gerätes. *IDN war OK Sys:stat? ist ein Stringbefehl und kein Mehrdrahtbefehl ist somit richtig. Prinzipiell werden Befehle die eine Antwort des Gerätes auslösen sollen mit einen Fragezeichen abgeschlossen. Apply:temp würde ich jetzt erwarten das du eine Temperatur dem Gerät übermitteln willst. Apply:Temp? würde das Gerät mit seiner gemessene Temperatur antworten. In Basic sähe das so aus 10 Output 701;"Apply:Temp? 20 Enter 701 Feld 30 print feld 40 end mit dem apply:temp? wird das Gerät übermittelt was es senden soll und gleichzeitig als Sprecher eingestellt. mit dem Befehl enter wird das Gerät aufgefordert den String zu senden und in die Variable Feld zu schreiben. Zu den String. Ich würde bei Stringbefehle wie Apply:Temp usw nur Zahlen übermitteln, weil sonst der arme Programmierer sonst die Mühe hat die Zahlen wieder von den Einheiten zu trennen. Er will die Zahlen ja mathematisch weiter verarbeiten. Man kann allerdings alternativ das Gerät auch anweisen auch die Einheiten mit zu senden ( wenn man es denn will ). Keinesfalls gehört nach jeder Antwort ein No Error dabei. Es sei denn die Antwort ist tatsächlich ungültig. Dann kann man so verfahren wie du es gemacht hast. Bei Agilent hat es sich übrigens eingebürgert immer nur die ersten 4 Zeichen auszuwerten. Man könnte als schreiben apply aber auch appl Übrigens könnte man ein Befehl implementieren Help? Das Gerät antwortet mit sämtlichen verfügbaren Befehlsgruppen wie Aplly IDN usw Help:Apply? das gerät antwortet mit sämtlichen Befehle und syntax zu dem Befehl Aplly. Ist für den Programmierer manchmal praktisch, wenn er das Handbuch zum Gerät nicht greifbar hat. so dann mal viel Spass beim Programmieren. Ralph
APPLY:TEMP 37.2 oder so setzt den Zielwert des Thermostaten in °C, schon richtig. die überschüssigen No Error hab ich weggemacht, nur bei jenem Befehl gelassen, da da ja was beim parametrieren schiefgehen kann im Gegensatz zu z.B. den SYST: und so. Aber ansonsten: Juhu, wenn jemand ohne weitere Kommentare bei dem Mitschnitt durchblickt kanns so schlecht nicht sein ! Danke !
Hendi Naja ich habe mit Basic auch so meine Probleme wo ich schier am verzweifeln bin. Im Grunde genommen bin ich ein abgrundtief schlechter Programmierer. Aber den IEC-Bus habe ich schon mal mit einem Logikanalyser zerbröselt, weil ich nicht verstanden hatte wie ein Gerät sich ansprechen lässt. Nach 6 monatiger Forschung habe ich es aber irgendwann zum laufen bekommen. Irgendwie! ich weis auch nicht so genau warum. Komme mich mal besuchen wenn du mal wieder nach trier kommst Ralph
Also ich bin mit dem Zwergebnis jetzt zufrieden, muss sich nicht mehr hinter AgiFlukeRS verstecken :) Wenn das Ding auf der Ethernet außer http auch telnet kann, bin ich zufrieden. :) Sind die Umrechnungs-EPROMs eigentlich noch im Einsatz ? Grüße HD
Hallo Hendi Nein sind sie nicht mehr, werden aber nochmal. Den Swob3 für den das Voltmeter bestimmt war habe ich nicht allzulange behalten.Ich habe mittlerweile aufgerüstet. bei mir werkelt jetzt ein Swob5 mit dem zugehörigen digitalen Bildspeicher BDS. Auch sonst hat sich bei mir einiges getan was Messtechnik betrifft. Siehe http://www.et.fh-trier.de/diplom/Team/berres/downloadbereich/neue%20Bilder%20Werkstatt/ Bist du fit in Basic? Ralph
Programmierfit bin ich einigermaßen, aber hauptsächlich in einem Pasknalldialekt. Deshalb funktioniert jetzt auch Telnet :) Das Pascal macht aber nix, so groß sind die Unterschiede zu BASIC ja eh nicht. Schön zu hören das es die EPROMs noch gibt :) HDA
naja das Progamm um das es sich dreht wurde von einen Freund der nicht mehr in Trier wohnt um 1995 geschrieben und ist um die 1800 Zeilen lang, + ein paar ausgelagerte Unterprogramme die bei Bedarf geladen werden. Da möchte ich eine Erweiterung machen, und blicke nicht ganz durch. Deswegen frage ich. Sowas ist aber vermutlich kein Sonntagsnachmittagsprojekt. Ralph
Hallo zusammen, ich habe auf meinen mikrocontroller das tcpip-stack von microchip am laufen. jetzt möchte ich mit meinem mikrocontroller ein oszilloskop ansteuern. das oszilloskop arbeitet als server und versteht SCPI-Befehle. Habt ihr tipps, wie diese SPCI befehle an das Oszi über tcpip gesendet werden können. Gibt es source code??? viele dank schon mal. Gruß mnikoli
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.