🎉Community Raffle - Win $25

An exclusive raffle opportunity for active members like you! Complete your profile, answer questions and get your first accepted badge to enter the raffle.
Join and Win

How to use PSIM Simplified C Block sum function

User: "Hallay"
Altair Community Member

Hello expert

How to use sum function in PSIM Simplified C block?

Such like sum+=buffer[index].

index++;
if (index >= 10)
index = 0;

Regards

Find more posts tagged with

Sort by:
1 - 2 of 21

    hi @Hallay,

    What do you want to implement in the C block? If you give a bit more detail, I'll be able to advise.

    Rafael

    User: "Hallay"
    Altair Community Member
    OP

    Hi Rafael

    Thanks for your reply.

    I want to calculate average value every 10 sample in the C block.

    Regards

    User: "RSGarciarivas"
    Altair Employee
    Accepted Answer

    hello again @Hallay,

    There are several ways of doing this and you can even avoid using C blocks, although these are a very efficient way of creating a moving average filter.

    You can avoid using C code if you implement something like this:

    image.png

    Here, using unit delays to keep track of the latest 10 values and dividing over 10 to get the average at the end.

    If you want to use a C block, you just have to define a mechanism for each to get executed, if you don't need it running at each time step and use an array as a buffer internally.

    I implemented a simple edge detector for the block to run only at each rising/falling edge. Note that I used the standard C block because I was having a small issue declaring an array in the simplified C block, though you can try that on your side). This is the meaningful part of the code:

    image.png

    Both implementations will produce very similar (although not identical) results:

    image.png

    This plot shows the moving average from the C block, the square wave that triggers the C block and the moving average from the sums and unit delays implementation.

    Hope these are useful examples! I'm attaching the model with both options for your reference.

    Rafael

    User: "Hallay"
    Altair Community Member
    OP

    Hello Rafael

    Thanks for your information, it's helpful.

    I will try this C Block and make generate code in TI28069M.

    Can you also explain what is the difference between Simplified C block and C block?

    Regards

    User: "RSGarciarivas"
    Altair Employee
    Accepted Answer

    Hi @Hallay. Glad to see it's useful.

    The main difference is that in the C block you have to manually define all variables you use, have to read inputs from a single input array and write them into a single output array. Think of the simplified C block as a version that wraps around the standard C block and gives you the capability to define inputs, outputs and state variables in a friendlier way (from the block parameters instead of in the C code itself). Also, the standard C block allows you to run some code to initialize it and at the end of the simulation.


    Probably you can build this same system in the simplified C block, I just picked the standard C block to declare the array at the beginning of the simulation.

    Rafael