GPIO protocol

GPIO protocol

GPIO protocol

Supported device types and versions
Communication line configuration
Communication station configuration
I/O tag configuration
Literature
Changes and modifications
Document revisions

 

Supported device types and versions


The protocol supports communication via inputs/outputs of Raspberry PI and computers built on an RPI Compute Module. Currently supported are:

  • Raspberry PI (version 2, 3, and 4) based on a pigpio library - communication via GPIO (General Purpose I/O) pins

  • Techbase NPE X500 M3  (DIN-mounted industrial computer built on RPI Compute Module 3 with industrial inputs and outputs)

The communication was tested with Raspberry PI (version 3) and NPE X500-M3-MAX-3G.

For Raspberry PI, the protocol supports reading of digital inputs (instantaneous values as well as counting signal changes with an optional time filter) and setting digital outputs to a constant value or pulse-width modulation (PWM).

For NPE X500 the protocol supports reading of digital and analog inputs and status of user button, writing to digital outputs, setting relay outputs, working with user LEDs, and a buzzer.

Note: On Raspberry PI, the KOM process must be run under the root user to gain access to the GPIO. It is possible to achieve by setting the setuid bit for the kom binary. Under the user pi, you can do the following:

cd /opt/d2000/bin
sudo chown root kom
sudo chmod 4755 kom

 

Note: On NPE X500, the KOM process must be run under the root user to gain access to the GPIO (see the previous note for Raspberry PI). An alternative is adding user d2000 to groups and setting appropriate access rights. Under the root user, you can do the following:

sudo usermod -a -G gpio d2000

For access to serial ports also:

sudo usermod -a -G dialout d2000

In order for the d2000 user to access the LEDs and the buzzer, it is necessary to set the rights for the respective files each time the computer starts up. Create a file d2000init in the /etc/init.d directory containing:

#!/bin/bash

### BEGIN INIT INFO
# Provides:          script
# Required-Start:    $all
# Required-Stop: 
# Default-Start:     2 3 4 5
# Default-Stop:     
# Short-Description: D2000Kom
# Description:       Support for D2000 KOM (work with leds/buzzer)
### END INIT INFO

DESC="Set permissions for LED/BUZZER for D2000 KOM"
chmod -R o+w /sys/class/leds/LED1
chmod -R o+w /sys/class/leds/LED2
chmod -R o+w /sys/class/leds/BUZZER

 

Then run:

chmod 755 /etc/init.d/d2000init
update-rc.d d2000init defaults

 

Communication line configuration


 

  • communication line category: API.

  • By default, a single line with a single station is configured for one device. If there is a need to stop communication with selected inputs/outputs, there may be several stations on one line. Due to the load distribution or for the rapid reading of the digital inputs, several lines with one or more stations per-line can be configured.

 

Communication line parameters

 

Communication line - configuration dialog box - the Protocol parameter tab.
Parameters defined in the field have an effect on some optional protocol parameters. The following line protocol parameters can be defined:

 

Table 1

Full name

Description

Units / size

Default value

Device Type

Type of device. Currently supported are::

  • Raspberry PI

  • NPE X500

 

-

Raspberry PI

Library Name

Name of the library with communication functions for a particular device. The used values are:

  • libpigpio.so for Raspberry PI

  • libx1000gpio.so for NPE X500

-

-

Read Delay Ms

Delay after one reading of the values of all I/O tags. Using this parameter, it is possible to control the reading frequency more finely than using the polling parameters in the configuration of the time parameters of the station.

ms

1