@ya-modbus/transport 0.12.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +30 -1
  3. package/dist/cjs/src/index.d.ts +1 -0
  4. package/dist/cjs/src/index.d.ts.map +1 -1
  5. package/dist/cjs/src/index.js +3 -1
  6. package/dist/cjs/src/index.js.map +1 -1
  7. package/dist/cjs/src/last-request.d.ts +29 -0
  8. package/dist/cjs/src/last-request.d.ts.map +1 -0
  9. package/dist/cjs/src/last-request.js +44 -0
  10. package/dist/cjs/src/last-request.js.map +1 -0
  11. package/dist/cjs/src/manager.d.ts +6 -3
  12. package/dist/cjs/src/manager.d.ts.map +1 -1
  13. package/dist/cjs/src/manager.js +15 -6
  14. package/dist/cjs/src/manager.js.map +1 -1
  15. package/dist/cjs/src/request-context.d.ts +27 -0
  16. package/dist/cjs/src/request-context.d.ts.map +1 -0
  17. package/dist/cjs/src/request-context.js +81 -0
  18. package/dist/cjs/src/request-context.js.map +1 -0
  19. package/dist/cjs/src/retry.d.ts +7 -0
  20. package/dist/cjs/src/retry.d.ts.map +1 -1
  21. package/dist/cjs/src/retry.js +1 -0
  22. package/dist/cjs/src/retry.js.map +1 -1
  23. package/dist/cjs/src/rtu-transport.d.ts +7 -0
  24. package/dist/cjs/src/rtu-transport.d.ts.map +1 -1
  25. package/dist/cjs/src/rtu-transport.js +2 -1
  26. package/dist/cjs/src/rtu-transport.js.map +1 -1
  27. package/dist/cjs/src/slave-transport.d.ts +18 -1
  28. package/dist/cjs/src/slave-transport.d.ts.map +1 -1
  29. package/dist/cjs/src/slave-transport.js +59 -53
  30. package/dist/cjs/src/slave-transport.js.map +1 -1
  31. package/dist/cjs/src/tcp-transport.d.ts.map +1 -1
  32. package/dist/cjs/src/tcp-transport.js +2 -1
  33. package/dist/cjs/src/tcp-transport.js.map +1 -1
  34. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  35. package/dist/esm/src/index.d.ts +1 -0
  36. package/dist/esm/src/index.d.ts.map +1 -1
  37. package/dist/esm/src/index.js +1 -0
  38. package/dist/esm/src/index.js.map +1 -1
  39. package/dist/esm/src/last-request.d.ts +29 -0
  40. package/dist/esm/src/last-request.d.ts.map +1 -0
  41. package/dist/esm/src/last-request.js +40 -0
  42. package/dist/esm/src/last-request.js.map +1 -0
  43. package/dist/esm/src/manager.d.ts +6 -3
  44. package/dist/esm/src/manager.d.ts.map +1 -1
  45. package/dist/esm/src/manager.js +15 -6
  46. package/dist/esm/src/manager.js.map +1 -1
  47. package/dist/esm/src/request-context.d.ts +27 -0
  48. package/dist/esm/src/request-context.d.ts.map +1 -0
  49. package/dist/esm/src/request-context.js +77 -0
  50. package/dist/esm/src/request-context.js.map +1 -0
  51. package/dist/esm/src/retry.d.ts +7 -0
  52. package/dist/esm/src/retry.d.ts.map +1 -1
  53. package/dist/esm/src/retry.js +1 -1
  54. package/dist/esm/src/retry.js.map +1 -1
  55. package/dist/esm/src/rtu-transport.d.ts +7 -0
  56. package/dist/esm/src/rtu-transport.d.ts.map +1 -1
  57. package/dist/esm/src/rtu-transport.js +2 -1
  58. package/dist/esm/src/rtu-transport.js.map +1 -1
  59. package/dist/esm/src/slave-transport.d.ts +18 -1
  60. package/dist/esm/src/slave-transport.d.ts.map +1 -1
  61. package/dist/esm/src/slave-transport.js +59 -53
  62. package/dist/esm/src/slave-transport.js.map +1 -1
  63. package/dist/esm/src/tcp-transport.d.ts.map +1 -1
  64. package/dist/esm/src/tcp-transport.js +2 -1
  65. package/dist/esm/src/tcp-transport.js.map +1 -1
  66. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  67. package/package.json +2 -2
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SlaveTransport = void 0;
4
4
  const connection_js_1 = require("./connection.js");
5
+ const last_request_js_1 = require("./last-request.js");
5
6
  const retry_js_1 = require("./retry.js");
6
7
  /**
7
8
  * SlaveTransport wraps a shared ModbusRTU client with slave-specific addressing.
@@ -13,6 +14,10 @@ const retry_js_1 = require("./retry.js");
13
14
  * Requests on a lost connection reject with a ConnectionLostError. When the shared
14
15
  * ModbusConnection can reopen its client, all devices on the connection use the new client.
15
16
  *
17
+ * With an `interDeviceDelay` and a LastRequest shared by the transports on the connection, a
18
+ * request waits after a request to another slave. Some meters do not answer a request that
19
+ * comes too soon after another meter's reply.
20
+ *
16
21
  * @example
17
22
  * ```typescript
18
23
  * const client = new ModbusRTU()
@@ -36,88 +41,71 @@ class SlaveTransport {
36
41
  * @param mutex - Shared mutex for serializing operations on the bus
37
42
  * @param maxRetries - Maximum retry attempts for failed operations (default: 3)
38
43
  * @param logger - Optional callback to log retry attempts
44
+ * @param interDeviceDelay - Pause in milliseconds before a request to this slave when the
45
+ * previous request on the connection went to another slave, counted from the end of that
46
+ * request (default: 0, no pause)
47
+ * @param lastRequest - Last request on the connection, the same for all transports that share
48
+ * the mutex. interDeviceDelay needs it.
39
49
  */
40
- constructor(slaveId, client, mutex, maxRetries = 3, logger) {
50
+ constructor(slaveId, client, mutex, maxRetries = 3, logger, interDeviceDelay = 0, lastRequest = new last_request_js_1.LastRequest()) {
41
51
  this.slaveId = slaveId;
42
52
  this.mutex = mutex;
43
53
  this.maxRetries = maxRetries;
44
54
  this.logger = logger;
55
+ this.interDeviceDelay = interDeviceDelay;
56
+ this.lastRequest = lastRequest;
45
57
  this.connection = (0, connection_js_1.toConnection)(client);
46
58
  }
47
59
  async readHoldingRegisters(address, count) {
48
- return this.mutex.runExclusive(async () => {
49
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
50
- client.setID(this.slaveId);
51
- const result = await client.readHoldingRegisters(address, count);
52
- return result.buffer;
53
- }), this.maxRetries, this.logger);
60
+ return this.request(async (client) => {
61
+ const result = await client.readHoldingRegisters(address, count);
62
+ return result.buffer;
54
63
  });
55
64
  }
56
65
  async readInputRegisters(address, count) {
57
- return this.mutex.runExclusive(async () => {
58
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
59
- client.setID(this.slaveId);
60
- const result = await client.readInputRegisters(address, count);
61
- return result.buffer;
62
- }), this.maxRetries, this.logger);
66
+ return this.request(async (client) => {
67
+ const result = await client.readInputRegisters(address, count);
68
+ return result.buffer;
63
69
  });
64
70
  }
65
71
  async readCoils(address, count) {
66
- return this.mutex.runExclusive(async () => {
67
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
68
- client.setID(this.slaveId);
69
- const result = await client.readCoils(address, count);
70
- return result.buffer;
71
- }), this.maxRetries, this.logger);
72
+ return this.request(async (client) => {
73
+ const result = await client.readCoils(address, count);
74
+ return result.buffer;
72
75
  });
73
76
  }
74
77
  async readDiscreteInputs(address, count) {
75
- return this.mutex.runExclusive(async () => {
76
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
77
- client.setID(this.slaveId);
78
- const result = await client.readDiscreteInputs(address, count);
79
- return result.buffer;
80
- }), this.maxRetries, this.logger);
78
+ return this.request(async (client) => {
79
+ const result = await client.readDiscreteInputs(address, count);
80
+ return result.buffer;
81
81
  });
82
82
  }
83
83
  async writeSingleRegister(address, value) {
84
- return this.mutex.runExclusive(async () => {
85
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
86
- client.setID(this.slaveId);
87
- await client.writeRegister(address, value);
88
- }), this.maxRetries, this.logger);
84
+ return this.request(async (client) => {
85
+ await client.writeRegister(address, value);
89
86
  });
90
87
  }
91
88
  async writeMultipleRegisters(address, values) {
92
- return this.mutex.runExclusive(async () => {
93
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
94
- client.setID(this.slaveId);
95
- await client.writeRegisters(address, values);
96
- }), this.maxRetries, this.logger);
89
+ return this.request(async (client) => {
90
+ await client.writeRegisters(address, values);
97
91
  });
98
92
  }
99
93
  async writeSingleCoil(address, value) {
100
- return this.mutex.runExclusive(async () => {
101
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
102
- client.setID(this.slaveId);
103
- await client.writeCoil(address, value);
104
- }), this.maxRetries, this.logger);
94
+ return this.request(async (client) => {
95
+ await client.writeCoil(address, value);
105
96
  });
106
97
  }
107
98
  async writeMultipleCoils(address, values) {
108
- return this.mutex.runExclusive(async () => {
109
- return (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
110
- client.setID(this.slaveId);
111
- // Convert Buffer to boolean array
112
- const bools = [];
113
- for (let i = 0; i < values.length * 8; i++) {
114
- const byteIndex = Math.floor(i / 8);
115
- const bitIndex = i % 8;
116
- const byte = values[byteIndex];
117
- bools.push((byte & (1 << bitIndex)) !== 0);
118
- }
119
- await client.writeCoils(address, bools);
120
- }), this.maxRetries, this.logger);
99
+ return this.request(async (client) => {
100
+ // Convert Buffer to boolean array
101
+ const bools = [];
102
+ for (let i = 0; i < values.length * 8; i++) {
103
+ const byteIndex = Math.floor(i / 8);
104
+ const bitIndex = i % 8;
105
+ const byte = values[byteIndex];
106
+ bools.push((byte & (1 << bitIndex)) !== 0);
107
+ }
108
+ await client.writeCoils(address, bools);
121
109
  });
122
110
  }
123
111
  /**
@@ -135,6 +123,24 @@ class SlaveTransport {
135
123
  // Don't use mutex for close operation
136
124
  return this.connection.close();
137
125
  }
126
+ /**
127
+ * Run a request to this slave while no other request uses the bus: wait for the pause after
128
+ * a request to another slave, then send it with retries
129
+ */
130
+ request(send) {
131
+ return this.mutex.runExclusive(async () => {
132
+ await this.lastRequest.waitBefore(this.slaveId, this.interDeviceDelay);
133
+ try {
134
+ return await (0, retry_js_1.withRetry)(() => this.connection.run(async (client) => {
135
+ client.setID(this.slaveId);
136
+ return send(client);
137
+ }), this.maxRetries, this.logger);
138
+ }
139
+ finally {
140
+ this.lastRequest.ended(this.slaveId);
141
+ }
142
+ });
143
+ }
138
144
  }
139
145
  exports.SlaveTransport = SlaveTransport;
140
146
  //# sourceMappingURL=slave-transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slave-transport.js","sourceRoot":"","sources":["../../../src/slave-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slave-transport.js","sourceRoot":"","sources":["../../../src/slave-transport.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../../src/tcp-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAMxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAc9E"}
1
+ {"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../../src/tcp-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAOxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACjC;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAiB9E"}
@@ -6,6 +6,7 @@ const modbus_serial_1 = tslib_1.__importDefault(require("modbus-serial"));
6
6
  const client_config_js_1 = require("./client-config.js");
7
7
  const connection_js_1 = require("./connection.js");
8
8
  const create_modbus_transport_js_1 = require("./create-modbus-transport.js");
9
+ const request_context_js_1 = require("./request-context.js");
9
10
  /**
10
11
  * Create a TCP transport
11
12
  *
@@ -25,6 +26,6 @@ async function createTCPTransport(config) {
25
26
  return client;
26
27
  };
27
28
  const connection = new connection_js_1.ModbusConnection(await open(), `${config.host}:${port}`, open);
28
- return (0, create_modbus_transport_js_1.createModbusTransport)(connection, config.maxRetries, config.logger);
29
+ return (0, request_context_js_1.withRequestContext)((0, create_modbus_transport_js_1.createModbusTransport)(connection, config.maxRetries, config.logger), `${config.host}:${port}, slave ${config.slaveId}`);
29
30
  }
30
31
  //# sourceMappingURL=tcp-transport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tcp-transport.js","sourceRoot":"","sources":["../../../src/tcp-transport.ts"],"names":[],"mappings":";;AAmCA,gDAcC;;AAhDD,0EAAqC;AAErC,yDAAgE;AAChE,mDAAkD;AAClD,6EAAoE;AAqBpE;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAAiB;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,IAAwB,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAI,uBAAS,EAAE,CAAA;QAE9B,wBAAwB;QACxB,MAAM,IAAA,6BAAU,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAA,kCAAe,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACvD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,IAAI,gCAAgB,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;IACrF,OAAO,IAAA,kDAAqB,EAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"tcp-transport.js","sourceRoot":"","sources":["../../../src/tcp-transport.ts"],"names":[],"mappings":";;AAoCA,gDAiBC;;AApDD,0EAAqC;AAErC,yDAAgE;AAChE,mDAAkD;AAClD,6EAAoE;AACpE,6DAAyD;AAqBzD;;;;;;;;GAQG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAAiB;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAA;IAC/B,MAAM,IAAI,GAAG,KAAK,IAAwB,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAI,uBAAS,EAAE,CAAA;QAE9B,wBAAwB;QACxB,MAAM,IAAA,6BAAU,EAAC,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAE3D,IAAA,kCAAe,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACvD,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,IAAI,gCAAgB,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;IACrF,OAAO,IAAA,uCAAkB,EACvB,IAAA,kDAAqB,EAAC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EACnE,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,WAAW,MAAM,CAAC,OAAO,EAAE,CAClD,CAAA;AACH,CAAC"}