My On The Line Challenge submission was to create an Arduino operating as a PLC protocol server.
The implications of this are endless. To name a few:
integration without vendor lock in.
Access to all the arduino software and hardware, with existing PLC infrastructure.
What Im not doing:
Formulating a ladder compatible language, or reverse engineering the plc compiled instructions.
What I am doing:
Implementing Control code protocol and formatting. I happen to use regularly, and own IDEC FC-series PLCs, so I am using those. I see no reason that the methods I will implement would not work on any other platform, if the proper memory mappings are provided.
How its going so far:
well I calculated the system requirement to implement the code, I want to write, which is atleast 42KB, which kinda puts a damper on compatibility with all Arduino platforms, but this is only if I implement 16 bit address space from 0000-9999 with both general and had I not been nominated to this event, I would be running on a teensy 4.1 or a Feather S3D esp32 based chip. These are arduino compatible devices.
I am planing on implementing the protocols via network interfaces, and usb serial.
Many folks see documentation as optional, or the thing you do at the end of a project. For myself, documentation helps me think the process, and remember what I was thinking, so I frequently start it before even doing a project.
Well, I have a wide array of data, functional projects, and implementations client side. This means I can control PLCs, via my Linux desktop, arduinos, my phone, a website... or whatever. I've wanted to implement a server for a while, and this project is the perfect opportunity to do just that.
adding SPI, CAN, or i2C devices too a plc, which does not have its own implementation of those protocols is a pain. So the plan is to use the arduino to interface with the hardware busses, and return registers to the PLC via a custom Maintenance protocol implementation.
as an implementation of my other projects in this ecosystem, I have included my developmental files here:
https://github.com/Makerspace-Bangor/fc6a/tree/main/examples/OnTheLine
which as of writing are a document about the project, and an HMI (client device) interface for performing the monitoring. of an arduino acting as a PLC command server.
The plan is to do a basic implementation with just a couple registers, to make sure I can establish, and maintain communication without generating errors. Then, assuming that goes well, Ill dive right into interfacing devices on different buses.