Commit 237df10263ef733e6d8d78dbf627b264dd3d3b5d
1 parent
62d8e2f6
New function modbus_set_slave()
Showing
4 changed files
with
16 additions
and
5 deletions
MIGRATION
| ... | ... | @@ -5,8 +5,9 @@ Migration notes from the 2.0 series (for 2.2) |
| 5 | 5 | 1 - modbus_init_rtu/tcp takes a new argument: the slave and it is only required |
| 6 | 6 | in that function (eg. read_coil_status doesn't receive the slave ID in |
| 7 | 7 | argument anymore). If you need to use different slaves with the same |
| 8 | - connection (eg. RS485), you can copy modbus_param_t or set | |
| 9 | - modbus_param_t.slave to a different value when required. | |
| 8 | + connection (eg. RS485), you can copy modbus_param_t, use modbus_set_slave() | |
| 9 | + function or directly set modbus_param_t.slave to a different value when | |
| 10 | + required. | |
| 10 | 11 | |
| 11 | 12 | 2 - modbus_init_listen_tcp() has been renamed to modbus_slave_listen_tcp() and |
| 12 | 13 | requires a new argument, the maximal number of connections: | ... | ... |
src/modbus.c
| ... | ... | @@ -1407,6 +1407,13 @@ void modbus_init_tcp(modbus_param_t *mb_param, const char *ip, int port, int sla |
| 1407 | 1407 | mb_param->slave = slave; |
| 1408 | 1408 | } |
| 1409 | 1409 | |
| 1410 | +/* Define the slave number. | |
| 1411 | + The special value MODBUS_BROADCAST_ADDRESS can be used. */ | |
| 1412 | +void modbus_set_slave(modbus_param_t *mb_param, int slave) | |
| 1413 | +{ | |
| 1414 | + mb_param->slave = slave; | |
| 1415 | +} | |
| 1416 | + | |
| 1410 | 1417 | /* By default, the error handling mode used is FLUSH_OR_CONNECT_ON_ERROR. |
| 1411 | 1418 | |
| 1412 | 1419 | With FLUSH_OR_CONNECT_ON_ERROR, the library will attempt an immediate | ... | ... |
src/modbus.h
| ... | ... | @@ -251,6 +251,10 @@ void modbus_init_rtu(modbus_param_t *mb_param, const char *device, |
| 251 | 251 | void modbus_init_tcp(modbus_param_t *mb_param, const char *ip_address, int port, |
| 252 | 252 | int slave); |
| 253 | 253 | |
| 254 | +/* Define the slave number. | |
| 255 | + The special value MODBUS_BROADCAST_ADDRESS can be used. */ | |
| 256 | +void modbus_set_slave(modbus_param_t *mb_param, int slave); | |
| 257 | + | |
| 254 | 258 | /* By default, the error handling mode used is CONNECT_ON_ERROR. |
| 255 | 259 | |
| 256 | 260 | With FLUSH_OR_CONNECT_ON_ERROR, the library will attempt an immediate | ... | ... |
tests/unit-test-master.c
| ... | ... | @@ -420,8 +420,7 @@ int main(void) |
| 420 | 420 | |
| 421 | 421 | /** SLAVE REPLY **/ |
| 422 | 422 | printf("\nTEST SLAVE REPLY:\n"); |
| 423 | - | |
| 424 | - mb_param.slave = 0x12; | |
| 423 | + modbus_set_slave(&mb_param, 18); | |
| 425 | 424 | ret = read_holding_registers(&mb_param, |
| 426 | 425 | UT_HOLDING_REGISTERS_ADDRESS+1, |
| 427 | 426 | UT_HOLDING_REGISTERS_NB_POINTS, |
| ... | ... | @@ -434,7 +433,7 @@ int main(void) |
| 434 | 433 | goto close; |
| 435 | 434 | } |
| 436 | 435 | |
| 437 | - mb_param.slave = MODBUS_BROADCAST_ADDRESS; | |
| 436 | + modbus_set_slave(&mb_param, MODBUS_BROADCAST_ADDRESS); | |
| 438 | 437 | ret = read_holding_registers(&mb_param, |
| 439 | 438 | UT_HOLDING_REGISTERS_ADDRESS, |
| 440 | 439 | UT_HOLDING_REGISTERS_NB_POINTS, | ... | ... |