Netx Dual-Port Memory Interface DPM 17 EN
Netx Dual-Port Memory Interface DPM 17 EN
Table of content
1 Introduction............................................................................................................................................. 4
1.1 About this Document ...................................................................................................................... 4
1.2 List of revisions .............................................................................................................................. 4
1.3 Considerations / Prerequisites and Limitations .............................................................................. 5
1.4 Terms, abbreviations and definitions ............................................................................................. 7
1.5 References to documents .............................................................................................................. 8
1.6 Information and data security ......................................................................................................... 8
2 Dual-Port Memory Structure ................................................................................................................. 9
2.1 Block Diagram of the default Dual-Port Memory ......................................................................... 11
2.2 Dual-port memory layout and sizes ............................................................................................. 12
2.2.1 Variable Layout ............................................................................................................................... 13
2.3 Channel Definitions ...................................................................................................................... 14
2.3.1 System Channel .............................................................................................................................. 14
2.3.2 Handshake Channel ........................................................................................................................ 15
2.3.3 Communication Channel ................................................................................................................. 16
2.3.4 Application Channel ........................................................................................................................ 17
2.4 Data Block Definitions .................................................................................................................. 18
2.4.1 System Information Block ................................................................................................................ 18
2.4.2 Channel Information Block .............................................................................................................. 18
2.4.3 System Control Block ...................................................................................................................... 18
2.4.4 System Status Block ....................................................................................................................... 18
2.4.5 Common Control Block.................................................................................................................... 19
2.4.6 Common Status Block ..................................................................................................................... 19
2.4.7 Extended Status Block .................................................................................................................... 19
2.4.8 Mailbox System ............................................................................................................................... 19
2.4.9 I/O Data Areas ................................................................................................................................. 20
2.5 netX Chip Register Block ............................................................................................................. 20
3 Data access and synchronization ...................................................................................................... 21
3.1 Handshake Flag naming convention............................................................................................ 22
3.2 System Channel - Handshake Register and Flags ...................................................................... 23
3.3 Communication Channel - Handshake Register and Flags ......................................................... 27
3.4 Synchronization - Handshake Register and Flags ....................................................................... 31
4 Data Transfer Mechanism.................................................................................................................... 34
4.1 Non-Cyclic Data Transfer via Mailbox and Packets ..................................................................... 35
4.1.1 Packet structure .............................................................................................................................. 37
4.1.2 Default Packet Handling .................................................................................................................. 40
4.1.3 Packet Addressing via ulDest ....................................................................................................... 41
4.1.4 Using ulSrc and ulSrcId ................................................................................................................... 43
4.1.5 Client/Server Mechanism ................................................................................................................ 44
4.1.6 Packet Fragmentation ..................................................................................................................... 45
4.1.7 Packet transfer synchronization ...................................................................................................... 46
4.2 Cyclic Data Transfer via Input/Output Data Areas ....................................................................... 49
4.2.1 I/O Data Exchange Modes .............................................................................................................. 50
4.2.1.1 Buffered Host Controlled Mode ...................................................................................... 52
4.2.1.2 Buffered Device Controlled Mode ................................................................................... 54
4.2.2 I/O Data Area Access Synchronization............................................................................................ 56
4.2.2.1 Synchronization in Buffered Host Controlled Mode ........................................................ 57
4.2.2.2 Synchronization in Buffered Device Controlled Mode..................................................... 59
4.3 Change of State Mechanism (COS) ............................................................................................ 60
4.3.1 Communication COS Handling ........................................................................................................ 61
4.3.2 Application COS Handling ............................................................................................................... 62
4.3.3 Enable Flag Handling ...................................................................................................................... 63
5 DPM Definitions / Mapping and Content ............................................................................................ 65
5.1 DPM Mapping .............................................................................................................................. 65
5.2 System Channel ........................................................................................................................... 68
5.2.1 System Information Block ................................................................................................................ 69
5.2.2 Channel Information Block .............................................................................................................. 80
5.2.3 System Handshake Block................................................................................................................ 87
5.2.4 System Control Block ...................................................................................................................... 88
1 Introduction
1.1 About this Document
This manual describes the user interface respectively the application programming interface of the
dual-port memory for netX-based products manufactured by Hilscher.
In a dual-processor system, the netX dual-port memory (DPM) is the interface between a host (e.g.
PC or microcontroller) and the netX chip. It is a shared memory area, which is accessible from the
netX side and the host side and it is used to exchange process and diagnostic data between both
systems.
The netX firmware determines the dual-port memory layout in size and content. It offers up to 8
memory areas or channels, which create the dual-port memory layout. The flexible memory
structure provides access to the netX chip with its integrated network/fieldbus controller.
The content of the individual memory channels depends on the type of the channel. System
channel and handshake channel using a fixed structure and location, while a communication
channel can provide some variable areas. The system channel can be used to obtain information
regarding type, offset and length of the variable areas.
Within the rcX operating system (for netX 10/50/51/52/100/500) alternative names for these
data types may be used.
Standard Types General Definition TLR Types
int8_t INT8 TLR_INT8
uint8_t UINT8 TLR_UINT8
int16_t INT16 TLR_INT16
uint16_t UINT16 TLR_UINT16
int32_t INT32 TLR_INT32
uint32_t UINT32 TLR_UINT32
int64_t INT64 TLR_INT64
uint64_t UINT64 TLR_UINT64
Table 3: Data types of the rcX operating systems
Additional Terms
The terms Host, Host System, Application, Host Application and Driver are used
interchangeably to identify an external process interfacing the netX via its dual-port memory
(DPM).
Individual Implementations
A netX firmware or protocol stack may support only a subset of the structures and functions
described in this document.
Host Controlled Mode
In Host Controlled Mode, the host application initially has access to the I/O data areas in the
DPM and can be the first to read and write data before starting a transfer between the netX
firmware and the DPM.
Data Bus
DPM
Host CPU Address Bus
netX
Control Lines
Dual-Port Memory
Offset Offset
0x0000 0xFFFF
System Channel
The system channel provides information and functions affecting the entire netX hardware
like the version of the operating system or the structure of the dual-port memory and allows
basic communication via a mailbox system.
Handshake Channel
The handshake channel provides synchronization mechanism to ensure data consistency
and data access synchronization between a host system and the netX firmware.
The synchronization is based on so called ‘Handshake Register’ (e.g. bit toggle mechanism
via handshake registers) explained later in this manual. In the default layout, the handshake
registers from system, communication and application channels are packed together in this
channel.
Dual-Port Memory
Task R Task O
System Handshake
Application
Task S Task P
Task
Task T Task Q
netX Firmware
To Networks
0x4000
0x1300
Reserved
0x1200
Input Data
Area 1 0x01FF
(high priority)
0x11C0
Output Data System
Area 1
(high priority) Receive Mailbox
0x1180
0x0180
Receive
Mailbox
System
Communication Send Mailbox
0x0B40
Channel 0
0x0100
0x02FF
Send System Status
Mailbox Block
0x00C0
System Control
0x0500
0x00B8 Block
0x00B0 Reserved
Extended
Status Block
0x0350
0x021C Handshake Channel 7 Channel
Common 0x0218 Handshake Channel 6 Information
Status Block 0x0214 Handshake Channel 5 Block
0x0310 0x0210 Handshake Channel 4
Common 0x020C Handshake Channel 3
64 KByte
Note: If not mentioned otherwise, this document refers to the 64 Kbyte layout as the 'default
memory layout'.
The size of a channel (system, handshake, communication and application) is always a multiple of
256 bytes.
Note: The start address of the communication channels 1 to 4 is variable and depends on the
size of preceding communication channels.
The start address of communication channel 0 is always fix because this one follows the
system and the handshake channel which are fix in location and size.
Note: The location (offset) of a data block inside a channel is not directly defined. It is implicitly
given by the channel start address and the size of the preceding blocks/channels.
For more details about the System Channel refer to section System Channel on page 68.
Note: Handshake register are special registers inside the DPM. They are able to generate
physical interrupts if their content changes. These registers are also used for data access
synchronization between a host and the netX system.
For more details about the Handshake Channel refer to section Handshake Channel on page 95.
The first communication channel starts always at DPM offset 0x0300 while subsequent channels
will follow without a gap in between. The start address of a following channel depends on the size
of the preceding one while the size of each channel must be a multiple of 256 bytes.
Depending on the firmware implementation, multiple communication channels could be available.
For more details about the Communication Channel refer to section Communication Channel on
page 97.
Application channels must follow the rules for communication channels. They will follow preceding
channels without a gap in between and the size must be a multiple of 256 bytes.
For more details about the Application Channel refer to section Application Channel on page 119.
Note: It is not recommended to access the netX Register Block by a user application. It is
only mentioned here because it can be seen on the end of the DPM.
Every channel has one 32-bit handshake register. This register is subdivided into Host Register /
Host Flags and netX Register / netX Flags. This means, they are either dedicated to the host or to
the netX.
Host Register / Host Flags
These registers and the containing flags are dedicated to the host side. Only the host is
allowed to read and write the register while the netX is only allowed to read it.
netX Register / netX Flags
The netX registers and the containing flags are dedicated to the netX side and only the netX
firmware is allowed to read and write these registers while the host is only allowed to read it.
Each channel (System Channel and Communication Channels) has its own handshake register
and in the default DPM layout, these registers are accumulated in the Handshake Channel (see
section Handshake Channel on page 95).
Three types of handshake register are defined:
System Channel - Handshake Register
Related to the System Channel are used by the host application to execute netX-wide
(system wide) commands like reset, etc.
Communication Channel - Handshake Register
Are used to synchronize cyclic data transfer via I/O data areas or non-cyclic data over
mailboxes in the communication channels as well as indicating status changes to the host
system
Synchronization - Handshake Register
This register is used to synchronize the host system to fieldbus specific events.
Note: Handshake registers are able to generate physical interrupts when their content is
changed.
Example
HSF_SEND_MBX_CMD
Member of: HSF Host System Flags
Function: SEND_MBX Send Mailbox
Signal Type: CMD Command Flag
NCF_PD0_IN_CMD
Member of: NCF NetX Communication Flags
Function: PD0_IN Process Data Area 0 - Input
Signal Type: CMD Command Flag
NCF_PD0_IN_ACK
Member of: NCF NetX Communication Flags
Function: PD0_IN Process Data Area 0 - Input
Signal Type: ACK Acknowledge Flag
Note: Handshake registers are located in the handshake channel (see section Handshake
Channel on page 95) of the DPM.
The system channel handshake register needs less synchronization flags than a communication
channel. The length of the flags is 8 bits for the netX firmware (netX Flags = bNetxFlags) and 8
bits for the host application (Host Flags = bHostFlags).
Bit 7 Host Flags Bit 0 Bit 7 netX Flags Bit 0 Bit 7 empty Bit 0 Bit 7 empty Bit 0
Variable: bHostFlags
Variable: bNetxFlags
Note: Handshake registers are located in the Handshake Channel (see section Handshake
Channel on page 95) of the DPM.
The communication channel handshake register defines 16 bits for the netX firmware (netX Flags
= usNetxFlags) and 16 bits for the host application (Host Flags = usHostFlags).
A netX firmware supports up to 4 communication channels, numerated by an index from 0 to 3 with
the same structure.
Variable: usHostFlags
Variable: usNetXFlags
Note: The fieldbus specific synchronization register is located in the Handshake Channel (see
section Handshake Channel on pabe 95) at Handshake Register 1.
The synchronization handshake register defines 16 bits for the netX firmware (netX Flags =
usNSyncFlags) and 16 bits for the host application (Host Flags = usHsyncFlags).
Each bit in the synchronization has a fix assignment to one of the possible 4 communication
channels starting with bit 0 for communication channel 0.
Synchronization - Handshake Register Layout
Additional information about the synchronization, like the sync source, sync handshake mode and
the sync error counter, is located in the Common Status Block of the communication channel.
Type Variable Description
uint8_t bErrorSyncCnt Number of synchronization handshake errors
Depending on the configuration the error counter is used if the sync
information could not be updated because of a missing acknowledgement.
uint8_t bSyncHskMode Synchronization Handshake Mode
Configured mode of the synchronization (host controlled / device
controlled)
uint8_t bSyncSource Synchronization Source
Definition of the sync source (bus cycle / hardware trigger etc.)
Table 23: Synchronization - Synchronization Information
Mailbox System
Host Application
netX Firmware
Mailbox System
/*****************************************************************************/
/*! System receive packet mailbox (Size 128 Byte) */
/*****************************************************************************/
typedef __HIL_PACKED_PRE struct HIL_DPM_SYSTEM_RECV_MAILBOX_Ttag
{
uint16_t usWaitingPackages; /*!< Number of packages waiting to be processed */
uint16_t usReserved; /*!< Reserved */
uint8_t abRecvMbx[HIL_DPM_SYSTEM_MAILBOX_MIN_SIZE]; /*!< Receive mailbox packet buffer */
} __HIL_PACKED_POST HIL_DPM_SYSTEM_RECV_MAILBOX_T;
Only one packet can be placed into a mailbox at a time (abSendMbx[] / abRecvMbx[]), while the
counter in the send mailbox tracks the amount of packets acceptable by the netX firmware and the
counter in the receive mailbox tracks the amount of packets waiting in the receive packet queue of
the firmware.
Note: Each packet will occupy a piece of memory inside the netX firmware. Therefore the
amount of concurrent packages is limited by the firmware (default: 16).
The netX firmware stores packets into internal memory segments organized in send and receive
queues, where the size of the queues is limited.
If the internal packet queues are getting full, the firmware is not able to accept further packets from
the send mailbox. This is because each send packet will usually be answered by the netX
firmware, which creates a corresponding confirmation packet and stores the answers into the
receive packet queue (to be send later on to the host application). In other words, each command
packet sent to the firmware generates a confirmation packet which must be read by the host
application.
Therefore, if non-cyclic data transfer is used, it is strongly recommended to empty the receive
mailbox frequently, otherwise the sending of packets can be influenced.
Access to the mailboxes is synchronized by dedicated Handshake-Register-Flags (see Handshake
Registers), signaling the state of a mailbox, which can be either empty or full.
Minimum packet size is 40 byte (equal to the packet header structure without user data).
Maximum packet size (header + data) is limited by the mailbox send / receive area size.
Parameter description
Variable / Description
Element
Packet Creator
The packet must be filled with the necessary information (header and/or data).
Unused fields must be set to 0.
Confirmations to a command must be verified (ulCmd, ulSta, ulLen and/or content).
Packet Receiver
Evaluation of the header and/or data content (at least ulCmd and ulLen).
Each command must be answered.
ulSta must be set to the processing result (ulSta = 0 = no Error).
ulCmd must be set to ulCmd + 1 marking the packet as an answer
(e.g. Command value = 0x02 / Answer value = 0x03).
ulLen must be set to the amount of data returned in the answer.
All other values of the header must be returned unchanged.
(*) except when using Packet Fragmentation (page 45).
Command Packet Answer Packet
ulDest ulDest
ulSrc ulSrc
ulDestId ulDestId
ulSrcId ulSrcId
ulId ulId
Value = 0
ulState ulState
State / Error (0 = no error)
Command code
ulCmd Answer code (ulCmd +1)
ulCmd
ulExt(*) ulExt(*)
ulRout ulRout
abData abData
Note: Default error codes are defined in Hil_Results.h and named ERR_HIL_...
Tasks inside a netX firmware are addressed by their task handle created from the tasks dedicated
packet queue. This handle can be retrieved by a system command but for this procedure the name
of the task must be known.
To simplify the addressing for host applications working with the DPM, mailboxes are already
connected with corresponding tasks inside the firmware.
In case of the System Channel mailbox, the connected task is the middleware task of the operating
system. The Communication Channel mailboxes are connected to the application task (AP-task) of
the fieldbus protocol stack. This makes it unnecessary for the host application to know the name of
a task and to retrieve task handles from the system.
Default Target Addresses
Definition Value Description
HIL_PACKET_DEST_DEFAULT_CHANNEL 0x00000020 Default Channel (recommended)
Packet is passed to default handler
System Channel = Middleware
Communication Channel = Fieldbus protocol
HIL_PACKET_DEST_SYSTEM 0x00000000 Packet is passed to the Middleware
Independent of the channel
Table 27: Packets: Default Target Addresses for ulDest
Furthermore, the netX firmware also offers a routing mechanism which allows sending commands
to other channels by using the channel index.
Additional Target Addresses
Definition Value Description
HIL_PACKET_DEST_PORT_0 0x00000001 Packet passed to communication channel 0
HIL_PACKET_DEST_PORT_1 0x00000002 Packet passed to communication channel 1
HIL_PACKET_DEST_PORT_2 0x00000003 Packet passed to communication channel 2
HIL_PACKET_DEST_PORT_3 0x00000004 Packet passed to communication channel 3
Table 28: Packets: Additional Target Addresses for ulDest
Note: The recommended way to address the middleware of the operating system is through
the system mailbox and a fieldbus protocol via the communication channel mailbox.
This is because additional packets to the middleware via a channel mailbox could
influence the performance of the protocol stack handling.
Note: Confirmations are always returned to the mailbox of the channel, which initiated the
command.
ulDest = 0x20
ulDest = 0x00
Host Application
Connected Default
Receiver
In case of a task inside a firmware, ulSrc is the task handle or better the address of the packet
queue of the task.
Host applications, which are located outside of a netX firmware and using the DPM to
communicate to the firmware, can set ulSrc to any value including 0.
But it is recommended to use a unique number (e.g. process handle) to prevent collisions with
other send processes.
ulSrdId can be freely used by the sending application (e.g. to address internal components).
netX Firmware
Protocol Stack
Note: The netX firmware will not touch ulSrc and ulSrcId and both values are always
delivered back in the confirmation packet.
REQUEST Indication
1 5
2 6
3 7
4 8
CONFIRMATION RESPONSE
Host application sends a Request packet Host application receives an Indication packet
to the netX firmware from the netX firmware
netX firmware answers by a Host application sends a Response packet
Confirmation packet back to the netX firmware (may not be
required
Table 29: Directions and names of packets
Note: The owner of a mailbox is allowed to start a transfer but he has to ensure the mailbox
is empty before starting it.
Example: Host sending a packet to the device via the Send Mailbox
Step Function / Flags Mailbox State Description
1 Initial state - Host checks if Send Mailbox empty (Flags Equal: both 1 or both 0)
1 1 EMPTY
0 0
0 1 FULL
1 0
1 1
Back to Step 1
Table 33: Packet: Send Mailbox Example
Example: netX device sends a packet to the host via the Receive Mailbox
Step Function / Flags Mailbox State Description
1 Initial state - netX checks if the Receive Mailbox is empty (Flags Equal: both 1 or both 0)
1 1 EMPTY
0 0
0 1 FULL
1 0
1 1
Back to step 1
Table 34: Packet: Receive Mailbox Example
Note: The system mailbox works in the same way, with the difference that the flags are called
differently and located in a different handshake register.
Send Mailbox flags HSF_SEND_MBX_CMD / NSF_SEND_MBX_ACK
Receive Mailbox Flags NSF_RECV_MBX_CMD / HSF_RECV_MBX_ACK
netX Firmware
When a transfer takes place, either the host or the netX temporarily “owns” the input/output data
area and has exclusive read/write access to it. This guarantees data consistency over the data
areas while the synchronization can be performed independently for each of the areas.
The fieldbus protocol stacks also support different data exchange modes, which define the initiator
of a data transfer and how I/O data from the fieldbus network are handled inside the netX firmware
respectively a fieldbus protocol stack.
General overview
A data exchange mode is described by two attributes. The first is the initiator of the transfer,
described as the controlled mode: Host Controlled or Device Controlled. While the second attribute
defines the transfer mode of the I/O data: Buffered or Synchron.
Controlled Mode Host Controlled or Device Controlled
Transfer Mode Buffered or Synchron
Both attributes are necessary to cover the possibilities of a data transfer and to handle it correctly.
Host Controlled Mode
In Host Controlled Mode, the host application initially has access to the I/O data areas in the
DPM and can be the first to read and write data before starting a transfer between the netX
firmware and the DPM.
Device Controlled Mode
Device Controlled Mode defines the device (netX / fieldbus protocol stack) as the initiator of a
data transfer. In this case the device (netX) initially has access to the I/O data areas inside
the DPM and will activate the data transfer between the host and the DPM.
Buffered Transfer
Defines that I/O data is automatically transferred between the fieldbus system and internal
buffer inside the netX firmware. A transfer between the internal buffer and the DPM depends
on the Controlled Mode.
Synchronous Transfer
Defines that I/O data is not buffered inside the device (netX / fieldbus protocol) instead they
are exchanged (read/written) directly with the I/O areas in the DPM. The Controlled Mode
defines the initiator of a transfer.
Note: Data exchange modes are a part of the fieldbus protocol configuration which may allow
configuring different exchange modes for the input / output areas but not all
combinations are reasonable.
Note: Network cycle and task cycle of the host application are not synchronized but input and
output data transfer is consistent.
General Definitions
areas.
1
(2) For each valid bus cycle, the protocol stack Output Output
Area Buffer
exchanges the process data with the internal
buffers.
Output Output
Area Buffer
Goto step 1
Note: In case of a network fault (e.g. network cable disconnect) the protocol stack clears
NCF_COMMUNICATING flag in the netX communication flags usNetXFlags, see
section Communication Channel - Handshake Register on page 27.
Input data should not be evaluated anymore by the host application while output data
can be still exchanged with the protocol stack.
Note: The Device Controlled Mode is only offered for the input data of slave devices!
The general handling in a host application for data areas transferred in Buffered Device Controlled
Mode, corresponds to the handling in Buffered Host Controlled Mode, except the initiator of a
transfer is the netX device and therefore the evaluation of the synchronization flags is inverted.
General Definitions
netX device has access to the input and output data area
netX (protocol stack) signals new data received by the field bus network and written to the
input data area of the DPM
Access to the DPM input area is switched to the host
The host copies the input data to a local buffer
Host confirms the data processing
Access to the DPM area is switched back to the netX
2 (1) The application (host) recognizes the new data Application Protocol Stack Network
DPM 2
in the input area. Takes the data from the input
Input Input
area and confirms the processing. Access right Area Buffer
1
to the DPM area is switch back to netX.
(2) While the host has access to the input DPM Output Output
Area Buffer
area, the protocol stack will store any further
received field bus data in the internal input
buffer.
Goto step 2
Considerations:
If the host application is slower than the network cycle, the protocol stack buffers further
network data and might overwrite the input buffer several times, resulting in data never send
to the host application.
A protocol stack counts the number of incomplete updates of the input data area in DPM
(see Common Status Block - bErrorPDInCnt) where access was switched to the host
application. This counter can be evaluated by the host application to find out if bus cycles
have been missed.
Note: In case of a network fault (e.g. network cable disconnect) the protocol stack clears the
NCF_COMMUNICATING flag in the netX communication flags usNetXFlags (see
section Communication Channel - Handshake Register on page 27).
Input data should not be evaluated anymore by the host application while output data
can be still exchanged with the protocol stack.
Attention: In the Hil_DualPortMemory.h file there is only ONE definition for the HCF_PD0_ and
NCF_PD0_ handshake bits per direction _IN / _OUT available. Therefore the
interpretation of _CMD / _ACK will change depending on the Controlled Mode by using
the same definition. The correct functional interpretation will be given in brackets (.....)!
Depending on the I/O data exchange mode, the handling of the handshake flags differs for the host
and the netX. The exchange mode is part of the fieldbus protocol stack configuration and
separated for the input and output data area. The current settings can be retrieved from the
Common Status Block of the communication channel.
1 1
0 0
1 0
Back to Step 2
Table 39: I/Os: Synchronization in Buffered Host Controlled Mode - Input
Example: Write OUTPUT data by the host in Buffered Host Controlled Mode
Step Flags OUTPUT State Description
1 1
0 0
1 0
Back to Step 2
Table 40: I/Os: Synchronization in Buffered Host Controlled Mode - Output
1 1
0 0
1 0
Back to Step 2
Table 41: I/Os: Synchronization in Buffered Device Controlled Mode - Input
Note: Buffered Device Controlled Mode for OUTPUT data is usually not supported by the
protocol stacks.
5
4
3 Communication Channel
Communication Channel
HCF_NETX_COS_ACK NCF_NETX_COS_CMD 2
1
netX Firmware
Step Description
1 netX Firmware checks if access to the COS information is allowed (COS flags are equal,
NCF_NETX_COS_CMD equal to NCF_NETX_COS_ACK) and updates the COS information in
ulCommunicationCOS.
2 netX firmware toggles the NCF_NETX_COS_CMD which signals new information available to the host.
3 Host cyclically checks if COS flags are not equal (NCF_NETX_COS_CMD unequal to
NCF_NETX_COS_ACK) and if so, new information is available and can be read by the host.
2 1
Communication Channel
Communication Channel
NCF_HOST_COS_ACK
HCF_HOST_COS_CMD 5
3 netX Firmware
Step Description
1 Host checks if access to the COS information is allowed (COS flags are equal, HCF_HOST_COS_CMD
equal to NCF_HOST_COS_ACK) and updates the COS information in ulApplicationCOS.
3 Firmware gets an interrupt if the COS flags are changed and checks the COS flags for inequality
(HCF_HOST_COS_CMD unequal to NCF_HOST_COS_ACK) and if so, new information is available and can
be read by the firmware
Note: If a command, equipped with an enable flag, should be signaled in the COS register,
the enable flag must be set to 1 (enabled) before the state in the corresponding
command flag will be evaluated by the receiver of the COS command. And the enable
flag must be set to 0 (disabled) after the receiver has acknowledged the recognition of
the command and before a new COS command is initiated.
0 0
1 0
Note: The COS enable flag handling is identical for the host and the netX commands.
Note: All structures and definitions used in the following chapters can be found in the Hil_*.h
header files.
Common Status Block 0x0310 64 Bytes Common Protocol Stack Status Information
Extended Status Block 0x0350 432 Bytes Network Specific Information
Send Mailbox 0x0500 1600 Bytes Send Mailbox for Non-Cyclic Data Transfer
Receive Mailbox 0x0B40 1600 Bytes Receive Mailbox for Non-Cyclic Data Transfer
Output Data Image 1 0x1180 64 Bytes High Priority Output Process Data Image
Input Data Image 1 0x11C0 64 Bytes High Priority Input Process Data Image
Reserved 0x1200 256 Bytes Reserved for Future Use, Set to Zero
Output Data Image 0 0x1300 5760 Bytes Cyclic Output Process Data Image
Input Data Image 0 0x2980 5760 Bytes Cyclic Input Process Data Image
Default DPM size of 64 KByte (65536 Byte) results from the sizes of the System Channel,
Handshake Channel and 4 Communication Channels.
The default communication channel size is 15616 Byte.
Note: The firmware will set the Default Memory Map flag in the System COS field in System
Status block, if the default memory layout is used.
Note: The default mapping is also available with 16 KByte DPM size, but than with only one
communication channel.
Common Status Block 0x0310 64 Bytes Common Protocol Stack Status Information
Extended Status Block 0x0350 432 Bytes Network Specific Information
Send Mailbox 0x0500 1600 Bytes Send Mailbox for Non-Cyclic Data Transfer
Receive Mailbox 0x0B40 1600 Bytes Receive Mailbox for Non-Cyclic Data Transfer
Output Data Image 1 0x1180 64 Bytes High Priority Cyclic Output Process Data Image
Input Data Image 1 0x11C0 64 Bytes High Priority Cyclic Input Process Data Image
Reserved 0x1200 256 Bytes Reserved for Future Use, Set to Zero
Output Data Image 0 0x1300 1536 Bytes Cyclic Output Process Data Image
Input Data Image 0 0x1900 1536 Bytes Cyclic Input Process Data Image
Note: Offsets are given relative to the start offset of the System Channel start address.
The netX DPM Identification abCookie[4], identifies the start of the dual-port memory. It has a
length of 4 bytes and is always present if a netX firmware is running.
Note: The cookie is the last element, initialized by the firmware. The firmware ensures, if a
valid value is inserted in the cookie, all other elements of the DPM are initialized.
The size field ulDpmTotalSize holds the total size of the dual-port memory in bytes (8 Kbyte /
16 KByte / 64 KByte). The usable size may differ because each channel defines an own layout.
If the default memory layout is used, the usable size is 16 Kbyte (see section DPM Mapping on
page 65).
Device Number
The device number given in ulDeviceNumber holds the hardware order or item number of a
device. The number is given as a hexadecimal number and follows the following format:
xxx.yyyy.zzz.
Example:
A value of 0x499602D2 is translated into the decimal value of 1234567890 which results in an
order number of 123.4567.890
If the value is equal to zero, the device number is not set.
Serial Number
The serial number given in ulSerialNumber holds the hardware serial number used in
conjunction with the device number to uniquely identify a device. It is a 32-bit value given as
hexadecimal number.
For netX 50/51/52/100/500: The Serial Number is read from the SecurityMemory, if a
SecurityMemory is available. If no SecurityMemory is available, the Serial Number is read from the
Flash Device Label (FDL) and will be used. If no FDL is available, a default Serial Number "8194"
will be used.
For netX 90/4000: The Serial Number is read from the Flash Device Label (FDL) and will be used.
If no FDL is available, the serial number is set to zero.
Example:
A value of 0x00004E21 compares to the decimal number 20021.
The assembly option defines the physical hardware interface connected to a netX xC
(Communication Controller) port. A netX chip offers up to 4 xC ports and the assembly option is an
array of 4 elements (ausHWOptions[4]) where each element holds the definition of one xC port
(Port 0..3).
The definition is necessary because each fieldbus protocol has specific requirements to the
physical interface and only with a correct assembled physical interface the communication on the
fieldbus system is possible.
Hardware Assembly Options
Variable: ausHWOptions
Variable: ausHWOptions
Variable: ausHWOptions
Manufacturer
Production Date
The production date entry is comprised of the calendar week and year (starting with year 2000)
when the hardware was produced. Both, year and week are shown in hexadecimal notation.
If the value is equal to zero, the manufacturer date is not set.
Variable: usProductionDate
Bit No. 15..8 = Production Year Bit No 7..0 = Production (Calendar) Week
0 - 255 (+2000) 1 - 52
Table 52: System Channel: Production Date
Example:
Production Date = 0x062B indicates year = 2006 / production week = 43
License flags contain license information for the netX firmware and tools and are used to enable
functionalities which are protected by them. The flags are stored in a security memory on the
hardware and read during system startup.
If the license information fields / flags are zero, a license or license code is not set.
License Flags 1 are used to enable fieldbus master protocol stacks.
Bits 0 to bit 29 License flags dedicated to a specific protocol stack
Bits 30 and 31 Number of concurrent master protocol stack licenses
Variable: ulLicenseFlags1
31 30 29 … 8 7 6 5 4 3 2 1 0 Bit Number
PROFIBUS Master
CANopen Master
DeviceNet Master
AS-Interface Master
PROFINET IO RT Controller
EtherCAT Master
EtherNet/IP Scanner
SERCOS III Master
Reserved, Set to Zero
00 = Unlimited Number of Master Licenses
01 = 1 Master License
10 = 2 Master Licenses
11 = 3 Master Licenses
Table 53: System Channel: License Flags 1
License Flags 2 are used for tool licensing, e. g. SYCON.net, OPC servers and drivers etc.
If a flag is set, a tool license is present.
Variable: ulLicenseFlags2
31 … 8 7 6 5 4 3 2 1 0 Bit Number
SYCON.net
OPC Server
QViS
01 = Minimum Size
10 = Standard Size
11 = Maximum Size
CoDeSys (Hilscher)
01 = Minimum Size
10 = Standard Size
11 = Maximum Size
Driver / Operating System (Host Application)
Atvise Web Server
Reserved, Set to Zero
Table 54: System Channel: License Flags 2
netXLicenseID / netXLicenseFlags
netX license ID and flags (usNetxLicenseID / usNetxLicenseFlags) are reserved for OEM
customers allowing them to integrate their own license definition.
Device Class
The device class is used to create device groups specified by their functionality and hardware
options (e.g. used netX chip, special functionalities). This is necessary because a netX firmware
may not support all hardware devices or just one specific device.
The netX firmware file header also contains a device class definition, specifying which devices are
supported. This information can be used by host applications to verify if a given firmware will work
on a device before downloading it to the hardware.
The following hardware device classes are defined (variable usDeviceClass).
Value Definition Description
0x0000 HIL_HW_DEV_CLASS_UNDEFINED Hardware is not defined
0x0001 HIL_HW_DEV_CLASS_UNCLASSIFIABLE Hardware not classifiable
0x0002 HIL_HW_DEV_CLASS_CHIP_NETX_500 netX500 chip based hardware
0x0003 HIL_HW_DEV_CLASS_CIFX All PC cards (ISA/PCI/PCIe)
0x0004 HIL_HW_DEV_CLASS_COMX_100 COMX module netX00 based
0x0005 HIL_HW_DEV_CLASS_EVA_BOARD netX Evaluation board (e.g. NXHX51)
0x0006 HIL_HW_DEV_CLASS_NETDIMM netDIMM netX500 chip based DIMM module
0x0007 HIL_HW_DEV_CLASS_CHIP_NETX_100 netX100 chip based
0x0008 HIL_HW_DEV_CLASS_NETX_HMI netHMI hardware
0x0009 reserved reserved
0x000A HIL_HW_DEV_CLASS_NETIO_50 netIO netX50 based I/O module
0x000B HIL_HW_DEV_CLASS_NETIO_100 netIO netX100 based I/O module
0x000C HIL_HW_DEV_CLASS_CHIP_NETX_50 netX50 based hardware
0x000D HIL_HW_DEV_CLASS_GW_NETPAC netPAC Gateway
0x000E HIL_HW_DEV_CLASS_GW_NETTAP netTAP netX100 based Gateway
0x000F HIL_HW_DEV_CLASS_NETSTICK netSTICK netX50 based USB stick
0x0010 HIL_HW_DEV_CLASS_NETANALYZER netANALYZER PC card
0x0011 HIL_HW_DEV_CLASS_NETSWITCH netSWITCH Ethernet switch
0x0012 HIL_HW_DEV_CLASS_NETLINK netLINK network linking
0x0013 HIL_HW_DEV_CLASS_NETIC_50 netIC netX50 based DIL-32 communication IC
0x0014 HIL_HW_DEV_CLASS_NPLC_C100 netPLC netX100 based PLC PC card
0x0015 HIL_HW_DEV_CLASS_NPLC_M100 netPLC netX100 based PLC module
0x0016 HIL_HW_DEV_CLASS_GW_NETTAP_50 netTAP netX50 based Gateway
0x0017 HIL_HW_DEV_CLASS_NETBRICK netBRICK netX100 based Gateway (IP67)
0x0018 HIL_HW_DEV_CLASS_NPLC_T100 netPLC netX100 based PLC module (DIN rail)
0x0019 HIL_HW_DEV_CLASS_NETLINK_PROXY netLINK proxy
0x001A HIL_HW_DEV_CLASS_CHIP_NETX_10 netX10 based hardware
0x001B HIL_HW_DEV_CLASS_NETJACK_10 netJACK netX10 based exchangeable module
0x001C HIL_HW_DEV_CLASS_NETJACK_50 netJACK netX50 based exchangeable module
0x001D HIL_HW_DEV_CLASS_NETJACK_100 netJACK netX100 based exchangeable module
0x001E HIL_HW_DEV_CLASS_NETJACK_500 netJACK netX500 based exchangeable module
0x001F HIL_HW_DEV_CLASS_NETLINK_10_USB netLINK netX10 based with USB connection
0x0020 HIL_HW_DEV_CLASS_COMX_10 COMX module netX10 based
0x0021 HIL_HW_DEV_CLASS_NETIC_10 netIC netX10 based DIL-32 communication IC
0x0022 HIL_HW_DEV_CLASS_COMX_50 COMX module netX50 based
0x0023 HIL_HW_DEV_CLASS_NETRAPID_10 netRAPID netX10 based ready to solder chip-carrier
0x0024 HIL_HW_DEV_CLASS_NETRAPID_50 netRAPID netX50 based ready to solder chip-carrier
Hardware Revision
The hardware revision field indicates the current revision of a module. In difference to the printed
device label, the revision field counts from 1 to 35 while the printed label shows the letters A to Z
for revision numbers greater 9.
Variable: bHwRevision
Note: The Device Identification Number is a hardware created number and the hardware
must support this option. It should not be mixed up with any addresses from a fieldbus
system (e.g. slave address on a fieldbus network).
Channel Type
This field identifies the channel type of the corresponding memory location. The following channel
types are defined.
Variable: bChannelType
The value given in bChannelId is used to enumerate the communication and application
channels. The value is unique in the system and ranges from 0 to 7 and corresponds to the order
of a channel in the DPM (e.g. Communication Channel 0 = 0, Communication Channel 1 = 1 etc.).
This field identifies the position of the handshake registers and their size. The handshake registers
may be located at the beginning of the channel itself or in a separate handshake area.
The size of the handshake registers can be either 8 or 16 bit.
Variable: bSizePositionOfHandshake
A channel consists of data blocks (e.g. mailbox and status blocks) and the number of blocks
bNumberOfBlocks indicates how many blocks are contained in the channel structure.
Size of Channel
This field ulSizeOfChannel contains the size of the entire channel in bytes.
The mailbox size field usSizeOfMailbox holds the size of the system mailbox structure (sum of
the send / receive mailbox). While the size of the send and receive mailbox is always symmetric,
the given size must be divided by 2 to get the size of the send/receive mailbox structure.
The default size of the send/receive mailbox structure is 128 bytes (sum = 256 bytes). Each
mailbox (send & receive) consists of one field for the package counter (packages accepted /
packages waiting) and 124 bytes for the user data (see section System Mailbox on page 94).
The mailbox start offset element usMailboxStartOffset defines location (byte offset) of the
mailbox inside the system channel, starting with the send mailbox structure.
The communication class defines functionality (e.g. Master / Slave etc.) of the fieldbus protocol
stack and can be used by an application to adapt the handling for the protocol stack.
Variable: usCommunicationClass
This field defines the fieldbus protocol running on the communication channel or a specific process
like a PLC program, running on the communication channel.
Variable: usProtocolClass
Variable: usProtocolClass
The conformance class describes an additional characteristic of a fieldbus protocol or process and
depends on the Protocol Class.
It is used to describe sub functionalities of the protocol stack like PROFIBUS DPV1/DPV2 support
or the conformance class (A/B/C) of a PROFINET protocol.
Because of protocol class dependency, values in here are specified in the corresponding
protocol/process specific manuals.
Note: Currently all handshake registers of all channels are located in the Handshake Channel
of the DPM.
The System Handshake Block inside a channel is not yet supported and therefore set to zero.
__HIL_PACKED_PRE struct
{
volatile uint16_t usNetxFlags; /*!< Device status flags (16Bit Mode) */
volatile uint16_t usHostFlags; /*!< Device command flags (16Bit Mode)*/
} __HIL_PACKED_POST t16Bit;
volatile uint32_t ulValue; /*!< Handshake cell value */
} NETX_HANDSHAKE_CELL;
System Control
Note: The System Control field is used to control the system reset behavior
of netX 90/4000/4100-based systems.
Variable: ulSystemControl
The change of state field contains information about the current operating status of the system
channel.
Variable: ulSystemCOS
System Status
The system status holds general state information about the device, e.g. the used boot media, the
file system and its location and the supported firmware type.
Variable: ulSystemStatus
31 30 29 28 27 26 25 24 23 22 … 0 Bit Number
unused, set to zero HIL_SYS_STATUS_OK
HIL_SYS_STATUS_IDPM
HIL_SYS_STATUS_APP
Boot Medium
0000 = HIL_SYS_STATUS_BOOTMEDIUM_RAM
0001 = HIL_SYS_STATUS_BOOTMEDIUM_SERFLASH
0010 = HIL_SYS_STATUS_BOOTMEDIUM_PARFLASH
unused, set to zero
HIL_SYS_STATUS_NO_SYSVOLUME
HIL_SYS_STATUS_SYSVOLUME_FFS
HIL_SYS_STATUS_NXO_SUPPORTED
Table 67: System Channel: System Status Field
System Error
The system error field ulSystemError holds information about general netX firmware errors (0 =
no error).
The system error field works in conjunction with the NSF_ERROR bit in the netX System Flags
register. NSF_ERROR is used to indicate an error while the error number is shown in the system
error field. Error codes are listed in section Error codes from page 133.
Using the system service HIL_SYSTEM_ERRORLOG_REQ, it is possible to retrieve additional
information about the error.
Boot Error
The boot error field ulBootError is used by the Second Stage Bootloader to indicate errors
during system startup or firmware loading.
Boot loader errors are described in the Second Stage Bootloader manual and listed in section 7.
Using the system service HIL_SYSTEM_ERRORLOG_REQ, it is possible to retrieve additional
information about the error.
Time since startup ulTimeSinceStart is used to shows the elapsed time since the last system
start (e.g. Power-On / hardware reset). The time is given in seconds [s] and can be used to detect
unexpected system re-starts.
CPU Load
The CPU load field usCpuLoad indicates the current netX CPU usage. The value is updated every
second and has a resolution of 0.01% (e.g. a value of 10000 is equal to 100%).
Hardware Features
The hardware features field is used to indicate additional hardware components available,
assembled on a netX device.
Variable: ulHWFeatures
31 … 11 10 9 8 7 6 5 4 3 2 1 0 Bit Number
External Memory Type
0000 = None
0001 = MRAM 64*16 Bit (1 Mbit/128 KB)
Reserved, set to 0
External Memory Access
00 = No access
01 = External access (host)
10 = Internal access
11 = External and internal access
Real-Time Clock
00 = No RTC
01 = RTC internal
10 = RTC external
11 = RTC emulated
Clock State
0 = Time not valid
1 = Time valid
Unused, set to zero
Table 69: System Channel: Hardware Features Field
Note: Offsets are given relative to the start offset of the channel start address.
struct
{
volatile uint16_t usNetxFlags; /* Device status flags (16Bit Mode) */
volatile uint16_t usHostFlags; /* Device command flags (16Bit Mode)*/
} t16Bit;
volatile uint32_t ulValue; /* Handshake cell value */
} NETX_HANDSHAKE_CELL;
Note: Offsets are given relative to the start offset of the channel start address.
#define NETX_IO_DATA_SIZE 5760 /* I/O data size in bytes for 16KByte DPM */
#define NETX_IO_DATA_SIZE_8K_DPM 1536 /* I/O data size in bytes for 8KByte DPM */
#define NETX_HP_IO_DATA_SIZE 64 /* Default size of the high prio I/O data */
Note: Currently the handshake registers of all channels are located in the Handshake
Channel of the DPM.
The Channel Handshake Block inside a channel is not yet supported and therefore set to zero.
__HIL_PACKED_PRE struct
{
volatile uint16_t usNetxFlags; /*!< Device status flags (16Bit Mode) */
volatile uint16_t usHostFlags; /*!< Device command flags (16Bit Mode)*/
} __HIL_PACKED_POST t16Bit;
volatile uint32_t ulValue; /*!< Handshake cell value */
} NETX_HANDSHAKE_CELL;
The Application Change of State (ulApplicationCOS) is a bit field. The host application uses
this field in order to send commands to the communication channel synchronized by the COS
mechanism described in section 4.3.
The device watchdog counter ulDeviceWatchdog is one part of the communication channel
watchdog mechanism. The second part ulHostWatchdog is located in the status block of the
channel.
The Communication Change of State register is a bit field, containing information about the current
operating status of the communication channel and its firmware.
The state information is exchanged between the netX firmware and the host by using the COS
(Change of State) mechanism described in section 4.3.
Communication State
The Communication State field ulCommunicationState contains information about the current
network state.
Note: Depending on fieldbus protocol, not all of the defined states are always available or
may have different meanings.
ulCommunicationError holds the current error code of the communication channel (protocol
stack). An error is also indicated by the NCF_ERROR flag in the communication channel
handshake register.
If the cause of the error is resolved, the communication error field is set to 0 again.
Note: Error codes can be protocol specific and are described in the corresponding manual.
Default system errors are listed in section Error codes from page 133.
Structure Version
The version field usVersion holds the actual version number of the Common Status Block
structure. The structure number is used to indicate changes in the structure.
Value Definition / Description
0x0000 Undefined
0x0001 First version of the structure layout
0x0002 Second version of the structure layout (current)
The layout was extended by the following data
bPDInHskMode, bPDInSource,
bPDOutHskMode, bPDOutSource
bErrorLogInd, bErrorPDInCnt, bErrorPDOutCnt, bErrorSyncCnt
bSyncHskMode, bSyncSource
Table 83: COMM Channel: Common Status Block Structure Version
Watchdog Timeout
The watchdog timeout field usWatchdogTime holds the configured watchdog timeout value in
milliseconds [ms]. This value is set by the fieldbus configuration (default = 1000ms).
The application can use the value to setup their watchdog trigger interval accordingly. If the
application has activated the watchdog it must trigger the watchdog at least once during the given
watchdog time. Otherwise the protocol stack will interrupt all network connections immediately
regardless of their current state.
A watchdog fault will be indicated by the NCF_ERROR flag and a corresponding error is inserted in
ulCommunicationError.
Input and output data images can be driven in different handshake modes, while each mode also
allows configuring a so called synchronization source (not supported yet) and offers an error
handshake counter.
The following elements are used to indicate the actual configured mode / synchronization source
and handshake error for each image.
For details of the handshake mechanism refer to section Cyclic Data Transfer via Input/Output
Data Areas on page 49.
Image Type Variable Description
INPUT uint8_t bPDInHskMode Input data image Handshake mode
Indicates the actual configured handshake mode for the input data
image
uint8_t bPDInSource Input data synchronization source definition
Is intended to be used as an indicator of the actual configured input
data synchronization source. This must be supported by the fieldbus
protocol stack.
uint8_t bErrorPDInCnt Input data handshake errors
Depending on the configured handshake mode, it is possible the
protocol stack is not able to signal new input data, because the host
application has not acknowledged a previous state and therefore
access to the image is not allowed by the stack.
In this case, the protocol stack would increment this counter to signal
a missed update.
OUTPUT uint8_t bPDOutHskMode Output data image Handshake mode
Indicates the actual configured handshake mode for the output data
image
uint8_t bPDOutSource Output data synchronization source definition
Is intended to be used as an indicator of the actual configured output
data synchronization source. This must be supported by the fieldbus
protocol stack.
uint8_t bErrorPDOutCnt Output data handshake errors
Depending on the configured handshake mode, it is possible the
protocol stack needs new output data for the next network transfer.
If the host application is not quick enough to deliver the data, the
protocol stack would increment this counter to signal the missing
update.
Table 84: COMM Channel: Handshake Mode
Host Watchdog
The host watchdog field ulHostWatchdog is used together with the Common Control Block
ulDeviceWatchdog field for the handling of the netX watchdog functionality.
For details on the watchdog function, refer to sections Channel Watchdog (page 131) and
Common Status Block (page 102).
Error Count
This ulErrorCount field holds the total number of errors detected since power-up, respectively
after reset. The protocol stack counts all sorts of errors in this field no matter if they were network
related or caused internally.
After power cycling, reset or channel initialization this counter is being cleared again.
The error log indicator field bErrorLogInd is created for later use, when the netX firmware
supports an internal error logging array. In this case, the field will show the number of entries in the
logging array and if all entries are read from the log, the field is set to zero.
Extended Synchronization
A protocol stack may offer additional synchronization options, not depending on the input / output
data transfer synchronization and handled by dedicated synchronization flags.
Note: The extended synchronization mechanism is described in an own manual and must be
supported by the fieldbus protocol stack.
These options could be the synchronization with the network bus cycle or an external hardware
trigger. For such options the following three elements are defined to indicate the actual
configuration, the source of the sync signal and an error counter.
Type Variable Description
uint8_t bErrorSyncCnt Number of synchronization handshake errors
Depending on the configuration the error counter is used if the sync
information could not be updated because of a missing acknowledgement.
uint8_t bSyncHskMode Synchronization Handshake Mode
Configured mode of the synchronization (host controlled / device
controlled)
uint8_t bSyncSource Synchronization Source
Definition of the sync source (bus cycle / hardware trigger etc.)
Table 86: COMM Channel: Extended Synchronization
Note: This structure is not available for slave protocols and set to zero.
The Common Slave State field ulSlaveState is a collective indication on whether the master is
in cyclic data exchange to all configured slaves or not.
If there is at least one slave missing or one of the slaves has pending diagnostic information, the
status is changed to HIL_SLAVE_STATE_FAILED.
For protocols that only support packet based (non-cyclic) communication, the slave state is set to
HIL_SLAVE_STATE_OK as soon as a valid configuration is found.
Not supported yet and reserved for later use if the firmware supports an internal error log array.
The field will indicate the number of entries in the log array and is set to zero if all log entries have
been read by the host application.
ulNumOfActiveSlaves indicates the number of slaves, the master has an active communication
to. Ideally this number is equal to the number of configured slaves, if all configured slaves are
connected to the networks and working without problems.
For certain fieldbus systems, it could be possible that a slave is shown as active, but still has a
problem in terms of a diagnostic issue.
ulNumOfDiagSlaves indicates how many slaves are missing on the network or reporting a
diagnostic issue.
Slave diagnostic is reset if it was read by the master or host application. If all configured slaves are
on the network and no more diagnostic information is pending, the field is set to zero.
State Field
ulStateOffset
NETX_EXTENDED_STATE_FIELD_T
0x0200
0x0120 bStateArea
bStateTypeID
usNumOfStateEntries
Send Mailbox (0..65535)
ulStateOffset
0x0840
0x0128 bStateArea
bStateTypeID
usNumOfStateEntries
Receive Mailbox (0..65535)
ulStateOffset
0x0140
bStateArea
bStateTypeID
usNumOfStateEntries
(0..65535)
ulStateOffset
...
0x01F8
bStateArea
bStateTypeID
usNumOfStateEntries
(0..65535)
ulStateOffset
The Extended Status Block is a byte array of 432 byte. This array is divided into the Extended
Status Area, which is protocol specific, and the Extended State Field.
The definition of the Extended Status Area (abReserved[172]) is specific to the protocol stack
and contains additional information about network status (i.e. flags, error counters, events etc.).
The exact definition of this structure can be found in the corresponding protocol stack API manual.
This size of the structure is 172 bytes.
Note: Depending on the protocol stack, the status block is supported or not and it is defined
in the specific protocol stack manual.
The Extended State Field Structure is a collection of descriptor definitions, where each entry
describes the content and the size of additional memory areas in the DPM.
This location is used to maintain various protocol, device or implementation specific state fields.
The Status Structures contain definitions in terms of type, number of valid entries and start offset of
these fields in the communication channel.
If the status information is configured to be located in the IO data image of a channel, the status
information and the IO data image are consistent and updated together.
bNumOfStateStruct holds the number of Status Structures that following this field. Up to
HIL_EXT_STS_MAX_STRUCTURES structures can be defined. This field is set to zero if no such
structure is defined.
Each element of the Extended State Structure array (atStateStruct[]) describes exactly one
memory region.
State Area
bStateArea defines the memory location where this state information can be found.
Value Definition State field located
0 HIL_EXT_STS_STD_INPUT_BLK_ID In standard input data area
1 HIL_EXT_STS_HI_INPUT_BLK_ID In high priority input data area (not supported yet)
8 HIL_EXT_STS_STD_OUTPUT_BLK_ID In standard output area
9 HIL_EXT_STS_HI_OUTPUT_BLK_ID In high priority output data area (not supported yet)
Other values are reserved
Table 92: COMM Channel: Extended State Area
State Type ID
The State Type ID (bStateTypeID) indicates the type of the status information. It implicitly
defines the content and the size of the information. This could be a list of one or more bits or even
bytes per IO data unit, corresponding to the state definition of the specific protocol.
The following types of state information are defined. The complete list of supported types can be
found in the protocol API manual of the used protocol.
Value Definition Description
1 HIL_EXT_STS_SLAVE_CONFIGURED Configured slave bit field
2 HIL_EXT_STS_SLAVE_ACTIV Active slave bit field
3 HIL_EXT_STS_SLAVE_DIAGNOSTIC Slave diagnostic bit field
Other values are reserved
Table 93: COMM Channel: Extended State Type ID
Note: Not all of the status types are supported by every protocol stack.
usNumOfStateEntries holds the number of bytes provided in the status information field. This
value is zero, if no state entries are provided and the field can hold up to 65535 entries.
State Offset
ulStateOffset holds the start offset of the status information in the defined memory area
(input/output image). The offset is related to the beginning of the defined data area and given in
bytes.
Note: The state information is always aligned to 32 bit offsets (round up to the next double
word).
Example
This is an example of the state structures in the extended status block and state field definitions for
communication channel 0.
Communication Extended Extended State
Channel 0 Status Block Field
0x0000
reserved reserved
0x0008
Control Block Reserved
0x0010 0x00FF bNumStateStructs (0..32) =5
to maintain
Common Status 0x0100 bStateArea =8
compatibility to
Block bStateTypeID =1
existing definitions
0x0050 usNumOfStateEntries
= 128
(0..65535)
0x00FC
ulStateOffset =n
0x0108 bStateArea =8
Extended Status
bStateTypeID =2
Block
Extended usNumOfStateEntries
= 128
(0..65535)
State Field
ulStateOffset =n
NETX_EXTENDED_STATE_FIELD_T
0x0200
0x0110 bStateArea =8
bStateTypeID =3
usNumOfStateEntries
Send Mailbox (0..65535)
= 128
ulStateOffset =n
0x0840
0x0118 bStateArea =0
bStateTypeID =1
usNumOfStateEntries
Receive Mailbox = 128
(0..65535)
ulStateOffset =n
0x0E80 bStateArea =0
0x0120
Output Data Area 1 bStateTypeID =2
(high priority) I/O Image usNumOfStateEntries
(0..65535) = 128
0x0EC0
Input Data Area 1 0x1000 data 0 ulStateOffset =n
(high priority)
data 1
0x0F00
...
reserved data n
0x1000 ... ...
0x01F8
Status field bStateArea
bStateTypeID
... usNumOfStateEntries
Status field (0..65535)
Output Data Area 0 ...
ulStateOffset
Status field
0x2680 data 0
data 1
...
0x2680
data n
...
Status field
...
Input Data Area 0 Status field
...
The first entry in the Extended State Field structure indicates that there is a status field located in
the output data image (bStateArea = 8) and ulStateOffset points to a location within the
output image. bStateTypeID holds the type of information located in the output data image (list
of configured/activated/faulted slaves). The second entry, points to the location in the output data
image, and so on.
Note: In case of a network fault (e.g. disconnected network cable), a slave firmware keeps
the last state of the input and output data and clears the Communicating flag in netX
communication flags (see section Communication Channel - Handshake Register on
page 27).
In this case the input data should not be evaluated, while output data can be written.
The handling and synchronization of the input/output data areas is described in section Cyclic Data
Transfer via Input/Output Data Areas on page 49.
The size of the input and output data image in the default memory map is 5760 byte each.
Input / Output Process Data Image
The size of the input and output data image for the 8 Kbyte layout is 1536 bytes each.
Input / Output Process Data Image (8 KByte)
Start / Re-start Time until DPM content is valid, if a Second Stage min. 100ms
Bootloader and/or netX firmware has initialized the
DPM.
Reset activation Clearing NSF_READY after HSF_RESET issued min. 100 - 500ms
Ready after reset Setting NSF_READY after recovering from a reset 0.5s - max. 6s
Fieldbus Communication
BUS_ON / BUS_OFF Time until a fieldbus protocol stack signals an typical 5000ms
activated/deactivated fieldbus communication (if
available)
Packet Send / Receive Sending / receiving packets via a mailbox system typical 1000ms
Note: The given times are valid if the netX dual port memory is interfaced via a data / address
bus. When using an SPI / USB or another serial connection, data transfer times of the
physical connection have to be taken in account which may increase these times.
The netX chip contains a ROM loader. After power-on reset, the ROM loader is started and its
main task is to initialize the internal netX controller and its components (e.g. optional non-volatile
boot devices such as serial Flash, parallel Flash, and DPM etc.). If a boot device is found, the
ROM loader checks for an executable binary code residing in the boot media and starts it.
Otherwise it depends on the hardware settings how the ROM loader proceeds.
Note: The netX chip boot process and the requirements for creating a bootable binary code is
described in the netX Bootstrap Specification.
In general the first boot binary of a netX firmware is a Second Stage Bootloader. This loader
should handle all hardware specific initializations of the target hardware, which keeps a netX
protocol stack firmware independent of it. The Second Stage Bootloader creates the so-called
System Device / System Channel in the dual-port memory area before it starts to look for non-
volatile boot devices and a file system containing the resulting netX firmware.
If available, the firmware file will be started. Otherwise, the Second Stage Bootloader, will wait until
a firmware is downloaded by the host application using the System Mailbox.
If the found netX firmware is started by the Second Stage Bootloader, the firmware takes the
hardware specific information from the Second Stage Bootloader and creates the final layout of the
DPM (System Channel / Handshake Channel / Communication Channels).
If the target hardware does not support non-volatile boot devices, step 2 and step 3 must be
always processed after each power-on reset.
Note: During a hardware reset and during the time the netX firmware starts, the content of
the dual-port memory can be invalid (0xFFFF / 0x0BAD).
As soon as the cookie at the beginning of the DPM can be read, the boot process is
finished (see section System Information Block (page 69) / abCookie[]).
netX 52/51/50/100/500
A Second Stage Bootloader and a standard communication protocol firmware (.NXF) is
used.
netX 90/4000/4100
A Maintenance firmware (.MXF) and a standard communication protocol firmware (.NXI) is
used.
netX 50/51/52/100/500
First, the integrated ROM loader starts. Then the integrated ROM loader starts the Second
Stage Bootloader. Finally, the Second Stage Bootloader starts the (protocol) firmware. If no
firmware is available or the current firmware is damaged, the boot process will stop in the
Second Stage Bootloader.
netX 90/4000/4100
First, the integrated ROM loader starts. If a firmware is available, the integrated ROM loader
starts the (protocol) firmware directly. If no firmware is available or the current firmware is
damaged, the integrated ROM loader will start the Maintenance Firmware (MFW).
Note: For a complete description on how to reset a specific netX chip, please consult the
corresponding netX Programming Reference Guide.
Note: Boot Start only works if Second Stage Bootloader and/or firmware is stored in a Flash.
On a netX target without a Flash (RAM-based systems), a firmware starts over without
activating the Maintenance mode.
Note: Update Start only works on Flash-based systems i.e. the firmware is stored in a Flash.
On a netX target without a Flash (i.e. RAM-based systems), the firmware starts over
without activating the Maintenance firmware.
Note: If the configuration database is locked, re-initializing the communication channel is not
allowed (see HIL_COMM_COS_CONFIG_LOCKED state page 102. and
HIL_APP_COS_LOCK_CONFIGURATION command page 100).
If the protocol stack is configured in Automatically by Device mode it will open the network
connections automatically as soon as the configuration is loaded. In the Controlled by Application
mode, the protocol stack loads the configuration and than waits until the application sends a Bus
On command.
Note: Which start-up mode is used is up to the application developer. In general Controlled
Start method gives a better control over the network communication.
The actual state of the bus communication is indicated by the protocol stack in the
HIL_COMM_COS_BUS_ON flag, located in the ulCommounicationCOS field.
Communication State Flag Value State
HIL_COMM_COS_BUS_ON 0 Bus communication is disabled
1 Bus communication is enabled
The host application can use the HIL_APP_COS_BUS_ON flag in the Application Change of State
field ulApplicationCOS to start and stop the bus communication. This also implies the
executing of the COS handling defined for application commands (see Application COS Handling
on page 62).
Application State Flag Value State
HIL_APP_COS_BUS_ON 0 Disable bus communication
1 Enable bus communication
In addtion to the HIL_COMM_COS_BUS_ON flag, which indicates the actual bus setting, the
protocol stack uses the NCF_COMMUNICATION flag in the usNetXFlags register to indicate if it
has an active bus communication to other devices on the network.
If the bus communication is disabled, the NCF_COMMUNICATION flag will be cleared an all
further attempts to re-open a connection are rejected until bus communication is started again.
The communication channel indicates the actual state by the Configuration Locked flag
HIL_COMM_COS_CONFIG_LOCKED in ulCommunicationCOS.
Communication State Flag Value State
HIL_COMM_COS_CONFIG_LOCKED 0 Configuration unlocked
1 Configuration locked
Any configuration tool shall reject those attempts when the Configuration Locked flag
HIL_COMM_COS_CONFIG_LOCKED is set in ulCommunicationCOS.
Note: The actual configured watchdog time can be read from usWatchdogTime field located
in the Common Status Block. If the watchdog time is set to 0, the watchdog will not be
activated.
Note: After a watchdog hit, the Communication Channel must be newly initialized (reset)
before it will start again.
Activation / The application has to copy the content of ulHostWatchdog to ulDeviceWatchdog field.
Processing The first copy automatically starts the watchdog supervising (ulDeviceWatchdog != 0)
Watchdog Hit If the application does not copy ulHostWatchdog to ulDeviceWatchdog and the watchdog
time expires, a watchdog hit is signaled to the communication channel.
Deactivation The watchdog supervising will be deactivated as soon as the host application writes 0 to
ulDeviceWatchdog.
Because of the copy functionality and the incrementation by the netX firmware, ulHostWatchdog
can also be used by the application to supervise the netX firmware processing.
Note: The minimum cycle time of the firmware for checking the watchdog values is 2ms and
the minimal configureable watchdog time is 20ms.
7 Error codes
A netX firmware contains several components which are able to signal errors. Therefore error
numbers and places where the errors are signaled depend on the component.
The following table should help to identify the component signaling an error.
Component Format / Value Range Location Description
netX System (System) 0x00000001 … System Status Block See section System
(operating system) 0x00007FFF Variable: ulSystemError Status Block (page 90).
netX System (General) 0xC0000001 … 0xC000xxxx System Status Block See section System
(General errors) 0xC02B0001 … 0xC02Byyyy Variable: ulSystemError Status Block (page 90).
or
Packet error in ulSta See section Packet
structure (page 37).
8 Appendix
8.1 List of figures
Figure 1: DPM Structure: DPM Connection to netX ............................................................................................................ 9
Figure 2: DPM Structure: Overview of DPM Memory Layout .............................................................................................. 9
Figure 3: DPM Structure: netX Firmware Block Diagram .................................................................................................. 10
Figure 4: DPM Structure: Block Diagram Default Dual-Port Memory Layout .................................................................... 11
Figure 5: DPM Structure: DPM Address Spaces............................................................................................................... 12
Figure 6: Packets: Mailbox System Overview ................................................................................................................... 35
Figure 7: Data Transfer Mechanism: Mailbox Packet Exchange ....................................................................................... 36
Figure 8: Packets: Default Packet Handling ...................................................................................................................... 40
Figure 9: Packets: Target Addressing with ulDest ............................................................................................................. 42
Figure 10: Packets: Using ulSrc and ulSrcId ..................................................................................................................... 43
Figure 11: Client/Server mechanism ................................................................................................................................. 44
Figure 12: I/Os: Input / Output Data Areas ........................................................................................................................ 49
Figure 13: I/Os: I/O Data Exchange .................................................................................................................................. 50
Figure 14: Change of State Mechanism (COS): Communication COS Handling .............................................................. 61
Figure 15: Change of State Mechanism (COS): Application COS Handling ..................................................................... 62
Figure 16: COMM Channel: Overview - Extended State Field Structure ......................................................................... 111
Figure 17: COMM Channel: Example Extended Status Structures ................................................................................. 116
Figure 18: Best practise pattern for ChannelInit .............................................................................................................. 127
Copyright
Important notes
Utmost care was/is given in the preparation of the documentation at hand consisting of a user's
manual, operating manual and any other document type and accompanying texts. However, errors
cannot be ruled out. Therefore, we cannot assume any guarantee or legal responsibility for
erroneous information or liability of any kind. You are hereby made aware that descriptions found
in the user's manual, the accompanying texts and the documentation neither represent a
guarantee nor any indication on proper use as stipulated in the agreement or a promised attribute.
It cannot be ruled out that the user's manual, the accompanying texts and the documentation do
not completely match the described attributes, standards or any other data for the delivered
product. A warranty or guarantee with respect to the correctness or accuracy of the information is
not assumed.
We reserve the right to modify our products and the specifications for such as well as the
corresponding documentation in the form of a user's manual, operating manual and/or any other
document types and accompanying texts at any time and without notice without being required to
notify of said modification. Changes shall be taken into account in future manuals and do not
represent an obligation of any kind, in particular there shall be no right to have delivered
documents revised. The manual delivered with the product shall apply.
Under no circumstances shall Hilscher Gesellschaft für Systemautomation mbH be liable for direct,
indirect, ancillary or subsequent damage, or for any loss of income, which may arise after use of
the information contained herein.
Liability disclaimer
The hardware and/or software was created and tested by Hilscher Gesellschaft für
Systemautomation mbH with utmost care and is made available as is. No warranty can be
assumed for the performance or flawlessness of the hardware and/or software under all application
conditions and scenarios and the work results achieved by the user when using the hardware
and/or software. Liability for any damage that may have occurred as a result of using the hardware
and/or software or the corresponding documents shall be limited to an event involving willful intent
or a grossly negligent violation of a fundamental contractual obligation. However, the right to assert
damages due to a violation of a fundamental contractual obligation shall be limited to contract-
typical foreseeable damage.
It is hereby expressly agreed upon in particular that any use or utilization of the hardware and/or
software in connection with
Flight control systems in aviation and aerospace;
Nuclear fission processes in nuclear power plants;
Medical devices used for life support and
Vehicle control systems used in passenger transport
shall be excluded. Use of the hardware and/or software in any of the following areas is strictly
prohibited:
For military purposes or in weaponry;
For designing, engineering, maintaining or operating nuclear systems;
In flight safety systems, aviation and flight telecommunications systems;
In life-support systems;
In systems in which any malfunction in the hardware and/or software may result in physical
injuries or fatalities.
You are hereby made aware that the hardware and/or software was not created for use in
hazardous environments, which require fail-safe control mechanisms. Use of the hardware and/or
software in this kind of environment shall be at your own risk; any liability for damage or loss due to
impermissible use shall be excluded.
Warranty
Hilscher Gesellschaft für Systemautomation mbH hereby guarantees that the software shall run
without errors in accordance with the requirements listed in the specifications and that there were
no defects on the date of acceptance. The warranty period shall be 12 months commencing as of
the date of acceptance or purchase (with express declaration or implied, by customer's conclusive
behavior, e.g. putting into operation permanently).
The warranty obligation for equipment (hardware) we produce is 36 months, calculated as of the
date of delivery ex works. The aforementioned provisions shall not apply if longer warranty periods
are mandatory by law pursuant to Section 438 (1.2) BGB, Section 479 (1) BGB and Section 634a
(1) BGB [Bürgerliches Gesetzbuch; German Civil Code] If, despite of all due care taken, the
delivered product should have a defect, which already existed at the time of the transfer of risk, it
shall be at our discretion to either repair the product or to deliver a replacement product, subject to
timely notification of defect.
The warranty obligation shall not apply if the notification of defect is not asserted promptly, if the
purchaser or third party has tampered with the products, if the defect is the result of natural wear,
was caused by unfavorable operating conditions or is due to violations against our operating
regulations or against rules of good electrical engineering practice, or if our request to return the
defective object is not promptly complied with.
Please be advised that any subsequent improvement shall only be free of charge if a defect is
found. Any form of technical support, maintenance and customization is not a warranty service, but
instead shall be charged extra.
Additional guarantees
Although the hardware and software was developed and tested in-depth with greatest care,
Hilscher Gesellschaft für Systemautomation mbH shall not assume any guarantee for the suitability
thereof for any purpose that was not confirmed in writing. No guarantee can be granted whereby
the hardware and software satisfies your requirements, or the use of the hardware and/or software
is uninterruptable or the hardware and/or software is fault-free.
It cannot be guaranteed that patents and/or ownership privileges have not been infringed upon or
violated or that the products are free from third-party influence. No additional guarantees or
promises shall be made as to whether the product is market current, free from deficiency in title, or
can be integrated or is usable for specific purposes, unless such guarantees or promises are
required under existing law and cannot be restricted.
Confidentiality
The customer hereby expressly acknowledges that this document contains trade secrets,
information protected by copyright and other patent and ownership privileges as well as any related
rights of Hilscher Gesellschaft für Systemautomation mbH. The customer agrees to treat as
confidential all of the information made available to customer by Hilscher Gesellschaft für
Systemautomation mbH and rights, which were disclosed by Hilscher Gesellschaft für
Systemautomation mbH and that were made accessible as well as the terms and conditions of this
agreement itself.
The parties hereby agree to one another that the information that each party receives from the
other party respectively is and shall remain the intellectual property of said other party, unless
provided for otherwise in a contractual agreement.
The customer must not allow any third party to become knowledgeable of this expertise and shall
only provide knowledge thereof to authorized users as appropriate and necessary. Companies
associated with the customer shall not be deemed third parties. The customer must obligate
authorized users to confidentiality. The customer should only use the confidential information in
connection with the performances specified in this agreement.
The customer must not use this confidential information to his own advantage or for his own
purposes or rather to the advantage or for the purpose of a third party, nor must it be used for
commercial purposes and this confidential information must only be used to the extent provided for
in this agreement or otherwise to the extent as expressly authorized by the disclosing party in
written form. The customer has the right, subject to the obligation to confidentiality, to disclose the
terms and conditions of this agreement directly to his legal and financial consultants as would be
required for the customer's normal business operation.
Export provisions
The delivered product (including technical data) is subject to the legal export and/or import laws as
well as any associated regulations of various countries, especially such laws applicable in
Germany and in the United States. The products / hardware / software must not be exported into
such countries for which export is prohibited under US American export control laws and its
supplementary provisions. You hereby agree to strictly follow the regulations and to yourself be
responsible for observing them. You are hereby made aware that you may be required to obtain
governmental approval to export, reexport or import the product.
9 Glossary
Term Description Section
(page)
Change of State (COS) Method to synchronize command / state exchange between a host 4.3 (p 60)
Mechanism application and the netX firmware
Change of State (COS) Part of the COS mechanism, used to selectively set flags without 4.3.3 (p 63)
Enable Flag Mechanism interfering other flags inside the Change of State register
Channel Logical interface / path from the DPM to dedicated parts of the netX 2.3 (p 14)
System Channel firmware
Communication Channel System Channel => netX Firmware / System services 5.2 (p 68)
Communication Channel => Protocol Stack / System services 5.4 (p 97)
Dual-Port Memory (DPM) Shared memory between the netX firmware and the host 2 (p 9)
application, representing the physical interface to a netX based
device.
Firmware Binary program code executed on the netX chip ARM CPU. It 2 (p 9)
contains the protocol stack and other components.
Handshake The handshake mechanism is used to synchronize data access to 2.3.2 (p 15)
Handshake Flags data located in the DPM and therefore ensuring consistent data 3.1 (p 22)
Handshake Block exchange via DPM. 5.2.3 (p 87)
5.3 (p 95)
5.4.1 (p 99)
Host Program that runs on a host controller (outside the netX chip) and
Host System uses the DPM to communicate and control the netX target.
Host Application
I/O Area Process data image of a communication channel using handshake 2.4.9 (p 20)
I/O Status mechanism to synchronize access 4.2.1 (p 50)
Holds the cyclic process data / state information of a network 5.4.8 (p 119)
I/O Status
Additional information regarding the state of input and output 5.4.4 (p 111)
process data in the IO data image
Lock Configuration Function to protect the configuration settings against changes 5.4.2 (p 100)
Mailbox Used to exchange non-cyclic data (packets) between the host 4.14.1 (p 35)
System Mailbox application and the netX firmware (protocol stack). Each channel
Channel Mailbox (system/Communication) offers an own mailbox.
Packet Definition A packet definition is an additional attribute of none-cyclic 4.1.5 (p 44)
commands/answers defining the originator of a packet.
Request / Confirmation
Indication / Response Request / Confirmation:
Request defines a command packet created by the host application
and sent to the netX firmware. While a confirmation is the answer of
the netX firmware.
Indication / Response:
Indications are command packets created by the netX firmware and
sent to the host application. A response is the answer packet of the
host application returned to the netX firmware.
Packet None cyclic, packet based commands/answers, exchanged via the 4.1.1 (p 37)
Packet Structure mailbox system
Process Data Image see I/O Data Area
Protocol Stack A protocol stack is the functional part (state machine) of a fieldbus
network application. It is an element of the netX firmware, while the
firmware can also include multiple protocol stacks (via different
communication channels).
Channel Initialization
Initialization / re-initialization of a specific Communication Channel
Security Memory Non-volatile memory use to store hardware specific and product 5.2.1 (p 69)
Security EEPROM related information
Watchdog Possibility to monitor the correct processing of the host application 6.5.4 (p 131)
Host Watchdog and/or netX firmware. Including the possibility to automatically shut
Device Watchdog down a fieldbus network communication if the host application
stucks or crashes.
xC Port Denotation of the netX chip internal communication controllers 2 (p 9)
Table 105: Glossary
10 Contact
Headquarters
Germany
Hilscher Gesellschaft für
Systemautomation mbH
Rheinstrasse 15
65795 Hattersheim
Phone: +49 (0) 6190 9907-0
Fax: +49 (0) 6190 9907-50
E-Mail: [email protected]
Support
Phone: +49 (0) 6190 9907-99
E-Mail: [email protected]
Subsidiaries
China Japan
Hilscher Systemautomation (Shanghai) Co. Ltd. Hilscher Japan KK
200010 Shanghai Tokyo, 160-0022
Phone: +86 (0) 21-6355-5161 Phone: +81 (0) 3-5362-0521
E-Mail: [email protected] E-Mail: [email protected]
Support Support
Phone: +86 (0) 21-6355-5161 Phone: +81 (0) 3-5362-0521
E-Mail: [email protected] E-Mail: [email protected]
France Korea
Hilscher France S.a.r.l. Hilscher Korea Inc.
69500 Bron Seongnam, Gyeonggi, 463-400
Phone: +33 (0) 4 72 37 98 40 Phone: +82 (0) 31-789-3715
E-Mail: [email protected] E-Mail: [email protected]
Support
Phone: +33 (0) 4 72 37 98 40 Switzerland
E-Mail: [email protected] Hilscher Swiss GmbH
4500 Solothurn
India Phone: +41 (0) 32 623 6633
Hilscher India Pvt. Ltd. E-Mail: [email protected]
Pune, Delhi, Mumbai Support
Phone: +91 8888 750 777 Phone: +49 (0) 6190 9907-99
E-Mail: [email protected] E-Mail: [email protected]
Italy USA
Hilscher Italia S.r.l. Hilscher North America, Inc.
20090 Vimodrone (MI) Lisle, IL 60532
Phone: +39 02 25007068 Phone: +1 630-505-5301
E-Mail: [email protected] E-Mail: [email protected]
Support Support
Phone: +39 02 25007068 Phone: +1 630-505-5301
E-Mail: [email protected] E-Mail: [email protected]