рдореИрдЯрд▓реИрдм рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд▓реЙрдЬрд┐рдХ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрд╢рди

рдореИрдерд╡рд░реНрдХреНрд╕ рдиреЗ рдПрдХ рдирдП рдЙрддреНрдкрд╛рдж - рд╕рд┐рдореБрд▓рд┐рдВрдХ рдкреАрдПрд▓рд╕реА рдХреЛрдбрд░ рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рд╣реИред рдпрд╣ рдЙрддреНрдкрд╛рдж рдЖрдкрдХреЛ IEC 111131 рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рд▓реЙрдЬрд┐рдХ рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ (PLCs) рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдСрдЯреЛрдореЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдирд╡рд╛рдЪрд╛рд░ рдкреАрдПрд▓рд╕реА рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдФрджреНрдпреЛрдЧрд┐рдХ рдФрд░ рдмрд┐рдЬрд▓реА рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓-рдЙрдиреНрдореБрдЦ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рд┐рдореБрд▓рд┐рдВрдХ рдкреАрдПрд▓рд╕реА рдХреЛрдбрд░ рдХреЗ рд╕рд╛рде, рдЗрдВрдЬреАрдирд┐рдпрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрджреНрдпреЛрдЧрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрдВрдж рд▓реВрдк рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреЛрдб рдкреАрдврд╝реА, рдореЙрдбрд▓-рдУрд░рд┐рдПрдВрдЯреЗрдб рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ, рдкрд╛рд░рдВрдкрд░рд┐рдХ рдореИрдиреБрдЕрд▓ рдХреЛрдб рд▓реЗрдЦрди рд╕реЗ рдЬреБрдбрд╝реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

Simulink PLC рдХреЛрдбрд░ Simulink рдореЙрдбрд▓, Stateflow рдЪрд┐рддреНрд░, рдФрд░ рдПрдореНрдмреЗрдбреЗрдб MATLAB рдХреЛрдб рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрд┐рдд рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ PLC рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрджреНрдпреЛрдЧрд┐рдХ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗ рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг (IDE) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Matlab рдХреЛ 2010a рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдо рд╕реАрдореЗрдВрд╕ рд╕рд┐рдореЗрдЯ 7 рдкреАрдПрд▓рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдПрдХ рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓ рдмрдирд╛рдПрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд▓рдХреНрд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдЯрд▓реИрдм рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВред

рд╣рдо рдПрдХ рдЕрд╕рддрдд рдкреАрдЖрдИрдбреА тАЛтАЛрдирд┐рдпрдВрддреНрд░рдХ (рдЪрд┐рддреНрд░рд╛ 1) рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдЪрд┐рддреНрд░ 2 pid_feedforward рдмреНрд▓реЙрдХ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 1 - рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЧрдгрд┐рддреАрдп рдореЙрдбрд▓

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 2 - pid_feedforward рдмреНрд▓реЙрдХ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 3 - рд╕рд┐рд╕реНрдЯрдо рдХреНрд╖рдгрд┐рдХ

Pid_feedforward рдмреНрд▓реЙрдХ рдЪреБрдиреЗрдВ, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкреИрд░рд╛рдореАрдЯрд░ рдЪреБрдиреЗрдВред рдЗрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ, "рдкрд░рдорд╛рдгреБ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВ" рдЪреБрдиреЗрдВ рдФрд░ рдареАрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдкрд░, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкреАрдПрд▓рд╕реА рдХреЛрдбрд░ / рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВред
рдЪреБрдиреЗрдВ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреАрдПрд▓рд╕реА рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ (рд▓рдХреНрд╖реНрдп рдЖрдИрдбреАрдИ) рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреБрдВрдЬреА рджрдмрд╛рдПрдВред
SIMATIC STEP 7 рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХреЛрдб
(*
*
* рдлрд╝рд╛рдЗрд▓: plc.scl
*
* рдЖрдИрдИрд╕реА 61131-3 рд╕рд┐рдореБрд▓рд┐рдВрдХ рдореЙрдбрд▓ "рдкреНрд▓рдордбрд▓" рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрд┐рдд рдкрд╛рда (рдПрд╕рдЯреА) рдХреЛрдб рдЙрддреНрдкрдиреНрди
*
* рдореЙрдбрд▓ рд╕рдВрд╕реНрдХрд░рдг: 1.1
* рд╕рд┐рдореБрд▓рд┐рдВрдХ рдкреАрдПрд▓рд╕реА рдХреЛрдбрд░ рд╕рдВрд╕реНрдХрд░рдг: 1.1 (R2010b) 03-рдЕрдЧрд╕реНрдд -2010
* ST рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛: рд╢реБрдХреНрд░ рдЬреВрди 03 18:52:23 2011
*
* рд▓рдХреНрд╖реНрдп рдЖрдИрдбреАрдИ рдЪрдпрди: рд╕реАрдореЗрдВрд╕ SIMATIC рдЪрд░рдг 7 5.4
* рдЯреЗрд╕реНрдЯ рдмреЗрдВрдЪ рдореЗрдВ рд╢рд╛рдорд┐рд▓: рдирд╣реАрдВ
*
*)
FUNCTION_BLOCK FB1
VAR_INPUT
sMMethodType: INT;
In3: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
In2: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
In3_c: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
END_VAR
VAR_OUTPUT
рдЖрдЙрдЯ 1: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
END_VAR
рд╡реАрдПрдЖрд░
рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░_рдбрд╕реНрдЯреЗрдЯ: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
Filter_DSTATE: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
rtb_et: REAL;
rtb_Sum: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
c_rtb_FilterCoeffi: рд╡рд╛рд╕реНрддрд╡рд┐рдХ;
END_VAR
рдорд╛рдорд▓рд╛ ssMethodType OF
2:
(* рдЖрд░рдВрднрд┐рдХ рдЫреВрдЯ рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЗрдВ: '/ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░' *)
рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░_рдбрд╕реНрдЯреЗрдЯ: = 0;

(* рдЖрд░рдВрднрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ): * / рдлрд╝рд┐рд▓реНрдЯрд░ тАЩ*)
Filter_DSTATE: = 0;

3:
(* рд╕рдо: '/ рд╕рдо' рд╢рд╛рдорд┐рд▓ рд╣реИ:
* рдЗрдирдкреЛрд░реНрдЯ: '/ In1'
* рдЗрдирдкреЛрд░реНрдЯ: '/ In2'
*)
rtb_et: = In3 - In2;

(* рд▓рд╛рдн: '/ рдлрд╝рд┐рд▓реНрдЯрд░ рдЧреБрдгрд╛рдВрдХ' рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ:
* рдЕрд╕рддрддрдЗрдВрдЯрд░рдЧреНрд░реЗрдЯрд░: '/ рдлрд╝рд┐рд▓реНрдЯрд░'
* рд▓рд╛рдн: '/ рд╡реНрдпреБрддреНрдкрдиреНрди рд▓рд╛рдн'
* рд╕рдо: '/ рд╕рдо'
*)
c_rtb_FilterCoeffi: = ((-1.26102994076046 * rtb_et) - Filter_DSTATE) * 0.178109803713032;

(* рд╕рдо: '/ рд╕рдо' рд╢рд╛рдорд┐рд▓ рд╣реИ:
* рдЕрд╕рддрддрдЗрдВрдЯрд░рдЧреНрд░реЗрдЯрд░: '/ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░'
* рд▓рд╛рдн: '/ рдЖрдиреБрдкрд╛рддрд┐рдХ рд▓рд╛рдн'
*)
rtb_Sum: = ((1.7018012505578 * rtb_et) + рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░_рдбрд╕реНрдЯреЗрдЯ) + c_rtb_FilterCoeffi;

(* Outport: '/ Out1' рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
* рдЗрдирдкреЛрд░реНрдЯ: '/ In1'
* Sum: '/ Sum1'
*)
рдЖрдЙрдЯ 1: = In3 + rtb_Sum;

(* рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдЕрд╕рддрдд рдХрд░реНрдордЪрд╛рд░реА: '/ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░' рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
* рд▓рд╛рдн: '/ рдЕрднрд┐рдиреНрди рд▓рд╛рдн'
* рд╕рдо: '/ рд╕реБрдо 2'
* Sum: '/ SumI1'
* рд╕рдо: '/ рд╕реБрдореА 3'
* рдЗрдирдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ: '/ In1'
* рдЗрдирдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ: '/ In3'
*)
рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░_рдбрд╕реНрдЯреЗрдЯ: = (((In3_c - In3) - rtb_Sum) + (0.208461637073455 * rtb_et)) + Integrator_DSTATE;

(* рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдЕрд╕рддрдд: * / рдлрд╝рд┐рд▓реНрдЯрд░ тАЩ*)
Filter_DSTATE: = Filter_DSTATE + c_rtb_FilterCoeffi;

END_CASE;
END_FUNCTION_BLOCK

рдЕрдЧрд▓рд╛ рдХрджрдо рд╕реАрдореЗрдВрд╕ SIMATIC рдЪрд░рдг 7 рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдирд╛ рдФрд░ рдПрд╕рд╕реАрдПрд▓ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдбрд╛рд▓рдирд╛ рд╣реИред
рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдмрдирд╛рдирд╛ рд╣реИред

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 4 - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ FB1

рдУрдкреАрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреАрдПрд▓рд╕реА рдФрд░ рдореИрдЯрд▓реИрдм рдХреЗ рдмреАрдЪ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо Simatic Net OPC рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; PLC рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ (PLC-Sim) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, WinCC SCADA рд╕рд┐рд╕реНрдЯрдо рдФрд░ WinCC OPC рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 5 - рдкреАрдПрд▓рд╕реА рдФрд░ рдорддрд▓рд╛рдм рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░

рдЫрд╡рд┐

рдЪрд┐рддреНрд░рд╛ 6 - рдкреАрдЖрдИрдбреА тАЛтАЛрдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рддреБрд▓рдирд╛

Simulink PLC Coder рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА Matlab рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдпрд╛ www.mathworks.com/products/sl-plc-coder рдкрд░ рджреЗрдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

Source: https://habr.com/ru/post/In121818/


All Articles