翻譯自:http://libmodbus.org/docs/v3.1.4/modbus_set_slave.html
名稱
modbus_set_slave - 設定從機號碼(slave number)
函數
int modbus_set_slave(modbus_t *ctx, int slave);
描述
modbus_set_slave() 用於設定libmodbus環境中的slave數值。
此動作取決於網絡和設備的角色。
RTU
定義遠程設備的從站ID以在主站模式下進行通信,或將內部從站ID設置爲從站模式。 根據協議,Modbus設備只接受包含了其從機號碼(slave number)或特殊廣播號碼的消息。
TCP
如果消息必須到達串行網絡上的設備,則僅在TCP中需要從站號碼。 某些不兼容的設備或軟件(例如modpoll)使用從站ID作爲單元標識符,這是不正確的(參見Modbus Messaging Implementation Guide v1.0b的第23頁)沒有從站值,故障的遠程設備或軟件會丟棄請求! 特殊值MODBUS_TCP_SLAVE(0xFF)可用於TCP模式以恢復默認值。
廣播地址是 MODBUS_BROADCAST_ADDRESS 。 當您希望網絡中的所有Modbus設備都收到請求時,必須使用此特殊值。
返回值
成功則返回0,否者返回-1並將errno設定爲下面定義的值之一。
錯誤
EINVAL
slave number 爲空。
例子
modbus_t *ctx;
ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);
if (ctx == NULL) {
fprintf(stderr, "Unable to create the libmodbus context\n");
return -1;
}
rc = modbus_set_slave(ctx, YOUR_DEVICE_ID);
if (rc == -1) {
fprintf(stderr, "Invalid slave ID\n");
modbus_free(ctx);
return -1;
}
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}