필터 지우기
필터 지우기

Sample Time from To Workspace not precise

조회 수: 12 (최근 30일)
Werner González Holtheuer
Werner González Holtheuer 2023년 11월 4일
댓글: Werner González Holtheuer 2023년 11월 6일
I'm having trouble with the sample time when passing data from Simulink to the Workspace using the To Workspace block.
I have an electrical circuit (with PLECS blockset) and I'm measuring a voltage in a certain point. The measure this voltage I defined a sample time of Ts=1/(50*256)=7.8125e-5 using a ZOH block (The election of this sample time is from a real life voltmeter). The simulation is set for continouos time, so the output of the ZOH is a continouos stepped signal with steps every Ts seconds. The result of the simulation is shown below with a time span of 5*Ts.
This signal is passed to a To Workspace block with the sample time set to Ts, but the arrays I'm getting in the workspace aren't entirely correct.
Also:
Limit data points to last = inf
Decimation = 1
Log fixed-point data as a fi object is checked
If I use the Cursor Measurments of the Simulink scope, the values in each step are:
[0.000, 0.257, 0.983, 2.224, 3.720]
But when I print this array from the workspace I get:
[0.000, 0.257, 0.983, 0.983, 3.7204]
In the bolded data point, the simulation time should be, 3*Ts = 2.34375e-4 [s] and the value should be 2.224. I believe that for some reason, the time it is evaluating is 2.3437e-4 [s] < 2.34375e-4 [s] getting the previous value of 0.983.
Is this because the time values are fixed point decimals? Or because in the continouos time array the point 2.34375e-4 [s] doesn't exist?
Thanks in advance!

채택된 답변

Fangjun Jiang
Fangjun Jiang 2023년 11월 6일
If you use a ZOH block to measure the signal and specify the sample time of the ZOH block as Ts, then specify the sample time for the To Workspace block as -1. That should give you the correct data that matches the data shown in the Scope.
If you specify two sample times, Simulink may not be able to recognize that they are the same. It is like doing floating point data equal comparison. There is a precision problem when you specify data like 1/(50*256) in two places.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Simulink Functions에 대해 자세히 알아보기

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by