benleentje
Golden Member
Kan je op je voeding in het menu de CR LF aanzetten?
Nee. Maar de voeding geeft ook als antwoord COM3: Rx: timeout, in buffer: 41 43 53 4F 55 41 43 45 = ACSOUACE.
Dus blijkbaar is alleen AO genoeg en is /r/n niet nodig.
#idString Matrix, APS-7100,
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Ascii
#eol /n
; ----- Check instrument model ------
#verifyDevice "ACSOUACE" model?
; ----- Identify instrument ------
#scpiCmd model? txrx? ?MODEL
:string:
#scpiCmd Voltage? txrx? ?MVOL
#value Voltage V D3
#askValues Voltage?Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; : Tx <txrx? ?MODEL
:string:>
;; COM3: Tx: <?MODEL/n> 3F 4D 4F 44 45 4C 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
MEt #eol /n komt er een 2f = / en 6e = n bij. Maar in het buffer zie ik hetzelfde antwoord staan. IK snap even niet wat er nu precies gebeurt
eol is voor zenden niet ontvangen. probeer eens \ ipv /
Morgen kan ik je weer verder helpen.
[Bericht gewijzigd door flash2b op (27%)]
benleentje
Golden Member
#eol \r\n
geeft
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 0D 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
De tx string klopt nu exact.
Het antwoord in het buffer klopt ook exact. Wat mis ik?
#verifyDevice "ACSOUACE" model?
#verifyDevice ACSOUACE model?
Ik heb beide geprobeerd dat gaf ook geen verschil
Morgen kan ik je weer verder helpen.
IS goed. Bedankt voor je geduld zover. Ik ben de laatste weken niet op mijn best wat concentratie betreft.
Nog wel een vraagje waarom komt er een rx timeout? Dat hoort toch ook niet?
benleentje
Golden Member
Er zit een bug in de APS-7100, denk ik?
Dit zie ik in een terminal
» ?MODEL
« 41 43 53 4F 55 41 43 45
» ?PON
» ?MVOL
« 30 2E 30 30 20 20 0D 0A Het antwoord op ?MVOL is met een 0D 0A wat \r\n is.
Het antwoord op ?Model is anders dat is zonder \r\n aan het einde.
Echter verwacht TC dat wel en wacht het op 1 van die 2 karakters. Als \r of \n ontvangen is dan is dat het einde van het bericht en word het antwoord in het buffer verwerkt in TC. Dat gebeurt nu niet en er komt een timeout en TC verwerkt het antwoord <null. Wat logisch is want hij mist het einde van het bericht en moet het als niet compleet beschouwen.
Echter is dit theorie gebaseerd op verschillende antwoorden van google. Waarvan ik denk dat die klopt want die timeout hoort er niet te zijn.
IK kan toch ook ?MAXPOW opvragen dat is ook uniek voor dit model?
Dat geeft wel een antwoord met \r\n aan het einde.
Eindelijk is het gelukt
Starting
;; jSerialComm version: 2.11.2
;; Start thread for: COM3 - Matrix APS-7100
;; COM3: Set params: 9600
;; : Tx <txrx? ?MAXPOW
:string:>
;; COM3: Tx: <?MAXPOW..> 3F 4D 41 58 50 4F 57 0D 0A
;; COM3: Rx: <1050.00> 31 30 35 30 2E 30 30
;; Found Matrix APS-7100 on FT232R USB UART (COM3)#idString Matrix, APS-7100,
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Ascii
#eol \r\n
; ----- Check instrument model ------
#verifyDevice "1050.00" maxpow?
; ----- Identify instrument ------
#scpiCmd maxpow? txrx? ?MAXPOW
:string:
#scpiCmd Voltage? txrx? ?MVOL
#value Voltage V D3
#askValues Voltage?Ik zal de bug in ieder geval gaan melden bij eleshop. Niet dat ik een oplossing daarvoor wil maar het is wel zo netjes lijkt me.
Gefeliciteerd, je kunt nu loggen !
Dat ?MODEL geen termination heeft, 0D 0A, is een bug in je voeding.
Kan je ze gelijk vragen of ze "ACSOUACE" ook aanpassen naar "ACSOURCE".
Zoals je hebt opgelost hebt is prima, dat werkt ook met ?MAXPOW en het is een vaste waarde.
Je gebruikt nu Voltage? als functie en Voltage als kolom naam in TC. Dat is prima maar bedenk dat je straks ook set voltage en read voltage hebt. Vandaar dat ik outputVoltage? en setVoltage? gebruik bij voedingen.
Maar je kunt nu verder met de andere commando's toe te voegen en meer gegevens te loggen. Zie mijn stappenplan.
Daarna.... kun je een Setup menu gaan maken.
miedema
Golden Member
Gefeliciteerd benleentje!
.
Kan je ze gelijk vragen of ze "ACSOUACE" ook aanpassen naar "ACSOURCE".
Bedenk wel, dat als de fabrokant dit inderdaad gaat doen, dat je dan in een situatie komt waarin een deel van de voedingen de oude, en een deel de nieuwe firmware heeft.
En dus een deel niet meer zal werken met je TestController definitie....
Is het oplossen van een schoonheidsfoutje het creëren van die extra complicaties waard?
groet, Gertjan.
Maar het werkt nu toch ook al niet zonder <CR> <LF> in het antwoord die de andere commando's wél teruggeven.
Over compabiliteit met TC en definities, dat is nu ook al zo. Kijk maar naar de Kunkin KP load's voor de V4 heeft HKJ zelfs een andere driver gemaakt.
Zo'n Chinese fabrikant gaat dit toch niet aanpassen is mijn verwachting. Matrix is een sticker plakker, niet de fabrikant. Dus er zitten een hoop schakels tussen.
Ook bij gerenomeerde fabrikanten zitten er fouten in interface commando's, maar met deze Matrix hadden ze beter het ? achter het commando kunnen zetten wat meer SCPI is en *IDN? toevoegen, dan was een definitie maken een stuk makkelijker geweest.
Bij mijn nieuwe Owon OWH genereerde TC zelf de eerste definitie zonder dat ik enig programmeer werk hoefde te doen. Dus het kan wel allemaal.
Nu benleentje weer vooruit kan, wil ik drie nieuwe TestController definities melden.
1. Eletechsup N4IOA01 1CH 0-20mA Current DAC module
Dit is een programmable current source op basis van een MindMotion MM32F0010A1T ARM Cortex M0 48MHz micro controller.
2. Eletechsup N4DAC02 2CH 0-5V + 0-10V Voltage DAC module
Dit is een dual programmable voltage source op basis van een MindMotion MM32F0010A1T ARM Cortex M0 48MHz micro controller.
3. Eletechsup N4DBA06 2CH 0-5V/0-10V Voltage + 1CH 0-20mA Current ADC + 2CH 0-5V/0-10V Voltage + 1CH 0-20mA Current DAC + Digital Input/Output module
Dit is een dual programmable voltage source + programmable current source + ADC (en ook nog DI en DO) op basis van een Novoton MS51FB9AE MCS51 1T 16MHz micro controller.
De MindMotion processor van de eerste twee modules is héél erg snel, veel sneller als de Novoton van de laatste. Het is jammer dat Eletechsup daar ook niet een MindMotion heeft gebruikt.
Deze modules zijn zeer veelzijdig. Met de laatste kan je een "Poor Man's SMU" mee bouwen want hij kan zowel meten als uitsturen tegelijkertijd.
De plaatjes geven een indruk wat deze modules te bieden hebben en welke zaken kunnen worden ingesteld met TestController.
Alles staat nu een paar dagen proef te draaien 24x7 en binnenkort zal ik mijn definities vrijgeven en op EEVBlog posten.
benleentje
Golden Member
Deze modules zijn zeer veelzijdig. Met de laatste kan je een "Poor Man's SMU" mee bouwen want hij kan zowel meten als uitsturen tegelijkertijd.
Ik heb een aantal voedingen die een analoge programming poort hebben. Dan heb je bv 2x 0 - 10V om de stroom en spanning in te stellen en 2 x 0 - 10V uitgang om terug te lezen. Ik wou al zoiets zelf maken maar blijkbaar is dat er al.
Is het oplossen van een schoonheidsfoutje het creëren van die extra complicaties waard?
Het plan is alleen om het te melden meer niet. Ik verwacht eigenlijk niet eens dat ze voor de oude serie dat gaan oplossen.
Ik zag wel dat eleshop alweer een andere versie van de handleiding heeft, die is 2 of 3 versies nieuwer als mijn handleiding. Dus wel dedrijf die zijn best doet.
Kan je ze gelijk vragen of ze "ACSOUACE" ook aanpassen naar "ACSOURCE".
Zoals je hebt opgelost hebt is prima, dat werkt ook met ?MAXPOW en het is een vaste waarde.
Ja maar ook uniek per type. En met ACSOUACE kan je niet het verschil zien tussen een 7100 of een 7200. En nu kan ik in de definitie alvast een #metadef toevoegen voor de verschillende type met de opmerking dat ze niet getest zijn.
Maar je kunt nu verder met de andere commando's toe te voegen en meer gegevens te loggen. Zie mijn stappenplan.
Ja ik heb er nu weer vertrouwen in.
en *IDN? toevoegen, dan was een definitie maken een stuk makkelijker geweest.
Ja zou moeilijk is dat niet. Maar ik ben er verder erg blij mee en het is best een betaalbaar apparaat en dat vind ik belangrijker. En via de ASCII interface kan ik alles bedienen wat ik wil. De bediening op het apparaat zelf werk niet lekker. Na 2 seconden moet je klaar zijn en dat kan je helaas niet instellen.
Het is natuurlijk raar dat ?MODEL niet een specifiek model terug geeft. Dat zou logischer zijn dus dat het "APS-7100" terug zou geven, dat is ook wat ik dacht. "ACSOUACE" of "ACSOURCE" is niets zeggend zeker als er meerdere modellen zijn.
Maar efin, het is wat het is en je kunt verder met TestController en je definitie daar gaat het om.
De Eletechsup modules hierboven zijn heel goed gedocumenteerd, dat maakt het schrijven van een definitie een stuk fijner.
miedema
Golden Member
Op zaterdag 7 maart 2026 11:18:18 schreef flash2b:
Nu benleentje weer vooruit kan, wil ik drie nieuwe TestController definities melden.1. Eletechsup N4IOA01 1CH 0-20mA Current DAC module
2. Eletechsup N4DAC02 2CH 0-5V + 0-10V Voltage DAC module
3. Eletechsup N4DBA06 2CH 0-5V/0-10V Voltage + 1CH 0-20mA Current ADC + 2CH 0-5V/0-10V Voltage + 1CH 0-20mA Current DAC + Digital Input/Output module
Ha flash2b,
Dat zijn een paar leuke modulen!
Vooral interessant omdat er allerlei apparaten zijn die met een spanning (bv 0..10V) of stroom aangestuurd kunnen worden.
Al die apparaten kunnen nu dus, via zo'n module, door TestController bestuurd worden!
groet, Gertjan.
benleentje
Golden Member
Op zaterdag 7 maart 2026 19:43:51 schreef flash2b:
Het is natuurlijk raar dat ?MODEL niet een specifiek model terug geeft. Dat zou logischer zijn dus dat het "APS-7100" terug zou geven, dat is ook wat ik dacht. "ACSOUACE" of "ACSOURCE" is niets zeggend zeker als er meerdere modellen zijn.
MAxpow zegt gelukkig wil iets over elk type. En dat is ook wat je wil. Je wilt weten dat je met het correcte apparaat verbonden bent. In hex mode kan er iets meer met de voeding en dan kan je het serienummer opvragen en is er een autrange instelling, maar veel voordeel zie ik er verder ook niet in.
Nog wel een vraag daarover? Kan ik in 1 definitie schakelen tussen hex en ascii of is dat beter om ze apart te houden als het ooit zover komt? Ik weet dat ik de voeding dan ook apart moet instellen maar ben er nog niet uit of ik dat wil gaan maken.
Als de voeding opstart zie je op het 7 segment display ook ACSOUACE staan want daar kan je de R niet maken. Dus op 1 of andere maniers hebben ze dat ook maar overgenomen.
Nee je kan Ascii en Modbus (hex mode zoals jij het noemt) niet mixen. Fijne van Modbus is dat alles een nummer is dat scheelt veel conversie. Je moet alleen eerst de registers 'doorgronden'. Executie snelheid ligt een stuk hoger ook.
benleentje
Golden Member
Haha is dat Modbus ik dacht dat weer iets anders was. Maar het zijn inderdaad registers die je uitleest. Hoewel ik de handleiding daarin wel duidelijk vind.
Ga eerst maar eens de ASCII definitie afmaken want daar kan je 90% van de functie ook mee doen. Eigenlijk kan in ASCI alleen het alarm register en het serie nummer niet worden uitgelezen. En voor nu is snelheid niet van belang eerst maar eens er mee leren werken.
[Bericht gewijzigd door benleentje op (10%)]
De nieuwste Eletechsup module definities staan op EEVBlog: https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-…
miedema
Golden Member
Ha flash2b,
Leuk dat je de lineariteit van je N4IOA01 meet!
Maar de huidige grafiek is in feite zo grof dat alles er lineair uit zie 
Voeg er een math curve aan toe met Iuit - Iin, dan kun je afwijkingen zo nauwkeurig zien als je zelf wilt.
groet! Gertjan.
benleentje
Golden Member
Ik ben er tot zover heel erg blij mee.

Maar ik ben er nog niet helemaal.
* benleentje Laat maar ik ben eruit. TC is ook hoofdletter gevoelig en had Set_current en Set_Current gebruikt
Ik zit alleen nog dat de radio knoppen en hetgeen eronder staat niet met elkaar overeenkomen.
Ik heb al iets met :update: geprobeert maar snap dat nog niet helemaal.
Hier een stuk je van mijn code
#CMDSetup buttons Range
:write: Range
:tip: turn range to low or high
:update: Set_current
off SSHIFTH
on SSHIFTLDat werkt enkel op de onderste set_current regel maar niet op de radio knoppen die ook set_current heet.
IK vermoed dat ik dan op nog meer plaatsen :update: moet zetten maar voor nu alleen even dit stukje oplossen. Als ik dat weet dan lukt de rest denk ik ook wel.
Geef je radio buttons een andere naam met Set ervoor en die andere zonder laat die de nummer input updaten. En andersom natuurlijk.
benleentje
Golden Member
@flash2B hetwerkt nu goed. Ik had wat type foutjes gemaakt en TC is hoofdlettergevoelig. TC doet als de namen precies hetzelfde zijn dat zelf automatisch updaten maar dan moet je niet de ene keer het met een hoofdletter schrijven en dan weer niet.
Nu werkt het goed en komen de waarde overeen.
Het enige wat ik nog wil is ipv
#CMDSetup buttons Output
:write: output
:tip: turn output on or off
off POFF
on PONDaar een buttonsOn van maken.
Echter kan ik PON en POFF niet teruglezen maar ik kan wel de ?MVOL opvragen en als dat 0,0V is de lamp aanzetten. Maar met formules snap ik het nog niet hoe dat werkt.
Ik moet dan een : read: Voltage doen dan de waarde daarvan als die kleiner dan 0,1V is dat er de rode lamp uit gaat.
* benleentje Dat is ook weer gelukt.
Als de gemten spanning boven 0,1V is dan word het groen.
Ik zou het liever naast de andere output willen hebben. Maar ben hier al erg tevreden over.
Nu nog metadef's toevoegen voor alle andere modellen. Had dat gisteren al gedaan maar heb daarin iets verkeerd gedaan. Ga het zo nog een keer proberen.
[Bericht gewijzigd door benleentje op (16%)]
benleentje
Golden Member
TC is al gelijk leuk even een meting gedaan via een 230V SMPS voeding die het op 50V ook al wil doen, het opstarten dan.
Van 12 tot ca 20 sec zie je de stroom langzaam oplopen. Dan hoor je een klik in de smps en dan word die wakker en gaat de ventilator aan.
Hier dezelfde SMPS dan eerst op 230V.
Start gelijk op.
Dan op 25V blijft nog werken.
Op 10V lukt het nog even maar slaat dan af.
Ik log de set waardes ook mee is de #askValues.
Dus voor jouw setVoltage, setCurrent en setFrequency. Dan kan je mooi de response zien hoelang het bijvoorbeeld duurt voordat Voltage naar setVoltage gaat.
benleentje
Golden Member
De defintie voor ASCII is nu helemaal klaar.
IK wil nu een nieuwe definitie schrijven voor modbus?
Maar daar heb ik toch wel hulp bij nodig. Volgens mij is wat ik moet sturen naar acsource geen modbus. Het lijkt er op maar het is voor zover ik begrijp te teveel verschillend.
Ik moet litle edian en een sum of first 7 bytes gebruiken.
Dat laatse heb ik uitgezocht en dat zou dan moeten zijn
#checksum sum8 binLH 0 0 0 0
Ik heb nu een stukje code geschreven en TC accepteert het.
#idString Matrix, APS-7100,
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Modbus
#checksum sum8 binLH 0 0 0 0#disableWriteSingle 1
#author Benleentje with a lot of help from Miedema and Flash2b
#scpiCmd Current? holdingL? 0x5260
#checksum sum8 binLH 0 0 0 0#value Current A D3
#askvalues Current?
;; APS7100: Tx <Current?>
;; APS7100: Tx <holdingL? 0x5260>
;; COM3: Tx: 01 03 52 60 00 02 D4 AD
;; COM3: Tx: 01 03 52 60 00 02 D4 AD
;; APS7100: Rx Timeout
Echter de TX string komt niet overeen met wat ik volgens de handleding zou moeten sturen.
01 03 52 60 00 02 D4 AD
01 52 60 00 00 00 00 + sum8
01 = device ID klopt
03 = Holding register, echter mijn voeding verwacht daar:
0x52 = read
0x57 = write
0x58 = reset
60 = register dat ik wil lezen.
4x 00 omdat ik wil lezen
Dan wat ook anders is, is dat min voeding litle edian wil zien en voor zover ik begrepen heb is modbus Big edian. Maar opzich lijkt me dat geen probleem.
Maar dat de commando opbouw anders lijkt me wel een probleem?
En de sum8 zie ik ook niet in de TX string staan, of war zijn de waarden 00 02 D4 AD dan? Sum8 is precies 1 byte lang, het is de soms van alles waarden en allen de rest byte word gebruikt.
benleentje
Golden Member
Omgezet naar Ascii werkt ook niet
#idString Matrix, APS-7100,
#name Matrix APS-7100
#handle APS7100
#port com
#baudrate 9600
#driver Ascii
#author Benleentje with a lot of help from Miedema and Flash2b
#scpiCmd Current? txrx? 0x01 0x52 0x60 0x00 0x00 0x00 0x00 0xB3
#value Current A D3
#askValues Current?In terminal
» 01 52 60 00 00 00 00 B3
« 01 52 60 00 00 00 00 B3
» 01 52 60 00 00 00 00 B3
« 01 52 60 00 00 00 00 B3
» 01 52 60 00 00 00 00 B4
» 01 52 60 00 00 00 00 B3
« 01 52 60 00 00 00 00 B3
» 01 52 60 00 00 00 00 B3
« 01 52 60 9B 00 00 00 4E
» 01 52 60 00 00 00 00 B3
« 01 52 60 97 00 00 00 4A
» 01 52 60 00 00 00 00 B3
« 01 52 60 97 00 00 00 4A
» 01 52 60 00 00 00 00 B3
« 01 52 60 97 00 00 00 4A
In TC
Current?
;; APS7100: Tx <Current?>
;; APS7100: Tx <txrx? 0x01 0x52 0x60 0x00 0x00 0x00 0x00 0xB3>
;; COM3: Tx: <0x01 0x52 0x60 0x00 0x00 0x00 0x00 0xB3.> 30 78 30 31 20 30 78 35 32 20 30 78 36 30 20 30 78 30 30 20 30 78 30 30 20 30 78 30 30 20 30 78 30 30 20 30 78 42 33 0A
;; COM3: Rx: timeout
;; APS7100: Rx <null>
;; null
» 01 52 60 00 00 00 00 B3
Als ik dit stuur via de terminal dan krijg ik het antwoord terug.
B3 aan het aan het einde is sum8 wat ik er voor nu even hard coded heb in gezet.
TC stuurt dezelfde string toch? Ik heb daar geen zicht op wat er precies gestuurd word ik zie geen extra terminal karakters erachter.
IK zie al wat er fout gaat 0x01 word als ASCII verstuurt en dat word dan 30 78 30 31.
#scpiCmd Current? txrx1Bin? 01526000000000B3
Werkt ook niet die stuurt ook alles als Ascii door.