Matrox Imaging Library (MIL) 10 Update 53

Release Notes (MILIndio)

October, 2019
(c) Copyright Matrox Electronic Systems Ltd., 1992-
2019.

This document outlines what is new with MIL for the Matrox Indio and explains the current limitations and particularities when using MIL with a Matrox Indio product.

It presents last-minute information that did not make it into the manual or on-line help. Note that this help file serves to complement your manual. The information found in this file overrides your formally documented material.

Contents

1.     Overview

1.1         Summary of new features

1.2         API enhancements

2.     Known limitations

3.     MIL 10 support for Matrox Indio history

 

1.   Overview

 

Matrox Indio has sixteen discrete signals (8 inputs and 8 outputs) on the auxiliary I/O interface. All 8 auxiliary input signals support user input or quadrature input, and have interrupt-generation capabilities. All 8 auxiliary output signals support user output, timer output, or outputting the state of an I/O command register bit.

Matrox Indio also integrates a network port. The port features an Intel I210 Ethernet controller with support for Power-over-Ethernet (PoE). This port is intended for communicating through MIL using either the EtherNet/IP™, Modbus over TCP/IP or PROFINET protocols. PROFINET communication is hardware-assisted and does not require the installation of the Intel Network Adaptor Driver. EtherNet/IP and Modbus over TCP/IP communication does require the installation of the Intel Network Adaptor Driver available from <https://downloadcenter.intel.com/>. MIL 10 support for these industrial protocols also requires the installation of a separate update, specifically MIL 10 Update 50 or its successor.

Matrox Indio’s network port can also be used for interfacing to a GigE Vision® camera. This requires a MIL installation with the MIL System for GigE Vision selected. The use of the port for GigE Vision® also requires installing the Intel Network Adaptor Driver available from <https://downloadcenter.intel.com/>. Its optimum use for GigE Vision® requires additional configuration explained in the Configuring your GigE Vision camera and Gbit Ethernet network adapter section under the Matrox GigE Vision driver section of the MIL Hardware-specific Notes in MIL Help.

 

1.1      Summary of new features

The following features are new for this release:

·         MIL can now allocate a Matrox Indio system.

·         Expanded the API to support auxiliary signal on Matrox Indio.

·         Added support for hardware-assisted PROFINET LED on Indio. It is off if hardware-assisted PROFINET is disabled in MilConfig.  It is red if hardware-assisted PROFINET is enabled but no connection is established with PLC.  If connection is established, it is off.

1.2      API enhancements

·         MsysAlloc, M_SYSTEM_INDIO

To use Matrox Indio and have access to all its auxiliary I/O signals, you must allocate it as a MIL Indio system (M_SYSTEM_INDIO), using MsysAlloc(). This allocation opens communication with Matrox Indio and allows MIL to use its resources. More than one process (executable) on Matrox Indio can allocate a MIL Indio system.

·         Msys…

The auxiliary I/O signals can be configured and used in a similar fashion as those used in a Matrox 4Sight GPm Host platform. Refer to the MIL Online documentation for MsysControl() and MsysInquire(), when the selected MIL system is set to Host system.

To configure the auxiliary signals, use the MIL MsysControl() function with the M_IO..., control types. To use an auxiliary input signal as a trigger source, use the MsysControl() or MsysIoControl() function with an M_..._TRIGGER_SOURCE control type. Your application can also act upon and interpret the state of an auxiliary input signal. To poll the state of an auxiliary input signal, use MsysInquire() with M_IO_STATUS. The state of an auxiliary input signal can also generate an interrupt; to do so, use MsysControl() with M_IO_INTERRUPT_STATE and then use MsysHookFunction() with M_IO_CHANGE to hook a function to this event (that is, to set up an event handler).

In addition, there are 16 timers available. Use MsysHookFunction() with M_TIMER_START or M_TIMER_END to hook a function to the respective start or end of a timer.

With the above and noted exception for MsysAlloc(), all additional Matrox Indio functionality is documented as being only applicable to Matrox 4SightGPm in the MIL Online help.

·         MsysIo…

The MsysIo module is supported on Matrox Indio in a similar fashion as a Matrox 4Sight GPm platform; except to initiate a MIL I/O command list with the MsysIo module, the MIL system identifier should be of a M_SYSTEM_INDIO that was previous allocated using MsysAlloc().. Refer to the MIL Online documentation for MsysIo… when the selected MIL system is set to Host system.

·         Mcom…

The Mcom module is supported on Matrox Indio in a similar fashion as a Matrox 4Sight GPm platform except to initiate communications using the Mcom module, the MIL system identifier should be of a M_SYSTEM_INDIO that was previous allocated using MsysAlloc().Refer to the MIL Online documentation for MsysIo… when the selected MIL system is set to Host system.

 

2.   Known limitations

 

·         The MIL industrial communication module allows only one PROFINET device to be allocated.  Therefore, if you have more than one Matrox Indio board installed in a system, you can only enable one for hardware-assisted PROFINET communication through the MilConfig utility (in the “Communication” section).

·         When selecting Matrox Indio as the default system in MilConfig, the MIL examples that use MdigAlloc() will produce MIL errors as the Matrox Indio system does not directly support video capture. If you need to grab with the Gigabit Ethernet port on the Matrox Indio, you must have and select the GigE Vision system as the default system.

 

3.   MIL 10 support for Matrox Indio history

MIL 10 Update 53

·         Initial Release

MIL 10 Update nn

·         M_IO_FORMAT is an obsolete MsysInquire

 

·         Added inquire to current encoder position

This returns the current encoder position

MsysInquire(Sys, M_ROTARY_ENCODER_POSITION+M_ROTARY_ENCODERn, &Position)
Select “n” as 1 or 2 to choose the target encoder.
Position is MIL_INT.

·         Added inquire to the encoder position based on a signal event

This associates a latch with a rotary encoder.
MsysControl(Sys, M_SYS_DATA_LATCH_TYPE+M_LATCHm, M_ROTARY_ENCODERn)
Select “m” as 1 or 2 to choose the target latch storage.
Select “n” as 1 or 2 to choose the target encoder.

This will determine which signal will latch, in our case, the rotary encoder position.
MsysControl(Sys, M_SYS_DATA_LATCH_TRIGGER_SOURCE+M_LATCHm, LatchTriggerSource)
Select “m” as 1 or 2 to choose the target latch storage.
LatchTriggerSource is MIL_INT initialized with

-          M_AUX_IOi - with i from 8 to 15

-          M_TIMERj – with j from 1 to 16, on Indio.

This will determine which signal edge will latch the encoder position.
MsysControl(Sys, M_SYS_DATA_LATCH_TRIGGER_ACTIVATION+M_LATCHm, LatchTriggerActivation)
Select “m” as 1 or 2 to choose the target latch storage.
LatchTriggerActivation is a MIL_INT initialized with

-          M_EDGE_RISING

-          M_EDGE_FALLING

-          M_ANY_EDGE

This will activate (or deactivate) the given latch mechanism.
MsysControl(MilSystem, M_SYS_DATA_LATCH_STATE+M_LATCHm, LatchState)
Select “m” as 1 or 2 to choose the target latch storage.
LatchState is a MIL_INT initialized with

-          M_ENABLE

-          M_DISABLE

MsysGetHookInfo(EventId, M_SYS_DATA_LATCH_VALUE+M_LATCHm, LatchValue)
Select “m” as 1 or 2 to choose the target latch storage.
LatchValue is a MIL_UINT64 to return rotary encoder position latched

-          This MsysGetHookInfo call is be done in the scope of a hook function to M_IO_CHANGE if M_SYS_DATA_LATCH_TRIGGER_SOURCE was specified to be M_AUX_IOi.

-          This MsysGetHookInfo call is done in the scope of a hook function to M_TIMER_START or M_TIMER_END if M_SYS_DATA_LATCH_TRIGGER_SOURCE was specified to be M_TIMERj.