4 ms·
In my very different field (robotics and industrial automation), temporal coding is one of the most powerful ways to expand your IO. Nearly all PLCs, sensors, a
by LeifCarrotson 5y ago
In my very different field (robotics and industrial automation), temporal coding is one of the most powerful ways to expand your IO. Nearly all PLCs, sensors, and robots make heavy use of digital IO. But this parallel interface is limited, especially with hard-wired signals, and even if you're using serial network protocols the typical fieldbus abstraction represents the network as fixed-size buffers of digital IO that update every few milliseconds. Analog signals are usually an expensive optional extra!
However, the controllers all include high-resolution timers. If you need to transmit an analog value, rather than bit-coding it over 12 discrete digital IO, a clever programmer might turn on a digital output for the desired number of milliseconds, or select between 10 or 16 or however many states you want to represent with your one wire using a predefined list of durations. You can convey far richer information this way!
Always interesting to see what researchers are discovering in the automated control system that is biology... sometimes we can discover techniques for use in industry with biomimicry, sometimes biology we didn't know about seems to imitate technology we developed independently.
- nielsole 5y agoNot sure I understood you. Did you describe PWM?
- LeifCarrotson 5y agoNo, typical PWM is a repetitive hardware function of an embedded system, and operates at kHz or MHz. Industrial controls usually have a scan time or requested packet interval on the order of 10 ms, much to slow for PWM without dedicated peripherals. And even if you can transmit it, you still need to read it on the other side, again, high-speed IO is a dedicated thing, you won't buy step and direction outputs or encoder inputs for unused spares. A PLC and a robot might interchange digital signals such as "In cycle", "Part present", "Faulted", "Clear of fixture", "Screw present", and "Cycle start". Hopefully the original designers also pulled a couple spare wires in case you need to add another sensor. But the old equipment is being asked to do something new, requirements now say you need to transmit, perhaps, which of dozens of part numbers to select from, or the touch point at which a sensor fired between 10 and 100mm. That's a binary signal with 6 or 7 bits, which means a $200 8-channel output card, multiconductor cable, and a $200 input card. When possible, you'd buy the fieldbus option cards from the factory and pull network cables. But in a pinch, with the more typical two spare inputs and two spare outputs, you can move some data to the time domain and work out "If aux1 is pulsed high for 680ms, the new sensor tripped at 68mm". One wire, one bit of state (0V or 24V), many values transmitted. You could extend this concept with a clock signal, data signal, and transmit arbitrary serial data, but that's going a bit too far for most maintenance techs. A pair of timers is comprehensible.
- danielvf 5y agoThis is cool hack! But boy does it terrify me! I've spent so much time debugging weirdness getting into signals from things like lightning strikes, AM radio stations, and nearby switching power supplies....