%% Generate Structured Text for Fuzzy System Using Simulink PLC Coder
% You can generate Structured Text for a Fuzzy Logic Controller block using
% Simulink(R) PLC Coder(TM). For more information on generating Structured
% Text, see <docid:plccoder_doccenter.btexvwp Code Generation>.
%
% While this example generates Structured Text for a type-1 Sugeno fuzzy
% inference system, the workflow also applies to Mamdani and type-2 fuzzy
% systems.

%%
% By default, the Fuzzy Logic Controller block uses double-precision data
% for simulation and code generation. The |fuzzyPID| model is configured to
% use double-precision data. You can also use either single-precision or
% fixed-point data. For more information on configuring your fuzzy
% inference system for code generation, see <docid:fuzzy.bvkr4k8 Fuzzy Logic Controller>.
mdl = 'fuzzyPID';
open_system(mdl)

%%
% It is good practice to validate the performance of the system in Simulink
% before generating code. Run the simulation.
sim(mdl)
open_system([mdl '/Output'])

%%
% Close output plot.
close_system([mdl '/Output'])

%%
% To generate Structured Text for the model, use the
% <docid:plccoder_ref.bsei6je_1 plcgeneratecode> function, which generates
% code for an _atomic subsystem_ in a model. To generate code for the Fuzzy
% PID controller, configure the subsystem as an atomic subsystem by
% selecting the *Treat as atomic unit* parameter for the subsystem.
subsys = [mdl '/Fuzzy PID'];
set_param(subsys,'TreatAsAtomicUnit','on')

%%
% When generating code for just a Fuzzy Logic Controller block, place the
% block inside a subsystem, and set the *Treat as atomic unit* parameter
% of that subsystem.

%%
% Generate Structured Text for the Fuzzy PID subsystem.
plcgeneratecode(subsys);

%%
% By default, the software saves the generated code in the following
% location.
%
% |plcsrc/fuzzy_PID.exp|
%

%% 
% Copyright 2012 The MathWorks, Inc.

