Revolution Pi – Industrial PC Based on Raspberry Pi
revolution.kunbus.com
revolution.kunbus.com
If it is suitable for use in the industry, I can't wait to ditch ladder and Structured Text in favour of modern programming languages for industrial controllers.
The TL;DR is that the products have gone through all the testing required by EN61131-2 and you can safely deploy them in harsh environments (e.g. wrt electromagnetic radiation or vibrations/shocks). However there is no external certification.
As to availability, the hardware is manufactured and assembled in Denkendorf, Germany, so the supply chain is short. The Foundation guarantees availability of the Compute Module 1 and 3 until at least January 2023.
Hmmm. I'd be curious to know who ends up using these devices. Maybe I could apply to work for them. :)
This isn't a particularly important question; I'm just a grad student in real-time research so I like learning about what gets used in practice. Thanks!
https://wiki.linuxfoundation.org/realtime/start
It contains patches to get latencies down and touches numerous subsystems of the kernel. Most importantly, interrupt handlers become preemptible. (Normally interrupts are executed in "atomic context", i.e. they cannot be preempted. This also means e.g. that you can't sleep in an interrupt handler because the timer interrupt is disregarded. With PREEMPT_RT_FULL, interrupts are executed in "process context", i.e. as normal kernel threads which can be interrupted.)
We use the kernel branch of the Foundation (which contains a ton of patches required for hardware support of the Raspberry Pi), cherry-pick the realtime patch set on top, then apply three custom patches, one is a fix to make the USB driver's interrupt handler preemptible. The result is this branch:
Yes, I see your point that a developer could just use a stock RPi to get started, and switch up to RevPi for production use. But this guy wants your sexy case in cardboard.
One of the reported issues with the Raspberry Pi is failure of the SD card if power is interrupted while the card is being written. Does your implementation overcome this problem?
Of course the eMMC is still based on flash, which has a limited lifetime. So we use a customized version of Raspbian which has swap disabled by default (can be enabled if you need it) and tunes the syslog configuration to reduce the amount of log data written. It's also possible to use a tmpfs-backed /var/log (can be enabled with a mouse click or a simple command). That way we try to prolong the lifetime of the eMMC as much as possible.
We've also been in talks with the Foundation about this and they have asserted that the eMMC is of good quality and should last for the typical lifetime of a PLC (which can be decades).
But noone is forcing you to use a specific software. You can use Python or even Bash. The input and output values are stored in a process image by an open source kernel driver (piControl) and you can access the process image through a char device. Just seek() to the value you're interested in and issue a read() or write().
If the question is about motion control of robots, our cycle time of 10-20 ms is probably too long as motion control usually requires < 1 ms.
If on the other hand the question is about human-robot collaboration safety, the product is likely unsuitable as this requires specially certified appliances.
If it's none of these two, it would be necessary to know more specifically what the setup is (fieldbus used, number of axes, etc) to come up with a realistic figure.
2. Why did Kunbus stop selling liquor? ;-)
2. I think that was a different company, I'll have to ask the CEO next time I see him.
2. Yes, sure, we just found it incredible that he used the Kunbus name and address for the imprint. Had a few laughs about it over there in Ostfildern. :-)
Upgrades to new releases can be performed either with an in-place "apt-get dist-upgrade" as is customary on Debian-derived distributions, or by creating a backup image of the eMMC, flashing the new image, then copying over any customized config files from the backup.
The German I/O module page has an animation which shows this in detail, it seems the English page is missing that for some reason:
The CSI and DSI pins are not accessible on external ports I'm afraid. I'm also not aware of plans to add modules which would make CSI/DSI available externally. In theory it's possible to open the case and attach wires to the pins which go to a connector external to the case and you could connect a CSI camera or DSI display there, however the result can hardly be considered "industrial". :-)
An alternative is to connect a USB camera.
The 4-core BCM2837 on the Compute Module 3 is beefy enough for image processing with OpenCV, in fact we're using OpenCV for our demos at expos. It may even be sufficient for video transcoding. One thing to be aware of though is that we're using a kernel with RT patches. Which means low latency, but also lower throughput. If you don't need low latencies but maximum throughput, it may be a good idea to use a kernel without RT patches. All the tooling to build a custom kernel is on GitHub.
I am actually working on a prototype of something similar- Pi, camera, small touchscreen, distance sensor and small number of IOs.
The two specific use cases for me: measure dimensions of parts hard to measure with other sensors and stopping conveyor when some parts end up in unexpected places.
The SD cards had around a 20% failure rate per year. Eventually I just started shipping each system with a backup SD card taped to the inside of the case.
Also, mSD corruption means your using a mSD card with a bad controller. The mSD was bound to corrupt and was a low caliber card to start with, unless you are doing a bunch of writes a mSD should last 2 years minimum, if not longer.
Another tact to take would be to switch to an OrangePi PC+ (8GB eMMC included, $22) or similar, that way you know your getting good quality nand with a decent controller out of the box.
The obvious solution would have been to include a battery backup in the case.
Also mentioned by others are SLC industrial grade cards which have more stable flash memory technology, better controllers, wider operating temperatures and not to mention are much much faster. It all comes down to cost, but trying to build a reliable system with removable cards is not a good idea.
The Pi design team should consider adding some reasonable quality onboard eMMC memory in the future.
Regarding cards, I can vouch for http://www.atpinc.com which we use where I work, expensive but very reliable.
The Pi "compute modules" include onboard eMMC and so do these which are based on them.
See this whitepaper on why: https://www.cactus-tech.com/files/cactus-tech.com/documents/...
It worked well, but tanning regulatory changes killed it.
* It's either the Compute Module 3 or the older (cheaper, slower) Compute Module 1.
* The schematics of the base board in the RevPi Core are open source: https://revolution.kunbus.de/download/1803/
* Normally you wouldn't open the RevPi Core case and solder stuff to the base board, though you're given all the information you need if want to do so. The expected use is to just mount the RevPi Core on a top hat rail and extend it with I/O or gateway modules via the PiBridge connector.
https://wiki.freebsd.org/FreeBSD/arm/Raspberry%20Pi
It's just that we haven't tested it yet ourselves. Minimal adjustments may be necessary due to a few small differences between the standard RasPi and the RasPi Compute Module used in the Revolution Pi, e.g. the Compute Module lacks the on-board BCM43438 WiFi that's present on the standard RasPi 3.
Industrial? Nope.
The RevPi Core 3 is equipped with a high performance cooler which is able to sustain 1.2 GHz at full load for about 20 minutes (at room temperature). After that the clock rate will be moderately reduced to 1.15 GHz.
Housing type: DIN rail housing (for DIN rail version EN 50022) Housing material: Polycarbonate
The purported value add is that the product includes a backplane, ports, power supply, and enclosure that are suitable for use in an industrial setting (wide operating temperature range, shock/vibration, etc).