ethercat | EPICS support to read/write to ethercat based hardware
kandi X-RAY | ethercat Summary
kandi X-RAY | ethercat Summary
EPICS support to read/write to ethercat based hardware. Prerequisites: IgH EtherCAT Master for Linux.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of ethercat
ethercat Key Features
ethercat Examples and Code Snippets
Community Discussions
Trending Discussions on ethercat
QUESTION
I am trying to send a Raw Ethernet frame over layer 2, using the prottest.c example code for the NDIS driver, in C. The example works without problem, but when I modify the Ether Type (0x88A4 EtherCat) and adapt the frame with the necessary structure and information, the Writefile function always returns Error 87 (Incorrect parameters).
Is it not possible to write with this function on Layer 2, in Raw, without the TCP/IP stack, what could be wrong?
Thanks for your help. Best regards.
...ANSWER
Answered 2021-Jun-01 at 23:15For security, the driver refuses to send these types of packets by default.
Of course, since you have the source code to the driver, you are free to modify this restriction however you like — it's your driver. You can add a line to specifically allow the 0x88A4 EtherType, or delete the entire if-statement to allow all EtherTypes. You can require the usermode process to be running as Administrator if it wants to send "suspicious" network frames.
A bit more detail on the security angle. If you allow untrusted users/programs to place arbitrary data onto the network, that may compromise or weaken network security. This is why the sample driver (and Windows in general) does not allow arbitrary programs to put arbitrary data on the network.
For example, a malicious program that has unrestricted access to the Ethernet layer can advertise a malicious DHCP server that points clients to a malicious DNS server, conduct ARP poisoning attacks on your switch, DoS a switch (with, for example, 802.3x PAUSE frames, or with LLDPDUs that undermine the QoS policy), or circumvent any firewall policies you might have.
These potential attacks aren't necessarily a deal-breaker: consider that this is roughly the equivalent of allowing someone to plug an arbitrary unmanaged device into an Ethernet jack on your network. If your network already has measures in place to defend against hostile Ethernet endpoints, then removing restrictions from the sample driver not making things much worse. Alternatively, if you have some level of trust for all the users & code on the PCs that will run your driver, then modifying the driver won't matter. Or if your threat model already assumes the network is hostile and unreliable, then removing these restrictions will only help fulfill your threat model's expectations. ;)
QUESTION
I'm new to EtherCAT/TwinCAT. I have a slave device connected to Master. I can read data with an ADS Client from the slave device if I create a variable in my PLC and link that variable to a value on the slave. Is there a way to get a value from the slave without having to create a PLC variable? I'd like to be able to read and modify multiple objects on the slave without having to create a variable for each in the PLC.
...ANSWER
Answered 2021-May-17 at 04:43In order to enable this functionality all you need to do is Enable ADS Server on the EtherCAT device that you are trying to access.
Making ADS IO symbols availableThere are a few setup steps that are required to make this work, but it is reasonably straight-forward.
- Scan in IO from EtherCAT chain
- Add a new 'Twincat Task with Image'
- Added from the context menu of 'System>Tasks'
- Create and link variable from added task to IO
- Force the sync-unit updates and allow control of EtherCAT timing
- I added a variable that linked to the SlaveCount with a UINT, very basic
- For EtherCAT master enable 'Enable ADS Server' and 'Create Symbols'
- Access Symbols as you would any other on the controller
- Only oddity around this is that you need to access the CONTROLLER net ID, not the EtherCAT master, But you still use the port from the EtherCAT master
Where to find 'Enable ADS Server', 'Create Symbols' and ADS Port
Example Symbol path in the IO device list
QUESTION
Question: For a conditional statement that contains code that invalidates the condition that triggered it, are there any conditions in which the conditional will exit, prematurely, without a break function? Similar to this:
...ANSWER
Answered 2021-Apr-14 at 07:20The answer to your question is: "No, only in a multi-threaded context."
In a multi-threaded context almost anything you cannot imagine will happen. The background and context you provided is extensive but not sufficient to study this.
One thing Conv_shouldread = false; //If true, Conv_ReadAvail returns true
apparently modifies (or determines) the outcome of if(ThreadSync.Conv_ReadAvail())
and it seem obvious that other threads are also interfering with this. I would, thus, clearly put the Conv_shouldread = false;
inside the mutex protection.
But besides this, I must confess the problem could be clearly somewhere else and there can be a lot of side effects between different threads.
QUESTION
I am trying out the Twincat TF6340 TC3 serial communication function and is following Example 1 from here.
My objective is to connect an RS422 device to the PC via an Ethercat convertor.
As far as I understand, the fast task (refer here for the manual - pg 21) is for enabling communication between the serial device and the COM buffer, and the standard task(FB_SerialCom) is for processing data from the buffer.
Hence my program would need both a standard task and a fast task, wouldn't it?
Ps. I am a beginner in Twincat. Also, I use EL6xxx Ethercat convertor.
...ANSWER
Answered 2021-Mar-19 at 02:50You will need two different tasks running at different speeds, determined by the baud rate of your communications and how often you want to process the data present on the buffer.
If you examine the example included in your reference link then you will see that then then there is two different tasks (2ms, 10ms cycle times). The high-speed task retrieves data directly from the serial port and loads it onto the message buffer, and the low-speed task processes the data.
QUESTION
I'm pretty new to the EtherCAT/CANopen universe and trying to implement a custom slave. The slave is passing conformance test so far and want to write to one of my Slave Data Objects, the slave is attached to a CX5120, which is found by the XAE and also shows the Slave device. For that, I copied my ESI-file to the TwinCAT folder (C:\TwinCAT\3.1\Config\Io\EtherCAT).
I've created a small Structured Text PLC program that uses FB_EcCoESdoWrite to write data to address 0x607A. But when I set it active and try to connect, Visual Studio tells me that the device needs at least one Sync Master. Also, when setting bExecute to TRUE, I'm getting an error from the function. As far as I understand, I have to link variables between my ST program and the slave, but I don't see the need of linking variables because afaik the function call should manage the transmission? What are the steps to write to a SDO of an ESC? Can someone tell me what I'm missing or has a small example at hand?
...ANSWER
Answered 2020-Mar-06 at 08:59Fixed problem by linking variable from PLC code to DevState-input of the device. Linking to plain InfoData doesn't seem to work though.
QUESTION
We develop a new machine with many motors connected over EtherCAT to the main controller. . I wish to set each motor with a specific address
I saw that I can set EtherCAT ID in the motor Software, number from 1 to 32766 (32767 let the master allocates the address)
But I'm a bit confused regarding this option because the documentation only have details regarding options where the master allocates the address
Is "Configured Station Alias" is the static address assigned by the slave?
Does the slave contain two address? one set by Master and one optionally set by the slave?
Is there advantages, like speed or reliability, to allow the Master to set the slaves addresses?
Is all, or most, EtherCAT devices (Salves and Maters) include IP Address?
For Example Beckhoff EtherCAT Documentation: http://www.manualsdir.com/manuals/757430/beckhoff-ethercat-technology-section-i.html?page=27
...ANSWER
Answered 2018-Sep-19 at 13:47Each of the EtherCAT Coupler and its Terminals have Vendor ID, Product Code and Revision number. I don't know what do you mean by referring to IP address here. Also PDO entries if you want to write data or read data to/ from a very specific position.
No they don't have two IP addresses.
As many number of terminals can be connected to a EtherCAT Coupler, each of the Coupler and terminal information (in fact, how the bus is configured has to be know by the EtherCAT Master before hand). So there might be multiple addresses of each terminal connected to the coupler.
Hope I did not confuse you.
Regards.
QUESTION
There are multiple network adapters of the same model in the target computer. As below, they are all Intel I211.
...ANSWER
Answered 2019-Oct-31 at 16:12This is not really a average Programmer Problem.
Driver Programming - as a subset of Realtime Programming - is a highly specialized field. The average C# or C++ .NET Programmer will rarely have to deal with stuff like pointers and neer with assembler level code. But for those two, it is their daily bread and butter. I can not give you little more then general advice:
My first advice for you is to get somebody elses code to make that decision and installation. Usually drivers of one Manufacturer are distributed in packages. Wich do understand how to deal with idenitifcation of the hardware. Usually those installers also have a silent mode. So it comes down to calling them and intercepting the console output/looking for the return value.
My second advice, is to use their name as listed in the Device Manager. Optionally get them renamed manually. It is not that reliable as strings are quite patient and easily changed/missmatched, but it would get you somewhere to start from.
But as I understand it your problem is worse then just general driver updates. You have two instances of the same Hardware, and want to use different drivers for each. Wich is a order worse:
I am not even sure this is possible. Since the driver folder still uses the good old "only one file of each name" approach, it is propable that you can not use different drivers for different instances of the same hardware. Unless you define your own driver storage location.
I have no idea why you would do that. The average enduser programm does not need to worry about even selecting wich interface it will use. It just hands it's request off the to network stack and does not deal with layer 3 or below. Servers may have to pick a specific adapter to listen on, or just listen on both in paralell. But even those do not care for the driver version in use. They do not even care if it is a real, physical interface - after all missclassification like with early Bluetooth and Virtual Devices like for Virtual Machine Monitors/PDF printers are a thing.
So it honestly sounds like you got a XY Problem, with this idea being the (propably wrong) Y, to your real X.
QUESTION
I am currently trying to capture an EtherCAT packet sent and received via a program called TwinCAT. TwinCAT is real-time control software for EtherCAT communication on Windows. This program is used to communicate with slaves every 4ms.
By the way, I captured packets and observed that the data wasn't continuous during the analysis. So, I inserted the code to check the time difference in the part capturing the packet, and it was confirmed that some packets are packets 20ms later than the previous packet.
Since I can check the Lost Frame in the TwinCAT XAE Tool, I don't think the packet is actually missing, and I think there is a problem with my program.
Below is my code.
...ANSWER
Answered 2019-Jul-10 at 07:12If you are not programming this just for fun or with educational purposes in mind but for professional use, I suggest you analyze the Ethercat packets of your machines with Wireshark and an additional hardware called ET2000.
The ET2000 adds a timestamp, with a max. delay of 40ns, to the mirrored packet sent to the pc, which you will be able to read thanks to the EtherCAT Stack Link dissector in wireshark.
QUESTION
I am trying to start a twincat project on my pc in order to debug it. I've disabled the EtherCAT device and isolated a CPU on my windows 10 with an 8-core ADM processor. After trying to start the run mode, I get a fatal error on the target system. With following message:
'TwinCat System' (10000): Sending ams command >> Init4 RTime: Start Interrupt: Ticker started >> AdsWarning: 4131 (0x1023, RTIME: Intel CPU required) << failed!
I've searched the internet and am not able to find a solution to this problem. There seems to be little information about this. Anyone of you having an idea?
...ANSWER
Answered 2018-Mar-09 at 22:53Your answer appears to be right there in the message: Intel CPU required
, but you stated you're trying to run it on an ADM (I assume AMD) processor.
QUESTION
I'am going to communicate EtherCAT master(CX2020) with Linux OS PC(ubuntu) for storing value from PLC on server and writing also.
By EthearCAT network protcol, it should be availave to communicate with windows plc installed twincat.
But I couldn't find the way for Linux.
Is there any solution?
...ANSWER
Answered 2018-Jan-30 at 09:47There are various ways for you to communicate with a CX2020 from Linux, it all depends on your requirements and what the usage is for.
Without knowing anything about those, one option is to use the Beckhoff ADS protocol. All Beckhoff PLCs have by default ADS installed on them and you can (with the right credentials setup for ADS) communicate with the ADS-library. The good thing about ADS is that it is open-source, and thus it's possible to get the code for Linux.
The ADS sourcecode is available at: https://github.com/Beckhoff/ADS
You basically need to:
1. Compile/Install the library on your Linux machine
2. Create an ADS/AMS-route to your CX2020
3. Create a program that uses this route to communicate with the PLC
With ADS you can access the variables directly in the CX2020 memory (both read and write!).
There are many finished wrapper libraries available for all common programming languages that you can use directly in Linux. If you're up to Python, I would recommend checking out PyADS (https://github.com/stlehmann/pyads), which has a good user base and many examples available all around the net.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install ethercat
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page