Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Expand error codes #545

Merged
merged 3 commits into from
Feb 8, 2024

Conversation

sjlongland
Copy link
Contributor

A lot of the Modbus exception codes are not defined, leading to Unknown error as the response for things like gateway timeouts and such. This defines all the common Modbus exception codes defined in the Modbus specification.

```
     Error: Code did not pass lint rulesindex.js: line 38, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 39, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 40, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 41, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 42, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 43, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 44, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 45, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 46, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 47, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 48, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)
index.js: line 49, col 5, Error - Expected space or tab after '/*' in comment. (spaced-comment)

12 problems
      at Context.<anonymous> (node_modules/mocha-eslint/index.js:38:15)
      at processImmediate (node:internal/timers:466:21)
```

Sorry @SamuelToh, those comments have got to go:
@yaacov
Copy link
Owner

yaacov commented Feb 8, 2024

wow, thank you for the pull request

Ref:

Code (Hex) Name Meaning
01 Illegal Function The function code received in the query is not an allowable action for the slave. This may be because the function code is only applicable to newer devices, and was not implemented in the unit selected. It could also indicate that the slave is in the wrong state to process a request of this type, for example because it is unconfigured and is being asked to return register values. If a Poll Program Complete command was issued, this code indicates that no program function preceded it.
02 Illegal Data Address The data address received in the query is not an allowable address for the slave. More specifically, the combination of reference number and transfer length is invalid. For a controller with 100 registers, a request with offset 96 and length 4 would succeed, a request with offset 96 and length 5 will generate exception 02.
03 Illegal Data Value A value contained in the query data field is not an allowable value for the slave. This indicates a fault in the structure of the remainder of a complex request, such as that the implied length is incorrect. It specifically does NOT mean that a data item submitted for storage in a register has a value outside the expectation of the application program, since the MODBUS protocol is unaware of the significance of any particular value of any particular register.
04 Slave Device Failure An unrecoverable error occurred while the slave was attempting to perform the requested action.
05 Acknowledge Specialized use in conjunction with programming commands. The slave has accepted the request and is processing it, but a long duration of time will be required to do so. This response is returned to prevent a timeout error from occurring in the master. The master can next issue a Poll Program Complete message to determine if processing is completed.
06 Slave Device Busy Specialized use in conjunction with programming commands. The slave is engaged in processing a long-duration program command. The master should retransmit the message later when the slave is free.
07 Negative Acknowledge The slave cannot perform the program function received in the query. This code is returned for an unsuccessful programming request using function code 13 or 14 decimal. The master should request diagnostic or error information from the slave.
08 Memory Parity Error Specialized use in conjunction with function codes 20 and 21 and reference type 6, to indicate that the extended file area failed to pass a consistency check. The slave attempted to read extended memory or record file, but detected a parity error in memory. The master can retry the request, but service may be required on the slave device.
0A Gateway Path Unavailable Specialized use in conjunction with gateways, indicates that the gateway was unable to allocate an internal communication path from the input port to the output port for processing the request. Usually means the gateway is misconfigured or overloaded.
0B Gateway Target Device Failed to Respond Specialized use in conjunction with gateways, indicates that no response was obtained from the target device. Usually means that the device is not present on the network.

@yaacov yaacov closed this Feb 8, 2024
@yaacov yaacov reopened this Feb 8, 2024
@yaacov yaacov merged commit 5357659 into yaacov:master Feb 8, 2024
5 checks passed
@sjlongland sjlongland deleted the feature/expand-error-codes branch February 8, 2024 06:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants