[Scilab-users] (EXCEPTION_ACCESS_VIOLATION) with "scicosim" function

pepe peter.balazovic at yahoo.com
Mon Feb 25 09:52:44 CET 2013


Hello,
I prepared my own C - function to have own simulation block. It compiles,
link and load the function with no problem. But during the simulation I got
(EXCEPTION_ACCESS_VIOLATION) with "scicosim" function. 
Attaching the function:

#include "c:\Program Files
(x86)\scilab-5.4.0\modules\scicos\includes\scicos_malloc.h"
    #include "c:\Program Files
(x86)\scilab-5.4.0\libs\MALLOC\includes\MALLOC.h"
    #include "scicos_block4.h" 
    #include <math.h> 
    #include <stdio.h> 
    #include <stdlib.h> 
     
    #define r_IN(n, i)      ((GetRealInPortPtrs(blk, n+1))[(i)]) 
    #define r_OUT(n, i)     ((GetRealOutPortPtrs(blk, n+1))[(i)]) 
    
    // inputs 
    #define Ud              (r_IN(0,0))         
    #define Uq              (r_IN(1,0))          
    #define Tload           (r_IN(2,0))         
    
    // states 
    #define Id              (GetState(blk)[0])           
    #define Iq              (GetState(blk)[1])          
    #define Wm              (GetState(blk)[2])         
    #define Theta           (GetState(blk)[3])          
     
    #define dId             (GetDerState(blk)[0])       
    #define dIq             (GetDerState(blk)[1])        
    #define dWm             (GetDerState(blk)[2])        
    #define dTheta          (GetDerState(blk)[3])       
    
    // outputs 
    #define Id_out          (r_OUT(0, 0))       
    #define Iq_out          (r_OUT(1, 0))        
    #define Te_out          (r_OUT(2, 0))       
    
    //parameters
    #define Rs          1.01
    #define Lq          0.001
    #define Ld          0.001
    #define ke          0.02
    #define pp          2.
    #define Jm          0.008
    #define B           0.000005
    #define pi          3.14
    #define sqrt3       1.732
    
    void myPMSM_block(scicos_block *blk, int flag)  
    { 
        double *Te  = (double *) * (blk->work);
    
        switch (flag) 
        { 
            case Initialization:
                Te = (double *) MALLOC(sizeof(double));
                Te[0] = 0;
            break;
                
            case DerivativeState:
                Te[0] = 3./2.*pp/2.*(ke*Iq);// + (Ld - Lq)*Id*Iq);
                dId = 1./Ld*(Ud - Rs*Id + Lq*pp/2.*Iq*Wm);
                dIq = 1./Lq*(Uq - Rs*Iq);// - (Ld*Id + ke)*pp/2.*Wm);
                dWm = 1./Jm*(Te[0] - B*Wm - Tload);
                dTheta = Wm;
            break; 
             
            case OutputUpdate:
                 Id_out = Id;
                 Iq_out = Iq;
                 Te_out = Te[0];
            break; 
            
            case Ending:
                 scicos_free(Te);
            break;
                    
        } 
    }


After xcos block simulation I am getting within console this message:

Warning !!!
Scilab has found a critical error (EXCEPTION_ACCESS_VIOLATION)
with "scicosim" function.
Save your data and restart Scilab.


Any idea how to resolve this?

Thank you.
Peter



--
View this message in context: http://mailinglists.scilab.org/EXCEPTION-ACCESS-VIOLATION-with-scicosim-function-tp4026020.html
Sent from the Scilab users - Mailing Lists Archives mailing list archive at Nabble.com.



More information about the users mailing list