CHAPTER 2: RS485 INTERFACE (MODBUS RTU)
CRC-16 Algorithm
Timing
MM300 MOTOR MANAGEMENT SYSTEM – COMMUNICATIONS GUIDE
If a MM300 Modbus slave device receives a transmission in which an error is indicated by
the CRC-16 calculation, the slave device will not respond to the transmission. A CRC-16
error indicates than one or more bytes of the transmission were received incorrectly and
thus the entire transmission should be ignored in order to avoid the MM300 performing
any incorrect operation.
The CRC-16 calculation is an industry standard method used for error detection. An
algorithm is included here to assist programmers in situations where no standard CRC-16
calculation routines are available.
Once the following algorithm is complete, the working register "A" will contain the CRC
value to be transmitted. Note that this algorithm requires the characteristic polynomial to
be reverse bit ordered. The MSBit of the characteristic polynomial is dropped since it does
not affect the value of the remainder. The following symbols are used in the algorithm:
—>: data transfer
A: 16 bit working register
AL: low order byte of A
AH: high order byte of A
CRC: 16 bit CRC-16 value
i, j: loop counters
(+): logical exclusive or operator
Di: i-th data byte (i = 0 to N-1)
G: 16 bit characteristic polynomial = 1010000000000001 with MSbit dropped and bit order
reversed
shr(x): shift right (the LSbit of the low order byte of x shifts into a carry flag, a '0' is shifted
into the MSbit of the high order byte of x, all other bits shift right one location
The algorithm is:
1. FFFF hex —> A
2. 0 —> i
3. 0 —> j
4. Di (+) AL —> AL
5. j+1 —> j
6. shr(A)
7. is there a carry? No: go to 8. Yes: G (+) A —> A
8. is j = 8? No: go to 5. Yes: go to 9.
9. i+1 —> i
10. is i = N? No: go to 3. Yes: go to 11.
11. A —> CRC
Data packet synchronization is maintained by timing constraints. The receiving device
must measure the time between the reception of characters. If 3.5 character times elapse
without a new character or completion of the packet, then the communication link must
MODBUS PROTOCOL
2–3
Need help?
Do you have a question about the MM300 and is the answer not in the manual?
Questions and answers
we have a problem with device MM300. it says that the device is invalid through the software and does not read the device. the communication is through RS 485. is it possible to give us an advice or send us some reccomendations or instructions?
For a GE MM300 device that is not recognized by software and communicates via RS485, follow these troubleshooting steps:
1. Ensure correct RS485 wiring:
- Use two-wire RS485 in a daisy chain configuration.
- Install a 120 Ohm resistor in series with a 1 nF ceramic capacitor at each end of the link.
- Use shielded wire and ground the shield at only one location.
2. Check device addressing and termination:
- Confirm proper device address and ensure no address conflicts.
- Verify that termination networks are correctly installed at both ends.
3. Confirm half-duplex communication:
- Ensure that the system supports half-duplex communication and not sending and receiving data simultaneously.
4. If using USB for setup (e.g., USB-to-RS485 converter) and the device is not recognized:
- Repeat the connection procedure 2–3 times.
- If still not recognized, uninstall the USB driver from Device Manager under modems.
- Disconnect the USB cable, wait at least 10 seconds, then reconnect.
- When prompted by the Hardware Wizard, select "No, not this time," then "Install the software automatically," and press "Continue Anyway."
- Finish the installation and check if the USB device appears in the setup software.
These steps help ensure proper hardware connection and correct software recognition of the MM300 device.
This answer is automatically generated