NellyCOM is a proprietary serial communication protocol that allows you to communicate with, and control, the Nelevator enabling you to develop a customised computer control system with the Nelevator at it’s heart.
The NellyCOM communication socket accepts a standard 3.5mm, 4-pole connector for its physical interface, utilising 5V logic levels.
Serial Port Configuration
Baud Rate: 19,200
Parity: None
Data Bits: 8
Stop Bits: 1
Serial Port Connection
TSR 3.5mm 4 pole jack plug. E.g. RS part 805-1652, Farnell part 2309467 or Cliff Electronics part FC68124.
Tip: +12Vdc
Ring: TX, 5V logic levels (RX on Nelevator)
Sleeve Ring: RX, 5V logic levels (TX on Nelevator)
Sleeve: 0V
Data Frame Format
<SOH> <CMD> <DATA> n… <BCC> <EOT>
Command | Description |
SOH | 0x01 – Start of header / transmission. |
CMD | Command to execute. |
DATA | Data bytes (if any) related to the command. |
BCC | Block Check Code of all previous bytes after (but not including) <SOH>, XORd together, but prior to any byte substitutions of the data (see below), i.e. to be performed on the raw data. |
EOT | 0x04 – End of transmission. |
SUB | 0x1A – Substitution – transparency byte. |
SUB_XOR | 0x20 – Value to XOR with data byte for substitution. |
Byte Substitution
After the initial <SOH> byte, if any data bytes equate to SOH, EOT or SUB, then a SUB byte is to be sent first and then the data byte is sent after XORing with SUB_XOR.
This should also be done for the <BCC> byte.
To decode, discard the received SUB byte and then XOR the following byte with SUB_XOR to reconstitute the data byte.
Motors and Channels
Please note: Because of the way the system PCB is mounted on the Nelevator the motor and channel labels are swapped, i.e.:
- Motor 1 = Channel 2
- Motor 2 = Channel 1
In the following specification, please pay attention as to whether the specification is referring to a motor or a channel as they differ.
Control Commands
X = Stop Both Motors
<X>
M – Move
<M> <Channel> <Mode> <Variable>
Command Options | Options / Description | Data Format |
Channel | 1, 2 = Channel selection | ASCII |
Mode | T = Track select | ASCII |
Variable | 0 – 9 = Track number | 8 bit byte |
S – Status Data
Status Data Request
<S>
Note: To avoid overloading the Nelevator with continuous status requests it is advised that status requests are sent no more frequently than every half second (500 ms intervals). This rate should be more than sufficient for any feedback / control display requirements.
Status Data Response
<S> <M1 Status> <M1 Track> <M1 Target> <M2 Status> <M2 Track> <M2 Target>
- M1 = Motor 1 / Channel 2
- M2 = Motor 2 / Channel 1
Response Options | Options / Description | Data Format |
Status | S = Stopping going up | ASCII |
s = Stopping going down | ASCII | |
x = Stopped – OK | ASCII | |
L = Motor locked from moving | ASCII | |
Y = Stopped – Overshoot going up | ASCII | |
y = Stopped – Overshoot going down | ASCII | |
u = Moving up | ASCII | |
d = Moving down | ASCII | |
B = Braking going up | ASCII | |
b = Braking going down | ASCII | |
A = Accelerating going up | ASCII | |
a = Accelerating going down | ASCII | |
O = Over-current going up | ASCII | |
o = Over-current going down | ASCII | |
c = Calibration mode | ASCII | |
I = Start speed incremented going up | ASCII | |
i = Start speed incremented going down | ASCII | |
Track | 0 – 9 = Current track number | 8 bit byte |
Target | 0 – 9 = Target track number | 8 bit byte |
Download the latest version of the NellyCOM specification: NellyCOM Specification – PDF