Ejemplo n.º 1
0
    def test_serial_client_send(self):
        """ Test the serial client send method"""
        client = ModbusSerialClient()
        self.assertRaises(ConnectionException, lambda: client.send(None))

        client.socket = MockSocket()
        self.assertEqual(0, client.send(None))
        self.assertEqual(4, client.send('1234'))
Ejemplo n.º 2
0
    def test_serial_client_receive(self):
        """ Test the serial client receive method"""
        client = ModbusSerialClient()
        self.assertRaises(ConnectionException, lambda: client.receive(1024))

        client.socket = MockSocket()
        self.assertEqual('', client.receive(0))
        self.assertEqual('\x00'*4, client.receive(4))
Ejemplo n.º 3
0
    def test_serial_client_connect(self):
        """ Test the serial client connection method"""
        with patch.object(serial, 'Serial') as mock_method:
            mock_method.return_value = object()
            client = ModbusSerialClient()
            self.assertTrue(client.connect())

        with patch.object(serial, 'Serial') as mock_method:
            mock_method.side_effect = serial.SerialException()
            client = ModbusSerialClient()
            self.assertFalse(client.connect())
Ejemplo n.º 4
0
    def test_serial_client_connect(self):
        """ Test the serial client connection method"""
        with patch.object(serial, 'Serial') as mock_method:
            mock_method.return_value = object()
            client = ModbusSerialClient()
            self.assertTrue(client.connect())

        with patch.object(serial, 'Serial') as mock_method:
            mock_method.side_effect = serial.SerialException()
            client = ModbusSerialClient()
            self.assertFalse(client.connect())
Ejemplo n.º 5
0
    def test_basic_sync_serial_client(self):
        """ Test the basic methods for the serial sync client"""

        # receive/send
        client = ModbusSerialClient()
        client.socket = MockSocket()
        self.assertEqual(0, client.send(None))
        self.assertEqual(1, client.send('\x00'))
        self.assertEqual('\x00', client.receive(1))

        # connect/disconnect
        self.assertTrue(client.connect())
        client.close()

        # already closed socket
        client.socket = False
        client.close()

        self.assertEqual('ascii baud[19200]', str(client))
Ejemplo n.º 6
0
    def test_basic_sync_serial_client(self):
        """ Test the basic methods for the serial sync client"""

        # receive/send
        client = ModbusSerialClient()
        client.socket = MockSocket()
        self.assertEqual(0, client.send(None))
        self.assertEqual(1, client.send('\x00'))
        self.assertEqual('\x00', client.receive(1))

        # connect/disconnect
        self.assertTrue(client.connect())
        client.close()

        # already closed socket
        client.socket = False
        client.close()

        self.assertEqual('ascii baud[19200]', str(client))
Ejemplo n.º 7
0
import time
import pymodbus3
import serial
import traceback
from pymodbus3.pdu import ModbusRequest
from pymodbus3.client.sync import ModbusSerialClient as ModbusClient
from pymodbus3.transaction import ModbusRtuFramer
from serial.tools.list_ports import comports
import sys

READ_COILS_PDU_Addr_Test_1 = 0x1000
SLAVE_UNIT = 0x1

client = ModbusClient("rtu",
                      port="COM9",
                      stopbits=2,
                      bytesize=8,
                      baudrate=9600,
                      timeout=10)
connected = client.connect()
if connected:
    print("Tristar Morningstar 1 connected!")
else:
    print("Something went wrong.")
    exit(1)
start = time.time()
rr = client.read_holding_registers(0xE000, 1, unit=0)
assert (rr.function_code < 0x80)
print(rr)
#data = client.read_coils(READ_COILS_PDU_Addr_Test_1, 1)

stop = time.time()
Ejemplo n.º 8
0
from pymodbus3.client.sync import ModbusTcpClient
from pymodbus3.client.sync import ModbusSerialClient

client = ModbusSerialClient(method='rtu',port='/dev/ttyUSB0',parity='N',stopbits=1,bytesize=8,baudrate=9600,timeout=3)
result = client.read_holding_registers(1,2,unit=1)
client.close()

Ejemplo n.º 9
0
class Modbus():

	# Init modbus device
	def __init__(self):

		self._client = ModbusClient(method='rtu',
			port = PORT,
			bytesize = BITS,
			parity = PARITY,
			baudrate = BAUDRATE,
			timeout = 1)

		if self._client.connect() == False:
			logger_modbus.error(bcolors.FAIL + "*******************************" + bcolors.ENDC)
			logger_modbus.error(bcolors.FAIL + "*** ERROR, DEVICE NOT FOUND ***" + bcolors.ENDC)
			logger_modbus.error(bcolors.FAIL + "*******************************" + bcolors.ENDC)
			time.sleep(1)

		return

	# Delete modbus device
	def __del__(self):

		logger_modbus.info("Delete modbus device")

		self.close_connection()

		return

	# Toggle relay
	def toggle_relay(self, channel, address):

		try:
			ret = self._client.write_register(channel, 0x0300, unit=address)
		except:
			logger_modbus.error(bcolors.FAIL + "Error, slave %s not responde!"  + bcolors.ENDC, address)
			return -1

		logger_modbus.info("Toggle relay %s" %ret)

		return ret

	# Read status relay
	def read_status_relay(self, channel, address):

		try:
			ret = self._client.read_holding_registers(channel, unit=address)
		except:
			logger_modbus.error(bcolors.FAIL + "Error, slave %s not responde!" + bcolors.ENDC, address)
			return -1

		logger_modbus.info("Status relay channel %d: %s" % (channel, int(ret.registers[0])))

		return int(ret.registers[0])

	# Close device
	def close_connection(self):

	    logger_modbus.info("Close connection!")

	    self._client.close()

	    return 0
Ejemplo n.º 10
0
DCCurrentPageNumber = 4
DCCurrentRegisterOffset = 201
STOP = 35700 #This are control keys
STOPC = 29835 #This are complements of control keys, must be write together with the control key
AUTO = 35701
AUTOC = 29834
MANUAL = 35702
MANUALC = 29833
AUTOM = 35704
AUTOMC = 29831
START = 35705
STARTC = 29830
RESETAL = 35734

print("Connecting to DSE")
client = ModbusClient(method = "rtu", port="/dev/ttyUSB2", stopbits = 1, bytesize = 8, parity = 'E' baudrate = 19200)
client.connect()
time.sleep(0.1)

def sync_client_read(registerNumber):
	try:
		result = client.read_holding_registers(registerNumber,1, unit=UnitNumber)
		return result.registers
	except:
		print("Connection Error Handled")
		output = False
		return output

def read_register(PageNumber, RegisterOffset, Scale, UnitNumber):
	register = 256 * PageNumber + RegisterOffset
	read = sync_client_read(register)
Ejemplo n.º 11
0
from pymodbus3.client.sync import ModbusSerialClient
client = ModbusSerialClient('/dev/ttyACM0')
client.write_coil(1, True)
result = client.read_coils(1,1)
print (result.bits[0])
client.close()