tak zwłaszcza ze tobie to polecenie jest do niczego nie potrzebne bo możesz skorzystać z "fnct_16_write_multiple_registers" i wpisać NELEMENTS=1
ale skoro się nie da to nie.
poprawki na pewno się da:
https://github.com/LinuxCNC/linuxcnc/pull/487/files
tylko w twoim przypadku nie są ci potrzebne ale spoko
masz tu działający config z yaskawy v1000 (linuxcnc 2.7.14) bo widzę ze szukasz dziury w całym
Kod: Zaznacz cały
#This .INI file is also the HELP, MANUAL and HOW-TO file for mb2hal.
#Load the modbus HAL userspace module as the examples below,
#change to match your own HAL_MODULE_NAME and .ini file name
#Using HAL_MODULE_NAME=mb2hal or nothing (default): loadusr -W mb2hal config=config_file.ini
#Using HAL_MODULE_NAME=mymodule: loadusr -Wn mymodule mb2hal config=config_file.ini
#Common section
[MB2HAL_INIT]
#OPTIONAL: Debug level of init and INI file parsing.
# 0 = silent.
# 1 = error messages (default).
# 2 = OK confirmation messages.
# 3 = debugging messages.
INIT_DEBUG=0
#OPTIONAL: HAL module (component) name. Defaults to "mb2hal".
HAL_MODULE_NAME=VFD
#OPTIONAL: Insert a delay of "FLOAT seconds" between transactions in order
#to not to have a lot of logging and facilitate the debugging.
#Usefull when using DEBUG=3 (NOT INIT_DEBUG=3)
#It affects ALL transactions.
#Use "0.0" for normal activity.
SLOWDOWN=0.0
#REQUIRED: The number of total Modbus transactions. There is no maximum.
TOTAL_TRANSACTIONS=10
#One transaction section is required per transaction, starting at 00 and counting up sequentially.
#If there is a new link (not transaction), you must provide the REQUIRED parameters 1st time.
#Warning: Any OPTIONAL parameter not specified are copied from the previous transaction.
[TRANSACTION_00]
#REQUIRED: You must specify either a "serial" or "tcp" link for the first transaction.
#Later transaction will use the previous transaction link if not specified.
LINK_TYPE=serial
#if LINK_TYPE=tcp then REQUIRED (only 1st time): The Modbus slave device ip address.
#if LINK_TYPE=serial then IGNORED
TCP_IP=192.168.2.10
#if LINK_TYPE=tcp then OPTIONAL.
#if LINK_TYPE=serial then IGNORED
#The Modbus slave device tcp port. Defaults to 502.
TCP_PORT=502
#if LINK_TYPE=serial then REQUIRED (only 1st time).
#if LINK_TYPE=tcp then IGNORED
#The serial port.
SERIAL_PORT=/dev/ttyUSB0
#if LINK_TYPE=serial then REQUIRED (only 1st time).
#if LINK_TYPE=tcp then IGNORED
#The baud rate.
SERIAL_BAUD=9600
#if LINK_TYPE=serial then REQUIRED (only 1st time).
#if LINK_TYPE=tcp then IGNORED
#Data bits. One of 5,6,7,8.
SERIAL_BITS=8
#if LINK_TYPE=serial then REQUIRED (only 1st time).
#if LINK_TYPE=tcp then IGNORED
#Data parity. One of: even, odd, none.
SERIAL_PARITY=none
#if LINK_TYPE=serial then REQUIRED (only 1st time).
#if LINK_TYPE=tcp then IGNORED
#Stop bits. One of 1, 2.
SERIAL_STOP=1
#if LINK_TYPE=serial then OPTIONAL:
#if LINK_TYPE=tcp then IGNORED
#Serial port delay between for this transaction only.
#In ms. Defaults to 0.
SERIAL_DELAY_MS=5
#REQUIRED (only 1st time).
#Modbus slave number.
MB_SLAVE_ID=31
#REQUIRED: The first element address.
FIRST_ELEMENT=1
#REQUIRED: The number of elements.
NELEMENTS=1
#REQUIRED: Modbus transaction function code (see www.modbus.org specifications).
# fnct_02_read_discrete_inputs (02 = 0x02)
# fnct_03_read_holding_registers (03 = 0x03)
# fnct_04_read_input_registers (04 = 0x04)
# fnct_15_write_multiple_coils (15 = 0x0F)
# fnct_16_write_multiple_registers (16 = 0x10)
#fnct_02_read_discrete_inputs: creates boolean output HAL pins.
#fnct_03_read_holding_registers: creates a floating point output HAL pins.
# also creates a u32 output HAL pins.
#fnct_04_read_input_registers: creates a floating point output HAL pins.
# also creates a u32 output HAL pins.
#fnct_15_write_multiple_coils: creates boolean input HAL pins.
#fnct_16_write_multiple_registers: creates a floating point input HAL pins.
#The pins are named based on component name, transaction number and order number.
#Example: mb2hal.00.01 (transaction=00, second register=01 (00 is the first one))
MB_TX_CODE=fnct_16_write_multiple_registers
#OPTIONAL: Response timeout for this transaction. In INTEGER ms. Defaults to 500 ms.
#This is how much to wait for 1st byte before raise an error.
#MB_RESPONSE_TIMEOUT_MS=500
#OPTIONAL: Byte timeout for this transaction. In INTEGER ms. Defaults to 500 ms.
#This is how much to wait from byte to byte before raise an error.
#MB_BYTE_TIMEOUT_MS=500
#OPTIONAL: Instead of giving the transaction number, use a name.
#Example: mb2hal.00.01 could become mb2hal.plcin.01
#The name must not exceed 32 characters.
#NOTE: when using names be careful that you dont end up with two transactions
#usign the same name.
HAL_TX_NAME=Operation_Signals
#OPTIONAL: Maximum update rate in HZ. Defaults to 0.0 (0.0 = as soon as available = infinit).
#NOTE: This is a maximum rate and the actual rate may be lower.
#If you want to calculate it in ms use (1000 / required_ms).
#Example: 100 ms = MAX_UPDATE_RATE=10.0, because 1000.0 ms / 100.0 ms = 10.0 Hz
MAX_UPDATE_RATE=10.0
#OPTIONAL: Debug level for this transaction only.
#See INIT_DEBUG parameter above.
DEBUG=0
#While DEBUGGING transactions note the returned "ret[]" value correspond to:
#/* Modbus protocol exceptions */
#ILLEGAL_FUNCTION -0x01 the FUNCTION code received in the query is not allowed or invalid.
#ILLEGAL_DATA_ADDRESS -0x02 the DATA ADDRESS received in the query is not an allowable address for the slave or is invalid.
#ILLEGAL_DATA_VALUE -0x03 a VALUE contained in the data query field is not an allowable value or is invalid.
#SLAVE_DEVICE_FAILURE -0x04 SLAVE (or MASTER) device unrecoverable FAILUER while attemping to perform the requested action.
#SERVER_FAILURE -0x04 (see above).
#ACKNOWLEDGE -0x05 This response is returned to PREVENT A TIMEOUT in the master.
# A long duration of time is required to process the request in the slave.
#SLAVE_DEVICE_BUSY -0x06 The slave (or server) is BUSY. Retrasmit the request later.
#SERVER_BUSY -0x06 (see above).
#NEGATIVE_ACKNOWLEDGE -0x07 Unsuccessful programming request using function code 13 or 14.
#MEMORY_PARITY_ERROR -0x08 SLAVE parity error in MEMORY.
#GATEWAY_PROBLEM_PATH -0x0A (-10) Gateway path(s) not available.
#GATEWAY_PROBLEM_TARGET -0x0B (-11) The target device failed to repond (generated by master, not slave).
#/* Program or connection */
#COMM_TIME_OUT -0x0C (-12)
#PORT_SOCKET_FAILURE -0x0D (-13)
#SELECT_FAILURE -0x0E (-14)
#TOO_MANY_DATAS -0x0F (-15)
#INVALID_CRC -0x10 (-16)
#INVALID_EXCEPTION_CODE -0x11 (-17)
[TRANSACTION_01]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Drive_Status
FIRST_ELEMENT=32
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_02]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Fault_Contents_1
FIRST_ELEMENT=33
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_03]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Output_Frequency_RPM
FIRST_ELEMENT=62
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_04]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Drive_Status_2
FIRST_ELEMENT=44
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_05]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=DC_Bus_Voltage
FIRST_ELEMENT=49
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_06]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Output_Power
FIRST_ELEMENT=38
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_07]
MB_TX_CODE=fnct_16_write_multiple_registers
HAL_TX_NAME=Frequency_Reference_IN
FIRST_ELEMENT=2
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_08]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Alarm_Contents_1
FIRST_ELEMENT=42
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0
[TRANSACTION_09]
MB_TX_CODE=fnct_03_read_holding_registers
HAL_TX_NAME=Fault_Contents_2
FIRST_ELEMENT=41
NELEMENTS=1
MAX_UPDATE_RATE=0.0
DEBUG=0