Showing results for 
Search instead for 
Did you mean: 

Controlling a VFD using Modbus/TCP or Ethernet/IP using LabView?

I am part of a team designing and building a dynamometer in order to test motor efficiency. To load the motor under test we plan to use a load drive (VFD/electric drive) with a load motor and apply various load torques. The drives (VFDs) we have been looking at are either from ABB (ACS850 or ACSM1-04) or from Yaskawa (A1000), both offer the option of connecting via Modbus TCP/IP or via Ethernet/IP. I was wondering if someone has previously worked with any of these drives and controlled them using LabView?  We are hoping to control and read parameters from the drive using an Ethernet connection as a separate power analyzer will be connected to an NI chassis that way.
Any advice in this regard would be highly appreciated.
When looking at the specific NI modules we are considering two options:
1- Using an Ethernet module (from NI that fits in the Chassis) to communicate with both the Power Analyzer and the Load Drive.
2- Connecting all the devices including the Chassis, power analyzer, and load drive through an Ethernet switch with each device having specific IP addresses.
Has anyone used any setup like this before? A switch would be close to 50 times cheaper than using the Ethernet module itself so I'm a bit worried there might be something that limits it or that I'm missing (noise maybe?).
To conclude, I'm looking for advice on the following topics:
1) Used Ethernet/IP or Modbus TCP/IP to control a load drive, and which connection type is best if any.
2) Recommended any specific load drive to use with LabView.
3) Experience with using an Ethernet switch or an Ethernet module when connecting to multiple devices.
Thank you very much for your help and time.


0 Kudos
Message 1 of 26

Which ethernet module are you looking at?  What chassis?  cDAQ/cRIO? 


Are you looking at the modbus library that comes with RT/DSC?  If you want Ethernet/IP advice, your best location to post is the Industrial Communication forums.  There's generally a better audience for that protocol there.

0 Kudos
Message 2 of 26

I have not used Modbus over TCP/IP before, but I have done it with RS-485 serial ports to other brands of both AC and DC motor drives.  I used the modbus library available through MODBUS Library for LabVIEW.


I believe there is a newer version of that library in one of the NI community pages, Link  I still prefer the older library I listed above.


As natastfw pointed out, if you have the DSC module in your LabVIEW suite, there is a Modbus library under one of the palettes.  Data Communication, I believe.  It is new and I just found out about it in the last couple weeks.  Quick glance it looks good, but I haven't had an opportunity to use that one yet to be able to comment further on it.

0 Kudos
Message 3 of 26

I have done LabVIEW projects with the ACSM1 drives via Modbus/TCP.  Works well.  Modbus protocol with ABB drives allows direct access to any drive parameter in addition to the mapped ones.   Ethernet/IP parameters have to be mapped, and hence are limited.  Not all values are in their native scaling when they come over Modbus, so you will have to watch out for that.

0 Kudos
Message 4 of 26

Though I am not familiar with the specific drives in question, I have used Modbus/TCP in LabVIEW a few times recently.


As the previous posters pointed out, there are a couple of VI libraries available.  LabVIEW 2014 added Modbus VI's with the DSC and LabVIEW Real-Time.  The others you would have to get and add in yourself.


Another option is to use LabVIEW I/O Servers; as long as you have DSC or Real-Time, you can create Modbus I/O Servers as library items and deploy to a target.  You don't get as much direct control in this way (and may run into difficulties if you need them to be field-configurable and do not have DSC) and use bound network shared variables, but they are very fast and easy to setup and I have yet to have any issues with using them in my applications.

A tutorial on setting up a Modbus I/O Server:

A tidbit on deciding between Modbus VI's and a Modbus I/O Server:



As for using an Ethernet switch to connect multiple devices, I have used this approach many times to simultaneously connect and control numerous PC's, real-time controllers, and drives without issue.  I would not expect there to be any problems unless you have extenuating circumstances.  In fact, if you only have one network interface on your device at the moment, I would recommend against adding a second, as this would mean that you / your controller would have to be extra aware of which interface everything is assigned to go through.


0 Kudos
Message 5 of 26

I want to hijack this topic for my own personel gains. Or relief of my pains.


I'm doing the exact same thing and am at the point i want to rip out my hair.


I've got a ACS355 VFD with a FENA-01 TCPModbus adapter.


Can someone help figure out what to send uasing ni modbus library to make this thing run! I've RTFM!!! several days already. it is not the most intuitive communication protocol. I should of stuck with serial.


Basicly there are control words that need ot be sent like 1150 then 1151 to ready the device and start it. And thats what you would send using serial. but then you dig deaper and the module has address locations that are 400001 for control. and maybe you send 1150 1151 to that address using laview? cant get that to do anything. Then i noticed that from other posts you drop the 4 and you subtract 1 so 400001 = 0. so i tried address 0 then sending 1150 1151 to the ACS355.....nothing. Well if you look at 301 you can see the commands you sent to the device. thing is i send 1150 1151 and i get a HEX number at 301 that is not = to 1150 or 1151, i tihnk i got sometihng like 201 or 221 in hex... then i thought hilo byte order backwards. switched that on the controller and same outcome.



please someone help me with this???? ABB tech has not been helpful yet. I will contact them again on monday and continue this fun experiment in modbus communication.


I just need a pump to turn on and adjust the Hz out.... 😞


please, anyone with a labview example. basic. VFD on/off. I've done a ton of work on this project and the pump is slowing me down. 




0 Kudos
Message 6 of 26

I have only done this with the ACSM1 using Transparent 32, which would be different for you.  You should be able to just send 1150 or 1151 to the control word, and the speed reference using the ABB drives profile.  The control word will be at register 0(really 40001), but if you are using a modbus function from the library, it will really add 40001 behind the scenes.  You must also be sure that the drive is setup correctly to be controlled via the fieldbus adapter.  If you have a VI or DriveWindow Light file, please post if you can.

0 Kudos
Message 7 of 26

So maybe i have a VFD controller setting wrong?


I've used the labview modbus library that is built in.


Setup a simple Master TCP connect - Send holding register 0 with 1150 and\or 1151 -  close connection.. Everything goes through like it worked. no errors. but vfd still sitting there doing nothing.


if i manually turn it on in local mode. it turns on real low setting...running pump dry so i dont want to kick it into full blast. so i know that part is working.



here is snipit to show how simple it should be. what am i doing wrong? do i not use holding registers to send the control word? I've tried with only 1150 only 1151 combination in sequence since i've read you should have sent stop/ready before start.





Need to figure this out this week. it's what i expected to be the difficult part of the project since i'm not familar with modbus. but it should really be simple if labview has  amodbus library for it already.


Any sugestions would be great. Thanks everyone.




0 Kudos
Message 8 of 26

Do you have DriveWindows Light?  Did you change the parameters specified in the FENA manual?

0 Kudos
Message 9 of 26

I saw the Drive Windows Light somewhere. I will have to find it and try it out. (could always use wireshark to figure out how all the network packets are sent if it works and reverse engineer the calls, bypassing modbus api 🙂 )


I changed a ton of paramters that the fena-01 manual told me to change. And also the ACS355 manual settings.


I can request basic model information from the device. Using the NI modbus examples there is a modbus function to retrieve information from the device. All this comes back so i know i have basic comunication working between the PC, FENA-01 and the ACS355.


And the drive has a front panel that i can watch the data comming in. looks like parameter 301 is modbus data. but it never matches what i send through the modbus api. So i really dont know what the api is doing behind the scenes. I would like to understand how the low level works a little better. so maybe some more light reading.


p.s. where can i get drive window light?

0 Kudos
Message 10 of 26