Jason Valenzuela
Member
I recently posted a little hobby project of mine on Sourceforge. It's a free library implementing Allen Bradley's PCCC protocol over DF1. The other open source packages I found were missing some of the features I wanted, so I wrote my own. Some of the design goals/features that make this one a little different are:
The link layer(DF1) stuff is taken care of by a separate daemon. This allows multiple clients using the shared library to utilize a single DF1 connection simultaneously. Along with handling multiple clients per connection, it can handle multiple distinct DF1 connections.
Although only full duplex is currently implemented, the DF1 daemon can function in true full duplex, handling message transmission and reception at the same time.
The client library and DF1 process communicate via TCP, this allows the DF1 'server' to reside on a different host than the client(s).
The library allows commands to operate in two different modes. Traiditional one-at-a-time, where you send a command and the function blocks until the command is complete, and a non-blocking mode that allows multiple, concurrent messages with a call-back mechanism.
Although it's not done yet(on my list of things to do), the non-blocking mode makes it quite easy to allow PLCs to send commands to clients in addition to clients sending commands to PLCs.
It should compile without errors and works great on the AB systems I have. As I've cooked this up on my own, I'd be interested in hearing from people who would or have used something like this. What they would like to see in an API, what they don't like, etc. Additionally I don't have access to any of AB's newer 32 bit Control/Compact/FlexLogix stuff and would love it if anyone wanted to take it for a spin with some of those products.
It's available at:
http://sourceforge.net/projects/libpccc/
The link layer(DF1) stuff is taken care of by a separate daemon. This allows multiple clients using the shared library to utilize a single DF1 connection simultaneously. Along with handling multiple clients per connection, it can handle multiple distinct DF1 connections.
Although only full duplex is currently implemented, the DF1 daemon can function in true full duplex, handling message transmission and reception at the same time.
The client library and DF1 process communicate via TCP, this allows the DF1 'server' to reside on a different host than the client(s).
The library allows commands to operate in two different modes. Traiditional one-at-a-time, where you send a command and the function blocks until the command is complete, and a non-blocking mode that allows multiple, concurrent messages with a call-back mechanism.
Although it's not done yet(on my list of things to do), the non-blocking mode makes it quite easy to allow PLCs to send commands to clients in addition to clients sending commands to PLCs.
It should compile without errors and works great on the AB systems I have. As I've cooked this up on my own, I'd be interested in hearing from people who would or have used something like this. What they would like to see in an API, what they don't like, etc. Additionally I don't have access to any of AB's newer 32 bit Control/Compact/FlexLogix stuff and would love it if anyone wanted to take it for a spin with some of those products.
It's available at:
http://sourceforge.net/projects/libpccc/