CompactLogix & PowerFlex525 Comms Alarms

Hal9000

Member
Join Date
Jun 2010
Location
London
Posts
140
Hi there,

I am currently working on a project that involves interfacing PowerFlex525 drives with a CompactLogix PLC over Ethernet/IP

One thing I need to do is to be able to configure the PLC to detect when any of the drives are disconnected from the Ethernet/IP network, however there doesn’t seem to be an obvious way of detecting this. The TAG members the PowerFlex drive configuration creates in Studio5000 (V29) are only basic I/O signals.

How do I detect lost of ethernet/ip connection to any one drive?

Once I detect any drive is off the network, I can then flag an alarm at the local PV+7 HMI’s.

Regards,
 
Look into using a GSV instruction to get module information for the drive. I don't have all the details but this will poll the adapter and a fault bit can be detected and used as an alarm flag.

If you look in the knowledge base you should be able to find a good reference. Look at general Ethernet adapter monitoring. I think I found it when I was looking to do the same for a PointIO adapter.
 
Looks like there's some communication fault options in the 140 parameters you might be able to use.

Otherwise, maybe you can look at the rx/tx packet parameters and do a comparison to make sure they are changing?
 
Just to reiterate steve's solution I do the same....I wrote a routine that scans all 255 devices on a subnet using the GSV entry status to determine if any IP device is offline. I then built a table in WW to show the identity and status of each device. In this day and age when everyone is hanging devices off ethernet it's been an invaluable tool.
 
Looks like there's some communication fault options in the 140 parameters you might be able to use.

Otherwise, maybe you can look at the rx/tx packet parameters and do a comparison to make sure they are changing?
The drive can be configured to detect when IT loses comms, but if it loses comms, how does it tell the controller that it has lost it? The OP wants the CONTROLLER to recognize the loss of that one unit on the network.
 
Just to reiterate steve's solution I do the same....I wrote a routine that scans all 255 devices on a subnet using the GSV entry status to determine if any IP device is offline. I then built a table in WW to show the identity and status of each device. In this day and age when everyone is hanging devices off ethernet it's been an invaluable tool.

That would be a neat tool...would you be willing to share any of the details? I think I might have to develop something similar...
 
That would be a neat tool...would you be willing to share any of the details? I think I might have to develop something similar...

Sure....It's pretty simple....

I first do a GSV of Module, LEDStatus. IF a value of 2 then it means something in the I/O tree isn't communicating, and so an OTE of an alarm bit.

I have a UDT called Ethernet_Status with three members
EntryStatus DINT[256]
ConnStatus INT[256]
ConnFault BOOL[256]

If XIO of the alarm bit (everything is good), then I do an FLL of 16384 into Ethernet_Status.EntryStatus[0] 256. 16384 is the good value returned by the GSV for an ethernet module communicating, so this presets all the devices to a good state...also does this on first scan.

Now you have to brute force a GSV for every device you do have...skip any you don't. I put this into a separate routine as this is the only thing that changes from project to project. So this routine is just GSV Module, DeviceName, EntryStatus, Ethernet_Status.EntryStatus[xxx] where xxx is the last 3 digits of the IP for every device.

At the end of this routine, a FOR-NEXT routine is called...Initial value 0, terminal value 255, step size 1.

In the FOR Routine called there are just two rungs:

DIV Ethernet_Status.EntryStatus(ForIndex) 4096 EthernetStatus.ConnStatus(ForIndex). This instruction divides the result of each devices GSV....if 16384 (good) then the value of 4 is the result in .ConnStatus.

Next Rung does NEQ Ethernet_Status.ConnStatus(ForIndex) 4 OTE Ethernet_Status.ConnFault(ForIndex). This rung sets an alarm bit for the device not connected.

In wonderware, just create 256 tags and point the tag to Ethernet_Status.ConnFault(0 to 255). I'm sure you can do it more elegantly with a super tag or bits of an array, but it's easy with 256 tags to transport from project to project. My wonderware table is generic, as I put the device name in the comment field and display it. One search and replace fixes the table for each project depending on what the first 9 digits of the IP are.
 

Similar Topics

Hi everyone, i have a compact logic 1769-L18 PLC and I'm using FTalk View ME for the display. I wanted to do some visualization on Grafana. At...
Replies
1
Views
95
Does anyone know what the data transfer rate for this series of CompactLogix PLC's? 1769-L24ER-QB1B to be exact. Cheers.
Replies
1
Views
98
Does this instruction calculate values during a single scan, or does it require number of scans based on element count in the array? For Example...
Replies
3
Views
114
Hello all, and thank you in advance for any assistance you may be able to provide! This is my first post, so if I need to reformat or change...
Replies
8
Views
478
We are trying to poll data coming from a PLC for remote monitoring we have the IP address of the PLC and the default port number and the path is...
Replies
25
Views
578
Back
Top Bottom