svd-ps_vfd - HAL userspace component for SVD-P(S) VFDs


svd-ps_vfd [OPTIONS]


The svd-ps_vfd component interfaces a Soyan Power SVD-P(S) VFD to the LinuxCNC HAL. The VFD is connected via RS-485 to the LinuxCNC computer.

The SVD-P(S) VFDs are also sold under the LAPOND brand.


The SVD-P(S) VFDs do not come with a Modbus daughterboard by default, it needs to be purchased separately.


The sad-ps_vfd component uses standard Modbus protocol communication which requires that one parameter be changed from the default settings:

PD-05 = 1 (Standard Modbus protocol)

The following settings have been tested successfully and are the default per Soyans documentation:

PD-00 = 6005 (9600 baud)

PD-01 = 0 (8N2)

PD-02 = 1 (Slave address)

PD-03 = 2 (Response delay)

PD-04 = 0 (Communication timeout)

PD-06 = 0 (Current resolution)


-b, --bits N

(default 8) For Modbus communication. Set number of data bits to N. N must be between 5 and 8 inclusive.

-p, --parity [Even,Odd,None]

(default None) For Modbus communication. Set serial parity to Even,
Odd, or None.

-r, --rate N

(default 9600) For Modbus communication. Set baud rate to N. It is an error if the rate is not one of the following: 1200, 2400, 4800, 9600, 19200, 38400

-s, --stopbits [1,2]

(default 2) For Modbus communication. Set serial stop bits to 1 or 2.

-t, --target N

(default 1) For Modbus communication. Set Modbus target (slave) number. This must match the device number you set on the Huanyang GT VFD.

-d, --device PATH

(default /dev/ttyS0) For Modbus communication. Set the name of the serial device node to use.

-v, --verbose

Turn on verbose mode.

-S, --motor-max-speed RPM

The motor’s max speed in RPM.

-F, --max-frequency HZ

This is the maximum output frequency of the VFD in Hz.

-f, --min-frequency HZ

This is the minimum output frequency of the VFD in Hz.


svd-ps_vfd.period (float, in)

The period for the driver’s update cycle, in seconds. This is how frequently the driver will wake up, check its HAL pins, and communicate with the VFD. Must be between 0.001 and 2.000 seconds. Default: 0.1 seconds.

svd-ps_vfd.speed-cmd (float, in)

The requested motor speed, in RPM.

svd-ps_vfd.speed-fb (float, out)

The motor’s current speed, in RPM, reported by the VFD. (bit, out)

True when the drive is on and at the commanded speed (within 2%), False otherwise.

svd-ps_vfd.freq-cmd (float, out)

The requested output frequency, in Hz. This is set from the .speed-cmd value, and is just shown for debugging purposes.

svd-ps_vfd.freq-fb (float, out)

The current output frequency of the VFD, in Hz. This is reported from the VFD to the driver.

svd-ps_vfd.spindle-on (bit, in)

Set this pin True to command the spindle on, at the speed requested on the .speed-cmd pin. Set this pin False to command the spindle off.

svd-ps_vfd.output-voltage (float, out)

The voltage that the VFD is current providing to the motor, in Volts.

svd-ps_vfd.output-current (float, out)

The current that the motor is currently drawing from the VFD, in Amperes.

hsvd-ps_vfd.output-power (float, out)

The power that the motor is currently drawing from the VFD, in Watts.

svd-ps_vfd.dc-bus-voltage (float, out)

The current voltage of the VFD’s internal DC power supply, in Volts.

svd-ps_vfd.modbus-errors (u32, out)

A count of the number of modbus communication errors between the driver and the VFD. The driver is resilient against communication errors, but a large or growing number here indicates a problem that should be investigated.

svd-ps_vfd.input-terminal (float, out)

The VFD’s input terminal register.

svd-ps_vfd.AI1 (float, out)

The VFD’s AI1 register.

svd-ps_vfd.AI2 (float, out)

The VFD’s AI2 register.