Skip to content
Corey Thompson edited this page Jan 2, 2023 · 5 revisions

Vfdctl Use Case

Vfdctl was built so that when programmatic interaction is needed with a VFD, you do not need to be aware of the specific I/O, registers or even protocol of your device in order to read or write to it. Instead, a user wanting to update a setting needs to send a command with the knowledge of the device name, the value requested and a parameter name that is consistent across every single VFD device. A user wanting the runtime telemetry just needs to specify topics they care to receive updates for in an MQTT client.

With this decoupling, there are numerous tangible benefits. While running Vfdctl, if a VFD is replaced with a different brand or changes to a different protocol it does not force your controllers, HMI or web app to be updated also. So in this scenario if the VFD is not working after you've replaced it, you can safely assume that the issue occurred while performing the setup of the new VFD because you did not have to re-download to all of your devices with potentially unintended changes. During system downtime, minimizing complexity is key to ensuring the quickest recovery.

Another advantage is that you are not tied to a single brand, make or model of VFD. For consistency, most users will opt to use the same VFD when using multiple in their system, but what if that device isn't available for another 20 weeks during a new project? What if this is a 20 year old system and that device is end of life, so there is no drop-in replacement? Imagine if we only needed to change a single config file for our Vfdctl app with the new brand and desired protocol of the new hardware and we didn't need to download to every 20 year old device on the network! This is the role that Vfdctl serves.

This page describes what’s possible to build with the different tools and APIs that are available on the platform, and how to get the access and information that you need to get started.

Hardware requirements

Across the platform, there are different controller devices capable of various protocols. This section helps to describe what you need to successfully use our APIs. In addition to the controllers below, you will need tools and cables to communicate with them such as ethernet cables, micro usb cables, power cables and a micro SD card (1GB or greater).

Supported Controllers

Make Model MQTT Support Modbus Support
Automation Direct P1AM-100ETH w/ MKR485 3.1.1 RTU

APIs

API Vfdctl Version MQTT Version Supported Requires Cloud Connectivity? R/W
Runtime telemetry v0.1.0beta 3.1.1 No Read Only
Settings Configuration v0.1.0beta 3.1.1 No Write
Last Will & Testament v0.3.0 3.1.1 No Read Only

Supported Features

LED Status Indicator

Auto Fault Recovery

  • Any fault will re-trigger controller initialization
  • Telemetry and command handling are interrupted during recovery
  • Incoming commands are possible to be queued until connected but not guaranteed

Telemetry

Configurable Publish Frequency

modbus.telemetry_interval_sec

  • defaults to 15 seconds

Configurable RS485 Serial Port Settings

modbus.serial_port.baud_rate

  • Defaults to 9600/8/0/1

Configurable Telemetry Registers

modbus.telemetry_registers

  • Maximum of 50 monitored registers
  • All configuration occurs in 'config.txt'
  • Configurable source register
  • Configurable source server
  • Offset available for 'off by 1' corrections between brands (Configured source register + 40000 + offset)

Commands

Command Queueing

  • Maximum of 5 queued commands
  • FIFO processing
  • Rate limit to 1 msg/sec to prevent buildup in queue
  • Queue overflow will result in dropped commands
Clone this wiki locally