dev
This commit is contained in:
parent
c38496d657
commit
356857bb58
72
src/test/modbus_read_data.py
Normal file
72
src/test/modbus_read_data.py
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
import serial
|
||||||
|
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
|
||||||
|
from pymodbus.exceptions import ModbusIOException
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def read_modbus_data(client, starting_register, register_count):
|
||||||
|
"""
|
||||||
|
Reads data from the Modbus server.
|
||||||
|
|
||||||
|
:param client: An instance of ModbusClient
|
||||||
|
:param starting_register: The address of the register to start reading from
|
||||||
|
:param register_count: Number of registers to read
|
||||||
|
:return: List of register values or None if there was an error
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
read_data = client.read_holding_registers(starting_register, count=register_count)
|
||||||
|
if isinstance(read_data, ModbusIOException):
|
||||||
|
print("Error: ModbusIOException occurred during read operation.")
|
||||||
|
return None
|
||||||
|
else:
|
||||||
|
return read_data.registers
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# Modbus client configuration
|
||||||
|
client = ModbusClient(
|
||||||
|
method="rtu",
|
||||||
|
port="/dev/ttyUSB0", # Specify the correct port for your serial connection
|
||||||
|
stopbits=serial.STOPBITS_ONE,
|
||||||
|
bytesize=serial.EIGHTBITS,
|
||||||
|
parity=serial.PARITY_NONE,
|
||||||
|
baudrate=38400,
|
||||||
|
timeout=1, # Timeout in seconds
|
||||||
|
strict=False
|
||||||
|
)
|
||||||
|
|
||||||
|
# Attempt to connect to the Modbus server
|
||||||
|
if client.connect():
|
||||||
|
print("Modbus client connected successfully.")
|
||||||
|
else:
|
||||||
|
print("Failed to connect to Modbus client.")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Starting the data read loop
|
||||||
|
try:
|
||||||
|
starting_register = 1 # Define the starting register address
|
||||||
|
register_count = 10 # Define the number of registers to read
|
||||||
|
|
||||||
|
print("Starting data read loop...")
|
||||||
|
while True:
|
||||||
|
data = read_modbus_data(client, starting_register, register_count)
|
||||||
|
if data:
|
||||||
|
# Print read data
|
||||||
|
for i, value in enumerate(data):
|
||||||
|
print(f"Register {starting_register + i}: {value}")
|
||||||
|
else:
|
||||||
|
print("Failed to read data from Modbus server.")
|
||||||
|
|
||||||
|
time.sleep(1) # Wait 1 second before the next read (adjust as necessary)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
print("\nStopping read loop...")
|
||||||
|
finally:
|
||||||
|
client.close()
|
||||||
|
print("Modbus client connection closed.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Loading…
Reference in New Issue
Block a user