рд╣рд╛рдп, рд╣реЗрдмреНрд░!рдореИрдВ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧреА рдорд┐рдЦрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕реЗ рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рдореЙрдбрд▓ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╣рдорд╕реЗ рдЕрдХреНрд╕рд░ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВ: тАЬрдореИрдВ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдФрд░ рдЕрдЧрд░ рдореЗрд░реА рд╡рд┐рд░рд╛рд╕рдд рдПрдХ DLL рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ? " рдЗрд╕рд▓рд┐рдП, рдореВрд▓ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛редрдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИредрдХреЛрдб рдХреЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдорд┐рдЦрд╛рдЗрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рд▓реЗрдЦ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛редрдпрд╣ рд▓реЗрдЦ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЙрдбрд▓ рдореЗрдВ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВредрдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рд┐рдореНрдмрд┐рдВрдХ рдореЗрдВ рдПрдХреНрд╕рд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХреЛрдб exlib.c рдФрд░ exlib.h рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИ ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рддреАрди рдХрд╛рд░реНрдп рд╣реИрдВ:рд╢реВрдиреНрдп exlib_init (рд╢реВрдиреНрдп) - рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИредvoid exlib_print (рдлреНрд▓реЛрдЯ рдбреЗрдЯрд╛) - рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИредрд╢реВрдиреНрдп exlib_term (рд╢реВрдиреНрдп) - рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИредрдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рднрд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВредрдпрд╣ рдХрджрдо рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реА-рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рддреБрд░рдВрдд рдЪрд░рдг 3 рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╕реЗ .d рдлрд╝рд╛рдЗрд▓ (рдпрд╛ред Linux рдХреЗ рд▓рд┐рдП .so) рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ (.h) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рд╣реЛрдЧреАред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ .lib рдлрд╝рд╛рдЗрд▓ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рдПрдХ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддрдерд╛рдХрдерд┐рдд рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдпрд╛рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрд╡рд╢реНрдпрдХ рд╣реИредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо MATLAB рдореЗрдХреНрд╕рд┐рдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдПрдХреНрд╕рд▓рд┐рдмреЛрдбрд▓ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдПрдХреНрд╕рд▓рд┐рдм) рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рд╣реЛрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдХреЛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредmex -setup
рдПрдХ рд╕рдорд░реНрдерд┐рдд рд╕рдВрдХрд▓рдХ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП редрдЕрдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдХреНрд╕рд┐рдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбmingw = strfind(mex.getCompilerConfigurations('C','Selected').Name,'MinGW64 Compiler');
if isunix
mex('LDEXT=.so','LINKEXPORT=','LINKEXPORTVER=','LINKLIBS=','exlib.c');
elseif mingw
mex('LDEXT=.lib','LINKEXPORT=','LINKEXPORTVER=','LINKLIBS=','exlib.c');
mex('LDEXT=.dll','LINKEXPORT=','LINKEXPORTVER=','LINKLIBS=','exlib.c');
else
mex('LDEXT=.dll','LINKEXPORT=','LINKEXPORTVER=','CMDLINE300="del exlib.exp exlib.dll.manifest"','exlib.c');
end
Building with 'gcc'.
MEX completed successfully.
рд╕рдВрдХрд▓рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ MATLAB рдореЗрдВ рд▓реЛрдб рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдХреЛрдб
[~,~] = loadlibrary(['exlib',system_dependent('GetSharedLibExt')],'exlib.h');
libfunctionsview('exlib');
calllib('exlib','exlib_init');
for i = 1:10
calllib('exlib','exlib_print',single(i));
end
calllib('exlib','exlib_term');
unloadlibrary('exlib');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рдЕрдм рдЬрдм рд╣рдордиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде!рдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛
рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рд╕реА-рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд┐рд╕реА рднреА рд╕реА рдХреЛрдб рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░, рдЗрд╕ рдХреЛрдб рдХреЛ рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рд┐рдореБрд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕ рдмрд╛рдЗрдирд░реА рдХреЛ рдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред Simulink рдореЗрдВ рдЗрд╕ S рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдХ рд╣реИред рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВредрд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдкрд╣рд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ , рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЛ MATLAB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ (рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╣рдореЗрдВ рдЗрд╕реА * .рд▓рд┐рдм рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдбspecs = legacy_code('initialize');
specs.StartFcnSpec = 'exlib_init()';
specs.OutputFcnSpec = 'exlib_print(single u1)';
specs.TerminateFcnSpec = 'exlib_term()';
specs.HostLibFiles = {['exlib',strrep(system_dependent('GetSharedLibExt'),'.dll','.lib')]};
specs.HeaderFiles = {'exlib.h'};
specs.SFunctionName = 'sfun_exlib';
рдПрдХ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд░реЗрдВ:legacy_code('generate_for_sim',specs);
### Start Compiling sfun_exlib
mex('sfun_exlib.c', '-I/tmp/simulink_shrlib_fex', '/tmp/simulink_shrlib_fex/exlib.so')
Building with 'gcc'.
MEX completed successfully.
### Finish Compiling sfun_exlib
### Exit
рдЕрдВрдд рдореЗрдВ, Simulink рдмреНрд▓реЙрдХ рдмрдирд╛рдПрдВ:legacy_code('slblock_generate',specs);
рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ:open_system('simlib_test');
snapnow;
sim('simlib_test');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рд▓реЗрдЦрди рдПрд╕ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ
рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрд╕-рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рд░рдирдЯрд╛рдЗрдо рд▓рд┐рдВрдХрд┐рдВрдЧ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЛрдб рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, mdlStart , mdlOutputs рдФрд░ mdlTerminate рдлрд╝рдВрдХреНрд╢рди рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ редрдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпреЗ рдХрд╛рд░реНрдп рдХреИрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ:рдХреЛрдб рджреЗрдЦреЗрдВvoid mdlStart(SimStruct *S)
{
#if defined(__GNUC__) && !defined(__MINGW32__)
void (*exlib_init_ptr)(void);
dllHandle = dlopen("./exlib.so",RTLD_LAZY);
exlib_init_ptr = dlsym(dllHandle, "exlib_init");
#else
exlib_init_type exlib_init_ptr = NULL;
dllHandle = LoadLibrary("exlib.dll");
exlib_init_ptr = (exlib_init_type)GetProcAddress(dllHandle,"exlib_init");
#endif
exlib_init_ptr();
}
void mdlOutputs(SimStruct *S, int_T tid)
{
real32_T *u1 = 0;
#if defined(__GNUC__) && !defined(__MINGW32__)
void (*exlib_print_ptr)(float);
exlib_print_ptr = dlsym(dllHandle,"exlib_print");
#else
exlib_print_type exlib_print_ptr = NULL;
exlib_print_ptr = (exlib_print_type)GetProcAddress(dllHandle,"exlib_print");
#endif
u1 = (real32_T *) ssGetInputPortSignal(S, 0);
exlib_print_ptr( *u1);
}
void mdlTerminate(SimStruct *S)
{
#if defined(__GNUC__) && !defined(__MINGW32__)
void (*exlib_term_ptr)(void);
exlib_term_ptr = dlsym(dllHandle,"exlib_term");
exlib_term_ptr();
dlclose(dllHandle);
#else
exlib_term_type exlib_term_ptr = NULL;
exlib_term_ptr = (exlib_term_type)GetProcAddress(dllHandle,"exlib_term");
exlib_term_ptr();
FreeLibrary(dllHandle);
#endif
}
рдкрд░рд┐рдгрд╛рдореА S- рдлрд╝рдВрдХреНрд╢рди рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ:if isunix
mex('sfun_exlib_dyn.c','-ldl');
else
mex('sfun_exlib_dyn.c');
end
Building with 'gcc'.
MEX completed successfully.
рдФрд░ рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ:open_system('simlib_test_dyn');
sim('simlib_test_dyn');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рдПрд╕-рдлрдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрд╕-рдлрдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ ред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕реЗ рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦреЗ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмреАрдЪ рдПрдХ рдХреНрд░реЙрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд╕-рдлрдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдПрд╕-рдлрдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рд╕реАрдорд╛рдПрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдПрд╕-рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реА рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╣реИ, рдЬреЛ рдЖрд░ 2020 рдП рдХреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИредMATLAB рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
MATLAB рдлрд╝рдВрдХреНрд╢рди
рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ Simulink рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MATLAB рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредMATLAB рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, coder.ceval рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ , рдЬреЛ рдХреЗрд╡рд▓ MATLAB рдлрд╝рдВрдХреНрд╢рди (рдФрд░ MATLAB) рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Coder.ceval рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MATLAB рдХреЛрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИредрд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ MATLAB рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб:рдХреЛрдб рджреЗрдЦреЗрдВfunction fcn(u)
persistent runTimeCnt
coder.extrinsic('pwd','system_dependent');
libpath = coder.const(pwd);
libname = coder.const(['exlib',strrep(system_dependent('GetSharedLibExt'),'.dll','.lib')]);
coder.updateBuildInfo('addLinkObjects',libname,libpath,1000,true,true);
coder.updateBuildInfo('addIncludePaths',libpath);
coder.cinclude('exlib.h');
if isempty(runTimeCnt)
coder.ceval('exlib_init');
runTimeCnt = 0;
end
coder.ceval('exlib_print',single(u));
runTimeCnt = runTimeCnt+1;
if (runTimeCnt == 11)
coder.ceval('exlib_term');
end
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИ - рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рдХреА рдХрдореА (MATLAB рд╕рд┐рд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ)редрдЖрдк exlib_term () рд╕реЗрдЯ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╢реНрд░реЗрдгреА рд╕рд┐рдореБрд▓реЗрд╢рди рдореЗрдВ рдореЙрдбрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд▓рдХреНрд╖реНрдп -> тАЛтАЛрдХрд╕реНрдЯрдо рдХреЛрдб -> рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ редрдзреНрдпрд╛рди рджреЗрдВ ред рдпрджрд┐ "рдЖрдпрд╛рдд рдХрд╕реНрдЯрдо рдХреЛрдб" рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдореЙрдбрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ "рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп" рдкреИрдирд▓ рдореЗрдВ рд╕рднреА рдХреЛрдб рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЛрдбрд░.рд╕реБрдХреНрд▓ рдФрд░ рдХреЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ редupdateBuildInfo )ред рдпрджрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп, рдХреЛрдбрд░.рдЗрдирдХрд╛рдЙрдВрдЯрд░ рдФрд░ рдХреЛрдбрд░ .updateBuildInfo рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИрдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ , coder.cinclude рдФрд░ coder.updateBuildInfo , рдФрд░ рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛ exlib_term () рдХреЙрд▓ рдХрд░реЗрдВ редрд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ:open_system('simlib_test_mlf');
sim('simlib_test_mlf');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЖрд╣реНрд╡рд╛рди
рдпрджрд┐ рдЖрдк рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдЖрд░реЗрдЦреЛрдВ рдореЗрдВ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рддреЛ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬреЛ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИредрд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдЖрд░реЗрдЦ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдЗрди рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИред рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> тАЛтАЛрдХрд╕реНрдЯрдо рдХреЛрдб -> рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ , рдЖрдкрдХреЛ exlib.lib (рдпрд╛ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ exlib.so) рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред рдореЗрдВ рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> рдХрд╕реНрдЯрдо рдХреЛрдб -> рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓ рдЖрдк рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ #include "exlib.h" ред рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдЯреАрд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> тАЛтАЛрдХрд╕реНрдЯрдо рдХреЛрдб -> рд╕рдорд╛рдкреНрдд рд╕рдорд╛рд░реЛрд╣ рдХреЛ exlib_term () рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ; редрд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ:if isunix
set_param('simlib_test_sf','SimUserLibraries','exlib.so');
end
sim('simlib_test_sf');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрдЯреЗрдЯрдлрд╝реНрд▓реЛ рдЖрд░реЗрдЦреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдЬреЛ рд╕реА рдХреНрд░рд┐рдпрд╛ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ ред рдпрджрд┐ рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рдЖрд░реЗрдЦ MATLAB рдПрдХреНрд╢рди рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ , рддреЛ Coder.ceval рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ MATLAB рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИредMATLAB рд╕рд┐рд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛
MATLAB рд╕рд┐рд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ Simulink рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИредрд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди R2013b рдХреА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрд░рдВрднреАрдХрд░рдг, рд╕рд┐рдореБрд▓реЗрд╢рди рдФрд░ рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ MATLAB рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП - рд╕рднреА рдмрд┐рдирд╛ C рдХреЛрдб рд▓рд┐рдЦреЗредрдпрд╣рд╛рдБ MATLAB рд╕рд┐рд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛрдбclassdef exlib < matlab.System
properties (Nontunable,Access=private)
libName = exlib.getLibName;
libPath = pwd;
libHeader = 'exlib.h';
end
methods (Static)
function libName = getLibName
if isunix
libName = 'exlib.so';
else
libName = 'exlib.lib';
end
end
end
methods (Access=protected)
function setupImpl(obj, ~)
coder.updateBuildInfo('addLinkObjects',obj.libName,obj.libPath,1000,true,true);
coder.updateBuildInfo('addIncludePaths',obj.libPath);
coder.cinclude(obj.libHeader);
coder.ceval('exlib_init');
end
function stepImpl(~, u)
coder.ceval('exlib_print',u);
end
function releaseImpl(~)
coder.ceval('exlib_term');
end
end
end
рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ:open_system('simlib_test_mls');
sim('simlib_test_mls');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
C рдХреЙрд▓рд░ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
рд╕реА рдХреЙрд▓рд░
рдмреНрд▓реЙрдХ рдЖрдкрдХреЛ рд╕рд┐рдореБрд▓рд┐рдВрдХ рд╕реЗ рд╕реАрдзреЗ рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИредрдпрд╣ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ MATLAB R2018b рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдФрд░ рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмреЗрд╣рдж рд╕рд░рд▓ рдмрдирд╛рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВредрдмрд╛рдж exlib.so/exlib.lib рд╣реИ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ #include "exlib.h" рдореЗрдВ рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> рд╣реИрдбрд░ рдореЙрдбрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдмрд╕ "рддрд╛рдЬрд╝рд╛ рдХрд╕реНрдЯрдо рдХреЛрдб" рдмрдЯрди рд╕реА рдХреЛрд▓рд░ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПредExlib_print
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рдкреЛрд░реНрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рд╕рдВрд╡рд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднрд░ рдЬрд╛рддрд╛ рд╣реИ:
рдФрд░ рдлрд┐рд░ рд╕реЗ, рдЖрдкрдХреЛ рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп рдореЗрдВ exlib_init рдФрд░ exlib_term рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ред рдЖрдк рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕реА рдХреЙрд▓рд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рд╕реА рдХреЙрд▓рд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдлрдВрдХреНрд╢рди рдФрд░ рдЯрд░реНрдорд┐рдиреЗрдЯ рдлрдВрдХреНрд╢рди рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕реНрдЯреЗрдЯрдлреНрд▓реЛ рд╕реЗ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрдпреВрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдордЕрдиреБрдХрд╛рд░ рдЪрд▓рд╛рдПрдБ:open_system('simlib_test_ccaller');
if isunix
set_param('simlib_test_ccaller','SimUserLibraries','exlib.so');
end
sim('simlib_test_ccaller');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
C рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛
Simulink рдореЗрдВ рдмрд╛рд╣рд░реА рдХреЛрдб рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдирд╡реАрдирддрдо рдЬреЛрдбрд╝ C рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рд╣реИ ред рд╡рд╣ R2020a рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдПредрдпрд╣ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реА рдХреЙрд▓рд░ рдмреНрд▓реЙрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрдпрд╛рддрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕реА рдЖрд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдмреНрд▓реЙрдХ рдПрд╕-рдлрдВрдХреНрд╢рди рдмрд┐рд▓реНрдбрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╕реА рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдореМрдЬреВрджрд╛ рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реА рдХреЛрдб рдХреЗ рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЕрдЧрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЖрд╡реЗрджрди рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИредрдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ exlib.so/exlib.lib рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ "рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> рдкреБрд╕реНрддрдХрд╛рд▓рдп" рдФрд░ #include "exlib.h"рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ "рд╕рд┐рдореБрд▓реЗрд╢рди рд▓рдХреНрд╖реНрдп -> рд╣реИрдбрд░ рдлрд╝рд╛рдЗрд▓" рдореЙрдбрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВредрдЙрд╕рдХреЗ рдмрд╛рдж, C рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдПрдХрд▓ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░рд┐рддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ, рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдПрдВрдб рдХреЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
open_system('simlib_test_cfunction');
if isunix
set_param('simlib_test_cfunction','SimUserLibraries','exlib.so');
end
sim('simlib_test_cfunction');
type('exlib.txt');
0.000000
1.000000
2.000000
3.000000
4.000000
5.000000
6.000000
7.000000
8.000000
9.000000
10.000000
рдПрдВрдмреЗрдбреЗрдб рдХреЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЙрддреНрдкрдиреНрди рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛
рдПрдВрдмреЗрдбреЗрдб рдХреЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЙрдбрд▓ рд╕реЗ рд╕реА-рдХреЛрдб рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреАрдврд╝реА рдФрд░ рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреА рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рднреА рд╣реИ рдЬреЛ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рд╕реАред рдореЗрдВ рд▓рд┐рдЦреЗ рдмрд╛рд╣рд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВредрдпрджрд┐ рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рд╣реА рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЙрдбрд▓ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╛ рд╕реА рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╕рд┐рдореБрд▓рд┐рдВрдХ рдХреЛрдбрд░ рдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░-рдЗрди-рд▓реВрдк рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рдПрд╕-рдлрд╝рдВрдХреНрд╢рдиред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдПрдВрдмреЗрдбреЗрдб рдХреЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд░реНрдз-рдкреНрд░рд╛рдХреГрддрд┐рдХ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рдореЙрдбрд▓ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдкрдХреА рдмреМрджреНрдзрд┐рдХ рд╕рдВрдкрджрд╛ рдХреА рд░рдХреНрд╖рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИредрдПрдВрдмреЗрдбреЗрдб рдХреЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд╛рдЭрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЗрдирдкреБрдЯ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:open_system('simlib_test_ert');
snapnow;
рдореЙрдбрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ .dll рдлрд╝рд╛рдЗрд▓ (рд▓рд┐рдирдХреНрд╕ рдкрд░ .so), рдПрдХ .lib рдлрд╝рд╛рдЗрд▓ (.dll рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдФрд░ рдПрдХ .exp рдлрд╝рд╛рдЗрд▓ (.dll рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдпрд╛рдд рдлрд╝рд╛рдЗрд▓) рдорд┐рд▓рддреА рд╣реИредif isunix
set_param('simlib_test_ert','CustomHeaderCode','#include <stddef.h>');
end
rtwbuild('simlib_test_ert');
### Starting build procedure for: simlib_test_ert
### Successful completion of build procedure for: simlib_test_ert
рдЙрддреНрдкрдиреНрди рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ:ex_init
double ex_step(double, double)
simlib_test_ert_terminate
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЖрд░рдВрднрд┐рдХ рдЪрд░рдг, рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЙрдбрд▓ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, рдкреНрд░рддреАрдХ рдирд╛рдо рдФрд░ рдЕрдзрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ)ред рдЗрд╕ рдореЙрдбрд▓ рдореЗрдВ, рдореЙрдбрд▓ рдХреЗ рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЖрдЙрдЯ 1 = ex_step (In1, In2) рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ редрдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк MATLAB рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдЪрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ):рдХреЛрдб рджреЗрдЦреЗрдВfunction y = fcn(u1, u2)
coder.extrinsic('RTW.getBuildDir','fullfile');
buildDir = coder.const(RTW.getBuildDir('simlib_test_ert'));
libpath = coder.const(buildDir.CodeGenFolder);
incpath = coder.const(fullfile(buildDir.BuildDirectory,'simlib_test_ert.h'));
if isunix
ext = '.so';
libname = ['simlib_test_ert',ext];
else
ext = '.lib';
libname = ['simlib_test_ert_',computer('arch'),ext];
end
coder.updateBuildInfo('addLinkObjects',libname,libpath,1000,true,true);
coder.updateBuildInfo('addIncludePaths',libpath);
coder.cinclude(incpath);
y = 0;
y = coder.ceval('ex_step',u1,u2);
рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:open_system('simlib_test_callert');
sim('simlib_test_callert');
snapnow;

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо
рдпрд╣ рд▓реЗрдЦ рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЙрдбрд▓ рд╕реЗ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдФрд░ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдВрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВ, рдФрд░ рдЙрдирдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ, рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдФрд░ рд▓рдХреНрд╖реНрдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рдХреЛрдб рдЙрдкрдХрд░рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдВрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд╕рд┐рд░реНрдл рдХрд╛рд░реНрдпреЛрдВ рд╕реАрдзреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд▓рд┐рдВрдХрд░ рдмрд╛рдХреА рдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░реЗрдВрдЧреЗред MATLAB рд╕рд┐рд╕реНрдЯрдо рдмреНрд▓реЙрдХ рдПрдХ рдФрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:- рдЖрд░рдВрднреАрдХрд░рдг, рдХрджрдо рдФрд░ рд╕рдорд╛рдкрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд╛рде рдЙрддреНрдХреГрд╖реНрдЯ рдЕрдиреБрдкрд╛рд▓рди, рдЖрдкрдХреЛ рдмреНрд▓реЙрдХ рдХреЗ рднреАрддрд░ рд╣реА рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рди рдХрд┐ рдореЙрдбрд▓ рдХреЗ рдкреИрдорд╛рдиреЗ рдкрд░
- MATLAB MATLAB
- MATLAB System (, S-)
MATLAB рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡рд░рд╣реЗрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЧреЗрд╕реА рдХреЛрдб рдЯреВрд▓ рдФрд░ рдПрд╕ рдлрд╝рдВрдХреНрд╢рди рдЕрднреА рднреА рдкрд╕рдВрдж рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВредрдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдВрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣рд╛рде рд╕реЗ рд▓рд┐рдЦрд╛ рдПрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП LoadLibrary / dlopen , GetProcAddress / dlsym , FreeLibrary / dlclose рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред R2018b рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛C рдХреЙрд▓рд░ рдмреНрд▓реЙрдХ C рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рд╕реА рдлрдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЬреЛ R2020a рдХрд╛ рд╕рдмрд╕реЗ рдирдпрд╛ рдЬреЛрдбрд╝ рд╣реИред рдпрд╣рд╛рдБрд╕реНрд░реЛрдд рдФрд░ рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ