S5 Solutions | LabVIEW, ATE, Test Engineering Services
  • Engineering
    • Product Development
    • Custom Software Development
    • Automated Test Equipment (ATE) >
      • What is ATE?
  • Case Studies
  • Knowledge Base
    • ALOHA
    • MLA
    • LabVIEW & TestStand >
      • LabVIEW Basics
      • TestStand Basics
      • Learning LabVIEW
      • Getting Started with OOP
    • Blog
  • Contact

I heard it on the VINE

10/31/2022

0 Comments

 
By Tony Kuiper

In many projects involving design, we find ourselves conflicted between simplicity and functionality. Machine control and communication between components is not immune to this.


As we were designing a somewhat complex hardware simulator we reviewed the generally available COTS solutions, finding a few that might work well enough, but didn’t quite meet all the requirements for how we wanted the software to be able to interact with the large number of offboard peripherals we needed, or were a bit heavy on the hardware side.
Picture
We saw this as a two-fold problem: hardware and software.

Simple hardware communications solutions like I2C and SPI were readily available but lacked the intelligence that smarter communications would provide. RS485 came close with its multi-drop capability, and CANbus fixed the issue of bus contention, however at the expense of additional interface components and cabling considerations, and a significantly heavier firmware load. RS232 was very simple to implement but was only point-to-point.  None of these off-the-shelf solutions really scratched the itch.
Slightly disappointed, we turned to pondering software. Whatever software was required, we knew we wanted to be very light-weight. Something you could run in Arduino Micro/Nano or equivalent.  Something that could self-identify, and could respond to both directed and broadcast traffic.

Then a flash of memory struck - we remembered the Token Ring network of old, now superseded by Ethernet, and soon we had merged the best concepts of hardware and software together to come up with the VINE.

The VINE is a combination of modified RS232 hardware and a Token-passing software method. In normal RS232, both RX and TX lines go between the same two components, but in the VINE, the TX line goes to the next Leaf. The Controller transmits to the first Leaf, who transmits to the second Leaf, etc, until the final Leaf transmits back to the Controller.

Therefore the main magic is in the Token passed around - the message itself. At the front of each message is an address, and when a Leaf on the VINE receives a message, it decrements that address and, when the address reaches a “1”, the Leaf handles that message and responds appropriately. That Token/Message then makes its way back through the rest of the Leaves, being ignored because the Address is now and forever will always be “0”.  

Identification of Leaves on the VINE is simple also, sending out an Address of “*” will cause all Leaves to both forward the broadcast and also respond with their name. Their addressing in the VINE becomes inherent due to the auto-incrementing of response messages by each Leaf.

Thus, with a bit of clever borrowing, we have a self-organizing, virtually unlimited multi-drop network of intelligent nodes, with a human-readable protocol running on an electrically simple interface.
0 Comments



Leave a Reply.

    Categories

    All
    Events
    GUI
    LabVIEW
    Maker
    Project Success
    Special Interest

    RSS Feed

​Quick Links
Home
Services
Case Studies
ALOHA
​MLA
Privacy Policy
Picture
S5 Solutions, Inc.
LabVIEW & ATE, Test Systems, Software & Electrical Engineering Services located near Seattle, WA.


Contact Us
p: 425.298.7447
e: ​Info@S5Solutions.com
© 2023  S5 Solutions, Inc.           Employee Site
  • Engineering
    • Product Development
    • Custom Software Development
    • Automated Test Equipment (ATE) >
      • What is ATE?
  • Case Studies
  • Knowledge Base
    • ALOHA
    • MLA
    • LabVIEW & TestStand >
      • LabVIEW Basics
      • TestStand Basics
      • Learning LabVIEW
      • Getting Started with OOP
    • Blog
  • Contact