benleentje
Golden Member
Het eerste stapje is gezet.
;; jSerialComm version: 2.11.2
;; Start thread for: 192.168.2.30 - Circutor-CVM144
;; Found Circutor-CVM144 on 192.168.2.30
V1?
;; CVM144: Tx <V1?>
;; CVM144: Tx <holdingL? 0x0000 0x0001 /10>
;; 192.168.2.30: Tx: 01 03 00 00 00 02 C4 0B
;; 192.168.2.30: Rx: 01 03 04 00 00 08 8D 3D 96
;; CVM144: Rx <218.9>
;; 218.9En 218.9V klopt ook precies.
Ik kreeg het eerst niet werkend in TC en ik wou al op EEVblog gaan vragen. Toen zag is dat radzio! nog op connected stond. En blijkbaar kan de CVM144 maar 1 verbinding tegelijk aan.
[Bericht gewijzigd door benleentje op (12%)]
Je Circutor is max 9600baud. Dat de Lantronix sneller kan prima maar het geheel wordt er niet sneller van.
Goed om te zien dat je al waardes in TC krijgt.
Ik gebruik OpenModScan als tool om Modbus op Windows uit te lezen en het probleem van 2 programma naar 1 device ken ik uit ervaring... het werkt niet 
benleentje
Golden Member
Je vroeg op EEVblog hoe je via holding? 0 7 je dan 7 waarden moet uitlezen?
JE moet dan 7 #value onder elkaar hebben en dan kan je dat via ask value in 1 keer uitlezen.
Voorbeeld voor het inlezen van 20 Waarden 0x0014 = 20 decimaal
#scpiCmd Actual1? holdingL? 0x0000 0x0014 /10 /1000 /1 /1 /100 /10 /1000 /1 /1 /100 /10 /1000 /1 /1 /100 /1 /1 /1 /100 /100
#value V1 V D1
#value A1 A D3
#value W1 W D0
#value var1 var D0
#value PF1 - D2
#value V2 V D1
#value A2 A D3
#value W2 W D0
#value var2 var D0
#value PF2 - D2
#value V3 V D1
#value A3 A D3
#value W3 W D0
#value var3 var D0
#value PF3 - D2
#value W3P W D0
#value varL3P var D0
#value varC3P var W D0
#value cos phi - D2
#value PF3P - D2
Daarachter kan ik voor elke waar het deeltal opgeven maar *1 of *10 mag ook.
Allen ik loop tegen 1 probleem aan. Dat ik de volgende regel met nog meer waarden niet kan uitlezen op deze manier. Ook niet als ik meer #value toevoeg
Je Circutor is max 9600baud. Dat de Lantronix sneller kan prima maar het geheel wordt er niet sneller van.
Volgens de handleiding zou die
"baud rate 1.200 – 2.400 – 4.800 – 9.600 – 19.200" aan moeten kunnen. Maar dat instelmenu, wat je via powerup en 3 knoppen indrukken krijgt, is de instelling menu voor baudrate verdwenen. Ik kan zelfs geen ID adres meer instellen. Dat laatste is ook niet nodig om er al een uniek ip adres is. En ik had gehoopt dat de instelling van de baudrate via de lantronix chip zou gebeuren maar dat werkte helaas niet. Het is en blijft dan 9600 baud.
[Bericht gewijzigd door benleentje op (13%)]
Je hebt een andere handleiding gevonden als ik dan.
Voor die 7 waardes achter elkaar snap ik maar ik had ook een test nodig per waardes pm error conditie vast te stellen. Met de nieuwe aanpak is due er niet meer.
De volgorde van #value snap ik, ik heb jou dat bij je Matrix avontuur nog zelf uigelegd.
[Bericht gewijzigd door flash2b op (18%)]
benleentje
Golden Member
Sorry dan ik dacht ook al dat je dat wist en heb ik je vraag niet goed begrepen.
[Bericht gewijzigd door benleentje op (40%)]
Is het gelukt met 1 scpiCmd die eerst 20 registers uitleest en dan nog 1 voor de rest van de registers ?
En dan 1 #askValues met die 2 calls erin die alles bij elkaar brengt ?
Ik moet hetzelfde doen voor mijn NT28 en NT48 definities om ze sneller te maken.
Laat even weten of het bij jou is gelukt.
benleentje
Golden Member
Ja het is gelukt in 6 calls lees ik nu 88 waardes uit. Ik heb 6 cals nodig omdat niet alle register adressen op elkaar aansluiten
Er waren een paar #value regels waarbij ik per ongeluk een spatie in de naam had gezet of een spatie teveel. Deze regels worden dan overgeslagen en de volgende #value regel word dan gebruikt. daarom leek dat er 2 waarden extra waren maar er waren gewoon te weinig geldige #value regels.
Ik krijg nu 88 waarden binnen.
De meter heeft ook voor bijna elke waarde een min en max waarde maar die ga ik niet uitlezen want TC doet zelf dat al berekenen in de currentvalues.
Eigenlijk is de definitie al klaar want het is alleen uitlezen en je kan niets instellen qua parameters. Dat instellen kan alleen direct in het apparaat zelf.
Er zijn nog wel 2 relais die je wel kan uitlezen en als ik het goed begrepen hebt ook nog aan en uit zetten. Dat moet ik nog doen en uitzoeken. Als dat lukt dan zou je bv met 2 verschillende loads kunnen werken door enkel een relais aan of uit te zetten. Ik zet er dan nog wel een relais achter want de interne relais zijn maar klein.
benleentje
Golden Member
Dit heb ik nu
#idString Circutor,CVM-144,
#name Circutor-CVM144
#handle CVM144
#driver Modbus
#subdriver RTU
#port 502
;#baudrate 9600
#author Benleentje
;ask for 20 values what is de maximum for the device
#scpiCmd Actual1? holdingL? 0x0000 0x0014 /10 /1000 /1 /1 /100 /10 /1000 /1 /1 /100 /10 /1000 /1 /1 /100 /1 /1 /1 /100 /100
#scpiCmd Actual2? holdingL? 0x0028 0x0014 /10 /10 /10 /10 /10 /10 /10 /10 /10 /10 /1 /1 /1 /1 /1 /1000 /1000 /1 /1 /1
#scpiCmd Actual3? holdingL? 0x0050 0x0003
#scpiCmd HarmonicsL1? holdingL? 0x01F4 0x000F /1000 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1
#scpiCmd HarmonicsL2? holdingL? 0x0212 0x000F /1000 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1
#scpiCmd HarmonicsL3? holdingL? 0x0230 0x000F /1000 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1
;value 1 - 20
#value V1 V D1
#value A1 A D3
#value W1 W D0
#value var1 var D0
#value PF1 - D2
#value V2 V D1
#value A2 A D3
#value W2 W D0
#value var2 var D0
#value PF2 - D2
#value V3 V D1
#value A3 A D3
#value W3 W D0
#value var3 var D0
#value PF3 - D2
#value W3P W D0
#value varL3P var D0
#value varC3P var D0
#value cos_phi - D2
#value PF3P - D2
;value 21 - 40
#value frequency Hz D1
#value VL1L2 V D1
#value VL2L3 V D1
#value VL3L1 V D1
#value THD_V1 % D1
#value THD_V2 % D1
#value THD_V3 % D1
#value THD_I1 % D1
#value THD_I2 % D1
#value THD_I3 % D1
#value Active_energy Wh D0
#value Inductive_reactive varLh D0
#value Capacitive_reactive varCh D0
#value Apparant_power_3P kVA D0
#value Power_demant_L1 Pd D0
#value Current_3P A D3
#value Current_Neutral A D3
#value Analog1 mA D0
#value Analog2 mA D0
#value Analog3 mA D0
;value 41 - 43
#value Residual_current mA D0
#value Power_demant_L2 Pd D0
#value Power_demant_L3 Pd D0
;values harmonics L1
#value Fundamental_L1 A D3
#value Harmonic2_L1 % D0
#value Harmonic3_L1 % D0
#value Harmonic4_L1 % D0
#value Harmonic5_L1 % D0
#value Harmonic6_L1 % D0
#value Harmonic7_L1 % D0
#value Harmonic8_L1 % D0
#value Harmonic9_L1 % D0
#value Harmonic10_L1 % D0
#value Harmonic11_L1 % D0
#value Harmonic12_L1 % D0
#value Harmonic13_L1 % D0
#value Harmonic14_L1 % D0
#value Harmonic15_L1 % D0
;values harmonics L2
#value Fundamental_L2 A D3
#value Harmonic2_L2 % D0
#value Harmonic3_L2 % D0
#value Harmonic4_L2 % D0
#value Harmonic5_L2 % D0
#value Harmonic6_L2 % D0
#value Harmonic7_L2 % D0
#value Harmonic8_L2 % D0
#value Harmonic9_L2 % D0
#value Harmonic10_L2 % D0
#value Harmonic11_L2 % D0
#value Harmonic12_L2 % D0
#value Harmonic13_L2 % D0
#value Harmonic14_L2 % D0
#value Harmonic15_L2 % D0
;values harmonics L3
#value Fundamental_L3 A D3
#value Harmonic2_L3 % D0
#value Harmonic3_L3 % D0
#value Harmonic4_L3 % D0
#value Harmonic5_L3 % D0
#value Harmonic6_L3 % D0
#value Harmonic7_L3 % D0
#value Harmonic8_L3 % D0
#value Harmonic9_L3 % D0
#value Harmonic10_L3 % D0
#value Harmonic11_L3 % D0
#value Harmonic12_L3 % D0
#value Harmonic13_L3 % D0
#value Harmonic14_L3 % D0
#value Harmonic15_L3 % D0
#askValues Actual1? ; Actual2? ; Actual3? ; HarmonicsL1? ; HarmonicsL2? ; HarmonicsL3?Kijk dat wilde ik weten. Ik lees nu voor mijn NT17B07 ook met één commando 7 waardes in 1x uit.
Dit stond niet al te duidelijk in de documentatie vond ik. Als weet dat het er is kan je het wel begrijpen maar ik wist niet dat het kon.
Je doet er in je definitie ook goed aan door
#port 502 te veranderen in #port 502 com
Dan kunnen mensen zonder lantronix ook je definitie gebruiken. Vermeld wel in de comments dat je met een lantronix hebt getest.
Dan nog #value cos_phi - D2
Die waarde kan ook negatief worden en je deze moeten uitlezen met holdingSL?
Omdat die in het midden zit zal je weer moeten splitsen.
benleentje
Golden Member
Dit stond niet al te duidelijk in de documentatie vond ik. Als weet dat het er is kan je het wel begrijpen maar ik wist niet dat het kon.
Ja dat maakt het ook lastig. Gelukkig stond dat wel weer heel duidelijk in mijn handleiding voor de CVM144.
Dat van de port ga ik toevoegen en voor de cos phi moet ik dan apart uitlezen. Maar gelukkig komt die maar een keer voor. PF is toch wel altijd positief?
#port 502 te veranderen in #port 502 com
Ja dat kan ik doen.
Ik heb gisteren nog opgezocht wat het verschil is tussen modbus TCP en modbus rtu over TCP.
Eigenlijk is er maar 1 verschil
- Modbus tcp de crc checsum en overhead gebeurt op TCP ip niveau en in het bericht naar het apparaat zelf zitten geen crc bytes toegevoegd.
- modbus rtu over TCP. Op tcp/ip niveau gebeurt nog steeds de crc checksum en de overhead. En in het rtu bericht zitten nu wel de crc bytes toegevoegd.
Aangezien bij mij de crc bytes er al in zitten kan dat ook gewoon via een com poort gebeuren
[Bericht gewijzigd door benleentje op (42%)]
benleentje
Golden Member
#port 502 te veranderen in #port 502 com
Dat werkt, in die zin dat ik nu kan kiezen tussen socket of serial. Maar ik kan het niet testen.
Aangezien ik 32bit registers uitlees en de waarde al heel heel erg groot moet worden voordat bit 32 een keer een "1" word heb ik alles op holdingSL? gezet.
PS de relais uit en aanzetten is nu ook toegevoegd. Als ik me niet vergis is de definitie nu al klaar. OP naar de peaktech
[Bericht gewijzigd door benleentje op (18%)]
benleentje
Golden Member
Een handleiding van een apparaat vinden lukt vaak wel. Maar het vinden van de communicatie instructie is heel moeilijk.
Maar ik heb ook geen idee wat ik moet intypen in google.
IK zoek nu voor de Fluke Hydra? maar wat moet ik na fluke hydra meegeven?
Ik weet nu al wel dat het SCPI is.
IK heb wel al iets gevonden maar nog geen complete handleiding voor scpi in pdf formaat.
Voor de peaktech heb ik een E-mail gestuurd en voor zera VCS320 moet ik dat nog ook doen.
[Bericht gewijzigd door benleentje op (11%)]
Probeer te zoeken met "Apparaat Naam" + "Programming Manual" in Google. Zo heb ik onderstaande links gevonden in een minuut.
Fluke Hydra:
https://testworld.com/wp-content/uploads/user-manual-fluke-2635a-hydra…
Die is SCPI en Fluke kennende ook echt helemaal volgens de spec.
Peaktech 2275 = Beich CH9823 ?
https://www.scribd.com/document/862382690/BEICH-ch9800-series-DC-Elect…
Die laatste moet je 1 op 1 vergelijken welke Peaktrech welke Beich is (want er zijn meerdere modellen). Echter een eigen formaat met ascii strings. Voor programmeren heb je niks aan de Peaktech handleiding.
Omdat de Fluke SCPI is met een *IDN? kan je in TC ook laten scannen voor new devices naar de COM poort (AR488) waar hij aan zit. Dan zal TC terug komen met de inhoud van de *IDN? response en kan je een definitie template genereren en zal die na 2x klikken connecten. Erg handig. Omdat het SCPI is hoef je geen scpiCmd commando's te schrijven. Dus meteen #askValue #askMode en cmdSetup voor de menutjes.
benleentje
Golden Member
Bedankt ik kan voorlopig weer vooruit en ik zal de Circutor updaten volgens jouw suggesties op EEVblog.
benleentje
Golden Member
De Circutor een update gegeven.
En daarna getest met een SMPS voeding.
Blijkbaar kan de powerfactor wel negatief worden want met een aangesloten trafo waren ze positief en met een aangesloten SMPS waren ze negatief.
Inductieve vermogen in var is dan ook negatief
IK zie nu ook veel hogere waardes bij de harmonischen.
Ik ben dan ook erg blij met je suggesties vooral die voor de negatieve waarden. 
Nu alles voluit geschreven is het inderdaad een stuk duidelijker. IK had eigenlijk gewoon strak de handleiding gevolg en dat vrij exact overgenomen.
Ik had ook beter moeten weten over PF. 
Google:
Yes, a power factor (PF) value displayed on a meter can be negative, though it is not a traditional concept. A negative power factor, typically ranging from 0 to -1, indicates that active power is being returned to the source (generation) rather than consumed (load), such as when a solar system feeds energy back to the grid.
benleentje
Golden Member
Het kan ook weer een net andere implementatie van Circitor zelf zijn.
De peaktech reageert via een terminal op *IDN?
» *IDN?
« PEAKTECH LOAD-150W ,VER3.9.0315
[Bericht gewijzigd door benleentje op (16%)]
Maar niet in het juiste formaat.
Het moet zijn
; Modify *IDN? response so that it conforms proper SCPI: Make,Model,Serial#,Version
Dus je moet #driver SCPIx gebruiken en
#modifyIDN replace(replace(value," ",","),",VER","Serial#,")
Het Serial# hierboven vervangen door het nummer op de sticker van de Peaktech.
Maar volgens mijn zoek toch is het geen SCPI gelijkend protocol.
benleentje
Golden Member
Het lukt in ieder geval wel in TC om verbinding te krijgen. Moet ik dan nog steeds modify *IDN? doen.
;; jSerialComm version: 2.11.2
;; Start thread for: COM5 - Peaktech P2275
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <PEAKTECH LOAD-150W ,VER3.9.0315> 50 45 41 4B 54 45 43 48 20 20 4C 4F 41 44 2D 31 35 30 57 20 2C 56 45 52 33 2E 39 2E 30 33 31 35
;; Found Peaktech P2275 on FT232R USB UART (COM5)
KLopt, maar het formaat klopt niet.
Dus je moet je gegenererde txt file editten en mijn statements toevoegen.
En dan re-connecten. Had hetzelfde met mijn Owon LCR2020.
Doe maar een *IDN? van de command line, en je ziet waar het fout gaat.
benleentje
Golden Member
Er gaat niets fout met *IDN? en ik krijg ook een
;; Found Peaktech P2275 on FT232R USB UART (COM5)
;; jSerialComm version: 2.11.4
;; Start thread for: COM5 - Peaktech P2275
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <PEAKTECH LOAD-150W ,VER3.9.0315> 50 45 41 4B 54 45 43 48 20 20 4C 4F 41 44 2D 31 35 30 57 20 2C 56 45 52 33 2E 39 2E 30 33 31 35
;; Found Peaktech P2275 on FT232R USB UART (COM5)
*IDN?
;; P2275: Tx <*IDN?>
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <PEAKTECH LOAD-150W ,VER3.9.0315> 50 45 41 4B 54 45 43 48 20 20 4C 4F 41 44 2D 31 35 30 57 20 2C 56 45 52 33 2E 39 2E 30 33 31 35
;; P2275: Rx <PEAKTECH LOAD-150W ,VER3.9.0315>
;; PEAKTECH LOAD-150W ,VER3.9.0315
Als ik jouw veranderingen doorvoer dan kan TC het juist niet meer vinden dus ik laat het zo.
KLopt, maar het formaat klopt niet.
Toch heeft TC daar geen probleem mee.
Maar als ik bv #idString PEAKTECH LOAD-150W, zonder de spatie achter 150W doet dat gaat het wel fout.
[Bericht gewijzigd door benleentje op (10%)]
Mijn formule klopt net getest, zie hieronder
:setvar: IDN="PEAKTECH LOAD-150W ,VER3.9.0315"
#scpiCmd test? value?
:readmath: replace(replace(IDN," ",","),",VER","Serial#,")
;; DM18C04: Tx <test?>
;; DM18C04: Tx <value?>
;; DM18C04: Rx <PEAKTECH,LOAD-150W,Serial#,3.9.0315>
;; PEAKTECH,LOAD-150W,Serial#,3.9.0315Je moet dan wel aanpassen
#idString PEAKTECH,LOAD-150W,
#driver SCPIx
#modifyIDN replace(replace(value," ",","),",VER","Serial#,")
Dan is alles compatibel, ik zeg dit om je te helpen.
benleentje
Golden Member
Ik begrijp om eerlijk te zijn niet waarom ik het moet aanpassen als het gewoon werkt.
Met jouw formule direct gekopieert krijg ik dit
;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
;; FT232R USB UART (COM5) Device "PEAKTECH,LOAD-150W," do not match answer: "PEAKTECH,,LOAD-150W,Serial#,3.9.0315"
#idString PEAKTECH,LOAD-150W,
#name Peaktech P2275
#handle P2275
#port com
#baudrate 9600
#driver SCPIx
#modifyIDN replace(replace(value," ",","),",VER","Serial#,")