The Heidenhain Plugin allows to continually Poll errors, COM-functions as well as memory areas of Heidenhain PLCs.
Tip |
---|
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. |
Note |
---|
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.
Start a powershell or command prompt with elevated permissions.
Navigate to the install directory of the Heidenhain plugin
Run
.\as_admin_registerx64.bat
Info |
---|
If you want to unregister the dll again, run |
Tip |
---|
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.
Info |
---|
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.
Code Block |
---|
<?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> |
Setting | Description | ||||
---|---|---|---|---|---|
CNCType | Defines the Type of PLC. Possible types are:
Note: Currently only DNC_CNC_TYPE_TNC6xx_NCK is used in production | ||||
Protocol | Connection protocol to use. Allowed values are:
Note: Currently only DNC_PROT_RPC and DNC_PROT_TCPIP is used in production | ||||
HostName | IP-Address/Hostname of the PLC. Needs to be reachable by the host where the Edge is running on. | ||||
Port | Port of the PLC to connect to. | ||||
OnlySendChanges | DefDefines, whether only changes in data should be transmitted, or each value at each polling cycle. This setting applies to all the defined data. If you have some data which you want to send with OnlySendChanges enabled and some where you have OnlySendChanges disabled, it is advised to load a second plugin. | ||||
Data | The data configuration section contains all the data definitions you want to read from the PLC. You can define the following data types to read. Unless noted otherwise, you can specify each data point only once. PollingTimeMs: For all data points, you can add a setting "PollingTimeMs" to specify the polling interval in milliseconds. You may set PollingTimeMs to "-1" - than the corresponding data point is only read once at the startup of the plugin.
| ||||
DataEntryBlocks | Besides the above information coming directly from the COM interface, you may also directly access DataEntries in the PLCs memory. You can create one or several DataEntryBlock-elements inside the DataEntryBlocks-section. The DataEntries inside one Block are sent in one combined messages (this means they are visible in one line in the dataset editor). | ||||
DataEntryBlock | Define one or several blocks for DataEntries. Per DataEntryBlock you might define:
Please note, that you can't mix AccessModes inside a DataEntryBlock. Paths from different Access-Locations need to be configured into different blocks! | ||||
Possible values for DataEntry access modes
Code Block |
---|
<!--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--> |