Skip to content

Commit d8cc0b0

Browse files
pikasTechgitee-org
authored andcommitted
!272 添加了modbus_rt的demo
Merge pull request !272 from SenySunny/master
2 parents 2a7ac72 + 2af9b13 commit d8cc0b0

12 files changed

Lines changed: 211 additions & 0 deletions

examples/modbus_rt/ascii_master.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "COM11"
5+
6+
ascii_m = modbus_rt.rtu(cst.MASTER)
7+
ascii_m.set_serial(serial_name)
8+
ascii_m.open()
9+
# ascii_m.excuse(1,3,0,5)
10+
# ascii_m.excuse(1,16,0,5,[21,23,24,25,65])
11+
# ascii_m.excuse(1,3,0,5)

examples/modbus_rt/ascii_slave.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "COM11"
5+
6+
ascii_s = modbus_rt.ascii()
7+
ascii_s.set_serial(serial_name)
8+
ascii_s.add_block("A",cst.REGISTERS, 0, 10)
9+
ascii_s.open()
10+
# ascii_s.excuse(0,4,0,5)
11+
# ascii_s.excuse(1,4,0,5,[1,2,34,5,6])
12+
# ascii_s.excuse(0,4,0,5)

examples/modbus_rt/dtu_stm32.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "uart4"
5+
ip_addr = ""
6+
7+
rm = modbus_rt.rtu(cst.MASTER)
8+
rm.set_serial(serial_name)
9+
rm.open()
10+
ts = modbus_rt.tcp()
11+
ts.set_net(ip_addr, 502, cst.SOCK_STREAM)
12+
def pre_call(evt) :
13+
slave = evt.slave
14+
function = evt.function
15+
addr = evt.addr
16+
quantity = evt.quantity
17+
if cst.READ_DISCRETE_INPUTS == function:
18+
if addr >= 0 and addr <= 16 :
19+
data = rm.excuse(slave, function, addr + 10000, quantity)
20+
ts.excuse(cst.WRITE, cst.INPUTS, addr, quantity, data)
21+
elif cst.READ_COILS == function:
22+
if addr >= 0 and addr <= 16 :
23+
data = rm.excuse(slave, function, addr + 20000, quantity)
24+
ts.excuse(cst.WRITE, cst.CIOLS, addr, quantity, data)
25+
def done_call(evt) :
26+
slave = evt.slave
27+
function = evt.function
28+
addr = evt.addr
29+
quantity = evt.quantity
30+
if cst.WRITE_SINGLE_COIL == function:
31+
if addr >= 0 and addr <= 16 :
32+
data = ts.excuse(cst.READ, cst.CIOLS, addr, 1)
33+
rm.excuse(slave, function, addr + 20000, data[0])
34+
elif cst.WRITE_MULTIPLE_COILS == function:
35+
if addr >= 0 and addr <= 16 :
36+
data = ts.excuse(cst.READ, cst.CIOLS, addr, quantity)
37+
rm.excuse(slave, function, addr + 20000, quantity, data)
38+
ts.set_strict(0)
39+
ts.set_pre_ans_callback(pre_call)
40+
ts.set_done_callback(done_call)
41+
ts.open()

examples/modbus_rt/rtu_master.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "COM11"
5+
6+
rm = modbus_rt.rtu(cst.MASTER)
7+
rm.set_serial(serial_name)
8+
rm.open()
9+
# rm.excuse(1,3,0,5)
10+
# rm.excuse(1,16,0,5,[21,23,24,25,65])
11+
# rm.excuse(1,3,0,5)

examples/modbus_rt/rtu_slave.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "uart1"
5+
6+
rs = modbus_rt.rtu()
7+
rs.set_serial(serial_name)
8+
rs.add_block("A",cst.REGISTERS, 0, 10)
9+
rs.open()
10+
# rs.excuse(0,4,0,5)
11+
# rs.excuse(1,4,0,5,[1,2,34,5,6])
12+
# rs.excuse(0,4,0,5)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
ip_addr = "192.168.28.150"
5+
6+
rst = modbus_rt.rtu()
7+
rst.set_over_type(cst.OVER_NET)
8+
rst.set_net(ip_addr, 502, cst.SOCK_STREAM)
9+
rst.add_block("A",cst.REGISTERS, 0, 10)
10+
rst.open()
11+
# rst.excuse(0,4,0,5)
12+
# rst.excuse(1,4,0,5,[1,2,34,5,6])
13+
# rst.excuse(0,4,0,5)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
ip_addr = "192.168.28.150"
5+
6+
rsu = modbus_rt.rtu()
7+
rsu.set_over_type(cst.OVER_NET)
8+
rsu.set_net(ip_addr, 502, cst.SOCK_DGRAM)
9+
rsu.add_block("A",cst.REGISTERS, 0, 10)
10+
rsu.open()
11+
# rsu.excuse(0,4,0,5)
12+
# rsu.excuse(1,4,0,5,[1,2,34,5,6])
13+
# rsu.excuse(0,4,0,5)

examples/modbus_rt/tcp2rtu_dtu.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
serial_name = "/dev/ttyUSB0"
5+
ip_addr = ""
6+
7+
rm = modbus_rt.rtu(cst.MASTER)
8+
rm.set_serial(serial_name)
9+
rm.open()
10+
ts = modbus_rt.tcp()
11+
ts.set_net(ip_addr, 502, cst.SOCK_STREAM)
12+
def pre_call(evt) :
13+
slave = evt.slave
14+
function = evt.function
15+
addr = evt.addr
16+
quantity = evt.quantity
17+
if cst.READ_HOLDING_REGISTERS == function:
18+
data = rm.excuse(slave, function, addr, quantity)
19+
ts.excuse(cst.WRITE, cst.REGISTERS, addr, quantity, data)
20+
elif cst.READ_DISCRETE_INPUTS == function:
21+
data = rm.excuse(slave, function, addr, quantity)
22+
ts.excuse(cst.WRITE, cst.INPUTS, addr, quantity, data)
23+
def done_call(evt) :
24+
slave = evt.slave
25+
function = evt.function
26+
addr = evt.addr
27+
quantity = evt.quantity
28+
if cst.WRITE_SINGLE_COIL == function:
29+
data = ts.excuse(cst.READ, cst.CIOLS, addr, 1)
30+
rm.excuse(slave, function, addr, data[0])
31+
elif cst.WRITE_SINGLE_REGISTER == function:
32+
data = ts.excuse(cst.READ, cst.REGISTERS, addr, 1)
33+
rm.excuse(slave, function, addr, data[0])
34+
elif cst.WRITE_MULTIPLE_COILS == function:
35+
data = ts.excuse(cst.READ, cst.CIOLS, addr, quantity)
36+
rm.excuse(slave, function, addr, quantity, data)
37+
elif cst.WRITE_MULTIPLE_REGISTERS == function:
38+
data = ts.excuse(0, cst.REGISTERS, addr, quantity)
39+
rm.excuse(slave, function, addr, quantity, data)
40+
ts.add_block("A", 0, 20000, 10)
41+
ts.add_block("B", 1, 10000, 16)
42+
ts.add_block("C", 4, 0, 10)
43+
ts.set_strict(0)
44+
ts.set_pre_ans_callback(pre_call)
45+
ts.set_done_callback(done_call)
46+
ts.open()

examples/modbus_rt/tcp_master.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
ip_addr = "192.168.28.150"
5+
6+
tm = modbus_rt.tcp(cst.MASTER)
7+
tm.set_net(ip_addr, 0, cst.SOCK_STREAM)
8+
tm.set_server(ip_addr, 502)
9+
tm.open()
10+
# tm.excuse(1,3,0,5)
11+
# tm.excuse(1,16,0,5,[21,23,24,25,65])
12+
# tm.excuse(1,3,0,5)

examples/modbus_rt/tcp_slave.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import modbus_rt
2+
import modbus_rt_defines as cst
3+
4+
ip_addr = "192.168.28.150"
5+
6+
ts = modbus_rt.tcp()
7+
ts.set_net(ip_addr, 502, cst.SOCK_STREAM)
8+
ts.add_block("A",cst.REGISTERS, 0, 10)
9+
ts.open()
10+
# ts.excuse(0,4,0,5)
11+
# ts.excuse(1,4,0,5,[1,2,34,5,6])
12+
# ts.excuse(0,4,0,5)
13+

0 commit comments

Comments
 (0)