benleentje
Golden Member
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%)]
benleentje
Golden Member
...
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%)]
miedema
Golden Member
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.
benleentje
Golden Member
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%)]
miedema
Golden Member
Ha benleentje,
Je maakt een denkfout.
Het probleem zit in deze regel:
#scpiCmd outputVoltage? txrx ?MVOLDat 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.
benleentje
Golden Member
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.
miedema
Golden Member
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? ?MVOLVolgens 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.
benleentje
Golden Member
Je voeding ondersteund geen *IDN? maar ?MODEL.
Knap dat je dat gevonden hebt in mijn papieren handleiding staat daar niets over.
» ?MODEL
« ACSOUACEik 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.
benleentje
Golden Member
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. 
Dank voor je geduld van jullie beide.

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.

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.
benleentje
Golden Member
#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: CloseEn 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?benleentje
Golden Member
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: CloseHet 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.
benleentje
Golden Member
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: CloseCheck 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
benleentje
Golden Member
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.
benleentje
Golden Member
Terminal
» ?MODEL
« ACSOUACE
» ?MODEL
« ACSOUACEZonder #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#verifyDevice "ACSOUACE" model?
De E aan het einde.
Kan je op je voeding in het menu de CR LF aanzetten?
benleentje
Golden Member
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