All Hilscher standard CIFX cards (PCI/PCIe based) are using the same PCI IDs.
Why this approach was choosen is based on the following facts.
Traditional fieldbus cards like PROFIBUS/DeviceNET/CANopen etc. need a card with specific physical connector,
but they can run Master and Slave protocols.
Real-Time Ethernet protocols just need an RJ45 connector and able to run all available RE protocols also as a Master or Slave.
To have a standard way to distingush between the cards the detection of a Hilscher PCI/PCIe card is based on the PCI Device and Vendor ID.
The Fieldbus specific information must be read from the hardware, independent of the fieldbus system.
1. How to find out which fieldbus protocol is supported by a CIFX card
CIFX cards do not store any files in FLASH, they are defined as "RAM based" and must be loaded on each system start.
At least a 2nd Stage Bootloader is necessary to be able to communicate to the hardware.
The bootloader will create a so call "System device" which can be used to read standard hardware information like
the "device class" (e.g. CIFX) and the "hardware options" defining available hardware connections and to download a firmware and a configuration later on.
Have a look into the "netX DPM Interface Manual" Rev.12 Page about standard card information located in the "System Information Block".
ausHwOptions has four entries, corresponding to the possible 4 netX communication controller connections (XC ports) a netX offers.
Because of the fact that XC port 0 and 1 including an internal PHY, these two ports are reserved for Real-Time Ethernet protocols.
The traditional fieldbus protocols are connected to XC port 3 by default.
- Check "usDeviceClass" => Evaluate the type of hardware
- Check "ausHwOptions" => Evaluate the physical hardware connection
Please note, all definitions from the DPM manual (Dual Port Memory of the hardware) are defined in a C header file named: rcX_User.h
The system also offers standard packet based command (Messages) which can be exchanged with the hardware.
These commands are defined in a C header file named: rcX_Public.h
Both files can be found in the "cifX/netX Toolkit" under the .\Source directory.