Subject: Python for PLC-type control systems - DN [1]
"Warren Postma" <embed@geocities.com> - 06 Mar 2000 - comp.lang.python
I noticed from the thread on Python for Lisp Programmers [http://www.norvig.com/python-lisp.html], from discussions on Smalltalk newsgroups and mailing lists, and on previous discussions comparing Python and Perl that everybody's beating up on Python's performance. Okay, so not everyone's a speed-daemon, but I'm wondering if Python 1.6 is driven by core VM performance gain? Well, I have an application for Python that just might strain at it's limits. That's good though. Perhaps I can get to a point where I can help with Python's performance. Basically, I am interested in doing a Ladder Logic (PLC) engine on Python. If you've seen Modicon or Allen Bradley PLCs you know the idea. Basically this involves: - A local and remote IO device driver architecture, and possibly in the future a Python-based high level way of writing serial and network protocols (aka "device drivers") for communicating to industrial equipment. - Read large numbers of Analog and Discrete IO [this is an embedded system, so for Local IO, this basically means inportb()/outportb() type IO register writes]. I have C code already written for most of this stuff. - I will implement a number of complex tuneable or self-tuning analog PID loop control functions, using C extension modules. [This is a lower priority, but it's Part of a Complete Breakfast.] - High performance exception-driven Digital Logic. Generally PLCs have scan times in the 1 ms to 20 ms range, ranging from 50 to over 1000 digital inputs, some of which are local and some of which are slower remote IO. Each input generates 'exception' events whenever it changes state. These exceptions drive up to hundreds of boolean-logic networks [known as Ladder Logic Rungs in PLC land] which in turn control relay outputs, or internal memory flags or drive "function blocks" which are composed of procedural (Python) code and extension modules. [This part is in early development.] - A python module to create, edit, and debug the visual "ladder logic" representation of these ladder logic rungs. [not sure what GUI to use, but wxPython looks good. We're a ways away from doing this part.] - Testability is a key attribute. In the same time as building a control program, a test harness will be created, to simulate the system. Simulation is a key part of the testing approach. Neato Pytyhon Stuff I'm looking into includes Christian Tismer's stackless python and the 'stackless/microthreads' merge. I am not entirely sure if I'll need Microthreads, but I might, especially if the aforementioned "function blocks" which are Python objects, need to execute concurrently with fine-grained thread scheduling. Anybody else out there doing anything similar? Warren
Last modified
2000-07-20
2000-07-20
(195.108.246.52)
Note: you are looking at
the snapshot of an old wiki
- much of this information
is likely to be very outdated
