@ya-modbus/emulator 0.9.0 → 0.10.1

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 (49) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +18 -3
  3. package/dist/cjs/src/cli.d.ts.map +1 -1
  4. package/dist/cjs/src/cli.js +3 -0
  5. package/dist/cjs/src/cli.js.map +1 -1
  6. package/dist/cjs/src/emulator.d.ts.map +1 -1
  7. package/dist/cjs/src/emulator.js +1 -0
  8. package/dist/cjs/src/emulator.js.map +1 -1
  9. package/dist/cjs/src/transports/rtu.d.ts +1 -0
  10. package/dist/cjs/src/transports/rtu.d.ts.map +1 -1
  11. package/dist/cjs/src/transports/rtu.js +11 -66
  12. package/dist/cjs/src/transports/rtu.js.map +1 -1
  13. package/dist/cjs/src/transports/tcp.d.ts.map +1 -1
  14. package/dist/cjs/src/transports/tcp.js +7 -66
  15. package/dist/cjs/src/transports/tcp.js.map +1 -1
  16. package/dist/cjs/src/types/config.d.ts +2 -0
  17. package/dist/cjs/src/types/config.d.ts.map +1 -1
  18. package/dist/cjs/src/utils/config-loader.d.ts +1 -0
  19. package/dist/cjs/src/utils/config-loader.d.ts.map +1 -1
  20. package/dist/cjs/src/utils/config-loader.js.map +1 -1
  21. package/dist/cjs/src/utils/modbus-protocol-helpers.d.ts +56 -0
  22. package/dist/cjs/src/utils/modbus-protocol-helpers.d.ts.map +1 -0
  23. package/dist/cjs/src/utils/modbus-protocol-helpers.js +105 -0
  24. package/dist/cjs/src/utils/modbus-protocol-helpers.js.map +1 -0
  25. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  26. package/dist/esm/src/cli.d.ts.map +1 -1
  27. package/dist/esm/src/cli.js +3 -0
  28. package/dist/esm/src/cli.js.map +1 -1
  29. package/dist/esm/src/emulator.d.ts.map +1 -1
  30. package/dist/esm/src/emulator.js +1 -0
  31. package/dist/esm/src/emulator.js.map +1 -1
  32. package/dist/esm/src/transports/rtu.d.ts +1 -0
  33. package/dist/esm/src/transports/rtu.d.ts.map +1 -1
  34. package/dist/esm/src/transports/rtu.js +11 -66
  35. package/dist/esm/src/transports/rtu.js.map +1 -1
  36. package/dist/esm/src/transports/tcp.d.ts.map +1 -1
  37. package/dist/esm/src/transports/tcp.js +7 -66
  38. package/dist/esm/src/transports/tcp.js.map +1 -1
  39. package/dist/esm/src/types/config.d.ts +2 -0
  40. package/dist/esm/src/types/config.d.ts.map +1 -1
  41. package/dist/esm/src/utils/config-loader.d.ts +1 -0
  42. package/dist/esm/src/utils/config-loader.d.ts.map +1 -1
  43. package/dist/esm/src/utils/config-loader.js.map +1 -1
  44. package/dist/esm/src/utils/modbus-protocol-helpers.d.ts +56 -0
  45. package/dist/esm/src/utils/modbus-protocol-helpers.d.ts.map +1 -0
  46. package/dist/esm/src/utils/modbus-protocol-helpers.js +97 -0
  47. package/dist/esm/src/utils/modbus-protocol-helpers.js.map +1 -0
  48. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  49. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ /**
3
+ * Modbus protocol buffer building and parsing utilities
4
+ *
5
+ * These pure functions handle the low-level Modbus protocol details
6
+ * (buffer construction, parsing) independent of the transport layer.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.buildRegisterReadRequest = buildRegisterReadRequest;
10
+ exports.parseRegisterReadResponse = parseRegisterReadResponse;
11
+ exports.buildRegisterWriteRequest = buildRegisterWriteRequest;
12
+ exports.buildCoilReadRequest = buildCoilReadRequest;
13
+ exports.parseCoilReadResponse = parseCoilReadResponse;
14
+ exports.buildCoilWriteRequest = buildCoilWriteRequest;
15
+ /**
16
+ * Builds a Modbus register read request buffer
17
+ */
18
+ function buildRegisterReadRequest(params) {
19
+ const request = Buffer.alloc(6);
20
+ request[0] = params.unitID;
21
+ request[1] = params.functionCode;
22
+ request.writeUInt16BE(params.addr, 2);
23
+ request.writeUInt16BE(params.length, 4);
24
+ return request;
25
+ }
26
+ /**
27
+ * Parses register values from a Modbus response buffer
28
+ */
29
+ function parseRegisterReadResponse(response) {
30
+ const byteCount = response[2];
31
+ if (byteCount === undefined || response.length < 3 + byteCount) {
32
+ throw new Error('Invalid response');
33
+ }
34
+ const values = [];
35
+ for (let i = 0; i < byteCount / 2; i++) {
36
+ values.push(response.readUInt16BE(3 + i * 2));
37
+ }
38
+ return values;
39
+ }
40
+ /**
41
+ * Builds a Modbus register write request buffer
42
+ * Handles both single (0x06) and multiple (0x10) register writes
43
+ */
44
+ function buildRegisterWriteRequest(params) {
45
+ if (params.functionCode === 0x06) {
46
+ // Write single register
47
+ const request = Buffer.alloc(6);
48
+ request[0] = params.unitID;
49
+ request[1] = params.functionCode;
50
+ request.writeUInt16BE(params.addr, 2);
51
+ request.writeUInt16BE(params.values[0] ?? 0, 4);
52
+ return request;
53
+ }
54
+ else {
55
+ // Write multiple registers
56
+ const byteCount = params.values.length * 2;
57
+ const request = Buffer.alloc(7 + byteCount);
58
+ request[0] = params.unitID;
59
+ request[1] = params.functionCode;
60
+ request.writeUInt16BE(params.addr, 2);
61
+ request.writeUInt16BE(params.values.length, 4);
62
+ request[6] = byteCount;
63
+ for (let i = 0; i < params.values.length; i++) {
64
+ request.writeUInt16BE(params.values[i] ?? 0, 7 + i * 2);
65
+ }
66
+ return request;
67
+ }
68
+ }
69
+ /**
70
+ * Builds a Modbus coil read request buffer
71
+ */
72
+ function buildCoilReadRequest(params) {
73
+ const request = Buffer.alloc(6);
74
+ request[0] = params.unitID;
75
+ request[1] = params.functionCode;
76
+ request.writeUInt16BE(params.addr, 2);
77
+ request.writeUInt16BE(params.length, 4);
78
+ return request;
79
+ }
80
+ /**
81
+ * Parses a single coil value from a Modbus response buffer
82
+ */
83
+ function parseCoilReadResponse(response) {
84
+ const byteCount = response[2];
85
+ if (byteCount === undefined || response.length < 4) {
86
+ throw new Error('Invalid response');
87
+ }
88
+ const coilByte = response[3];
89
+ if (coilByte === undefined) {
90
+ throw new Error('Invalid response');
91
+ }
92
+ return (coilByte & 0x01) === 1;
93
+ }
94
+ /**
95
+ * Builds a Modbus coil write request buffer
96
+ */
97
+ function buildCoilWriteRequest(params) {
98
+ const request = Buffer.alloc(6);
99
+ request[0] = params.unitID;
100
+ request[1] = params.functionCode;
101
+ request.writeUInt16BE(params.addr, 2);
102
+ request.writeUInt16BE(params.value ? 0xff00 : 0x0000, 4);
103
+ return request;
104
+ }
105
+ //# sourceMappingURL=modbus-protocol-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modbus-protocol-helpers.js","sourceRoot":"","sources":["../../../../src/utils/modbus-protocol-helpers.ts"],"names":[],"mappings":"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"}