1
\$\begingroup\$

I would like to know how to shift a signal in Simulink. The case is I am using PWM generator(DC-DC) and the input D is from a lookup table,a sine wave. From the PWM generator block i am taking the pulses i want(a sine PWM). However, because of having two mosfets i need second pulses signal which should be shifted like when the first pulse in the first signal finish, the first pulse of the second signal will start. I think the real issue here is this: the Duty cycle is changing for each pulse so each pulse should be shifted with different time.

The shifting i want is described in the image. The the magnitudes of D's are forming a sine wave. For example if i have 5 pulses(so D1,D2,D3,D4,D5), the variation of D's will be like D1=0.1, D2=0.2, D3=0.3, D4=0.2 and D5=0.1 ( the numbers are just for example) So the i need to have shift every pulses according to their own width(Duty cycle)

desired shifting

| improve this question | | | | |
\$\endgroup\$
  • \$\begingroup\$ One thing that comes to mind is some sort of falling-edge-trigger thing triggered off the first signal, but I haven't the faintest idea how to go about actually doing that... \$\endgroup\$ – Hearth May 21 '18 at 4:22
0
\$\begingroup\$

There are many ways to solve this and the optimum solution will be specific to other details of your model.

Initially try the transport delay block: https://uk.mathworks.com/help/simulink/slref/transportdelay.html

Transport delay icon

There is also variable transport delays, unit delays or even constructing more elaborate delay mechanisms via integrators and comparison blocks

| improve this answer | | | | |
\$\endgroup\$
  • \$\begingroup\$ Thanks for answer, but i have already tried those blocks. However the output pulses became like triangular shape not rectangular pulses \$\endgroup\$ – user391130 May 20 '18 at 23:52
  • \$\begingroup\$ That's a simulation setting issue not a transport delay issue. By any chance is the donation continuous with a refinement factor of 1 \$\endgroup\$ – JonRB May 21 '18 at 5:51
  • \$\begingroup\$ Like i wrote down up, i need to shift the every pulses by their own width and every pulse has different(a sine variation, 0 to Dmax to 0 again) width due to being sine PWM. I also tried to use "variable time delay, variable transport delay" but i failed again \$\endgroup\$ – user391130 Jun 5 '18 at 14:39
  • \$\begingroup\$ @user391130 could you share a stripdown model. What you describe I do all the time and part of it does sound like a simulation setting issue. Transport delay is all you need. Variable as well due to dependant on the "present" pulse width. However. When does it start? Because 100% duty could result in a very large buffer... What bounds do you have that can be exploited \$\endgroup\$ – JonRB Jun 5 '18 at 17:17
  • \$\begingroup\$ I edit my problem to make clearer about my problem. In the pulses, the max Duty Cycle is less then 50% \$\endgroup\$ – user391130 Jun 12 '18 at 7:43
0
\$\begingroup\$

You should use Discrete Variable Time Delay block as shown in the following example,

enter image description here

And the result,

enter image description here

You can adjust the phase shift from the constant (0.5 s in the example).

| improve this answer | | | | |
\$\endgroup\$
  • \$\begingroup\$ Actually it is not my desire. Because i need to shift the every pulses by their own width and every pulse has different(a sine variation, 0 to Dmax to 0 again) width due to being sine PWM. \$\endgroup\$ – user391130 Jun 5 '18 at 14:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.