---------------------------------------------------- Precision MicroControl Corp. Motion Control API - Version 4.5.0 $Id: README 1042 2020-12-01 01:05:40Z brian $ ---------------------------------------------------- Contents ======== - About - Installation - What's New - Contacting Technical Support Installation ============ See the text file INSTALL for instructions on building and installating the Motion Control API under Linux. About ===== Included in this release is an installable kernel module that supports PMC's PCI-bus motion control cards (the MultiFlex PCI, DCX-PCI300, and DCX-PCI100 controllers), the high level application programming interface (API), a terminal interface program (dcxctrl), and gui interface sample (gcdemo). Information on how to build and install the MCAPI may be found in the file INSTALL. This release of the MCAPI has been built and tested on 2.4 and 2.6 versions of the Linux Kernel (both 32-bit and 64-bit). It is not intended for earlier kernel versions (i.e. 2.2, 2.0. 0.01) and may or may not even build on these earlier versions. Most of our development and testing was done on RedHat and Fedora distributions, MCAPI should build and worrk on other distros but we have not done any significant testing at the present time. What's New ========== Version 4.5.1 ------------- New features - Experimental support for UDP connections to Ethernet controllers Bug Fixes - Fixed problem with Ethernet controller not recognizing all available axes in some cases Version 4.5.0 ------------- New features - Version 4.5.0 of the MCAPI is cryptographically signed for Windws version 7, 8, 8.1, and 10. If you need support for an older version of Windows please see MCAPI 4.4.1 or earlier. - Several legacy controller (ISA bus) support files have been removed from the Windows installer (they have not been supported on Windows since Windows 2000). - The window position save/restore code for several of the support apps and sample programs has been made multi-monitor aware. - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.8g DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Fix for MCGetOperatingMode() not alsways correctly reporting Contour and Gain modes (bug #100257) - Fix for a problem building the Linux driver on kernel version 3.10 (bug #100278) - Fix for a problem building the Linux driver on kernel version 4.0+ (bug #100279) - Fix for a deprecated constant in Linux driver on newer kernel versions (bug #100280) - Fix for Linux build problem introduced by changes to GCC in version 4.9.0, the standard C macros __DATE__ and __TIME__ will generate an error and the error has to be explicitly disabled (bug #100281). - Fix for changes to the access_ok() changes that occured in kernel version 5.0 (bug #100298) Version 4.4.1 ------------- New features - Performance improvements for the MFX-ETH controller - Added a separate .NET assembly for 64-bit code (previous assembly was 32-bit only). - Added separate x86 and x64 build options to the C# demo program. By default the 64-bit executable will be installed on 64-bit versions of Windows. - .NET assemblies code siging reverted back from Authenticode to Strong Name which is better suited to an assembly and avoids potentially slow online certificate check. - Updated Linux package with support for latest /proc file system support in the device driver (kernel 3.11 and later). - Changed Linux driver install to make backups of mcapi.conf, network.conf, and the driver start/stop script if a previous version was installed (preserves local modifications). Bug Fixes - Fixes to several typos in the MCAPI 4.1.0 and 4.3.0 dynamic loading code (mcapi_dl.h and mcapi_dl.cpp). - Fixes to several bugs related to ASCII command parsing for the MFX-ETH controller. - Fixed bug in WinControl where the CTRL-B character was not being properly sent to the controller (CTRL-B enters single step mode). - Quieted several warnings under GCC. - A bug in MCTranslateErrorEx() in 64-bit builds where it would always return the error string "Unknown Error" has been fixed (bug #100244). Version 4.4.0 ------------- New features - Added support for Windows 8 and 8.1 (bug #100235) - The C++ dynamic linking code now returns different error codes for DLL not found (usually means MCAPI is not installed) and function not found (usually means installed version of MCAPI is too old for application) so programs can respond accordingly (bug #100201). - Added a new header file, mccl_cnc.h, with the CNC mnemonics used by the MultiFlex PCI/ETH and DCX-PCI300 controllers - Added support for the CNC MCCL mnemonics to the MultiFlex PCI/ETH and DCX-PCI300 configuration DLLs so that MCSpy will no correctly decode/display, - Added MCDecodeStatus() support for the user controllable status bits on the MultiFlex PCI and ETH - Cutting and pasting text within the WinControl window has been improved - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.8g DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - A problem with correctly reading the auxiliary status word on MultiFex controllers open in ASCII mode has been fixed (bug #100213). - Fixed a bug with hex mode display in MCSpy when debugging an application open in ASCII mode (bug #100214) - Fixed a bug with in MCSpy that caused it to not correctly remember the display warnings and hex mode settings (bug #100217) - The file associations for MCCL macro files to WinControl were broken in 64-bit installs (bug #100234), fixed now. - A bug in the max line length detection code used by MCDLG_DownloadFile() for MFX-ETH controllers has been fixed (#100238). - Fixed a bug with MCDLG_DownloadFile() not correctly handling continued lines on the MFX-ETH (#100237) - Fixed a bug with MCDLG_DownloadFile() not correctly handling escape characters in quioted strings (#100239) Version 4.3.0 ------------- New features - Added new low-level functions to allow aplication control of semaphores - pmclock() / pmcUnlock(), do a command and reply in a single atomic sequence - pmccmdrpyex(), and do varaiable lookups safely - pmcvarlookup() (bug #100194). - Improved the semaphore handling in the potentially slow MCIs... functions (e.g. MCIsStopped) so that other threads can run when these functions are called with a non-zero timeout. - Improved performance of device driver under 32-bit versions of Windows (problem introduced in ver 4.2.0). - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.8g DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Fixed a bug in MCSpy where the hex mode display was corrupted (bug #100184). - Corrected errors in the linux documentation for MCSetVectorVelocity() (bug #100198). - Controllers opened in ASCII mode when the controller had been left in hexadecimal display mode would crash the MCAPI, controllers opened in ASCII mode are now forced to decimal mode (bug #100202). - Installer bugs with 64-bit versions of Windows have been fixed (bugs #100134, and #100197) - Fixes for linux kenerl changes so that installer builds under recent Fedora and Ubuntu distros - Fixed a problem with MCEnableCompare() not correctly disabling the compare operation when count was set to -1 (bug #100190). - Fixed a problem with 32-bit code crashing on Windows 7 64-bit. Version 4.2.1 ------------- New features - Support for MultiFlex Ethernet controller under Linux. - Linux release builds under recent Linux version (e.g. Fedora 17). - Linux settings for MultiFlex Ehternet are stored in /etc/mcapi/network.conf Known Issues - gcdemo sample program will not yet build under gnome 3 Version 4.2.0 ------------- New features - Improved support for Windows 7, including 64-bit versions - Improved crash support for developers - easier now to exit frem and restart crashed motion apps - Improved ASCII download performance for the MultiFlex Ethernet controller - Added a timestamp (bug #100056) to MCSpy and enhanced color coding of output - Lots of internal improvements - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.8a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Fixed a bug in the demo programs where cycling a motor with short fast moves can cause the cycle mode to stop (bug #100177). - A problem with multi-threaded support that could lead to corruption has been fixed (bug #100174). Version 4.1.2 ------------- New features - None - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.7a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - A work-around for a problem with a race condition in the MultiFlex ASCII interface firmware on the controller has been implemented. The race condition can result in erroneous reply values when using using the ASCII interface (bug #100175). This work around should fix any firmware version. Version 4.1.1 ------------- New features - 64-bit device driver is now digitally signed to allow it to install under Windows Vista 64-bit editions (bug #100095). - Windows pci-bus device driver improvements to allow it to handle PnP rebalance resources requests more gracefully. - For OEMs who install the MCAPI being invoking the MCAPI setup in silent mode from within their installation the MCAPI will now do a minimal install - all the drivers and DLLs that are needed but no programs, samples, or help files (bug #100173). The end user can re-run the MCAPI installer at any time to add these features if desired. - The following motion controller firmware versions are included in this release: MultiFlex PCI: 4.7a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Fix for possible data corruption when a multi-threaded application is talking to multiple controllers using the same interface type - ASCII or binary (bug #100174). - A problem on windows where an application that closes a handle and then re-opens a handle to the same controller would get garbage data for some API functions has been fixed (bug #100168). - Addressed a problem where invalid handles could cause a program crash instead of a properly handled error (bug #100165). - Lot's of improvements in communications reliability with the MultiFlex ETH, including detection of dropped connections (e.g. cable pulled). - A bug that prevented connecting to the ethernet controller from a 64-bit app running on a 64-bit version of Windows has been fixed. You will need to remove any previous ethernet controllers using the control panel applet and then re-add them using the control panel applet (bug #100166). - Documentation for MCGetJogConfigEx(), MCSetJogConfigEx(), and MCJOGEX were left out of the Windows online Reference (bug #100162). - Problems with typeface breakage in the Windows online reference guide were corrected (bug #10061). - An issue with the Visual Studio compiler generating a C4076 warning when using the dynamic linking code for the MCAPI DLL has been fixed (bug #100143). - Fixed a problem with opening multiple controllers under Linux. - Fixed a problem with semaphore handling under linux. Version 4.1.0 ------------- New features - Added support for strobe output mode for the output compare function. - Code now builds and installs on Ubuntu distros. - The following motion controller firmware versions are included in this release: MultiFlex: 4.5a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Code now builds cleanly on recent versions of Fedora/recent kernels. - Cleaned up some warnings generated by the GCDemo sample when using recent versions of the FGCC compiler. Version 4.0.5 ------------- New features - The following motion controller firmware versions are included in this release: MultiFlex: 4.5a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - In release 4.0.4 we started installing a copy of the MCAPI .NET assembly to the global assembly cache to make it easier to distribute .NET programs that use the MCAPI assembly. Unfortunately, for non-,NET users (the vast majority) the installer would fail if the .NET runtime was not installed. Rather than force users to install .NET we have stopped installing to the global assembly cache. The MCAPI .NET assembly is still installed to the examples directory and you are free to distribute with your application (bug #100132). - Fixed problem with broken right-click context menus for MCCL files (bug #100133). Known Issues - During testing of the previous 4.0.4 release a bug in earlier 4.0.x versions of the device driver was found. This bug can sesult in a "blue-screen" during upgrade installs of the Motion Control API on Windows. If you get a blue-screen simply re-start the PC and re-run the MCAPI 4.0.5 setup, you should be fine. If you still have problems you can go to the Windows driver folder (typically C:\Windows\SYSTEM32\Drivers) and delete mcapi.sys. Reboot and run setup again. - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is limitation of the Linux getpid() function. Simply open a separate handle for each thread. Version 4.0.4 ------------- New features - The .NET assembly is now a signed, strong name assembly (rfe #100099). - The .NET assembly is now installed to the global assembly cache instead of being left in the "Motion Control" folders under "Program Files" (rfe #100115). - Added support to the .NET assembly for MCEnableInterrupts() and updated online help (rfe #100123). - A test program, apitest, has been added to the Linux tarball to provide users with a more thorough way of validating the MCAPI build on their system (rfe #100126). - The following motion controller firmware versions are included in this release: MultiFlex: 4.5a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Added a missing gain field to the .NET FilterEx structure (bug #100122). - An error in the error return code from MCWaitForIndex() has been fixed (bug #100111). - A problem with MCGetDigitalIOEx() causing applications to hang or act erratically has been fixed (bug #100112). - The EnableDigitalIO() method in the .NET assembly was mis-named (the 'MC' prefix was not removed), this has been corrected (bug #100124). - The serial port driver was not correctly closing the serial port when the API handle was closed (bug #100108). - Changes to the Linux kernel beginning with version 2.6.19 broke the mcapi device driver, the sources have been changed to build correctly on old or new kernel version (bug #100117). - A problem with WinCtl double spacing lines when communicating with a DCX-PCI controller is fixed (bug #100094). - Clean up of un-necessary code in CWDemo (bug #100098). - Fixed a bug in the Windows device driver that could cause a blue screen of death during an upgrade install (#100127). See Known Issues (below) for more information. Known Issues - During testing of the 4.0.4 release a bug in earlier 4.0.x versions of the device driver was found. This bug can sesult in a "blue-screen" during upgrade installs of the Motion Control API on Windows. If you get a blue-screen simply re-start the PC and re-run the MCAPI 4.0.4 setup, you should be fine. If you still have problems you can go to the Windows driver folder (typically C:\Windows\SYSTEM32\Drivers) and delete mcapi.sys. Reboot and run setup again. - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is limitation of the Linux getpid() function. Simply open a separate handle for each thread. Version 4.0.3 ------------- New features - The linux driver makefile now supports building the kernel module for any installed kernel, previously it would only build for the currently running kernel (rfe #100079). See the file INSTALL for details. - Upgraded MultiFlex PCI firmware to version 4.5a (rfe #100084). - A QUIT command has been added to the Linux dcxctrl utility so that the user can use EXIT or QUIT to exit the utility (rfe #100092). - The following motion controller firmware versions are included in this release: MultiFlex: 4.5a **NEW** DCX-PCI300: 3.2a DCX-PCI100: 1.0a Bug Fixes - Fixed problem of MCGetFilterConfigEx() (and older MCGetFilterConfig()) not reporting Low Speed mode correctly (bug #100076). - Fixed problem where multiple pathways to hand position deadband and delay at target could result in inconsistent operation (bug #100081). - Extended timeout period in Windows device driver for downloading of firmware to PCI bus controllers. This fixes a rare problem on heavily loaded industrial - Fixed problem with the hyperlink in the standard about box used by the MCAPI components that would cause it to fail to respond when clicked on by the user (bug #100061). The hyperlink is now underlined to make it stand out better (rfe #100089). - Fixed problem of Borland C++ Builder not reporting correct VERSION INFO in its About Box, changed recommended way of calling MCDLG_AboutBox() from Borland C++ Builder apps (bug #100088). - A problem with the OPEN command in the Linux dcxctrl utility would cause it to seg fault if there was no currently open controller, this has been fixed (bug #100083). - During testing a memory leak was found in the MCCLose() function under Windows (a critical section wasn't getting deleted) this has been fixed (bug #100093). Known Issues - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. - Unlike Windows, MCAPI handles should not be shared among threads in Linux. This is limitation of the Linux getpid() function. Simply open a separate handle for each thread. Version 4.0.2 ------------- New features - A preliminary version of html-based documentation has been included for Linux users in this release. Linux users will need to have the doxygen utility installed (available pre-packaged for most distros) and should run the following command in the mcapi library folder: $doxygen doxygen.conf This is a work in progress, but is already fairly complete. Eventually this is intended to be used as online help on all platforms. - MultiFlex firmware upgraded to version 4.3a (rfe #100063). - Tweaks to the installer to allow installation on beta versions of Windows Vista. Vista is still in beta and we can will only limited support at this time, that said MCAPI does install and run on the current Vista beta with only minor cosmetic glitches. - The following motion controller firmware versions are included in this release: MultiFlex: 4.3a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Note that if you are upgrading from a previous version of MCAPI your controller firmware will not automatically be upgraded. Upgraders can doownload the new firmware from the PMC website and install it with the Flash Wizard. Bug Fixes - A performance enhancement to version 4.0.0 broke the automatic setting of the capture buffer size on the MultiFlex, DCX-PCI300, and DCX-PCI100 - this in turn broke the servo tuning application (bug #100054). - The Output Offset (00) mnemonic was missing from the ASCII command tables of the MultiFlex and DCX-PCI300, this mainly impacted the command display window of MCSpy (bug #100057). - The Windows device driver event log code now includes additional useful address information in the data portion of the event, in response to bug #100055. Known Issues - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. Version 4.0.1 ------------- Bug Fixes - A problem with the manifest file that prevented the 64-bit version of the Joystick demo program from running has been fixed (#100030). - Internal changes to the memory access functions were made to provide better usability for OEMs (#100022 and #100026). - Fix about box in title in CWdemo so it's consistent across 32-bit and 64-bit builds (bug #100029). - Information was added to the MCSpy help warning Windows XP 64-bit users that they must use the 64-bit version of MCSpy to debug 64-bit applications, and the 32-bit version of MCSpy to debug 32-bit applications (bug #100038). - MCSpy (64-bit) shortcut was not being installed in the Motion Control API menu on 64-bit systems (bug #100031). - 64-bit installs should include the 32-bit version of MCSpy so users can Spy on 32-bit apps (bug #100032). - Test code was left in the Abort Button method for the C# Demo, breaking the abort processing (bug #100027). - C/C++ Demo programs were missing the Visual Studio 2005 project files and 64-bit manifests, preventing the user from building the 64-bit versions of these files (bugs #100040 and #100041). - Console demo was missing windows make files which were added to support 64-bit builds (bug #100042). - Control Panel Applet was not using XP theme on 64-bit installations (bug #100034). - Updated Control Panel Applet online help (#100035). - For Linux builds the MCAPI version number from the configure.in is now used by all the child Makefile.am files, manual changing of this value in the makefiles is no longer required (#100043). - A problem with stale configuration data corrupting the MultiFlex model configuration in certain rare OEM settings has been corrected (#100048). - Surrounded some Microsoft specific pragmas so Linux builds with older versions of GCC don't generate warnings (#100044, #100045, and #100046). Known Issues - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. Known Issues - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. Version 4.0.0 ------------- New Features - Support for 64-bit versions of Windows and Linux is included in this release. Note that status interrupts are NOT supported on 64-bit Windows in this release. - Support for .NET has been added via the assembly McapiNet.DLL. .NET 2.0 and Visual Studio 2005 are required to use this assembly. See the included C# demo program for details. - A C# demo program has been added. It uses the new McapiNet.DLL .NET assembly for MCAPI. - The MCDLG library is now automatically initialized when it is loaded, therefore it is no longer necessary to call MCDLG_Initialize() before using the library. The MCDLG_Initialize() function call has been left in the DLL to support old code that expects to be able to call it (it now does nothing). - The internal error handling of the MCAPI has been completely re-worked, resulting in more consistent and usable error reporting. - The internal display logic of WinControl has been reworked to speed up text display, especially on older PCs. - Added MCGetDigitalIOEx(), can read back digital I/O status from 32 channels at once, or one at a time like MCGetDigitalIO() (BR #121). - The C/C++ dynamic linking source code for the MCAPI and MCDLG libraries (mcapi_dl.h/mcapi_dl.cpp and mcdlg_dl.h/mcdlg_dl.cpp) has been reworked so that they may also be used on Linux (BR #124). - Internally MCAPI now handles functions that require more than one MCCL command, such as reading values from controller memory, more efficiently. The result is an approximate 10% speed boost for these functions. - The Linux startup script now backgrounds the firmware loading task, allowing systems to boot much faster. - Linux driver support has been tweaked to support Suse distros out of the box, similar to existing support for Fedora Core. - Added a man page for dcxctrl under Linux. - The following motion controller firmware versions are included in this release: MultiFlex: 4.2a DCX-PCI300: 3.2a DCX-PCI100: 1.0a Note that if you are upgrading from a previous version of MCAPI your controller firmware will not automatically be upgraded. Upgraders can doownload the new firmware from the PMC website and install it with the Flash Wizard. Bug Fixes - A bug in pmcrpy() caused MCSpy to incorrectly display the packets read in from the controller (packets were decoded as ASCII packets, not binary) - A new Linux makefile has been written for the Linux console app that should allow the sample to be built more reliably on a wider range of Linux configurations (BR #125). - A an MCSpy problem decoding binary commands where one of the commands had a string argument (subsequent commands were incorrectly decoded) has been fixed (Bug #100001). - The Linux startup script was not starting firmware correctly if more than one controller was installed, dcxctrl was missing a "--board #" option. - A problem with initialization of DCX-PCI controllers in fast PCs running Linux has been fixed. - The Linux MCAPI build wasn't creating unique semphores for each controller, this has been fixed (Bug #100002). - Changes to the controller device I/O should make the linux port of MCAPI more stable and reliable. Known Issues - If you have problems uninstalling the Motion Control API on 64-bit versions of Windows got to the Windows control panel, select "Add or Remove Programs" and remove from there. We have seen a problem uninstalling on some machines by re-running SETUP.EXE. - Status interrupts are not supported in this release under 64-bit versions of Windows, nor are they supported in Linux. Version 3.5.2 ------------- New Features - Configuration DLLs now check to see if the controller firmware reports the recording memory size and uses that value if present, otherwise they fall back to the default value. This allow the MCAPI to support firmware enhancements to the recording memory without requiring an MCAPI change Version 3.5.1 ------------- New Features - Modified pmcgetramex() and pmcputramex() to move data 4 bytes at a time as much as possible, greatly speeds up transfers over external buses (such as ethernet). Previously both functions moved data one byte at a time. - Build is from shared Windows/Linux source tree, Linux package to be co-released at the same time Contacting Technical Support ============================ Precision MicroControl Corp. 2075-N Corte del Nogal Carlsbad, CA 92011 USA Phone: 760-930-0101 Fax: 760-930-0222 E-mail: support@pmccorp.com Web: www.pmccorp.com Ftp: ftp.pmccorp.com