Heidenhain Plugin

The Heidenhain Plugin allows to continually Poll errors, COM-functions as well as memory areas of Heidenhain PLCs.

As opposed to other Senseforce Edge plugins, the Heidenhain plugin is not directly delivered with the Senseforce Edge main application.

Contact Senseforce to get access to the Senseforce Heidenhain PLC plugin.

Due to limitations in the Heidenhain communication protocol, the plugin is only available for Windows 7 and Windows 10 64 Bit operating systems.

Installation

The Heidenhain Plugin is distributed as Windows installer as well as archive, containing the plugin binaries.

Using the Windows Installer

When using the Windows installer, an install wizard will guide you through the installation.

It is advised to install your Senseforce Edge main binaries first. Secondly, install the Heidenhain plugin into the folder "[YourEdgeFolder\Plugins\Ingress\Heidenhain". (Eg. in the Screenshot above, the Senseforce Edge main application was installed to C:\Program Files\Luna\.).

Finish the installation wizard and your binaries as well as a set of default configurations will be installed to the specified location.

For best user experience, copy the default configurations into the folder, where your configurations for the other plugins are located. (If you run the Edge as console application: [Edge Main Folder]/configs/configurations/InputPlugins/Heidenhain; if you run it as Service, it's C:/ProgramData/Senseforce/Luna Data/[YourServiceName]/configurations/InputPlugins/Heidenhain

Using the archive

Instead of using the Windows installer, you might use the plugin distributed as archive. Simply unzip the plugin files to your desired locations. It is advised to unzip it to the following folder: [YourEdgeFolder\Plugins\Ingress\Heidenhain.

The archive also contains a set of default configurations. For best user experience, copy the default configurations into the folder, where your configurations for the other plugins are located. (If you run the Edge as console application: [Edge Main Folder]/configs/configurations/InputPlugins/Heidenhain; if you run it as Service, it's C:/ProgramData/Senseforce/Luna Data/[YourServiceName]/configurations/InputPlugins/Heidenhain

Registering the heidenhain dll

As the Heidenhain plugin makes use from COM interops, the dll providing these functionalities needs to be registered.

  1. Start a powershell or command prompt with elevated permissions.

  2. Navigate to the install directory of the Heidenhain plugin

  3. Run .\as_admin_registerx64.bat

If you want to unregister the dll again, run .\as_admin_unregisterx64.bat

This manual registration process is only required for the installation Using the archive. If you use the Windows installer, you don't need to manually register the dll.

Configuration

The following section describes how to configure the HeidenhainSettings.xml - the main configuration file for the Heidenhain plugin.

The DataMappings.xml is not described here. Use the default DataMappings.xml for most use cases.

HeidenhainSettings.xml

The HeidenhainSettings.xml is the main configuration file for the plugin and defines the network location of the PLC as well as which data should be read.

Default configuration

Find a default configuration file below, as well as descriptions of what and how to configure in the table below.

<?xml version="1.0" encoding="utf-8" ?>
<HeidenhainConfiguration>
  <!-- Specify connection configuration -->
  <Connection>
    <!-- Setting the type of the machine to connect to-->
    <!-- Possible values are: DNC_CNC_TYPE_ + ATEKM, ITNC, MILLPLUS, MILLPLUSIT, TURNPLUS, MILLPLUSIT_NCK, MANUALPLUS_NCK, ATEKM_NCK, TNC320_NCK, GRINDPLUS_NCK, TNC6xx_NCK, AR6000_NCK, CNCPILOT6xx_NCK, TNC128_NCK, GRINDPLUS640_NCK -->
    <CNCType>DNC_CNC_TYPE_TNC6xx_NCK</CNCType>
    <!-- Setting the protocol to use for the connection-->
    <!-- Possible values are: DNC_PROT_ + LSV2, TCPIP, COM, RPC, DIO -->
    <Protocol>DNC_PROT_RPC</Protocol>
    <HostName>192.168.100.11</HostName>
    <Port>19003</Port>
  </Connection>
  
    <OnlySendChanges>true</OnlySendChanges>
  
    <Data>
    <NcUpTime>
      <PollingTimeMs>1000</PollingTimeMs>
    </NcUpTime>
    <MachineUpTime>
      <PollingTimeMs>1000</PollingTimeMs>
    </MachineUpTime>
    <MachineRunningTime>
      <PollingTimeMs>1000</PollingTimeMs>
    </MachineRunningTime>
    <SpindleRunningTime>
      <PollingTimeMs>1000</PollingTimeMs>
      <Timers>
        <TimerId>2</TimerId>
        <TimerId>1</TimerId>
      </Timers>
    </SpindleRunningTime>
    <DncMode>
      <PollingTimeMs>1000</PollingTimeMs>
    </DncMode>
    <ExecutionMode>
      <PollingTimeMs>1000</PollingTimeMs>
    </ExecutionMode>
    <ExecutionPoint>
      <PollingTimeMs>1000</PollingTimeMs>
    </ExecutionPoint>
    <OverrideInfo>
      <PollingTimeMs>1000</PollingTimeMs>
    </OverrideInfo>
    <ProgramStatus>
      <PollingTimeMs>1000</PollingTimeMs>
    </ProgramStatus>
    <CutterLocation>
      <PollingTimeMs>1000</PollingTimeMs>
      <Channels>
        <Channel>0</Channel>
        <Channel>1</Channel>
      </Channels>
    </CutterLocation>
    <DataEntryBlocks>
      <DataEntryBlock>
        <Password>password</Password>
        <AccessMode>DNC_ACCESS_MODE_PLCDATAACCESS</AccessMode>
        <PollingTimeMs>5000</PollingTimeMs>
        <Paths>
          <DataEntry>
            <Path>\TABLE\SUPPLY3\P_S6_40\'65000'\L_KDR</Path>
            <Unit>Metric</Unit>
          </DataEntry>
        </Paths>
      </DataEntryBlock>
      <DataEntryBlock>
        <Password>password</Password>
        <AccessMode>DNC_ACCESS_MODE_PLCDATAACCESS</AccessMode>
        <PollingTimeMs>1000</PollingTimeMs>
        <Paths>
          <DataEntry>
            <Path>\PLC\program\main\apiVersion</Path>
            <Unit>Metric</Unit>
          </DataEntry>
          <DataEntry>
            <Path>\PLC\program\main\active</Path>
            <Unit>Metric</Unit>
          </DataEntry>
        </Paths>
      </DataEntryBlock>
    </DataEntryBlocks>
    <Errors>
      <PollingTimeMs>1000</PollingTimeMs>
    </Errors>
    <State>
      <PollingTimeMs>1000</PollingTimeMs>
    </State>
    <VersionComInterface>
      <PollingTimeMs>1000</PollingTimeMs>
    </VersionComInterface>
    <ChannelInfo>
      <PollingTimeMs>1000</PollingTimeMs>
    </ChannelInfo>
    <AxisInfo>
      <PollingTimeMs>1000</PollingTimeMs>
    </AxisInfo>
    <Sik>
      <PollingTimeMs>1000</PollingTimeMs>
    </Sik>
    <NcVersion>
      <!--You may set negative values for PollingTime - to tell the edge to only poll it once during startup.-->
      <PollingTimeMs>-1</PollingTimeMs>
    </NcVersion>
  </Data>

  <!--Specify file for message mapping-->
  <Mappings>
    <FilePath>$(LunaAppDataPath)configurations/InputPlugins/Heidenhain</FilePath>
    <FileName>DataMappings.xml</FileName>
  </Mappings>

  <!--Specify file for logging-->
  <Logger>
    <!--LogLevel: Debug,Information,Warning,Error,Critical,None-->
    <LogLevel>Information</LogLevel>
  </Logger>
</HeidenhainConfiguration>

Possible values for DataEntry access modes

        <!--Valid values for AccessMode are:
        DNC_ACCESS_MODE_DEFAULT,
        DNC_ACCESS_MODE_USR_PRIVATE,
        DNC_ACCESS_MODE_OEM,
        DNC_ACCESS_MODE_SYS,
        DNC_ACCESS_MODE_INSPECT,
        DNC_ACCESS_MODE_DIAGNOSTICS,
        DNC_ACCESS_MODE_PLCDEBUG,
        DNC_ACCESS_MODE_USR,
        DNC_ACCESS_MODE_MONITOR,
        DNC_ACCESS_MODE_DSP,
        DNC_ACCESS_MODE_DNC,
        DNC_ACCESS_MODE_SCOPE,
        DNC_ACCESS_MODE_ALL,
        DNC_ACCESS_MODE_AUTOMATIC,
        DNC_ACCESS_MODE_PLC,
        DNC_ACCESS_MODE_IPODATAACCESS,
        DNC_ACCESS_MODE_OEM_ENCRYPTED,
        DNC_ACCESS_MODE_NONE,
        DNC_ACCESS_MODE_TESTUTILITY,
        DNC_ACCESS_MODE_SENDKEY,
        DNC_ACCESS_MODE_AXESPOSITIONSTREAMING,
        DNC_ACCESS_MODE_SPLCDATAACCESS,
        DNC_ACCESS_MODE_HWSDATAACCESS,
        DNC_ACCESS_MODE_TABLEDATAACCESS,
        DNC_ACCESS_MODE_PLCDATAACCESS,
        DNC_ACCESS_MODE_GEODATAACCESS,
        DNC_ACCESS_MODE_CFGDATAACCESS,
        DNC_ACCESS_MODE_GEOSIMDATAACCESS-->

Last updated