
рдпрд╣ CODESYS рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрдВрдЯреНрд░реЛрд▓рд░ (PLCs) рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдирд┐рдкрдЯрд╛ рд╣реИ, рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ Standard.lib рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдЯрд╛рдЗрдорд░, рдЯреНрд░рд┐рдЧрд░, рдХрд╛рдЙрдВрдЯрд░ рдФрд░ рдХрдИ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдЗрдХрд╛рдЗрдпрд╛рдВ рдкреАрдПрд▓рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдФрд░ рд╕реНрд╡рдпрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЬреИрд╕реЗ CODESYS рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛, IEC 61131-3 рдорд╛рдирдХ рдХрд╛ рдкреНрд░рддреАрдХ рд╣реИ, рдЕрд░реНрдерд╛рддред рдХреНрд▓рд╛рд╕рд┐рдХ рдкреАрдПрд▓рд╕реА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдкреАрдПрд▓рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗрд░реА рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдЪрдХреНрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд┐рдХрд╛рд╕ рд╕рдордп рдпрд╛ "рд╡рд┐рдЪрд╛рд░рд╢реАрд▓" рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХреЙрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдзреАрдореА рдЪреИрдирд▓реЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдЪрд┐рддреНрд░ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рд▓реВрдк рдХреА рд╕реАрдорд╛ рдкрд░ рдЕрджреНрдпрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд▓реВрдк рдХреЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд╣рдо рд▓рдВрдмреЗ рд╕рдордп рддрдХ "рдмреИрдарддреЗ рд╣реИрдВ", рдХрдо рд╣рдо рдирд┐рдпрдВрддреНрд░рдг рд╡рд╕реНрддреБ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ, рдЕрдВрддрддрдГ рд▓реВрдк рд▓реВрдкрдлреНрд▓реЛ рдХрд╛ рдкреНрд░рд╣рд░реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдХрдИ рд▓реЛрдЧ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдкрддреНрддрд┐ рдЬрддрд╛рддреЗ рд╣реБрдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзреБрдирд┐рдХ рдкреАрдПрд▓рд╕реА рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдореЗрд░реА рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ Arduino рдорд╛рдЗрдХреНрд░реЛрдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХрд▓-рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реБрдХрд╛рд╡рдЯ) рдХреЗ рдкреАрдПрд▓рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рдЕрд░реНрдз, рдЫрджреНрдо рдЪрдпрди) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдореБрдЦреНрдп рд▓реВрдк рд╣реИред рд╡реИрд╕реЗ, рдпрд╣ рдХрд╣рдирд╛ рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд▓реЗрдЦ
Arduino- рд╕рдВрдЧрдд PLC CONTROLLINO, рднрд╛рдЧ 1 рдХреЛ Arduino рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЗрд╕ рдиреЛрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ред рдкреАрдПрд▓рд╕реАред
Arduino рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рдкреАрдПрд▓рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, Arduino рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмрд╣реБрдд рддреЗрдЬ рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдмрд╣реБрдд рд╣реА рдзреАрдореА рд▓реВрдк () рд▓реВрдк рд╣реИред рдЪрдХреНрд░ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рдордВрд╢рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдФрд░ рдЕрдирдВрдд рдмрд╛рд░ - рджреЛрдиреЛрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд░рд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛, рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдВрдЪрд╛рд▓рди, рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдВрддрд╣реАрди рдиреЗрд╕реНрдЯреЗрдб рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдЪрдХреНрд░ рдФрд░ рдкреНрд░рдХрд╛рд░ рдХреА рджреЗрд░реА рдХреЗ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рджреЗрд░реА () рдХреЗ рд╕рд╛рде рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЪрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╕ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗред рд▓реЗрдХрд┐рди, рдЬреИрд╕реЗ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рддрд┐рдорд╛рди рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдПрдХрд▓-рдЯрд╛рд╕реНрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ, рджреГрд╢реНрдпрдорд╛рди рд╕рдорд╛рдирддрд╛ рдХреЗрд╡рд▓ рд╕рдорд╛рдирд╛рдВрддрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕реНрдХреИрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдкрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ lingering рдХреЗ рдмрд┐рдирд╛ред рднреМрддрд┐рдХ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдлрд╝рдВрдХреНрд╢рди рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреЗрд░реА () рдПрдХ рдЕрдиреБрдЪрд┐рдд рдмреНрд░реЗрдХ рдмрди рдЬрд╛рддреА рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЯрд╛рдЗрдорд░ рдЖрддреЗ рд╣реИрдВ, рд╡рд╣реА рдЬреЛ рдкреАрдПрд▓рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рд╣реИрдВред рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕рдордп рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдЗрд╕ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдмрдВрдзреА рд╣реИрдВред
рдФрд░ рдЕрдм рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ CODESYS рд╕реЗ рд╡рд╣реА Standard.libред рдпрд╣ рд╕рд┐рд░реНрдл рдЖрдИрдИрд╕реА-рдПрд╕ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдЯрд╛рдЗрдорд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ Arduino рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб (C ++) рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ред рдпрд╛рдиреА Arduino рдХреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдкреАрдПрд▓рд╕реА рдХреЗ рдХрд░реАрдм рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдиреАрдЪреЗ рдореИрдВ CODESYS рдХреЗ рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХреЛрдВ (FB) рдФрд░ рдореЗрд░реЗ
plcStandardLib рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдирдХреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг
рджреВрдВрдЧрд╛ , рд╕рднреА рд╕рдордп рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдирдП Arduino рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИрдВред рд╕реНрд░реЛрдд рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CODESYS рдкрд░ рд░реВрд╕реА-рднрд╛рд╖рд╛ рдХреА рдорджрдж рдореЗрдВред
TON - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ "рдЯрд╛рдЗрдорд░ рдкрд░ рджреЗрд░реА рдХреЗ рд╕рд╛рде"
TON(IN, PT, Q, ET)
рдХреНрд░рдорд╢рдГ BOOL рдФрд░ TIME рдХреЗ тАЛтАЛрдЗрдирдкреБрдЯ IN рдФрд░ PTред рдЖрдЙрдЯрдкреБрдЯ Q рдФрд░ ET BOOL рдФрд░ TIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдЬрдмрдХрд┐ IN FALSE рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ Q = FALSE, рдЖрдЙрдЯрдкреБрдЯ ET = 0. рдЬреИрд╕реЗ рд╣реА TRUE рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ ET рдкрд░ рдЙрд▓рдЯреА рдЧрд┐рдирддреА (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) PT рдХреЗ рдмрд░рд╛рдмрд░ рдорд╛рди рддрдХ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред Q TRUE рд╣реИ рдЬрдм IN TRUE рд╣реИ рдФрд░ ET PT рд╣реИ, рдЕрдиреНрдпрдерд╛ FALSEред рдЗрд╕рд▓рд┐рдпреЗ
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдЙрдЯрдкреБрдЯ Q рдЗрдирдкреБрдЯ IN рдХреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ PT рдХреА рджреЗрд░реА рд╕реЗ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред
Arduino IDE рдореЗрдВ:
рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╡рд┐рдХрд▓реНрдк:
TON TON1(); TON TON1(unsigned long PT);
рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
Q = TON1.Run(boolean IN); // " " TON1.IN = IN; TON1.Run(); Q = TON1.Q;
рдЯрди рдСрдкрд░реЗрд╢рди рд╕рдордп рдЖрд░реЗрдЦ:
TOF - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ "рд╡рд┐рд▓рдВрдмрд┐рдд рд╢рдЯрдбрд╛рдЙрди рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░"
TOF(IN, PT, Q, ET)
рдХреНрд░рдорд╢рдГ BOOL рдФрд░ TIME рдХреЗ тАЛтАЛрдЗрдирдкреБрдЯ IN рдФрд░ PTред рдЖрдЙрдЯрдкреБрдЯ Q рдФрд░ ET BOOL рдФрд░ TIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдпрджрд┐ IN TRUE рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ Q = TRUE рдФрд░ рдЖрдЙрдЯрдкреБрдЯ ET = 0. рдЬреИрд╕реЗ рд╣реА IN FALSE рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ ET рдкрд░ рдЙрд▓рдЯреА рдЧрд┐рдирддреА (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЬрдм рд╕реЗрдЯ рдЕрд╡рдзрд┐ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЙрд▓рдЯреА рдЧрд┐рдирддреА рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпреВ FALSE рд╣реИ рдпрджрд┐ IN FALSE рд╣реИ рдФрд░ ET PT рд╣реИ, рдЕрдиреНрдпрдерд╛ TRUE рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрдирдкреБрдЯ Q рдХреА рдЧрд┐рд░рд╛рд╡рдЯ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ Q рджреЗрд░реА рдкреАрдЯреА рдХреЗ рд╕рд╛рде рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Arduino IDE рдореЗрдВ:
TON рдХреЗ рд╕рдорд╛рди, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
TOF TOF1(unsigned long PT);
TOF рдХрд╛ рд╕рдордп рд░реЗрдЦрд╛ рдЪрд┐рддреНрд░:
рдЯреАрдкреА - рдЖрд╡реЗрдЧ-рдЯрд╛рдЗрдорд░ рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ
TP(IN, PT, Q, ET)
рдХреНрд░рдорд╢рдГ BOOL рдФрд░ TIME рдХреЗ тАЛтАЛрдЗрдирдкреБрдЯ IN рдФрд░ PTред рдЖрдЙрдЯрдкреБрдЯ Q рдФрд░ ET BOOL рдФрд░ TIME рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдЬрдмрдХрд┐ IN FALSE рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ Q = FALSE, рдЖрдЙрдЯрдкреБрдЯ ET = 0. рдЬрдм IN рдХреЛ TRUE рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ Q рдХреЛ TRUE рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдорд░ рдЖрдЙрдЯрдкреБрдЯ PT рдкрд░ рдкреАрдЯреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рддрдХ (рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ) рдХреА рдЧрд┐рдирддреА рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╛рдЙрдВрдЯрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдЙрдЯрдкреБрдЯ Q рдЗрдирдкреБрдЯ IN рдХреЗ рдХрд┐рдирд╛рд░реЗ рдкреАрдЯреА рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдкрд▓реНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
Arduino IDE рдореЗрдВ:
TON рдХреЗ рд╕рдорд╛рди, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
TP TP1(unsigned long PT);
рдЯреАрдкреА рдСрдкрд░реЗрд╢рди рдЯрд╛рдЗрдорд┐рдВрдЧ рдЪрд╛рд░реНрдЯ:
R_TRIG - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ "рдлреНрд░рдВрдЯ рдбрд┐рдЯреЗрдХреНрдЯрд░"
R_TRIG рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдмрдврд╝рддреЗ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдПрдХ рдкрд▓реНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ Q FALSE рд╣реИ рдЬрдм рддрдХ рдЗрдирдкреБрдЯ CLK FALSE рд╣реИред рдЬреИрд╕реЗ рд╣реА CLK TRUE рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, Q рдХреЛ TRUE рдкрд░ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ FALSE рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреНрд▓реЙрдХ FALSE рд╕реЗ TRUE рддрдХ рдкреНрд░рддреНрдпреЗрдХ CLK рд╕рдВрдХреНрд░рдордг рдкрд░ рдПрдХ рдПрдХрд▓ рдЖрд╡реЗрдЧ рджреЗрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг STDEDESYS ST рдореЗрдВ:
RTRIGInst : R_TRIG ; RTRIGInst(CLK:= VarBOOL1); VarBOOL2 := RTRIGInst.Q;
Arduino IDE рдореЗрдВ:
рдШреЛрд╖рдгрд╛:
R_TRIG R_TRIG1;
рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
Q = R_TRIG1.Run(boolean CLK);
F_TRIG - рдлрд╝рдВрдХреНрд╢рди рдпреВрдирд┐рдЯ "рдЧрд┐рд░рд╛рд╡рдЯ рдбрд┐рдЯреЗрдХреНрдЯрд░"
рдлрдВрдХреНрд╢рди рдмреНрд▓реЙрдХ F_TRIG рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдЕрдиреБрдЧрд╛рдореА рдХрд┐рдирд╛рд░реЗ рдкрд░ рдПрдХ рдкрд▓реНрд╕ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпреВ FALSE рд╣реИ рдЬрдм рддрдХ рдЗрдирдкреБрдЯ CLK TRUE рдирд╣реАрдВ рд╣реИред рдЬреИрд╕реЗ рд╣реА CLK FALSE рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, Q рдХреЛ TRUE рдкрд░ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдЙрдЯрдкреБрдЯ FALSE рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмреНрд▓реЙрдХ TRUE рд╕реЗ FALSE рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ CLK рд╕рдВрдХреНрд░рдордг рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЖрд╡реЗрдЧ рджреЗрддрд╛ рд╣реИред
Arduino IDE рдореЗрдВ:
F_TRIG F_TRIG1; Q = F_TRIG1.Run(boolean CLK);
RS_TRIG - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ RS-рдЯреНрд░рд┐рдЧрд░ / SR_TRIG - рдлрд╝рдВрдХреНрд╢рди рдмреНрд▓реЙрдХ SR-рдЯреНрд░рд┐рдЧрд░
рдкреНрд░рдореБрдЦ рд╕реНрд╡рд┐рдЪ рдмрдВрдж, рдЖрд░рдПрд╕-рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:
Q1 = RS (SET, RESET1)
рдкрд░ рдкреНрд░рдореБрдЦ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:
Q1 = SR (SET1, RESET)
рдЗрдирдкреБрдЯ рдЪрд░ SET рдФрд░ RESET1, BOOL рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдЪрд░ Q1 рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
Arduino IDE рдореЗрдВ:
RS_TRIG RS_TRIG1; Q = RS_TRIG1.Run(boolean SET, boolean RESET); // " "
SR_TRIG SR_TRIG1; Q = SR_TRIG1.Run(boolean SET, boolean RESET); // " "
рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЙрджрд╛рд╣рд░рдг
plcStandardLib_1.h #ifndef PLCSTANDARDLIB_1_H_ #define PLCSTANDARDLIB_1_H_ #if ARDUINO >= 100 #include <Arduino.h> #else #include <WProgram.h> #endif class TON { public: TON(); TON(unsigned long PT); boolean Run(boolean IN); boolean Q; // boolean IN; // unsigned long PT; // unsigned long ET; // - private: boolean _M; // unsigned long _StartTime; }; class TOF { public: TOF(); TOF(unsigned long PT); boolean Run(boolean IN); boolean Q; // boolean IN; // unsigned long PT; // unsigned long ET; // - private: boolean _M; // unsigned long _StartTime; }; class TP { public: TP(); TP(unsigned long PT); boolean Run(boolean IN); boolean Q; // boolean IN; // unsigned long PT; // unsigned long ET; // - private: boolean _M; // unsigned long _StartTime; }; class R_TRIG // { public: R_TRIG(); boolean Run(boolean CLK); boolean CLK; // boolean Q; // private: boolean _M; // }; class F_TRIG // { public: F_TRIG(); boolean Run(boolean CLK); boolean CLK; // boolean Q; // private: boolean _M; // }; class RS_TRIG // { public: RS_TRIG(); boolean Run(); boolean Run(boolean SET, boolean RESET); boolean SET; // boolean RESET; // boolean Q; // //private: }; class SR_TRIG // { public: SR_TRIG(); boolean Run(); boolean Run(boolean SET, boolean RESET); boolean SET; // boolean RESET; // boolean Q; // //private: }; #endif
plcStandardLib_1.cpp #include "plcStandardLib_1.h" TON::TON() { IN = false; PT = 0; _M = false; _StartTime = 0; Q = false; ET = 0; } TON::TON(unsigned long PT) { IN = false; TON::PT = PT; _M = false; _StartTime = 0; Q = false; ET = 0; } boolean TON::Run(boolean IN) { TON::IN = IN; if (!TON::IN) { Q = false; ET = 0; _M = false; } else { if (!_M) { _M = true; // _StartTime = millis(); // ET = 0; // = 0 } else { if (!Q) ET = millis() - _StartTime; // } if (ET >= PT) Q = true; } return Q; } TOF::TOF() { IN = false; PT = 0; _M = false; _StartTime = 0; Q = false; ET = 0; } TOF::TOF(unsigned long PT) { IN = false; TOF::PT = PT; _M = false; _StartTime = 0; Q = false; ET = 0; } boolean TOF::Run(boolean IN) { TOF::IN = IN; if (TOF::IN) { Q = true; ET = 0; _M = true; } else { if (_M) { _M = false; // _StartTime = millis(); // ET = 0; // = 0 } else { if (Q) ET = millis() - _StartTime; // } if (ET >= PT) Q = false; } return Q; } TP::TP() { IN = false; PT = 0; _M = false; _StartTime = 0; Q = false; ET = 0; } TP::TP(unsigned long PT) { IN = false; TP::PT = PT; _M = false; _StartTime = 0; Q = false; ET = 0; } boolean TP::Run(boolean IN) { TP::IN = IN; if (!_M) { if (TP::IN) { _M = true; // _StartTime = millis(); if (ET < PT) Q = true; } } else { if (Q) { ET = millis() - _StartTime; // if (ET >= PT) Q = false; } else { if (!TP::IN) { _M = false; ET = 0; } } } return Q; } R_TRIG::R_TRIG() { CLK = false; _M = false; Q = false; } boolean R_TRIG::Run(boolean CLK) { R_TRIG::CLK = CLK; Q = R_TRIG::CLK && !_M; _M = R_TRIG::CLK; return Q; } F_TRIG::F_TRIG() { CLK = false; _M = true; Q = false; } boolean F_TRIG::Run(boolean CLK) { F_TRIG::CLK = CLK; Q = !F_TRIG::CLK && !_M; _M = !F_TRIG::CLK; return Q; } RS_TRIG::RS_TRIG() { SET = false; RESET = false; Q = false; } boolean RS_TRIG::Run(boolean SET, boolean RESET) { RS_TRIG::SET = SET; RS_TRIG::RESET = RESET; Q = !RESET and (SET or Q); return Q; } boolean RS_TRIG::Run() { Q = !RESET and (SET or Q); return Q; } SR_TRIG::SR_TRIG() { SET = false; RESET = false; Q = false; } boolean SR_TRIG::Run(boolean SET, boolean RESET) { SR_TRIG::SET = SET; SR_TRIG::RESET = RESET; Q = SET or (!RESET and Q); return Q; } boolean SR_TRIG::Run() { Q = SET or (!RESET and Q); return Q; }
plcStandardLib_1_example.ino #include "plcStandardLib_1.h" #define LED 13 #define ButtonIn 7 TON TON1(500);
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрдЯрди рдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рдХреЗ рдмрдХрдмрдХ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬрдм рднреА рдЦреБрд▓ рд░рд╣рд╛ рд╣реЛ!), рдпрд╣ рдХреЛрдб рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
FiltredButtonIn = TON1.Run(digitalRead(ButtonIn))
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ: рдпрд╣ рдХреИрд╕реЗ CODESYS TON рдФрд░ TP рдЯрд╛рдЗрдорд░ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкрд▓реНрд╕ рдЬрдирд░реЗрдЯрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ, TON рдХреЛ рдЙрд▓рдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХрд▓ рдкрд▓реНрд╕ рдЬрдирд░реЗрдЯрд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЯреАрдкреА рдкрд▓реНрд╕ рдЬрдирд░реЗрдЯрд░ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ Arduino рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
digitalWrite(LED, TP2.Run(TON2.Run(!TON2.Q)))