Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
etherlabmaster
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ICS Control System Infrastructure
etherlabmaster
Commits
1bba15bc
Commit
1bba15bc
authored
16 years ago
by
Florian Pose
Browse files
Options
Downloads
Patches
Plain Diff
Userspace applications.
parent
c359ff19
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
documentation/ethercat_doc.tex
+45
-38
45 additions, 38 deletions
documentation/ethercat_doc.tex
documentation/images/architecture.fig
+44
-28
44 additions, 28 deletions
documentation/images/architecture.fig
with
89 additions
and
66 deletions
documentation/ethercat_doc.tex
+
45
−
38
View file @
1bba15bc
...
...
@@ -327,39 +327,41 @@ Figure~\ref{fig:arch} gives a general overview of the master architecture.
\begin
{
figure
}
[
htbp
]
\centering
\includegraphics
[
width
=
.
9
\textwidth
]
{
images
/
architecture
}
\caption
{
Master
a
rchitecture
}
\caption
{
Master
A
rchitecture
}
\label
{
fig:arch
}
\end
{
figure
}
\paragraph
{
Master Module
}
\index
{
Master module
}
The components of the master environment are described below:
\begin
{
description
}
Kernel module containing one or more EtherCAT master instances
(
see
sec.~
\ref
{
sec:mastermod
}
)
, the ``Device Interface''
(
see sec.~
\ref
{
sec:ecdev
}
)
and the ``Application Interface''
(
see chap.~
\ref
{
chap:api
}
)
.
\paragraph
{
Device Modules
}
\index
{
Device modules
}
EtherCAT
-
capable Ethernet device driver modules
\index
{
Device modules
}
, that
offer their devices to the EtherCAT master via the device interface
(
see
sec.~
\ref
{
sec:ecdev
}
)
. These modified network drivers can handle network
devices used for EtherCAT operation and ``normal'' Ethernet devices in
parallel. A master can accept a certain device and then is able to send and
receive EtherCAT frames. Ethernet devices declined by the master module are
connected to the kernel's network stack as usual.
\paragraph
{
Application Modules
}
\index
{
Application module
}
Kernel modules, that use the EtherCAT master
(
usually for cyclic exchange of
process data with EtherCAT slaves
)
. These modules are not part of the EtherCAT
master code
\footnote
{
Although there are some examples provided in the
\textit
{
examples
/
}
directory.
}
, but have to be generated or written by the
user. An application module can ``request'' a master through the application
interface
(
see chap.~
\ref
{
chap:api
}
)
. If this succeeds, the module has the
control over the master: It can provide a bus configuration and exchange
process data.
\item
[
Master Module
]
\index
{
Master Module
}
Kernel module containing one or more
EtherCAT master instances
(
see sec.~
\ref
{
sec:mastermod
}
)
, the ``Device
Interface''
(
see sec.~
\ref
{
sec:ecdev
}
)
and the ``Application Interface''
(
see
chap.~
\ref
{
chap:api
}
)
.
\item
[
Device Modules
]
\index
{
Device modules
}
EtherCAT
-
capable Ethernet device
driver modules
\index
{
Device modules
}
, that offer their devices to the EtherCAT
master via the device interface
(
see sec.~
\ref
{
sec:ecdev
}
)
. These modified
network drivers can handle network devices used for EtherCAT operation and
``normal'' Ethernet devices in parallel. A master can accept a certain device
and then is able to send and receive EtherCAT frames. Ethernet devices
declined by the master module are connected to the kernel's network stack as
usual.
\item
[
Application
]
\index
{
Application
}
A program that uses the EtherCAT master
(
usually for cyclic exchange of process data with EtherCAT slaves
)
. These
programs are not part of the EtherCAT master code
\footnote
{
Although there are
some examples provided in the
\textit
{
examples
/
}
directory.
}
, but have to be
generated or written by the user. An application can ``request'' a master
through the application interface
(
see chap.~
\ref
{
chap:api
}
)
. If this
succeeds, it has the control over the master: It can provide a bus
configuration and exchange process data. Applications can be kernel modules
(
that use the kernel application interface directly
)
or userspace programs,
that use the application interface via the EtherCAT library
(
see
sec.~
\ref
{
sec:userlib
}
)
.
\end
{
description
}
%------------------------------------------------------------------------------
...
...
@@ -374,6 +376,7 @@ The EtherCAT master runs through several phases (see fig.~\ref{fig:phases}):
\caption
{
Master phases and transitions
}
\label
{
fig:phases
}
\end
{
figure
}
\begin
{
description
}
\item
[
Orphaned phase
]
\index
{
Orphaned phase
}
This mode takes effect, when the
...
...
@@ -590,7 +593,10 @@ Domains are created Slaves are configured and Pdo entries are registered (see
sec.~
\ref
{
sec:masterconfig
}
)
.
\item
[
Operation
]
Cyclic code is run, process data is exchanged
(
see
sec.~
\ref
{
sec:cyclic
}
)
.
sec.~
\ref
{
sec:cyclic
}
)
. To enter operation mode, the master has to be
``activated'' to calculate the process data image and apply the bus
configuration for the first time. After activation, the application is in
charge to send and receive frames.
\end
{
description
}
...
...
@@ -636,14 +642,15 @@ access to it has to be sequentialized. This is usually done by locking with
semaphores, or other methods to protect critical sections.
The master itself can not provide locking mechanisms, because it has no chance
to know the appropriate kind of lock. For example if the application uses RTAI
functionality, ordinary kernel semaphores would not be sufficient. For that, an
important design decision was made: The application that reserved a master must
have the total control, therefore it has to take responsibility for providing
the appropriate locking mechanisms. If another instance wants to access the
master, it has to request the master lock by callbacks, that have to be set by
the application. Moreover the application can deny access to the master if it
considers it to be awkward at the moment.
to know the appropriate kind of lock. For example if the application is in
kernelspace and uses RTAI functionality, ordinary kernel semaphores would not
be sufficient. For that, an important design decision was made: The
application that reserved a master must have the total control, therefore it
has to take responsibility for providing the appropriate locking mechanisms.
If another instance wants to access the master, it has to request the master
lock by callbacks, that have to be set by the application. Moreover the
application can deny access to the master if it considers it to be awkward at
the moment.
\begin
{
figure
}
[
htbp
]
\centering
...
...
This diff is collapsed.
Click to expand it.
documentation/images/architecture.fig
+
44
−
28
View file @
1bba15bc
...
...
@@ -71,29 +71,29 @@ Single
4 1 0 50 -1 16 10 0.0000 4 120 465 5445 5760 Device\001
4 1 0 50 -1 16 10 0.0000 4 120 615 5445 5925 Interface\001
-6
6 3
908 4310 4463
53
19
5 1 0 1 0 7 50 -1
-1
0.000 0 0 0 0 3958.125 4815.000 3915 4320 4455 4815 3915 5310
4 1 0
50
-1 16 10 4.7124 4 150 765 4162 4822 Application\001
4 1 0
50
-1 16 10 4.7124 4 120 615 3997 4822 Interface\001
6 3
870 4275 4500
53
55
5 1 0 1 0 7 50 -1
20
0.000 0 0 0 0 3958.125 4815.000 3915 4320 4455 4815 3915 5310
4 1 0
49
-1 16 10 4.7124 4 150 765 4162 4822 Application\001
4 1 0
49
-1 16 10 4.7124 4 120 615 3997 4822 Interface\001
-6
6
4538
2648
5813
3293
5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5
175
.000 2655.000
5805
2655 5
175
3285
4545
2655
4 1 0 50 -1 16 12 0.0000 4 135 600 5
175
3105 Device\001
4 1 0 50 -1 16 12 0.0000 4 135 825 5
175
2880 Character\001
6
5205
2648
6480
3293
5 1 0 1 0 7 50 -1 -1 0.000 0 0 0 0 5
842
.000 2655.000
6472
2655 5
842
3285
5212
2655
4 1 0 50 -1 16 12 0.0000 4 135 600 5
842
3105 Device\001
4 1 0 50 -1 16 12 0.0000 4 135 825 5
842
2880 Character\001
-6
6 1575 2430 7785 2925
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
7785 2655 1575 2655
4 0 0 50 -1 16 12 0.0000 4 180 1110 1665 2880 Kernel space\001
4 0 0 50 -1 16 12 0.0000 4 180 945 1665 2565 User space\001
6 3870 945 4500 2025
5 1 0 1 0 7 49 -1 -1 0.000 0 0 0 0 3958.125 1485.000 3915 990 4455 1485 3915 1980
4 1 0 48 -1 16 10 4.7124 4 150 765 4162 1492 Application\001
4 1 0 48 -1 16 10 4.7124 4 120 615 3997 1492 Interface\001
-6
6
4673 1298 5677 2302
1
4
0 1 0 7 50 -1
-1 4
.000 1 0.0000
5175 1800 495 495 5670 2295 4680 130
5
4 1 0
50
-1 16 12 0.0000 4 1
35 360 5175 2025 Tool
\001
4 1 0
50
-1 16 12 0.0000 4 1
35 765 5175 1755 'ethercat'
\001
6
2160 855 3420 2115
1
3
0 1 0 7 50 -1
20 0
.000 1 0.0000
2790 1485 585 585 2790 1485 3375 148
5
4 1 0
49
-1 16 12 0.0000 4 1
80 945 2790 1665 Application
\001
4 1 0
49
-1 16 12 0.0000 4 1
80 885 2790 1440 Userspace
\001
-6
1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5445 4815 810 495 4635 4320 6255 5310
1 4 0 1 0 7 50 -1 -1 0.000 1 0.0000 2484 4871 459 459 2025 4860 2944 4882
1 2 0 1 0 7 50 -1 -1 0.000 1 0.0000 5445 4815 810 495 4635 4320 6255 5310
1 4 0 1 0 7 50 -1 -1 4.000 1 0.0000 7058 1658 495 495 7553 2153 6563 1163
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
5445 7965 5445 7425
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
...
...
@@ -114,8 +114,6 @@ Single
6255 6885 7335 6885 7335 7425 6255 7425 6255 6885
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
5445 5490 5445 5310
2 4 0 1 0 7 50 -1 -1 0.000 0 0 8 0 0 5
6435 5985 6435 3645 3915 3645 3915 5985 6435 5985
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
4635 4815 4455 4815
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
...
...
@@ -126,24 +124,35 @@ Single
1575 7785 7785 7785
2 4 0 1 0 7 50 -1 -1 0.000 0 0 9 0 0 5
1755 5985 1755 3645 3465 3645 3465 5985 1755 5985
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
5175 3285 5175 3645
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
7785 8280 7785 2205
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
5175 2655 5175 2295
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
1575 8280 1575 2205
2 4 0 1 0 7 50 -1 -1 0.000 0 0 8 0 0 5
6435 5985 6435 3645 3915 3645 3915 5985 6435 5985
2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
7785 2655 1575 2655
2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 0 0 2
5850 3285 5850 3645
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
3915 1485 3375 1485
2 4 0 1 0 7 50 -1 20 0.000 0 0 7 0 0 5
5040 2250 3915 2250 3915 720 5040 720 5040 2250
3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3
5580 8910 5355 9045 4770 9090
0.000 -1.000 0.000
3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3
6931 8910 6390 9270 4770 9450
0.000 -1.000 0.000
3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3
6570 1665 6120 1890 5985 2655
0.000 -1.000 0.000
3 2 0 1 0 7 50 -1 -1 0.000 0 0 0 3
5040 1485 5580 1800 5715 2655
0.000 -1.000 0.000
4 1 0 50 -1 16 10 0.0000 4 150 750 5445 7200 net_device\001
4 1 0 50 -1 16 10 0.0000 4 150 750 6795 7200 net_device\001
4 2 0 50 -1 12 10 0.0000 4 135 810 5355 6210 ecdev_*()\001
4 2 0 50 -1 12 10 0.0000 4 135 810 7110 6210 netif_*()\001
4 2 0 50 -1 12 10 0.0000 4 105 810 5355 6210 ecdev_*()\001
4 1 0 50 -1 16 12 0.0000 4 135 1545 6345 6570 EtherCAT Network\001
4 1 0 50 -1 16 12 0.0000 4 135 1200 6345 6750 Driver Module\001
4 0 0 50 -1 16 12 0.0000 4 135 2130 4005 3870 EtherCAT Master Module\001
...
...
@@ -153,8 +162,15 @@ Single
4 2 0 50 -1 16 12 0.0000 4 135 315 4995 8100 NIC\001
4 2 0 50 -1 16 12 0.0000 4 135 315 6345 8100 NIC\001
4 0 0 50 -1 16 12 0.0000 4 135 810 1665 8010 Hardware\001
4 2 0 50 -1 12 10 4.7124 4 1
3
5 720 3645 4725 ecrt_*()\001
4 2 0 50 -1 12 10 4.7124 4 1
0
5 720 3645 4725 ecrt_*()\001
4 0 0 50 -1 16 12 0.0000 4 180 945 1845 3870 Application\001
4 0 0 50 -1 16 12 0.0000 4 135 630 1845 4095 Module\001
4 1 0 50 -1 16 12 0.0000 4 135 675 5445 4860 Master0\001
4 1 0 50 -1 16 12 0.0000 4 135 390 2475 4950 Task\001
4 0 0 50 -1 16 12 0.0000 4 180 1050 1665 2880 Kernelspace\001
4 0 0 50 -1 16 12 0.0000 4 180 885 1665 2565 Userspace\001
4 1 0 50 -1 16 12 4.7124 4 135 870 4635 1530 libethercat\001
4 2 0 50 -1 12 10 4.7124 4 105 720 3645 1395 ecrt_*()\001
4 2 0 50 -1 12 10 0.0000 4 105 810 7155 6210 netif_*()\001
4 1 0 50 -1 16 12 0.0000 4 135 735 5445 4905 Master 0\001
4 1 0 50 -1 16 12 0.0000 4 135 360 7065 1845 Tool\001
4 1 0 50 -1 16 12 0.0000 4 135 765 7065 1620 'ethercat'\001
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment