Query Instrument - non-numeric value

Hi,
i'm writing data of voltage and current to an instrument with scpi commands and it works fine. Now i'm trying to print the meassured data at the power supply controller via a 'query instrument'-block to a display, but receiving the error Response from instrument was non-numeric.
These are my configurations:
Is it possible to handle the response from the instrument with the 'query instrument' block?
Or is it possible to insert MATLAB-Code to my simulink model? Because with matlab code i received the meassured data, but i dont want to do it all by script, but with the simulink model.
THANKS IN ADVANCE!

 Respuesta aceptada

Harald
Harald el 30 de Jun. de 2023

0 votos

Hi Tobias,
to answer the final part: you can use the MATLAB Function block to incorporate MATLAB code into Simulink models.
Best wishes,
Harald

4 comentarios

Tobias Kammler
Tobias Kammler el 30 de Jun. de 2023
Editada: Tobias Kammler el 30 de Jun. de 2023
So, the MATLAB-Code i used to read back and print the voltage is:
fprintf(serialObject,'MEasure:VOltage?');
V = fscanf(serialObject);
disp(V);
If i put this in a function block, the SCPI-command 'MEasure:VOltage?' has to be the input for the matlab function or do i use the function block without input, just the output "U"?
My idea for the code inside the block is
function Voltage = U
fprintf(serialObject,'MEasure:VOltage?');
V = fscanf(serialObject);
U = disp(V);
and this should print the meassured voltage every time step?!
I would rather use
function U = Voltage
fprintf(serialObject,'MEasure:VOltage?');
U= fscanf(serialObject);
serialObject will need to be a parameter. You can set these using the "Edit Data" menu in the top left.
Best wishes,
Harald
Tobias Kammler
Tobias Kammler el 4 de Jul. de 2023
unfortunately this doesnt work. i get the following error:
The 'serial' class does not support code generation.
Function 'MATLAB Function' (#24.59.77), line 5, column 16:
"serial(serialPort)"
i also tried to generate to generate the serial object, like i did before with pure matlab code outside the simulink model
serialPort = 'COM4';
serialObject = serial(serialPort);
do you have an other idea to solve the query fromm the instrument from simulink?
Hi Tobias,
you need to declare all functions that are not supported for code generation but used in a MATLAB Function block as extrinsic, so e.g. also
coder.extrinsic('serial')
Keep in mind that this would open a new connection every time the block is executed. This may not be desirable.
Thus, I prefer the other approach of creating the connection in MATLAB. What problems did you run into when you tried this?
Best wishes,
Harald

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Productos

Versión

R2018b

Preguntada:

el 29 de Jun. de 2023

Comentada:

el 4 de Jul. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by