I work a lot with PLC (few brands) and in all of them I love/hate some hardware solutions and wasting lot of time writing low level code for not so hard to solve problems.
I want to make my own platform mainly to powered my own automatic projects.
Design assumptions of the device:
-main controller with microPython interpreter
-SD card
-USB for programming
-wired Ethernet
-maybe some simple LCD and few buttons
-connector for addition I/O modules
-DIN rail mount
-24V DC powered
I decide to make with KISS rule at the first place.
For slave outputs I decide to make chained shift register powered with SPI, when I want to make it more complicated I can add small CPLD/uC to keep more registers and be more "intelligent"
I think also about adding extra lines for UART and CAN buses
when it is star to work I want to add some more advanced one:
digital output
analog input/output
counting/generating signal modules
sensor module (some kind of ADC with enough powered to calculating sensing result - for example FFT with vibration sensor)
communication module (LORA, RS232, RS485, Modbus, CAN and so on)
audio module (some module to generate simple music tones)
motion module (module which interpreted G-Code and drive axis)
do you have any idea what more could be done?
For sure I want to make all device with multi-controllers setup. So one with micropython will talk to each other, and others only make one task.
Main challenge right now is to design good concept of internal bus to realize all of this functions. For now I think about some SPI with some additional interrupt and synchronization lines. I will be very thankful for any suggestions.