рдкрд╛рдпрдЯреВрд▓ рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рдХреЗ рд╡рд┐рдХрд╛рд╕, рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг рд╣реИред
рдЗрд╕рдореЗрдВ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддреА рд╣реИред
рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреНрд╖рдорддрд╛ рд╡рд╛рдВрдЫрдиреАрдп рдХреНрдпреЛрдВ рд╣реИ?
рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХрд▓ рдЗрдВрдЬреАрдирд┐рдпрд░реЛрдВ рдХреЛ рдлреАрд▓реНрдб, рдлреИрдХреНрдЯреНрд░реА рдпрд╛ рд▓реИрдм рдореЗрдВ рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рд╕рдВрдЪрд╛рд░ рдХреЛ рдбреАрдмрдЧ рдпрд╛ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдпрд╛ рдЯреИрдмрд▓реЗрдЯ рдЬреИрд╕реЗ рд╣реИрдВрдбрд╣реЗрд▓реНрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рд╣рд░ рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рд╕рдВрдЪрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рд╣реЛрддрд╛ рд╣реИред
"02a5b4ca...ff000803" рдЬреИрд╕реЗ рд╣реЗрдХреНрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рдореБрджреНрд░ рдореЗрдВ рдЦреЛрдЬрдирд╛ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИред
рдпрд╣реАрдВ рдкрд░ PyTool Modbus TCP рдорджрдж рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред
рдХрд╕реНрдЯрдо рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, PyTool Modbus TCP рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред
рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рдореЛрдбрдмрд╕ рдЯреАрд╕реАрдкреА рдирд┐рдпрдВрддреНрд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд╛рдорд╛рдиреНрдп рдЧрд╛рдЗрдб
=================
* рдЗрд╕ рдРрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рдпрдерди рд╡рд░реНрдЬрди 3.8 рд╣реИред
* рдпрд╣ рдРрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдкрд╛рджрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред
* рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП 4 рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рдорд╛рдирдХ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреИрдХреЗрдЬ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
* рдпрджрд┐ рд▓реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдареАрдХ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ `app.running_script` рдХреЛ рд╢рд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рдРрдк рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `app.version` рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред
* рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `app.get_output ()` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ 'рдСрдмреНрдЬреЗрдХреНрдЯ' рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'app.set_output (рдСрдмреНрдЬреЗрдХреНрдЯ)' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП `app.set_output(app.get_output() + str(object))` рдХреЗ рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд░реВрдк рдореЗрдВ `app.print_text(object)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `app.set_output("")` рдХреЗ рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд░реВрдк рдореЗрдВ `app.clear_text ()` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 01 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc01_read_coils(mbid, addr, num)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╕рдВрдЦреНрдпрд╛ (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
рд╡рд╛рдкрд╕реА (рдЗрдВрдЯ рдХреА рд╕реВрдЪреА): рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рд╕реВрдЪреА
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 02 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc02_read_discrete_inputs(mbid, addr, num)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╕рдВрдЦреНрдпрд╛ (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
рд╡рд╛рдкрд╕реА (рдЗрдВрдЯ рдХреА рд╕реВрдЪреА): рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рд╕реВрдЪреА
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 03 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc03_read_holding_registers(mbid, addr, num)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╕рдВрдЦреНрдпрд╛ (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
рд╡рд╛рдкрд╕реА (рдЗрдВрдЯ рдХреА рд╕реВрдЪреА): рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рд╕реВрдЪреА
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 04 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc04_read_input_registers(mbid, addr, num)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╕рдВрдЦреНрдпрд╛ (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
рд╡рд╛рдкрд╕реА (рдЗрдВрдЯ рдХреА рд╕реВрдЪреА): рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рд╕реВрдЪреА
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 05 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc05_write_single_coil (mbid, addr, val)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╡реИрд▓ (int): рдбреЗрдЯрд╛ рдорд╛рди
рд╡рд╛рдкрд╕реА (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ (рд╣рдореЗрд╢рд╛ 1)
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 06 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc06_write_single_register(mbid, addr, val)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
рд╡реИрд▓ (int): рдбреЗрдЯрд╛ рдорд╛рди
рд╡рд╛рдкрд╕реА (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ (рд╣рдореЗрд╢рд╛ 1)
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 15 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc15_write_multiple_coils (mbid, addr, vals)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
vals (int рдХреА рд╕реВрдЪреА): рдбреЗрдЯрд╛ рдорд╛рди рд╕реВрдЪреА
рд╡рд╛рдкрд╕реА (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
* рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб 16 рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП `app.fc16_write_multiple_registers (mbid, addr, vals)` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдПрдордмреАрдЖрдИрдбреА тАЛтАЛ(рдЗрдВрдЯ): рдореЛрдбрдмрд╕ рдЖрдИрдбреА
Addr (int): рдбреЗрдЯрд╛ рдкрддрд╛
vals (int рдХреА рд╕реВрдЪреА): рдбреЗрдЯрд╛ рдорд╛рди рд╕реВрдЪреА
рд╡рд╛рдкрд╕реА (int): рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
* рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП `app.msg_out` рдФрд░ `app.msg_in` рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
* рд▓реЙрдЧ рдлрд╛рдЗрд▓ рдХреЛ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕реЗрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП `app.log_file(text)` рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред
рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ [рд╕рдВрдЧреНрд░рд╣рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛]/PyToolModbusTCP/log_[UTC рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк] .txtред
рдкрд╛рда (str): рдкрд╛рда рд╕рд╛рдордЧреНрд░реА
рд╡рд╛рдкрд╕реА (str): рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдкрде
рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рд╣реЛрдиреЗ рдХреА рддрд╛рд░реАрдЦ
6 рдЬреБрд▓ре░ 2021