benleentje
Golden Member
IK heb mijn lijst met zaken die ik moest doen afgewerkt en heb nu tijd vrij gemaakt om met testcontroller aan de slag te gaan.
Ik heb testcontroller gedownload en kan het open.
Ik heb de website de afgelopen dagen door gelezen maar begrijp er nog niet veel van. Maar dat komt wel als ik een paar goede definities als voorbeeld ga bestuderen.
Ik heb via Google nu wel gezien wat het verschil is tussen scpi en ascii, dat is op de website niet echt duidelijk gemaakt.
Ik heb wel een paar vragen.
Er is niet echt een testcontroller download pagina maar wel een download button. Heb je dan automatisch de laatste versie? en staan dan alle nieuwe definities er ook in?
Wat zijn goede definities om te bestuderen. Op de website word wel de scpi beschreven maar niet hoe je dat via ascii moet doen. Is daar een goede voorbeeld definitie voor waar ik kan zien hoe het met ascii werkt.
Wat zou een goed voorbeeld definitie zijn als basis voor mijn matrix APS-7100 AC source.
1.
Ja, de laatste versie staat altijd daar
2.
- Als je het met Modbus driver gaat doen, dan zou je naar mijn BSide defintie kunnen kijken. Dat is ook een voeding.
- Als je het met de Ascii driver gaat doen, dan zou je naar Keithley 199 definitie kunnen kijken. Ik weet zo niet uit mijn hoofd een voeding die met Ascii driver is gemaakt, de meeste zijn SCPI of Modbus.
Mijn BSide definitie is voor setup menu te gebruiken voor beide.
benleentje
Golden Member
Mijn eerste project is met een ascii driver.
Dan ga ik naar de Keitley 199 defintie kijken. Ik heb die toevallig ook en zo dan wijzigingen kunnen maken om te zien wat het doet.
In preview mode kun je in TestController elk menu zien, zonder de meter aan te sluiten.
Load devices --> Search socket --> Selecteer een device --> Pijltje ernaast en rechter muisknop --> Preview mode.
Bedenkt dat de Keithley 199 met GPIB werkt en jouw voeding niet (die statements zijn dus niet relevant voor je).
benleentje
Golden Member
(die statements zijn dus niet relevant voor je)
Dat was me al duidelijk maar toch bedankt.
Het gaat me nu nog enkel om het bestuderen van definities.
In preview mode kun je in TestController elk menu zien, zonder de meter aan te sluiten.
Ja dat is wel goed. Dan kan je denk ik zien van wat er in de definitie staat en wat er werkelijk op het scherm staat.
Die keithley def is wel goed om te bestuderen. De heer miedema is niet zuinig met zijn opmerkingen. Dit helpt enorm.
Zie ook: https://www.circuitsonline.net/forum/view/message/2600893#2600893
Met dat skeleton kan je snel een connectie maken en dan kan je snel het loggen op gang brengen. De menutjes komen daarna wel...
benleentje
Golden Member
Ja dat is wel een stuk handiger, loop alweer te hard van stapel.
IK was je stappenplan nog niet vergeten, maar wou toch eerst even de website doorlezen om al een beetje bekend te zijn.
Ik zie eigenlijk alleen maar een pagina over scpi en modbus, GPIB en ascii nog niet gevonden.
IK ga morgen weer verder en dan beging ik gewoon met jouw stappen plan. En eerst maar eens de verbinding leggen tussen testcontroller en de voeding.
Waarschijnlijk heb je ook geen mode menu nodig, is ongebruikelijk voor een voeding. Dus #askMode en #cmdMode hoef je je ook niet in te verdiepen.
benleentje
Golden Member
Ik zag iet van een korad voeding voorbij komen dat is ongeveer wat ik wil.
5 waardes uitlezen, V, I, f, P en pf (power factor).
En dan een paar knoppen met output on/off high/low 115 en 230V.
En dan de instellingen voor V, I en f.
Maar wat er precies bedoelt met mode is me niet helemaal duidelijk. maar dat is volgens mij meer voor een DMM waar de DMM echt schakelt tussen stroom of spanningsmeting terwijl mijn voeding die waardes continu meet en niet hoeft te schakelen.
Maar vanmiddag maar eerst de verbinding leggen naar testcontroller.
benleentje
Golden Member
Veel van testcontroller is me nog steeds niet helder.
Zelf kwam ik er niet uit en heb vandaag meet GoogleAI gestoeid.
Het is me wel wat meer duidelijk geworden en we zijn samen tot een definitie gekomen. Echter moet je dan wel iets weten van testcontroller en dan steeds vertellen wat er nog niet goed is. Voor zover ik testcontroller begrijp zou ik nu een werkende definitie moeten hebben maar helaas ik zie in current values niet staan. Geen enkele regel bedoel ik dan ook.
#idString Matrix, APS-7100
#device MatrixAPS7100
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
; --- Uitlezen van waarden (Query) ---
; De RegEx "([.0-9 ]+)" vangt de 5 digits/spaties en negeert de trailing spaces.
; Elke waarde wordt individueel opgevraagd om synchronisatie te garanderen.
#value Voltage V D5 V "([.0-9 ]+)"
:read: ?MVOL
#value Current A D4 A "([.0-9 ]+)"
:read: ?MCUR
#value Power W D5 W "([.0-9 ]+)"
:read: ?POW
#value Frequency Hz D5 Hz "([.0-9 ]+)"
:read: ?MFRE
#value PowerFactor PF D3 "" "([.0-9 ]+)"
:read: ?MPF
; --- Instellen van waarden (SVOL, SFRE, SCUR) ---
; Na elk instelcommando stuurt de voeding een echo terug.
; De :readna: (Read No Action) instructie leest deze echo uit de buffer zodat de volgende meting niet vervuild raakt.
#setV Volt (v)
:write: SVOL (v)
:readna: ; Read No Action: vangt de echo van SVOL op
#setF Freq (f)
:write: SFRE (f)
:readna: ; Read No Action: vangt de echo van SFRE op
#setI Limit (i)
:write: SCUR (i)
:readna: ; Read No Action: vangt de echo van SCUR op
; --- Output controle (PON/POFF) ---
#on :write: PON
:readna: ; Read No Action: vangt de echo "PON" op
#off :write: POFF
:readna: ; Read No Action: vangt de echo "POFF" opVoor de aanvulling dit zijn de commando volgens de handleiding.
Die zijn met een terminal programma allemaal getest.
HEt antwoord is van wat er op dat moment ingesteld en aangesloten was om te testen.
Command Wat het doet Antwoord
?MAXPOW Max vermogen van het type 1050.00
?MAXVOL Max spanning voor dit type 310.0
?MAXCUR Max stroom voor dit type 8.468
?MAXFRE maximale frequntie 500.00
?MINFRE minimale frequentie 45.00
PON De uitgaan aan te zetten PON
POFF De uitgang uit zetten POFF
SVOL 100 Spanning instellen 100.00
SFRE 50 frequentie instellen 50.00
SCUR 4 Stroom instellen 4.000
?SVOL Teruglezen van de ingestelde spanning 200.00
?SCUR Teruglezen van de ingestelde stroom 4.000
?SFRE Teruglezen van de ingestelde frequentie 50.00
?MVOL De gemeten spanning 200.00
?MCUR De gemeten stroom 0.154
?MFRE De gemeten frequentie 50.00
?MPF De gemeten powerfactor 0.6
?MPOW Het gemeten vermogen 21.292
Nou de AI heeft iets verzonnen. Dit is geen valide definitie die ik herken.
Kijk eens in mijn Bside defintie.
Daar zie je de #value statements:
; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6) and {selector}
#value Voltage V D2
#value Current A D3
#value Power W D3
#value VoltageSet V D2
#value CurrentSet A D3
Die worden gelezen met:
; ----- Read measurement ------
#askValues outputVoltage?;outputCurrent?;outputPower?;setVoltage?;setCurrent?
En dat zijn allemaal gedefineerde #scpiCmd (erboven in de definitie). Dat is wel allemaal in Modbus-taal dat is wel de structuur die je kunt hergebruiken of inspireren.
Wat je AI ervan gemaakt heeft klopt helemaal niks van......
#device is geen commando. Heb je wel die skeleton bekeken?
Om te loggen heb je minimaal #value en #askValues nodig (zoals ik hierboven heb getoond).
benleentje
Golden Member
Ja ik heb de skeleton bekeken en begreep er niets van.
#askValues outputVoltage?;outputCurrent?;outputPower?;setVoltage?;setCurrent?
Daar kwam google eerst mee. Maar mijn voeding geeft op elke commando een antwoord terug. En volgens google moet je het dan regel voor regel doen. Vandaar de : readna
mijn voeding geeft ook vaak een spatie in het antwoord. Dus bv 0 . 0 0 spatie spatie en LF CR.
Mijn voeding heeft ook geen idstring tenminste niet in de ASCII mode.
Wat je AI ervan gemaakt heeft klopt helemaal niks van......
Ja dat kan maar zelf snap ik er ook werkelijk niets van. IK denk dat er ook meer ga stoppen het frustreert me al 3 dagen en hoe meer ik van zijn website lees hoe minder ik ervan begrijp. En dat krijg je dit de blinde helpt de domme.
Ik weet ook wel de tekortkomingen van AI maar ik ben daar wel wijzer van geworden. Ik had ook wel het idee dat het onderste deel vanaf #setV niet kan kloppen, maar ik wist het ook niet meer.
Wat ik gewoon niet begrijp is hoe bv #value Voltage V D2, word gekoppelt aan de spanning?
Volgorde koppelt het.
12.0 2.0 24.0 12.0 2.0 zal de response van #askValues zijn bij de Bside.
Elk commando returned dus steeds een van de waardes. De #value definieert de naam van de kolom eenheid en formaat.
benleentje
Golden Member
Als ik in mijn terminal bv dit doe
» ?SCUR ; ?SVOL
« 4.000 Krijg ik enkel maar antwoord op ?SCUR Het is meer dan een antwoord. Als de voeding op bv 200.00V staat ingesteld en ik doe SVOL 500.00 dan is het antwoord 200.00. Maar er is bij een begrepen opdracht altijd een antwoord. Dus dat google komt met aparte regels snap ik wel.
Wat ik ook niet begrijp is wat ik met D3, D4, D5 of SI moet doen.
Als de gemeten waarde bv
?MVOL
1V antwoord 1 . 0 0 spatie spatie CR LF
10V antwoord 1 0 . 0 0 spatie CR LF
100V antwoord 1 0 0 . 0 0 CR LFDat van die spaties weet ik toen ik de antwoorden in hex mode in mijn terminal bekeek.
» SVOL 1.0
« 1.00
» ?MVOL
« 30 2E 30 30 20 20 0D 0A
» ?MVOL
« 0.00 0x20 is een spatie in het antwoord.
[Bericht gewijzigd door benleentje op (20%)]
Die ; wordt niet letterlijk verzonden. De ascii en scpi driver maakt er een cr lf van.
SI alleen als je een exponent terug krijgt. Voedingen meestal niet zoals de Bside
benleentje
Golden Member
Die ; wordt niet letterlijk verzonden.
Dat dacht ik al maar mijn voeding kan er niets mee dat moet apart verzonden worden.
Hieronder met 2 aparte regels, maar krijg maar 1 antwoord terug.
Ik hex mode kan ik zien dat er steeds een CR en LF tussen de regels zit.
» ?MVOL
?MCUR
« 0.00 Dat ik er niets van begrijp is ook niet waar. Maar hetgeen wat ik zoek zie ik niet. Ook niet in de vele voorbeelden die ik bekeken heb. De skeleton werd ik ook niet wijzer van. Maar ik ben met je antwoorden al weet wat wijzer geworden en iets minder gefrustreerd.
benleentje
Golden Member
Dit werkt ook niet
;#idString Matrix, APS-7100
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#eol CRLF
#value Voltage V D5 V
#askValues Voltage ?MVOLOmdat je geen #driver definieert gaat TC uit dat SCPI default is.
Dus dan MOET het antwoord op *IDN? conform SCPI zijn. Bij jouw voeding is dat niet het geval. Als identificatie niet lukt zal TC niet met jouw voeding communiceren.
Gebruik je de debug mode om TC op te starten? Dan zie je dit dus gebeuren.
Je zal dus #driver SCPIx of #driver Ascii in je header moeten zetten. Die #eol kan weg.
Identificatie voor Ascii heb ik uitgelegd hier: https://www.circuitsonline.net/forum/view/message/2604496#2604496
Dan met je met #scpiCmd outputVoltage? txrx? ?MVOL de functie outputVoltage? maken. Dwz als je outputVoltage? uitvoerd, zal TC via de COM poort een ?MVOL naar je voeding sturen en het antwoord opslaan in een value.
Dan zal #askValues outputVoltage? gaan werken. In de commandline kan je ook outputVoltage? typen en dan enter drukken, dan zal de waarde in het log worden gezet.
En met #value Voltage V D5 (zonder de V erachter) het dus in die kolom stoppen.
Als dat werkt kan je de andere commando's mappen naar de instructies die jouw voeding begrijpt. Deze kan je dan aan de #askValues toevoegen met een corresponderende #value. TC zet elk resultaat in de juiste kolom als de volgorde hetzelfde is. (bij een mode is dit anders, maar jouw voeding heeft geen mode dus die laatste V kan je niet gebruiken).
benleentje
Golden Member
Omdat je geen #driver definieert gaat TC uit dat SCPI default is.
Dat zat er eerst wel in maar ik had niet gezien dat het er ook weer uit was verdwenen. Zal wel door de vermoeidheid komen. Soms ben ik na 5 -10 minuten al door mijn energie heen.
Dan moet je met #scpiCmd outputVoltage? txrx? ?MVOL de functie outputVoltage? maken.
Is het zo simpel? IK haalde dat er zelf niet uit dat is het deel wat ik niet begreep. Wat ik dacht is dat hij de variabele outputVoltage aan het versturen was.
Nog wel een vraag betekend in outputVoltage? het ? nog wat?
Ik weet wel dat ik dan txrx moet gebruiken. De voeding verwacht nooit een antwoord terug.
En met #value Voltage V D5 (zonder de V erachter) het dus in die kolom stoppen.
Op zich snap ik dit wel. Er zijn 5 digids. Maar het antwoord van mijn voeding varieert tussen 3 en 5 digids. En telt de punt ook mee als een digid?
benleentje
Golden Member
In debug mode krijg id dit allemaal te zien voordat TC start.
Geen idee of dat normaal is.
Starting
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::loadLibrary has been called by com.fazecast.jSerialComm.SerialPort in an unnamed module (file:/G:/Utils/Testcontroller/TestController.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
java.io.FileNotFoundException: C:\Users\both1\AppData\Local\Temp\jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\AppData\Local\Temp\jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\AppData\Local\Temp\jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\AppData\Local\Temp\jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\.jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\.jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\.jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
java.io.FileNotFoundException: C:\Users\both1\.jSerialComm\2.11.2\jSerialComm.dll (Toegang geweigerd)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:255)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:210)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)
Exception in thread "Scan ports" java.lang.UnsatisfiedLinkError: Cannot load native library. Errors as follows:
[1]: no jSerialComm in java.library.path: C:\Program Files\Java\jdk-25.0.2\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\dotnet\;C:\Program Files\PuTTY\;C:\Users\both1\AppData\Local\Microsoft\WindowsApps;;.
[2]: C:\Users\both1\AppData\Local\Temp\jSerialComm\2.11.2\jSerialComm.dll: Can't load ARM 64-bit .dll on a AMD 64-bit platform
[3]: C:\Users\both1\.jSerialComm\2.11.2\jSerialComm.dll: Can't load ARM 64-bit .dll on a AMD 64-bit platform
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:273)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:295)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:818)benleentje
Golden Member
#idString Matrix, APS-7100
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Ascii
#eol CRLF
#scpiCmd outputVoltage? txrx ?MVOL
#value Voltage V D5 V
#askValues outputVoltage?Ik krijg nog niets te zien.
Bij tabblad commands kan ik nergens iets typen.
Dat komt omdat je nog niet voorbij stap 11 van mijn stappenplan bent.
Nee die log is niet normaal.
Gebruik de J2RE versie van Java, niet de J2SDK versie die je nu gebruikt. Dan doet jSerial het niet.
Anders de rechten goedzetten van jSerial want die laad nu niet in.
#scpiCmd outputVoltage? txrx? ?MVOL met de ? achter txrx want je krijgt een waarde terug van ?MVOL !!!!!!
#value Voltage V D5 zonder spatie spatie V !!!!!
benleentje
Golden Member
Gebruik de J2RE versie van Java, niet de J2SDK versie die je nu gebruikt. Dan doet jSerial het niet.
Dat zijn dingen waar ik geen weet van heb.
Java & OS
A Java must be installed on the machine, for Linux it is important to include GUI/desktop support.
The java must be version 8 (1.8) or later. Java can be found here: Open JDK or Oracle java
Ik heb van oracle een .exe bestand gedownload met de laatse versie en die geinstalleerd. Precies zoals het hierboven staat dat je java moet instaleren.
-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.
met de ? achter txrx want je krijgt een waarde terug van ?MVOL !!!!!!
Volgens mij moet het txrx zijn. De voeding geeft een antwoord maar hoeft geen antwoord terug te krijgen.
11- Fouten analyseren en definitie aanpassen net zolang je een melding krijgt "Found ___ on ___", in mijn geval "Found Yokogawa 7552 on FT232R USB UART (COM3)"
Voorlopig zie ik niets in TC en kan ook op het tabblad command ook niets doen. Ik kan daar geen commando's typen.
[Bericht gewijzigd door benleentje op (13%)]
Lees dit even: https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-…
jSerial doet alle communicatie, als dat niet werkt kun je niet verder met TestController.
Als je geen ? achter zet zal TC geen value vullen.
benleentje
Golden Member
Die laatste link gaat verder niet over java of over wat je dan wel moet installeren.
Heb je niet een link naar de juiste .exe download van java?