Forum: Mikrocontroller und Digitale Elektronik Mein Gerät soll sich in SCPI ansprechen lassen, aber.


von Hendi (dg3hda) (Gast)


Lesenswert?

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

von Henk (Gast)


Lesenswert?

Also üblicherweise wird halt gepollt. Aber ich könnte mir sowas wie 
ACK:TEMP oder so vorstellen.

von Hendi (dg3hda) (Gast)


Lesenswert?

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

von Ralph B. (rberres)


Lesenswert?

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

von Hendi (dg3hda) (Gast)


Lesenswert?

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

von Ralph B. (rberres)


Lesenswert?

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

von Hendi (dg3hda) (Gast)


Lesenswert?

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 !

von Ralph B. (rberres)


Lesenswert?

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

von Hendi (dg3hda) (Gast)


Lesenswert?

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

von Ralph B. (rberres)


Lesenswert?

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

von Hendi (dg3hda) (Gast)


Lesenswert?

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

von Ralph B. (rberres)


Lesenswert?

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

von Marcela N. (mnikoli)


Lesenswert?

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
Noch kein Account? Hier anmelden.