Welcome to the Revolution Pi with Python

Program your Revolution Pi of Kunbus GmbH with Python!

Python module

This module provides you with various functions to access the hardware of the Revolution Pi with your Python program. It does not matter whether you come from the PLC sector and program cyclically or event-based as an application developer of e.g. Raspberry Pi.

PLC System for software, network and MQTT

With our RevPiPyPLC system you can make fast IO-Checks over the network, upload your control program, start it at system start and transfer all IO data via MQTT. Or simply write data from any Python system to the process image.

And there are no license fees!

Source example RevPiModIO version 2 – current

import revpimodio2

def eventfunction(ioname, iovalue):
    """Event function, which is executed when the value changes."""
    print("Input {} has value {}".format(ioname, iovalue))

# Instantiate RevPiModIO
rpi = revpimodio2.RevPiModIO(autorefresh=True)

# Catch Ctrl+C signal and exit program clean

# Register input events

# Start event processing (program will block here)
print("start mainloop")

More examples


Version 2.5.7

Important update Corrects errors in the length specifications of the memory areas from the process image if the piCtory configurations have gaps. This has been discovered so far with the “Modbus Master 150” module. The error means that the IOs of modules behind the incomplete module are not correctly synchronized. Flat: Switch button and relay …

Version 2.5.6

Important update! Fixes cycle problem with shared_procimg=True As soon as a new value was assigned to an output, RevPiModIO immediately wrote it into the process image. Outputs may only be written to the process image after the cycle function has been completely processed (when using .cycleloop) or after calling .writeprocimg. The error is not relevant …

Version 2.5.5

Important update Implementation of RevPi Flat (still without .core IOs). Hardening of NetIO (process image over the network). The call .cycleloop now accepts an optional blocking parameter. If you do not want the Cycleloop to be executed exclusively, blocking=False can be set – Same as blocking parameter of the .mainloop. shared_procimg can now be set …