88 lines
3.7 KiB
Python
88 lines
3.7 KiB
Python
""" pyModbusTCP package constants definition """
|
|
|
|
# Package version
|
|
VERSION = '0.2.0'
|
|
# Modbus/TCP
|
|
MODBUS_PORT = 502
|
|
# Modbus function code
|
|
READ_COILS = 0x01
|
|
READ_DISCRETE_INPUTS = 0x02
|
|
READ_HOLDING_REGISTERS = 0x03
|
|
READ_INPUT_REGISTERS = 0x04
|
|
WRITE_SINGLE_COIL = 0x05
|
|
WRITE_SINGLE_REGISTER = 0x06
|
|
WRITE_MULTIPLE_COILS = 0x0F
|
|
WRITE_MULTIPLE_REGISTERS = 0x10
|
|
MODBUS_ENCAPSULATED_INTERFACE = 0x2B
|
|
SUPPORTED_FUNCTION_CODES = (READ_COILS, READ_DISCRETE_INPUTS, READ_HOLDING_REGISTERS, READ_INPUT_REGISTERS,
|
|
WRITE_SINGLE_COIL, WRITE_SINGLE_REGISTER, WRITE_MULTIPLE_COILS, WRITE_MULTIPLE_REGISTERS)
|
|
# Modbus except code
|
|
EXP_NONE = 0x00
|
|
EXP_ILLEGAL_FUNCTION = 0x01
|
|
EXP_DATA_ADDRESS = 0x02
|
|
EXP_DATA_VALUE = 0x03
|
|
EXP_SLAVE_DEVICE_FAILURE = 0x04
|
|
EXP_ACKNOWLEDGE = 0x05
|
|
EXP_SLAVE_DEVICE_BUSY = 0x06
|
|
EXP_NEGATIVE_ACKNOWLEDGE = 0x07
|
|
EXP_MEMORY_PARITY_ERROR = 0x08
|
|
EXP_GATEWAY_PATH_UNAVAILABLE = 0x0A
|
|
EXP_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND = 0x0B
|
|
# Exception as short human-readable
|
|
EXP_TXT = {
|
|
EXP_NONE: 'no exception',
|
|
EXP_ILLEGAL_FUNCTION: 'illegal function',
|
|
EXP_DATA_ADDRESS: 'illegal data address',
|
|
EXP_DATA_VALUE: 'illegal data value',
|
|
EXP_SLAVE_DEVICE_FAILURE: 'slave device failure',
|
|
EXP_ACKNOWLEDGE: 'acknowledge',
|
|
EXP_SLAVE_DEVICE_BUSY: 'slave device busy',
|
|
EXP_NEGATIVE_ACKNOWLEDGE: 'negative acknowledge',
|
|
EXP_MEMORY_PARITY_ERROR: 'memory parity error',
|
|
EXP_GATEWAY_PATH_UNAVAILABLE: 'gateway path unavailable',
|
|
EXP_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND: 'gateway target device failed to respond'
|
|
}
|
|
# Exception as details human-readable
|
|
EXP_DETAILS = {
|
|
EXP_NONE: 'The last request produced no exceptions.',
|
|
EXP_ILLEGAL_FUNCTION: 'Function code received in the query is not recognized or allowed by slave.',
|
|
EXP_DATA_ADDRESS: 'Data address of some or all the required entities are not allowed or do not exist in slave.',
|
|
EXP_DATA_VALUE: 'Value is not accepted by slave.',
|
|
EXP_SLAVE_DEVICE_FAILURE: 'Unrecoverable error occurred while slave was attempting to perform requested action.',
|
|
EXP_ACKNOWLEDGE: 'Slave has accepted request and is processing it, but a long duration of time is required. '
|
|
'This response is returned to prevent a timeout error from occurring in the master. '
|
|
'Master can next issue a Poll Program Complete message to determine whether processing '
|
|
'is completed.',
|
|
EXP_SLAVE_DEVICE_BUSY: 'Slave is engaged in processing a long-duration command. Master should retry later.',
|
|
EXP_NEGATIVE_ACKNOWLEDGE: 'Slave cannot perform the programming functions. '
|
|
'Master should request diagnostic or error information from slave.',
|
|
EXP_MEMORY_PARITY_ERROR: 'Slave detected a parity error in memory. '
|
|
'Master can retry the request, but service may be required on the slave device.',
|
|
EXP_GATEWAY_PATH_UNAVAILABLE: 'Specialized for Modbus gateways, this indicates a misconfiguration on gateway.',
|
|
EXP_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND: 'Specialized for Modbus gateways, sent when slave fails to respond.'
|
|
}
|
|
# Module error codes
|
|
MB_NO_ERR = 0
|
|
MB_RESOLVE_ERR = 1
|
|
MB_CONNECT_ERR = 2
|
|
MB_SEND_ERR = 3
|
|
MB_RECV_ERR = 4
|
|
MB_TIMEOUT_ERR = 5
|
|
MB_FRAME_ERR = 6
|
|
MB_EXCEPT_ERR = 7
|
|
MB_CRC_ERR = 8
|
|
MB_SOCK_CLOSE_ERR = 9
|
|
# Module error as short human-readable
|
|
MB_ERR_TXT = {
|
|
MB_NO_ERR: 'no error',
|
|
MB_RESOLVE_ERR: 'name resolve error',
|
|
MB_CONNECT_ERR: 'connect error',
|
|
MB_SEND_ERR: 'socket send error',
|
|
MB_RECV_ERR: 'socket recv error',
|
|
MB_TIMEOUT_ERR: 'recv timeout occur',
|
|
MB_FRAME_ERR: 'frame format error',
|
|
MB_EXCEPT_ERR: 'modbus exception',
|
|
MB_CRC_ERR: 'bad CRC on receive frame',
|
|
MB_SOCK_CLOSE_ERR: 'socket is closed'
|
|
}
|