nodbus-plus 0.8.2 → 1.0.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 (101) hide show
  1. package/.readthedocs.yaml +35 -0
  2. package/LICENSE.md +21 -21
  3. package/README.md +163 -48
  4. package/docs/Makefile +20 -0
  5. package/docs/client/channel.rst +209 -0
  6. package/docs/client/nodbus_master_serial.rst +559 -0
  7. package/docs/client/nodbus_master_tcp.rst +573 -0
  8. package/docs/conf.py +41 -0
  9. package/docs/images/01-readcoils.png +0 -0
  10. package/docs/images/02-readinputs.png +0 -0
  11. package/docs/images/03-readholding.png +0 -0
  12. package/docs/images/04-readinputsreg.png +0 -0
  13. package/docs/images/05-writecoil.png +0 -0
  14. package/docs/images/06-writeregister.png +0 -0
  15. package/docs/images/15-writecoil.png +0 -0
  16. package/docs/images/16.png +0 -0
  17. package/docs/images/22-mask.png +0 -0
  18. package/docs/images/23.png +0 -0
  19. package/docs/images/7.png +0 -0
  20. package/docs/images/modbus_pdu.png +0 -0
  21. package/docs/images/serial_adu.png +0 -0
  22. package/docs/images/tcp_adu.png +0 -0
  23. package/docs/index.rst +30 -0
  24. package/docs/make.bat +35 -0
  25. package/docs/protocol/modbus_master.rst +276 -0
  26. package/docs/protocol/modbus_master_serial.rst +290 -0
  27. package/docs/protocol/modbus_master_tcp.rst +296 -0
  28. package/docs/protocol/modbus_server.rst +469 -0
  29. package/docs/protocol/modbus_server_serial.rst +543 -0
  30. package/docs/protocol/modbus_server_tcp.rst +365 -0
  31. package/docs/requirements.txt +4 -0
  32. package/docs/server/net_server.rst +242 -0
  33. package/docs/server/nodbus_serial_server.rst +652 -0
  34. package/docs/server/nodbus_tcp_server.rst +505 -0
  35. package/docs/starting.rst +192 -0
  36. package/docs/static/simple logo.jpg +0 -0
  37. package/package.json +39 -30
  38. package/samples/mb_serial_server.js +77 -0
  39. package/samples/mb_tcp_client.js +114 -0
  40. package/samples/mb_tcp_server.js +58 -0
  41. package/src/client/net/serialchannel.js +195 -0
  42. package/src/client/net/tcpchannel.js +233 -0
  43. package/src/client/net/udpchannel.js +243 -0
  44. package/src/client/nodbus_serial_client.js +577 -0
  45. package/src/client/nodbus_tcp_client.js +542 -0
  46. package/src/nodbus-plus.js +157 -110
  47. package/src/protocol/modbus_master.js +298 -961
  48. package/src/protocol/modbus_master_serial.js +247 -0
  49. package/src/protocol/modbus_master_tcp.js +219 -0
  50. package/src/protocol/modbus_server.js +936 -0
  51. package/src/protocol/modbus_server_serial.js +368 -0
  52. package/src/protocol/modbus_server_tcp.js +129 -0
  53. package/src/protocol/utils.js +296 -0
  54. package/src/server/net/serialserver.js +184 -0
  55. package/src/server/net/tcpserver.js +290 -0
  56. package/src/server/net/udpserver.js +242 -0
  57. package/src/server/nodbus_serial_server.js +238 -0
  58. package/src/server/nodbus_tcp_server.js +249 -0
  59. package/test/modbus_master.test.js +279 -0
  60. package/test/modbus_master_serial.test.js +124 -0
  61. package/test/modbus_master_tcp.test.js +178 -0
  62. package/test/modbus_server.test.js +506 -0
  63. package/test/modbus_server_serial.test.js +328 -0
  64. package/test/modbus_server_tcp.test.js +91 -0
  65. package/test/nodbus_client_serial.test.js +307 -0
  66. package/test/nodbus_client_tcp.test.js +334 -0
  67. package/test/nodbus_server_serial.test.js +255 -0
  68. package/test/nodbus_server_tcp.test.js +216 -0
  69. package/CHANGELOG.md +0 -27
  70. package/src/client/m_stcp_client.js +0 -214
  71. package/src/client/m_tcp_client.js +0 -234
  72. package/src/net/tcpclient.js +0 -173
  73. package/src/net/tcpserver.js +0 -329
  74. package/src/protocol/adu.js +0 -40
  75. package/src/protocol/ascii_adu.js +0 -139
  76. package/src/protocol/boolean_register.js +0 -78
  77. package/src/protocol/functions/Force_Multiple_Coils.js +0 -76
  78. package/src/protocol/functions/Force_Single_Coil.js +0 -54
  79. package/src/protocol/functions/Mask_Holding_Register.js +0 -47
  80. package/src/protocol/functions/Preset_Multiple_Registers.js +0 -53
  81. package/src/protocol/functions/Preset_Single_Register.js +0 -39
  82. package/src/protocol/functions/Read_Coil_Status.js +0 -59
  83. package/src/protocol/functions/Read_Holding_Registers.js +0 -52
  84. package/src/protocol/functions/Read_Input_Registers.js +0 -52
  85. package/src/protocol/functions/Read_Input_Status.js +0 -58
  86. package/src/protocol/mbap.js +0 -60
  87. package/src/protocol/modbus_device.js +0 -35
  88. package/src/protocol/modbus_slave.js +0 -522
  89. package/src/protocol/pdu.js +0 -70
  90. package/src/protocol/rtu_adu.js +0 -122
  91. package/src/protocol/serial_adu.js +0 -29
  92. package/src/protocol/tcp_adu.js +0 -84
  93. package/src/protocol/word_register.js +0 -122
  94. package/src/server/m_stcp_server.js +0 -310
  95. package/src/server/m_tcp_server.js +0 -295
  96. package/test/modbus-stcp-server-test.js +0 -72
  97. package/test/modbus-stcp-server-test1.js +0 -72
  98. package/test/modbus-tcp-client-test.js +0 -159
  99. package/test/modbus-tcp-server-test.js +0 -75
  100. package/test/modbus-tcp-server-test2.js +0 -75
  101. package/test/modbus_stcp_client.js +0 -149
@@ -1,110 +1,157 @@
1
- /**
2
- * Nodbus module.
3
- * @module nodbus
4
- * @author Hector E. Socarras Cabrera
5
- * @version 0.7.2
6
- */
7
-
8
-
9
- const ModbusTcpServer = require('./server/m_tcp_server');
10
- const ModbusTcpClient = require('./client/m_tcp_client');
11
- const ModbusSTcpServer = require('./server/m_stcp_server');
12
- const ModbusSTcpClient = require('./client/m_stcp_client');
13
- const ModbusMaster = require('./protocol/modbus_master');
14
- const ModbusSlave = require('./protocol/modbus_slave');
15
-
16
-
17
- /**
18
- * ModbusTcpServer.
19
- * @module nodbus/ModbusTcpServer
20
- */
21
- /** Constructor for ModbusTcpServer Class. */
22
- module.exports.ModbusTcpServer = ModbusTcpServer;
23
-
24
- /**
25
- * ModbusSTcpServer.
26
- * @module nodbus/ModbusSTcpServer
27
- */
28
- /** Constructor for ModbusSTcpServer Class. */
29
- module.exports.ModbusSTcpServer = ModbusSTcpServer;
30
-
31
- /**
32
- * ModbusSlave.
33
- * @module nodbus/ModbusSlave
34
- */
35
- /** Constructor for ModbusSTcpServer Class. */
36
- module.exports.ModbusSlave = ModbusSlave;
37
-
38
- /**
39
- * ModbusTcpClient.
40
- * @module nodbus/ModbusTcpClient
41
- */
42
- /** Constructor for ModbusTcpClient Class. */
43
- module.exports.ModbusTcpClient = ModbusTcpClient;
44
-
45
- /**
46
- * ModbusSTcpClient.
47
- * @module nodbus/ModbusSTcpClient
48
- */
49
- /** Constructor for ModbusTcpClient Class. */
50
- module.exports.ModbusSTcpClient = ModbusSTcpClient;
51
-
52
- /**
53
- * ModbusMaster.
54
- * @module nodbus/ModbusMaster
55
- */
56
- /** Constructor for ModbusSTcpServer Class. */
57
- module.exports.ModbusMaster = ModbusMaster;
58
-
59
- /**
60
- * Create a Slave instance
61
- * @param {number|string} port tcp port or string indicating serial port.
62
- * @param {startAddres} modbusAddress modbus addres 1 to 247 for serial slave or tcp for ethernet.
63
- * @param {pointsQuantity} pointsQuantity
64
- * @param {number|Buffer} values values to write
65
- * @return {Object} PDU object
66
- */
67
- module.exports.CreateSlave = function (port = 502, modbusAddress = 'tcp', mode = 'aut'){
68
-
69
- if(typeof port == 'number'){
70
- //tcp network
71
- if(typeof modbusAddress == 'number'){
72
- //serial protocol
73
- return new ModbusSTcpServer(port, modbusAddress, mode)
74
- }
75
- else{
76
- //tcp protocol
77
- return new ModbusTcpServer(port);
78
- }
79
-
80
- }
81
- else{
82
- throw 'serial port no suported yet'
83
- }
84
-
85
- }
86
-
87
- module.exports.CreateMaster = function (port = 'eth', mode = 'tcp'){
88
-
89
- if(port == 'eth'){
90
- //tcp network
91
- switch (mode) {
92
- case 'tcp':
93
- return new ModbusTcpClient();
94
- break;
95
- case 'rtu':
96
- return new ModbusSTcpClient('rtu');
97
- break;
98
- case 'ascii':
99
- return new ModbusSTcpClient('ascii');
100
- break
101
- default:
102
-
103
- }
104
-
105
- }
106
- else{
107
- throw 'serial port no suported yet'
108
- }
109
-
110
- }
1
+ /**
2
+ * Nodbus module.
3
+ * @module nodbus
4
+ * @author Hector E. Socarras Cabrera
5
+ * @version 0.14.0
6
+ */
7
+
8
+ //Modbus Protocol Stack**************************************************************************************************
9
+ const ModbusTcpServer = require('./protocol/modbus_server_tcp.js');
10
+ const ModbusTcpClient = require('./protocol/modbus_master_tcp.js');
11
+ const ModbusSerialServer = require('./protocol/modbus_server_serial.js');
12
+ const ModbusSerialClient = require('./protocol/modbus_master_serial.js');
13
+ const ModbusClient = require('./protocol/modbus_master.js');
14
+ const ModbusServer = require( "./protocol/modbus_server.js");
15
+
16
+ module.exports.ModbusSerialServer = ModbusSerialServer;
17
+ module.exports.ModbusSerialClient = ModbusSerialClient;
18
+ module.exports.ModbusTcpClient = ModbusTcpClient;
19
+ module.exports.ModbusTcpServer = ModbusTcpServer;
20
+ module.exports.ModbusClient = ModbusClient;
21
+ module.exports.ModbusServer = ModbusServer;
22
+ //***********************************************************************************************************************
23
+
24
+ //Nodbus Server full implementation*********************************************************************************************
25
+ const NodbusTcpServer = require('./server/nodbus_tcp_server.js');
26
+ const NodbusSerialServer = require('./server/nodbus_serial_server.js');
27
+ const NetTcpServer = require('./server/net/tcpserver.js');
28
+ const NetUdpServer = require('./server/net/udpserver.js');
29
+ const NetSerialServer = require('./server/net/serialserver.js');
30
+ module.exports.NodbusTcpServer = NodbusTcpServer;
31
+ module.exports.NodbusSerialServer = NodbusSerialServer;
32
+
33
+ /**
34
+ * Create a tcp server instance
35
+ * @param {string} net: Type of network to use, Can be 'tcp', 'udp4', 'udp6'. Default 'tcp'.
36
+ * @param {Object} serverCfg: Serial transmition mode for serial slave. 'rtu', 'ascii', 'auto' default.
37
+ * @return {Object} Slave object
38
+ */
39
+ module.exports.createTcpServer = function (net = 'tcp', serverCfg){
40
+
41
+ let netType
42
+ switch(net){
43
+ case 'tcp':
44
+ netType = NetTcpServer;
45
+ break
46
+ case 'udp4':
47
+ netType = NetUdpServer;
48
+ serverCfg.udpType = 'udp4';
49
+ break
50
+ case 'udp6':
51
+ netType = NetUdpServer;
52
+ serverCfg.udpType = 'udp6';
53
+ break
54
+ default:
55
+ netType = NetTcpServer;
56
+ }
57
+ let server = new NodbusTcpServer(netType, serverCfg);
58
+
59
+ return server;
60
+
61
+ }
62
+
63
+ /**
64
+ * Create a tcp server instance
65
+ * @param {string} net: Type of network to use, Can be 'tcp', 'udp4', 'udp6'. Default 'tcp'.
66
+ * @param {Object} serverCfg: Serial transmition mode for serial slave. 'rtu', 'ascii', 'auto' default.
67
+ * @return {Object} Slave object
68
+ */
69
+ module.exports.createSerialServer = function (net = 'serial', serverCfg){
70
+
71
+ let netType
72
+ switch(net){
73
+ case 'tcp':
74
+ netType = NetTcpServer;
75
+ break
76
+ case 'udp4':
77
+ netType = NetUdpServer;
78
+ serverCfg.udpType = 'udp4';
79
+ break
80
+ case 'udp6':
81
+ netType = NetUdpServer;
82
+ serverCfg.udpType = 'udp6';
83
+ break
84
+ case 'serial':
85
+ netType = NetSerialServer;
86
+ break
87
+ default:
88
+ netType = NetSerialServer;
89
+ }
90
+ let server = new NodbusSerialServer(netType, serverCfg);
91
+
92
+ return server;
93
+
94
+ }
95
+
96
+ //Nodbus Plus clients full implementation***************************************************************************************
97
+
98
+ const NodbusTcpClient = require('./client/nodbus_tcp_client.js');
99
+ const NodbusSerialClient = require('./client/nodbus_serial_client.js')
100
+ const NetTcpChannel = require('./client/net/tcpchannel.js');
101
+ const NetUdpChannel = require('./client/net/udpchannel.js');
102
+ const NetSerialChannel = require('./client/net/serialchannel.js');
103
+
104
+ module.exports.createTcpClient = function (channel = 'tcp'){
105
+
106
+ let channelType
107
+ switch(channel){
108
+ case 'tcp':
109
+ channelType = NetTcpChannel;
110
+ break
111
+ case 'udp':
112
+ channelType = NetUdpChannel;
113
+ break
114
+ case 'udp4':
115
+ channelType = NetUdpChannel;
116
+ break
117
+ case 'udp6':
118
+ channelType = NetUdpChannel;
119
+ break
120
+ default:
121
+ channelType = NetTcpServer;
122
+ }
123
+ let client = new NodbusTcpClient(channelType);
124
+
125
+ return client;
126
+
127
+ }
128
+
129
+ module.exports.createSerialClient = function(channel = 'tcp'){
130
+
131
+ let channelType
132
+ switch(channel){
133
+ case 'tcp':
134
+ channelType = NetTcpChannel;
135
+ break
136
+ case 'udp':
137
+ channelType = NetUdpChannel;
138
+ break
139
+ case 'udp4':
140
+ channelType = NetUdpChannel;
141
+ break
142
+ case 'udp6':
143
+ channelType = NetUdpChannel;
144
+ break
145
+ case 'serial':
146
+ channelType = NetSerialChannel;
147
+ break
148
+ default:
149
+ netType = NetSerialChannel;
150
+ }
151
+ let client = new NodbusSerialClient(channelType);
152
+
153
+
154
+ return client;
155
+
156
+ }
157
+