PyTool Modbus TCP๋ Modbus TCP ๊ฐ๋ฐ, ๋๋ฒ๊น
๋ฐ ๋ชจ๋ํฐ๋ง์์ํ ํ๋ฅญํ ๋๊ตฌ์
๋๋ค.
์ต๊ณ ์ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ Python ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
Modbus TCP ๋๊ตฌ์ ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ ๊ธฐ ์์ง๋์ด๋ Android ์ ํ ๋๋ ํ๋ธ๋ฆฟ๊ณผ ๊ฐ์ ํด๋์ฉ ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฅ, ๊ณต์ฅ ๋๋ ์คํ์ค์์ Modbus TCP ํต์ ์ ๋๋ฒ๊ทธํ๊ฑฐ๋ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค๋ ๊ฒ์ ์๊ฒ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฑฐ์ ๋ชจ๋ Modbus TCP ํต์ ์์คํ
์๋ ์์ฒด ๋ฐ์ดํฐ ํ์์ด ์์ต๋๋ค.
"02a5b4ca .... ff000803"๊ณผ ๊ฐ์ 16 ์ง์ ๋ฐ์ดํฐ์ ๋ฐ๋ค์์ ๊ฒ์ํ๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์์ ๋ด๋ ค๋ ๊ฒ์ ์ ํ ์ฆ๊ฒ์ง ์์ต๋๋ค.
์ด๊ฒ์ด PyTool Modbus TCP๊ฐ ๋์์ด๋๋ ๊ณณ์
๋๋ค.
์ฌ์ฉ์ ์ง์ Python ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์์๋ ๊ธฐ๋ฅ์ ํตํด PyTool Modbus TCP๋ ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ํ๋ ๋ฐฉ์์ผ๋ก ํ์ํ๊ณ ํ์ํ ๋ ๊ทธ์ ๋ฐ๋ผ ์๋ ํ ์๋ ์์ต๋๋ค.
๋น ๋ฅธ ์์์์ํ ์คํฌ๋ฆฝํธ ์์ ๊ฐ ์์ต๋๋ค. ๊ทธ์ค ํ๋๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ์ด ์ฌ์ฉํด๋ณด์ธ์.
์ผ๋ฐ์ ์ธ ์ฌ์ฉ์์ํ ํธ๋ฆฌํ Modbus TCP ์ ์ด ์ธํฐํ์ด์ค๋ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ ์ผ๋ฐ ๊ฐ์ด๋
=================
*์ด ์ฑ์์ ์ฌ์ฉ๋๋ Python ๋ฒ์ ์ 3.8์
๋๋ค.
*์ด ์ฑ์ ์คํฌ๋ฆฝํธ ํธ์ง๊ธฐ๋ก ์ค๊ณ๋์ง ์์์ง๋ง ์คํฌ๋ฆฝํธ ํ๋์์ ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ง ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์ข์ํ๋ ์คํฌ๋ฆฝํธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํ์ฌ ๋ถ์ฌ ๋ฃ๋ ๊ฒ์
๋๋ค.
* ์ด์ํ ์ค๋ฅ๋ฅผ ํผํ๊ธฐ ์ํด ๋ค์ฌ ์ฐ๊ธฐ์ ํญ์ 4 ๊ฐ์ ๊ณต๋ฐฑ์ ์ฌ์ฉํ์ญ์์ค.
* ํ์ค Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๋๋ถ๋ถ์ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
* while ๋ฃจํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์งํ๊ธฐ ์ํด ํญ์`app.running_script`๋ฅผ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
*`app.version`์ ์ฌ์ฉํ์ฌ ์ฑ ๋ฒ์ ๋ฌธ์์ด์ ๊ฐ์ ธ์ต๋๋ค.
*`app.get_output ()`์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ ์ถ๋ ฅ ํ๋๋ฅผ ๋ฌธ์์ด๋ก ๊ฐ์ ธ์ต๋๋ค.
* ์คํฌ๋ฆฝํธ ์ถ๋ ฅ ํ๋์ 'object'๋ฅผ ๋ฌธ์์ด๋ก ํ์ํ๋ ค๋ฉด`app.set_output (object)`๋ฅผ ์ฌ์ฉํฉ๋๋ค.
* ์คํฌ๋ฆฝํธ ์ถ๋ ฅ ํ๋์ ํ
์คํธ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด`app.print_text (object)`๋ฅผ`app.set_output (app.get_output () + str (object))`์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ก ์ฌ์ฉํฉ๋๋ค.
*`app.clear_text ()`๋ฅผ`app.set_output ( "")`์ ๋ฐ๋ก ๊ฐ๊ธฐ๋ก ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ ์ถ๋ ฅ ํ๋๋ฅผ ์ง ์๋๋ค.
* 'app.fc01_read_coils (mbid, addr, num)'๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 01 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
num (int) : ๋ฐ์ดํฐ ์
return (list of int) : ์์ฒญ ๋ ๋ฐ์ดํฐ ๋ชฉ๋ก
* 'app.fc02_read_discrete_inputs (mbid, addr, num)'์ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 02 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
num (int) : ๋ฐ์ดํฐ ์
return (list of int) : ์์ฒญ ๋ ๋ฐ์ดํฐ ๋ชฉ๋ก
*`app.fc03_read_holding_registers (mbid, addr, num)`๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 03 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
num (int) : ๋ฐ์ดํฐ ์
return (list of int) : ์์ฒญ ๋ ๋ฐ์ดํฐ ๋ชฉ๋ก
*`app.fc04_read_input_registers (mbid, addr, num)`๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 04 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
num (int) : ๋ฐ์ดํฐ ์
return (list of int) : ์์ฒญ ๋ ๋ฐ์ดํฐ ๋ชฉ๋ก
*`app.fc05_write_single_coil (mbid, addr, val)`์ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 05 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
val (int) : ๋ฐ์ดํฐ ๊ฐ
return (int) : ๋ฐ์ดํฐ ์ (ํญ์ 1)
*`app.fc06_write_single_register (mbid, addr, val)`๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 06 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
val (int) : ๋ฐ์ดํฐ ๊ฐ
return (int) : ๋ฐ์ดํฐ ์ (ํญ์ 1)
* 'app.fc15_write_multiple_coils (mbid, addr, vals)'๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 15 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
vals (์ ์ ๋ชฉ๋ก) : ๋ฐ์ดํฐ ๊ฐ ๋ชฉ๋ก
return (int) : ๋ฐ์ดํฐ ์
*`app.fc16_write_multiple_registers (mbid, addr, vals)`๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ ์ฝ๋ 16 ์์ฒญ์ ๋ณด๋
๋๋ค.
mbid (int) : Modbus ID
addr (int) : ๋ฐ์ดํฐ ์ฃผ์
vals (์ ์ ๋ชฉ๋ก) : ๋ฐ์ดํฐ ๊ฐ ๋ชฉ๋ก
return (int) : ๋ฐ์ดํฐ ์
*`app.msg_out` ๋ฐ`app.msg_in`์ ์ฌ์ฉํ์ฌ ์์ฒญ ๋ฐ ์๋ต ๋ฉ์์ง๋ฅผ ํ์ธํฉ๋๋ค.
* ๋ก๊ทธ ํ์ผ์ ์ ์ฅ์์ ์ ์ฅํ๋ ค๋ฉด`app.log_file (text)`๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ก๊ทธ ํ์ผ์ [Storage Directory] / PyToolModbusTCP / log_ [UTC Timestamp] .txt์ ์์ต๋๋ค.
text (str) : ํ
์คํธ ๋ด์ฉ
return (str) : ์ ์ฒด ํ์ผ ๊ฒฝ๋ก
์
๋ฐ์ดํธ ๋ ์ง
2021. 7. 6.