SCADA-like process visualization and control



  • I've been looking for some SCADA like visualization software for quite some time now.

    Use-case: My dad's old analog Märklin H0 model train. We are working on a "little" automation project involving lots of Arduinos (Uno and Nano) and a few Raspberry Pi 2's. All the communication is already implemented (I²C, RS485, TCP) and we have a lot of signals about junction states, train positions and lengths, power states etc.

    Now we just want to build a central system to monitor and control the whole system. I've worked with SCADA systems 15 years ago, so my knowledge about them is not exactly up to date. The software is supposed to display the tracks, states of junctions, position of trains etc. The data is already available.

    I could write something on my own, but would like to avoid that. Switching to a digital model train is not an option, because "it's just cool to hack that thing".

    Bonus:

    • Capable of running on Linux (ARM or x86)
    • FOSS
    • GUI editor, e.g. placing and connecting signals to symbols and connecting actions on symbols (like pushing a button) to some function call, executable or whatever


  • The more I'm thinking about it...

    0_1471557107968_upload-51e11733-fae0-4e83-93e9-32e1b1fdbaa4



  • Can SCADA system speak I2C?

    Way i see it is you either stuck implementing the protocols used by SCADA systems, either by writing custom drivers or modifying you existing firware on the uno/nano/Pi. Or writing your own system. Regardless both are not plug and play.



  • @tiagom said in SCADA-like process visualization and control:

    Can SCADA system speak I2C?

    Way i see it is you either stuck implementing the protocols used by SCADA systems, either by writing custom drivers or modifying you existing firware on the uno/nano/Pi. Or writing your own system. Regardless both are not plug and play.

    SCADA by itself does not speak anything. I would write some proxy to inject my signals into the SCADA system and vice versa. Shouldn't be much of a problem.

    I'm more looking at the frontend software to visualize things right now.



  • I don't know of any off the top of my head.



  • @thwr Yea i got that, i know modbus and dnp are super common. I didn't know that I2C drivers exist for SCADA systems.



  • @tiagom said in SCADA-like process visualization and control:

    @thwr Yea i got that, i know modbus and dnp are super common. I didn't know that I2C drivers exist for SCADA systems.

    SCADA is more a philosophy than a standard. The basic idea is, as far as I know, that you got some data gatherer and a frontend with some schematic of your process. It's often used in industrial applications, for example in power plants and in the process management system of modern buildings. Now I thought that this could perfectly fit the bill in this project because a train track can be seen as nothing but a large process. I've linked the English Wikipedia article about SCADA in my initial post. Take a look at the pictures there, you might get the idea.

    About I²C and RS485 usage: I'm using this for point-to-point communications between Arduinos. We are currently switching to RS485 because it's so much better suited for longer distances. MODBUS itself is a protocol often used on top of RS485. All the upstream communcation to the management system will be TCP.

    Here's a quick diagram how the communication looks like:

    0_1471594538961_upload-5c94bf71-622d-4149-9dac-1b63389bc443

    I'm not fixed to SCADA, something else could be just fine too. It just needs to provide some "inbound" data and "outbound" command interface.

    Thoughts about DIY: The SCADA part itself is not hard, but creating a Visio-like editor to arrange "shapes" of tracks, actors and sensors will be. There are a few graph libraries that could help, but it will be a bunch of work. There are like 20-30 different types of track segments in the Märklin H0 M-track (metal) series of tracks.

    PS: Sorry, it's a bit hard to explain and as some of you know, I'm not a native English speaker 😉



  • @thwr The control code shouldn't be that difficult. Getting some sort of GUI for people to interact with is where it becomes difficult, right? Have you considered just using HTML5? Assign control codes to pictures of the track, trains, and sensors? I don't remember which programming languages you've used before, so I'm just going generic here.



  • @travisdh1 said in SCADA-like process visualization and control:

    @thwr The control code shouldn't be that difficult. Getting some sort of GUI for people to interact with is where it becomes difficult, right? Have you considered just using HTML5? Assign control codes to pictures of the track, trains, and sensors? I don't remember which programming languages you've used before, so I'm just going generic here.

    Actually, that's quite a good idea. Maybe node.js?



  • @thwr said in SCADA-like process visualization and control:

    @travisdh1 said in SCADA-like process visualization and control:

    @thwr The control code shouldn't be that difficult. Getting some sort of GUI for people to interact with is where it becomes difficult, right? Have you considered just using HTML5? Assign control codes to pictures of the track, trains, and sensors? I don't remember which programming languages you've used before, so I'm just going generic here.

    Actually, that's quite a good idea. Maybe node.js?

    I'm betting a Pi would happily run that, which is going to be a consideration here.



  • @travisdh1 said in SCADA-like process visualization and control:

    @thwr said in SCADA-like process visualization and control:

    @travisdh1 said in SCADA-like process visualization and control:

    @thwr The control code shouldn't be that difficult. Getting some sort of GUI for people to interact with is where it becomes difficult, right? Have you considered just using HTML5? Assign control codes to pictures of the track, trains, and sensors? I don't remember which programming languages you've used before, so I'm just going generic here.

    Actually, that's quite a good idea. Maybe node.js?

    I'm betting a Pi would happily run that, which is going to be a consideration here.

    Indeed. Not because I don't got any spare PCs (...), but I would like to see a ARM Linux in place. Much lower power consumption, no windows licenses...

    Anyway. The most problematic part is to get some snap mechanism for the tracks / rails. There are like 20-30 different parts, like junctions, crossings, there are multiple layers, one track might be beyond another and so on. And I'm not exactly a web "developer" 😉