PLC programming languages

I've posted this to a german newsgroup, but not much response so far. Maybe people using PLC's don't read newsgroups at weekend or not at all :-)

Maybe next year, when I have less client projects, I want to build a small microprocessor system for simple DAQ tasks, but it should work standalone, too. Using the PLC standard IEC 61131-3 for the programming language environment looks like a good idea. I've found a summary in this document:

http://157.158.12.7/kss/dydaktyka/materialy/PC/PLC_IEC61131-3.pdf

My idea is, that even hobby programmers can use this system. The hardware should be extendable with terminal blocks, like this one:

formatting link

for I2C, SPI, digital IO and analog IO. For DAQ, transfering PLC programs and debugging it should use USB.

The most work would be to create the PC side software for a useful development system. Do you think that IEC 61131-3 standard is a good starting point for it? The software could compile all 5 defined languages to byte code, which is then interpreted on the device, and it could even be extended with other languages, like Basic, for the casual programmer. Time critical parts could be written in assembler.

I expect at least a year development time. Maybe it could be started as a open source community project on sourceforge.net.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss
Loading thread data ...

you're a little behind.. Things like this already exist how ever, if you think you can do better then do so.

I would how ever, brush up on the format use of the PLC ladder that you have posted in the link you provided. Some parts are not user friendly much like the OR/AND logic for example. Most PLC's at the start of a scan, will take a snap shot of all inputs ,outputs and at the end of the scan will then write back all of this to the output area's.

So, putting that in context.

|-------][---+---------------()--| | | |-------][---+

The above could be treated as a OR sequence. |-------][-----][------------()--|

And that as a AND sequence of control.

Now if you want to perform MATH functions, you then would have a CMD that actually has the "OR" / "AND" statements on memory etc.. For others that are interested in the subject matter. here is a short but simple pictation of a PLC.

formatting link

formatting link
"

Reply to
Jamie

Thanks for the hint, looks like there are already some interesting open source projects, like this one:

formatting link

But other projects and websites are dead, like PuffinPLC.org or

formatting link

I didn't use it so far, but doesn't look complicated or not user friendly, at least not for simple controlling tasks. Where do you think is the problem?

This sounds like a good idea, something like in LabView. Meanwhile I've bought the standard document and looks like you can define your own function blocks, with typed input and outputs, which can be combined like the predefined boolean types. This concept sounds very powerful: Mathematical calculations, or e.g. a filter, can be implemented in ST, which then are the building blocks of a schematic like diagram in LD.

Thanks, nice example.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

each vender of PLC's like to come up with their own little variety of complexities. For example in the Keyences families. the advanced logic may look like this.

|--------[LDA #100]--[STA TM100]------|

and in Alan Bradleys like this.

using a whole block box with full descriptions of the operations.

|------ MOVE -----+ | Source xxxxx | | DEST xxxxx | |-----------------+

The operand values could be memory,timers, ADC, DAC or immediate values etc////

Addressing inputs/outputs are also different among venders///

some use actual numbers that would look like PORT numbers.. 0500, 501, 502 etc... for outputs and 0,1,2,3, etc.. for inputs..

they normally designate a max range for input numbers and the values above that are for outputs..

You can find this in units like Keyence..

In Alan Bradley's they're using I = input, O = output for external references and normally specify a unit point.. for example I0:2 means an input on module 0 which is the CPU in this case of #2 point. and O1:0 is OUT on module 1 at point 0. normally each module device has no more than 16 points of reference on it.

So you can now see how things can get a little mixed up in the PLC world when you're trying to support all..

We deal with DirectLogic, Keyence, Omron, Siemans, Alan Bradley of various generations along with On panel view systems using things like Wonder Ware etc... So touch base with others at times.

We also deal with micro controller chips etc..

It's gets tough on some days.

formatting link
"

Reply to
Jamie

This doesn't look very useful, because I think in diagrams it is not useful to use IL code without blocks.

This looks better.

But I hope you can define some names for it? Would be much better to use shutdownReactor=1 instead of guessing that O1:42 is the right port, but it was assigned to a motor for adding the next fuel rod.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.