and instead of modeling them with existing block (transfer functions, gains, summation points etc.) I would like to implement them into a C-script as a set of discrete equations with a non fixed sampling time (I would use the non fixed step from PLECS simulation):

Unfortunaly, when starting the simulation I always get an error that says a derivative is infinite or NaN and is pointing to the C-script in PLECS’ model of a synchronous machine that I’m using.

Could someone of You guys be so kind and check my C-script which is attached and see where is the problem, I suppose I wrote something wrong in C or defined some DiscState variables wrong.

Thank You very much for Your answers and precious time,

If you connect your C-Script with a Display block, you will find that the second output is indeed NaN. NaN and Inf values typically arise due to divisions by 0: 0/0 yields NaN, any non-zero number divided by 0 yields +/-Inf.

I’m not really sure if division by zero is the problem here. I tested the discrete esimator (in this C-script) outside my original control structure. In fact, I used my continuos estimator in the control structure and I just took the signals to the discrete estimator and looked a his outputs with displays. I didn’t give me any error, and I got the same values as I would get with the continuos estimator.

But when I delete the continuos one, a implement the discrete one in my control structure it gives me an error.

Now I did all these calculations in major steps by adding if (IsMajorStep) before these calulations, and it work everything without an error but the signals are not very precise.