[ Vfdmod ] An easy VFD control over MODBUS RTU
- tommylight
-
- Offline
- Moderator
-
Less
More
- Posts: 14927
- Thank you received: 4995
11 Mar 2022 14:42 #236939
by tommylight
Replied by tommylight on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
Bus voltage = 5830.0 V ???

Please Log in or Create an account to join the conversation.
07 Dec 2022 07:07 - 07 Dec 2022 07:15 #258790
by akg1904
Replied by akg1904 on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
Hi aekhv,
I am using Delta MS 300 VFD and tried to follow your guide but I was not able to establish connection with my VFD.
I have attached my INI and manual. It would very helpful if you could help me regarding the same.
I am using Delta MS 300 VFD and tried to follow your guide but I was not able to establish connection with my VFD.
I have attached my INI and manual. It would very helpful if you could help me regarding the same.
Attachments:
Last edit: 07 Dec 2022 07:15 by akg1904. Reason: To attach files
Please Log in or Create an account to join the conversation.
07 Dec 2022 17:08 - 07 Dec 2022 17:11 #258818
by RobC
Replied by RobC on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
I would suggest first making sure you are communicating with the drive with all the correct modbus settings. You can verify with vfdmod's pyvcp panel or through HAL Config in Axis. Once you know you are connected then you can start adjusting settings for different drive operations.
There appears to be a driver for Delta VFDs written a while back and it looks like the commands / registers are the same as what you show. The excerpt below is from -- github.com/LinuxCNC/linuxcnc/blob/master.../vfdb_vfd/vfdb_vfd.c
// command registers for DELTA VFD-B Inverter
#define REG_COMMAND1 0x2000 // "Communication command" - start/stop, fwd/reverse, DC break, fault reset, panel override
#define REG_FREQUENCY 0x2001 // Set frequency in 0.01Hz steps
#define REG_UPPERLIMIT 0x0100 // limit on output frequency in VFD
// command bits
#define CMD_FAULT_RESET 0x2000
#define CMD_EMERGENCY_STOP 0x1000
#define CMD_RUN 0x0002
#define CMD_STOP 0x0001
#define CMD_REVERSE 0x0020
#define CMD_FORWARD 0x0010
#define CMD_JOG_RUN 0x0003
// status registers for DELTA VFD-B Inverter
#define SR_ERROR_CODE 0x2100 //
#define SR_INV_OPSTATUS 0x2101 //
#define SR_OUTPUT_FREQ 0x2103 // 0.01Hz units
#define ST_EMERGENCY_STOPPED 0x0021 // EF1/ESTOP
#define SR_MOTOR_SPEED 0x210C // RPM
#define SR_TORQUE_RATIO 0x210B // %
#define SR_OUTPUT_CURRENT 0x2104 // output curr
#define SR_OUTPUT_VOLTAGE 0x2106 // %
#define SR_INVERTER_MODEL 0x0000
#define SR_RATED_CURRENT 0x0001 // 0.1A
#define SR_RATED_VOLTAGE 0x0102 // 0.1V
#define SR_EEPROM_VERSION 0x0006
There appears to be a driver for Delta VFDs written a while back and it looks like the commands / registers are the same as what you show. The excerpt below is from -- github.com/LinuxCNC/linuxcnc/blob/master.../vfdb_vfd/vfdb_vfd.c
// command registers for DELTA VFD-B Inverter
#define REG_COMMAND1 0x2000 // "Communication command" - start/stop, fwd/reverse, DC break, fault reset, panel override
#define REG_FREQUENCY 0x2001 // Set frequency in 0.01Hz steps
#define REG_UPPERLIMIT 0x0100 // limit on output frequency in VFD
// command bits
#define CMD_FAULT_RESET 0x2000
#define CMD_EMERGENCY_STOP 0x1000
#define CMD_RUN 0x0002
#define CMD_STOP 0x0001
#define CMD_REVERSE 0x0020
#define CMD_FORWARD 0x0010
#define CMD_JOG_RUN 0x0003
// status registers for DELTA VFD-B Inverter
#define SR_ERROR_CODE 0x2100 //
#define SR_INV_OPSTATUS 0x2101 //
#define SR_OUTPUT_FREQ 0x2103 // 0.01Hz units
#define ST_EMERGENCY_STOPPED 0x0021 // EF1/ESTOP
#define SR_MOTOR_SPEED 0x210C // RPM
#define SR_TORQUE_RATIO 0x210B // %
#define SR_OUTPUT_CURRENT 0x2104 // output curr
#define SR_OUTPUT_VOLTAGE 0x2106 // %
#define SR_INVERTER_MODEL 0x0000
#define SR_RATED_CURRENT 0x0001 // 0.1A
#define SR_RATED_VOLTAGE 0x0102 // 0.1V
#define SR_EEPROM_VERSION 0x0006
Last edit: 07 Dec 2022 17:11 by RobC. Reason: formatting
Please Log in or Create an account to join the conversation.
09 Dec 2022 09:49 #258981
by akg1904
Replied by akg1904 on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
Hi,
Thanks for the reply,
I have already communicated with the drive with all the correct modbus settings in windows usind MODPOLL and it was working fine.
As I am new to LinuxCNC, I followed the guide posted by AEKHV but I was not able to debug where I have made mistake.
I will attach my HAL and INI file here.
Thanks for the reply,
I have already communicated with the drive with all the correct modbus settings in windows usind MODPOLL and it was working fine.
As I am new to LinuxCNC, I followed the guide posted by AEKHV but I was not able to debug where I have made mistake.
I will attach my HAL and INI file here.
Attachments:
Please Log in or Create an account to join the conversation.
09 Dec 2022 17:47 - 09 Dec 2022 17:48 #259021
by RobC
Replied by RobC on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
I am attaching all the files that I used to get vfdmod working correctly with my vfd / spindle. I have a different vfd and specs but you should be able to see what I have changed / added to each of these files to get it all working.
I don't remember exactly which file it is, but in my default linuxcnc install there is a generic spindle-at-speed = 1 setting in one of the files (maybe custom.hal or one of the postgui files). You will have to comment that out or delete it to get proper spindle at speed feedback.
I don't remember exactly which file it is, but in my default linuxcnc install there is a generic spindle-at-speed = 1 setting in one of the files (maybe custom.hal or one of the postgui files). You will have to comment that out or delete it to get proper spindle at speed feedback.
Attachments:
Last edit: 09 Dec 2022 17:48 by RobC. Reason: files
The following user(s) said Thank You: akg1904
Please Log in or Create an account to join the conversation.
14 Dec 2022 15:13 #259467
by akg1904
Replied by akg1904 on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
Thanks RobC
your files helped a tonne, I finally managed to get the spindle up and running but its just not rotating at full RPM.
So the max RPM of the spindle is some 24000 RPM and the max command frequency is 599Hz.
I've attached my VFD config file here.
When I connected the VFD via usb and read the frequency passed to the VFD when I try to rotate the spindle at full RPM it is only 5.99 HZ instead of 599Hz...
I thought that maybe it had something to do with improper "SpindleRpmIn" configuration so i researched a bit and found this post:
Following the comment I set the multiplier and divider accordingly.
[SpindleRpmIn]
FunctionCode=0x06
Address=0x2001
Multiplier=599 #max frequency
Divider=24000 #max spindle RPM
but its just not working.....
I am breaking my head over here, just dont know what im doing wrong.

So the max RPM of the spindle is some 24000 RPM and the max command frequency is 599Hz.
I've attached my VFD config file here.
When I connected the VFD via usb and read the frequency passed to the VFD when I try to rotate the spindle at full RPM it is only 5.99 HZ instead of 599Hz...
I thought that maybe it had something to do with improper "SpindleRpmIn" configuration so i researched a bit and found this post:
Following the comment I set the multiplier and divider accordingly.
[SpindleRpmIn]
FunctionCode=0x06
Address=0x2001
Multiplier=599 #max frequency
Divider=24000 #max spindle RPM
but its just not working.....
I am breaking my head over here, just dont know what im doing wrong.
Attachments:
Please Log in or Create an account to join the conversation.
14 Dec 2022 16:33 #259473
by RobC
Replied by RobC on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
My vfd / spindle run at 400hz, 24000 rpm max so I use 1 & 6 for the multiiplier / divider. vfdmod sends 80.0hz as 800, 300.0hz as 3000 where the display on the vfd just shows 80.0, 300.0, and so on. I believe your multiplier / divider should probably be 1 & 4, then 4 & 1. They can be tweaked from there if it's off by a factor of 10 or whatever. It seems like you're getting the right number, just with the decimal in the wrong place.
[SpindleRpmIn]
# An address of the command speed (or frequency) register.
Address=0x0201
Multiplier=1
Divider=6
[SpindleRpmOut]
# An address of the output speed (or frequency) register.
Address=0x0220
Multiplier=6
Divider=1
[SpindleRpmIn]
# An address of the command speed (or frequency) register.
Address=0x0201
Multiplier=1
Divider=6
[SpindleRpmOut]
# An address of the output speed (or frequency) register.
Address=0x0220
Multiplier=6
Divider=1
The following user(s) said Thank You: akg1904
Please Log in or Create an account to join the conversation.
Time to create page: 0.217 seconds