Skip to content

Local IO

neXo I/O modules are daisy-chained on the nXPlc bus connector and show up in CODESYS under the IO-Locali node. Every input and output is a channel you map to a variable, like the I/O of any other device.

ModuleProduct codeChannels
NXE1016111516 digital inputs, IN1…IN16
NXE1016112316 digital inputs, IN1…IN16
NXE2016113116 digital outputs, OUT1…OUT16

The IO-Locali node is always there under the nXPlc, even with no modules connected. Modules go under it in chain order: the first one under the node is the module closest to the nXPlc.

Two ways to add them:

  • Scan: download the application, log in, then right-click IO-Locali → Scan for Devices → Scan Devices. The dialog lists the modules found, in the right order; Copy All Devices to Project adds them to the project.
  • By hand: right-click IO-Locali → Add Device, useful to prepare the project without the board.

Double-click a module → I/O Mapping tab. Every channel is a BIT: type a name in the Variable column or map it to an existing variable.

(* module 1: NXE2016 outputs, module 2: NXE1016 inputs *)
xMotor := xRun AND NOT xEmergency; (* xMotor -> OUT1 of module 1 *)
xRun := xStartButton; (* xStartButton <- IN1 of module 2 *)

At startup the nXPlc compares the modules found on the bus with the project, position by position. A module’s node turns red and the device Log says why when:

SituationLog message
no module in that positionmodulo N configurato (…) ma assente sul bus
a different module is therein posizione N c'e' il modulo X, configurato Y
the module is older than the required revisionmodulo N (…) in revisione R, richiesta almeno M
the module stops answeringil modulo N (…) non risponde

The application keeps running and the other modules work normally. The inputs of a faulty module read FALSE, and its outputs are no longer updated.

A module that stops answering is retried every second without stopping the others: if you just unplugged and replugged it, it comes back by itself and the Log says di nuovo in linea.

Each module has a Revisione minima (minimum revision) parameter in its parameter tab. With 0, the default, any revision is fine; with a higher number, an older module goes into error. Use it when the application relies on a feature introduced in a specific revision.

On every new download, and when the application stops, all module outputs go to FALSE.