Search the Community
Showing results for tags 'ethernet'.
Found 3 results
Sometimes it can be hard to tell if a failure to communicate with a device is caused by a networking issue (cut cable, no power to remote device) or something else (protocol error, etc.) In these cases, the first thing we tend to do is ping the device. A successful ping at least tells us that the device is powered up and the IP is accessible from this computer. It doesn't tell us if the device will allow us to connect to it, a firewall is blocking the desired ports (say 502 for Modbus), or other issues, but it does eliminate some possible problems. There are many times when we wish to do this automatically. So, here is a simple script we'd like to share that you can use to ping a device from script: function checkPing(string ip, string path) system.ShellExecute("cmd","","/C ping " + ip + " > " + path, "", "hide") delay(5) private h = file.Open(path,1,0,0,0) private string data = file.Read(h, file.GetLength(h)) file.Close(h) return(find(data,"TTL=",0) != -1) It does this by triggering the command line ping, just like you would type it, and then piping the result to a file. Then it opens the file and looks for "TTL=" which really only appears if a ping is successful. The delay(5) is to give the ping command time to execute as there is no way us to know. ShellExecute() is a non-blocking function, meaning it will trigger the command but then immediately return. Because we are using command line piping we have to have shellExecute() run "CMD" not "Ping" directly. We pass the /C flag to CMD to tell it to run the Ping command then quit. The design of this function is to allow you to, in script, check the network status on many devices. Simply call this function with the ip and a path to the file you'd like ping to create with the result. You'll want to make sure if you are calling this function from multiple threads for multiple IPs that you pass a different path. Note also that this function will take at least 5 seconds to run, so don't call it from the command line or a button press. Make sure and call it from a sequence running in a background thread.
I'm connecting a PEAK Ethernet CAN gateway to DF. I have the IP and Port # set properly, and can use a sequence to format an Ethernet packet that successfully triggers a CAN frame with my data to be sent. I can observe the Ethernet packet in WireShark and see the frame go out the door properly from DF and this also shows in the Monitor window as a TX: My issue is that when the PEAK Can Gateway sends a packet back to the IP address of the PC running DF, and same port number configured in DF, I get no RX: in the Monitor window, and can't read any bytes. I can observe the packet in WireShark, so the PEAK device is sending proper packets to the right address and port. Does DF somehow listen to Ethernet traffic on a different port from what's configured? Where else can I look or test? Thank you! Mike
Hi, I'm using DaqFactory to control pumps, valves, etc. of a small biological reactor. And, I've also a transmitter box (Liquiline CM448, Endress&Hauser) measuring pH, T, etc. connected to the same computer via an ethernet cable. Unfortunately, I'm struggling reading the data from the transmitter box in DaqFactory. The communication protocol of the box is ethernet/IP. Does it mean that I have to create my own protocol to read the data? And how difficult is that? I'm quite familiar with DaqFactory, but I've now experience with communication protocols. Would it be easier via Modbus TCP? Endress&Hauser sells Modbus TCP licences for their transmitter boxes?