Ik heb de oude java voor de zekerheid helemaal verwijdert en daarna de versie van je link installeert.

De output van TC is nu:
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Ik kan nu bij command ook de opdracht outputValtage type maar krijg dan als antwoord invalid device

[Bericht gewijzigd door benleentje op (11%)]

...
Blijkbaar is idstring toch verplicht en die weer aangezet. Krijg dan met opstarten geen fouten meer maar ik zie verder ook niets

huidige programma
#idString Matrix, APS-7100
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver ASCII
#eol CRLF

#scpiCmd outputVoltage? txrx ?MVOL
#value outputVoltage V D3
#askValues outputVoltage?

[Bericht gewijzigd door benleentje op (98%)]

Ha benleentje,

Bericht vanuit het zonnige zuiden :-)

Er zit nog een fout in je code, waar al eerder door de uiterst geduldige flash2b op gewezen is. Lees nog eens goed deze post...

Aangezien de syntax van al die #scpiCmd commando's hier in de TestController documentatie prima worden uitgelegd, zou je dat toch ook zelf moeten kunnen uitpuzzelen...

Let goed op de details. B.v. een spatie op de verkeerde plek kan de werking van een commando veranderen.

groet, Gertjan.

Je doelt dan op txrx. Dat moet zonder de ? zijn.

De voeding verwacht namelijk geen antwoord terug.
tx >> TC zend een commando en er is geen antwoord

txrx >> tx van TC en rx = antwoord van de voeding.

txrx? >> tx van Tc, rx = antwoordvoeding en ? is weer van TC een antwoord terug op het antwoord van de voeding.

PS ik snap nu de verwarring want normaal is ? dat TC een antwoord verwacht. Maar deze commando reeks is dan toch anders.

Echter heb ik zeker wel naar flash2b geluisterd en heb ook txrx? geprobeert.

Volgens mij is de echte fout nog.
#idString Matrix, APS-7100

TC wil de ID string opvragen krijgt dan geen antwoord en sluit dan de verbinding weer af.

Ik ben nu met een nieuwe blik en zorgvuldiger de website aan het doornemen. Het is nogal overweldigend. Nu gaat het wel een stuk beter en snap al wat meer. Wil nu gaan opzoeken hoe die idstring wel juist moet.

prima worden uitgelegd

Ik ben niet zo thuis in software en voor mij is het vaak niet duidelijk wat er bedoelt word. Ik heb vaak het idee dat ik chinees aan het lezen ben. :? Grapje, maar ik mis wel meer uitleg.

SI3..SI15x where x is on of _munpfazy

Dat moest ik toch echt even door Google halen. ;)

[Bericht gewijzigd door benleentje op (12%)]

Ha benleentje,

Je maakt een denkfout.

Het probleem zit in deze regel:

#scpiCmd outputVoltage? txrx ?MVOL

Dat moet zijn:

#scpiCmd outputVoltage? txrx? MVOL

(Ik ga er van uit dat "MVOL" het correcte native commando is om het output voltage op te vragen.)

Je denkfout is:

De voeding verwacht namelijk geen antwoord terug.

Niet de voeding, maar JIJ (TestController) wil antwoord terug. :-)
Met deze #scpiCmd maak je het commando "outputVoltage?" aan, dat aan de voeding vraagt wat de uitgangsspanning is. En dan wil je graag het antwoord terug vernemen :-)
Vandaar txrx?

groet, Gertjan.

tx cmd - Send the cmd to the device, do not expect any answer.
txrx cmd - Send the cmd to the device, waits for an answer, but do not return the answer.
txrx? cmd - Send the cmd to the device, waits for an answer and returns the answer.

Volgens bovenstaande lijst moet ik txrx hebben.

?MVOL is het commando wat naar de voeding gestuurd moet worden.

Echter het probleem zit hem volgens mij in dit

;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Stopping thread.

Ha Benleentje,

?MVOL is het commando wat naar de voeding gestuurd moet worden.

Dan wordt die regel om dat #scpiCmd te definiëren:

#scpiCmd outputVoltage? txrx? ?MVOL

Volgens bovenstaande lijst moet ik txrx hebben.

Je moet wel degelijk txrx? gebruiken:

txrx? cmd - Send the cmd to the device, waits for an answer and returns the answer.

Het commando is juist bedoeld om het antwoord van de voeding terug te krijgen!!

.

Even iets over SCPI logica in het algemeen, om je het gebruik van ? duidelijker te maken.

- Een commando zonder vraagteken is bedoeld om een opdracht te sturen, iets in te stellen.
- Een opdracht met een vraagteken aan het eind is een vraag, bv een waarde of status opvragen.

Dus bijvoorbeeld in jouw geval:
outputVoltage waarde : stel de uitgangsspanning in op "waarde".
outputVoltage? : vraag de waarde op, waar de uitgangsspanning op ingesteld staat.

(Dat zijn dus 2 verschillende commando's, die je allebei apart met een #scpiCmd regel moet aanmaken)

.

Maar nu het probleem dat je als eerste moet oplossen:

Echter het probleem zit hem volgens mij in dit

;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Klopt.
Bovenstaand stukje log geeft aan dat TestController helemaal geen antwoord krijgt op z'n *IDN? vraag. (TC wacht op antwoord, tot een time-out, en geeft dan op)
Dus waarschijnlijk is er helemaal geen verbinding.....

Probeer eerst met een terminal programma verbinding te krijgen met je voeding. Daarmee kun je de verbinding parameters testen. Als je dan wél een correct antwoord op *IDN? terug kunt krijgen, dan de gevonden instellingen toepassen in TestController.

Het probleem kan ook iets simpels zijn, zoals dat Windows inmiddels een andere COM poort heeft toegekend aan de USB uitgang die je gebruikt. (Of je gebruikt een andere USB poort, of een andere USB-> RS-232 kabel, of de chip in die kabel is een kloon die geen uniek ID heeft voor Windows).

Allemaal te checken in de device manager (apparaatbeheer). Kijk bij de COM poorten welke poort er bij komt / verdwijnt als je je USB->RS-232 inprikt / er weer uit haalt. Dat moet dan de juiste zijn.

Succes, Gertjan.

Je voeding ondersteund geen *IDN? maar ?MODEL. Dit is niet standaard zoals TC veracht dus je zult iets in je definitie moeten zetten om dit aan TC te 'vertellen'.

Je zal deze twee commando's in je definitie moeten zetten, zie https://www.circuitsonline.net/forum/view/message/2604496#2604496 (ik melde dit al eerder)

Eerst met je terminal programma de response ?MODEL bepalen en de inhoud in die regel kopieren.

Dan kan je voorbij stap 11 van mijn stappenplan.

Je voeding ondersteund geen *IDN? maar ?MODEL.

Knap dat je dat gevonden hebt in mijn papieren handleiding staat daar niets over.


» ?MODEL
« ACSOUACE

ik melde dit al eerder

Dat klopt, maar het is nogal (te)veel voor me om te verwerken.

Ik ben nu de website voor de 2de keer aan het doorlezen en nu met de informatie van jouw eerder blijft er meer hangen en begrijp er nu al een stuk meer van.

dus je zult iets in je defintie moeten zetten om dit aan TC te 'vertellen'.

Dat was al het plan omdat stukje te gaan onderzoeken hoe dat moet. En nu met ?MODEL zal dat iets makkelijker gaan.
Ik denk dat ik maar eens de laatste model info op de website van de fabrikant moet gaan raadplegen wat daar nog weer instaat wat niet in mijn papieren handleiding staat.

Op vrijdag 6 maart 2026 08:10:55 schreef miedema:
Je moet wel degelijk txrx? gebruiken:
[...] Het commando is juist bedoeld om het antwoord van de voeding terug te krijgen!!

Ik heb in een definitie van AMREL die heel erg uitgebreid is dat terug gevonden. Maar ik blijf er ook bij dat de uitleg op de website verkeerd is. O-)
Dank voor je geduld van jullie beide. _/-\o_ _/-\o_

Probeer eerst met een terminal programma verbinding te krijgen met je voeding.

Dat lukt en ik heb alle ondersteunde commando's geprobeert.
IK weet dat er aan het einde van de waarde extra spatie's kunnen staan en dat het antwoord altijd word afgesloten met een CRLF.

Ook geeft de voeding niet altijd een reactie op antwoord, maar als het een commando begrepen heeft en uit heeft kunnen voeren geeft het als antwoord wat actie hij heeft uitgevoerd.

Je voeding ondersteund geen *IDN? maar ?MODEL. Dit is niet standaard zoals TC veracht dus je zult iets in je definitie moeten zetten om dit aan TC te 'vertellen'.

Ik ben nog zoekende of er ondertussen al overheen gelezen maar nog niet gevonden hoe dat moet.
Ik weet dat ik iets gelezen hebt over hoe je het antwoord van <*IDN?.> kan modificeren maar kan het niet meer vinden.

De #idString regel kan je ook niet uitzetten en zelf als je die uitzet dan woord <*IDN?.> nog steeds gestuurd.

Ik heb wel gevonden an je BSide definitie over #verifyDevice maar dat werkt ook niet. TC moet een antwoord krijgen op <*IDN?.>.

Dus ga nog verder zoeken hoe dat moet.

De code die ik tot nu toe heb.

#idString Matrix, APS-7100
#verifyDevice ACSOUACE model?
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver ASCII
#eol CRLF

#scpiCmd Voltage? txrx? ?MVOL
#scpiCmd model? txrx? ?MODEL

#value Voltage V D3

#askValuesMathFormat trim(value)
#askValues Voltage?

Trim is omdat er in het antwoord spaties na de waarde kunnen zitten maar weet nog niet of dat zo goed staat. Moet dat voor of na #askValues?

Ik heb nu de laatse nieuwe handleiding en er staan 3 commando's meer in waaronder: ?MODEL SSHIFTL en SSHIFTH. Die laatste 2 zijn voor HIGH or LOW output max 150V @8,4A of max 310 @4,2A
Je zou haast denken wat staat er nog meer niet in. :? O-)

Je moet het stukje code in het licht blauw van mijn link in je definitie kopieren. En de string aanpassen naar ACSOUACE

***** MOET DIT GEEN ACSOURCE zijn ***** Typfout ????

Kopieer dit in je definitie er je zal een connectie verkrijgen !

; -----  Check instrument model  ------
#verifyDevice "ACSOUACE" model?

; -----  Identify instrument  ------
#scpiCmd model? txrx? ?MODEL
:string:

TC zal ipv *IDN? een #verifyDevice doen. Deze stuurt een model? en die stuurt een ?MODEL naar je voeding (over de com poort) en je voeding geeft ACSOUACE terug wat gelijk is met het antwoord van #verifyDevice. Dan is de handshake ok.

#idString Matrix, APS-7100
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver ASCII
#eol CRLF

; -----  Check instrument model  ------
#verifyDevice "ACSOUAC" model?

; -----  Identify instrument  ------
#scpiCmd model? txrx? ?MODEL
:ACSOUACE:

#scpiCmd Voltage? txrx? ?MVOL

#value Voltage V D3

#askValuesMathFormat trim(value)
#askValues Voltage?
Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

En als ik idstring weglaat

#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver ASCII
#eol CRLF

; -----  Check instrument model  ------
#verifyDevice "ACSOUAC" model?

; -----  Identify instrument  ------
#scpiCmd model? txrx? ?MODEL
:ACSOUACE:

#scpiCmd Voltage? txrx? ?MVOL

#value Voltage V D3

#askValuesMathFormat trim(value)
#askValues Voltage?
Starting
Definition is not valid: Matrix APS-7100
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

[Bericht gewijzigd door benleentje op (35%)]

Zet "scan ports" eens uit op die tab.

En check of het echt ACSOUACE en niet ACSOURCE

Het MOET exact kloppen !!!

Fouten:
- :ACSOUACE: is FOUT, hoe heb je dat verzonnen ?? :string: moet het zijn...
- #idString is verplicht...
- #eol CRLF is fout... moet #eol /r/n zijn...
- #name mist...
- #driver Ascii moet het zijn (niet ASCII)...

Het moet exact kloppen, anders begrijpt TC het niet.

Dit zou moeten werken mits ACSOUACE het antwoord is op ?MODEL. Controleer dit nogmaals met je terminal programma !!

#idString Matrix, APS-7100,
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Ascii
#eol /r/n

; -----  Check instrument model  ------
#verifyDevice "ACSOUACE" model?

; -----  Identify instrument  ------
#scpiCmd model? txrx? ?MODEL
:string:

#scpiCmd Voltage? txrx? ?MVOL

#value Voltage V D3

#askValues Voltage?

Zet "scan ports" eens uit op die tab.

Staat uit

- :ACSOUACE: is FOUT, hoe heb je dat verzonnen ?? :string: moet het zijn...

Je moet het stukje code in het licht blauw van mijn link in je definitie kopieren. En de string aanpassen naar ACSOUACE

JE zegt hierboven string aanpassen aan ACSOUACE en dan doe ik dat.

- #driver Ascii moet het zijn (niet ASCII)...

Ik zie beide als ik naar andere definities kijk.

IK heb nu exact jou stukje programma gekopieerd en dit als resultaat.

Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Het moet exact kloppen, anders begrijpt TC het niet.

Het gekke is het maakt niets uit wat er staat ik heb altijd hetzelfde resultaat. TC komt nooit verder dan dat hij de *IDN stuurt.
Alles wat daarna gebeurt voert TC niet eens meer uit

Zit ik niet tegen een bug aan te kijken?

Wat ik zie in de log kan niet bij de definitie horen.

Na iedere aanpassing van de definitie moet je TC afsluiten en opnieuw opstarten.

Als je dit al doet dan denk ik dat je op twee plaatsen een definitie hebt staan.

Ik sluit TC elke keer af en start deze opnieuw.

Als je dit al doet dan denk ik dat je op twee plaatsen een definitie hebt staan.

Ja ik had nog een "Matrix APS 7100 test" staan. Maar het gekke is dan wel als ik "Matrix APS 7100" de idString weghaalde dat ik een melding kreeg van een verkeerde definitie.

;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; : Tx <txrx? ?MODEL
:string:>
;; COM3: Tx: <?MODEL/r/n> 3F 4D 4F 44 45 4C 2F 72 2F 6E
;; COM3: Rx: timeout, in buffer: 41 43 53 4F 55 41 43 45
;; COM3: **Device do not match** <null>
;; FT232R USB UART (COM3) Device "Matrix, APS-7100," do not match answer: "**Device do not match** <null>"
;; COM3: Close
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Check de response van ?model nog eens met je terminal programma... je bent er bijna

anders haal die eol regel eens weg

is het ACSOUACE met E aan einde ?

of ACSOURCE ?

in de definitie ontbreekt de E

Als je dit al doet dan denk ik dat je op twee plaatsen een definitie hebt staan.

Ik had ook wel een beetje hetzelfde idee en was al aan het kijken of het ik wel in /device wegschreef.

Terminal


» ?MODEL
« ACSOUACE
» ?MODEL
« ACSOUACE

Zonder #EOL

Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; : Tx <txrx? ?MODEL
:string:>
;; COM3: Tx: <?MODEL.> 3F 4D 4F 44 45 4C 0A
;; COM3: Rx: timeout, in buffer: 41 43 53 4F 55 41 43 45
;; COM3: **Device do not match** <null>
;; FT232R USB UART (COM3) Device "Matrix, APS-7100," do not match answer: "**Device do not match** <null>"
;; COM3: Close
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Heb je die E in je definitie gezet?

De hex klopt al nl

...

[Bericht gewijzigd door benleentje op (100%)]

#verifyDevice "ACSOUACE" model?

De E aan het einde.

Kan je op je voeding in het menu de CR LF aanzetten?

MEt corrrecte ACSOUACE

Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; : Tx <txrx? ?MODEL
:string:>
;; COM3: Tx: <?MODEL.> 3F 4D 4F 44 45 4C 0A
;; COM3: Rx: timeout, in buffer: 41 43 53 4F 55 41 43 45
;; COM3: **Device do not match** <null>
;; FT232R USB UART (COM3) Device "Matrix, APS-7100," do not match answer: "**Device do not match** <null>"
;; COM3: Close
;; Stopping thread for: COM3 - Matrix APS-7100
;; COM3: Close

Je voeding moet zijn antwoord afsluiten en dat doet ie niet.