wrapper for pyModbusTCP accepting all Modbus numbers with Fatek support
List of different Modbus types can be provided in the input:
Reading Coils, Holding registers and Discrete input:
>> client = ModbusClient("10.0.57.30")
>> modbus_object_list = [20,20,30,31,32,33,33, 400800, 400801, 100300]
>> client read(modbus_list)
{'20': 'False', '30': 'False', '31': 'True', '32': 'True', '33': 'False', '400800': '0', '400801': '0', '100300': 'None'}For above example only 3 modbus function calls will be executed:
read_coils(19, 14)
read_holding_registers(799, 2)
read_discrete_inputs(299, 1)- All coils are read in one function call thanks to MaxReadSize and ReadMask parameters which can be configured in modbus object config file
client.read(modbus_list, max_read_size=1)For above example, 8 modbus functions will be executed:
read_coils(19, 1)
read_coils(29, 1)
read_coils(30, 1)
read_coils(31, 1)
read_coils(32, 1)
read_holding_registers(799, 1)
read_holding_registers(800, 1)
read_discrete_inputs(299, 1)| Modbus | FATEK | Description |
|---|---|---|
| 000001~000256 | Y0~Y255 | Discrete Output |
| 001001~001256 | X0~X255 | Discrete Input |
| 002001~004002 | M0~M2001 | Discrete M Relay |
| 006001~007000 | S0~S999 | Discrete S Relay |
| 009001~009256 | T0~T255 | Status of T0~T255 |
| 009501~009756 | C0~C255 | Status of C0~C255 |
| 400001~404168 | R0~R4167 | Holding Register |
| 405001~405999 | R5000~R5998 | Holding Register or ROR |
| 406001~408999 | D0~D2998 Data | Register |
| 409001~409256 | T0~T255 | Current Value of T0~T255 |
| 409501~409700 | C0~C199 | Current Value of C0~C199( 16-bit) |
| 409701~409812 | C200~C255 | Current Value of C200~C255( 32-bit) |