This highly configurable CNCnetPDM device driver for Siemens Sinumerik 840D controllers with OPC classic enables you to monitor and output machine-, process- and quality data from machines with these controllers. It also allows you to change or write parameters and variables on these devices. To find out which OPC standard is used by your device follow these instructions.
You can dynamically define your own set of items (up to 30) that can be enabled and disabled on a per machine basis by an INI file that is automatically created with reasonable default values for each machine configured. This INI file also allows you to define your own names for every tag.
To directly read/write data from/to machines with Sinumerik 840D controllers connected to CNCnetPDM with your applications you can use our free Open Source Client (C-Sharp)
FIG 1: Sinumerik 840D CNC
PREREQUISITE
Make sure that you get data from the controller with our OpcDA.SimpleClient utility.
This device driver requires the most recent version of CNCnetPDM and also works with a free license. However, in this mode you only get output for the first item configured in your INI file. With a valid license you are able to output the result of up to 30 functions per reading cycle, see licensing for details.
Download the Sinumerik OPC classic device driver, extract all content of sinumerikda_dll.zip into the folder where you have CNCnetPDM installed.
Edit CNCnetPDM.ini and add a new device as described in the quick start guide point 7. If you already have an entry in section [RS232] for a machine with a Sinumerik controller you can simply copy and paste this line and change its content.
FIG 2: Configure Sinumerik device driver in CNCnetPDM.ini
For machines with Sinumerik 840D controllers you only have to change the last parameter (1) to sinumerikda.dll. Of course you also have to make sure that IP Address or DNS Hostname of your controller are correct.
USAGE
Start CNCnetPDM as user ‘auduser’ (Shift key + right click CNCnetPDM.exe -> Run as different user), foreground program is sufficient (Start thread)
CNCnetPDM automatically copies the original sinumerikda.dll and appends the machine number as configured in the INI file, e.g. sinumerikda_1000.dll for machine 1000.
In addition an INI file with the same name is automatically created by the device driver, e.g. sinumerikda_1000.ini for your first machine.
Double click CNCnetControl, if your device number is 1000 and the device name is SINUMERIK #2 the output should be similar to the one below::
FIG 3: CNCnetControl (Sinumerik 840D)
Here the machine (1) shows up as connected (2) which is good. On the right side (3) you see the acquired data:
The line starting with O contains items defined in the INI file of the device that should be output to section 1. If you didn’t change the INI file you get something like the following:
Every item has a description followed by its value. All descriptions and values are delimited by pipe ‘|’ symbols. This allows CNCnetPDM to create a database record for every item.
With an unmodified INI file the initially configured items are:
ID
NAME
DESCRIPTION
0
AUTOM
Automatic mode (numeric)
1
PRGST
Program status (numeric)
2
PARTC
Part counter (numeric)
3
STATN
OEE Device state (numeric)
4
STATT
OEE Device state (text)
5
MODEN
Device mode (number)
6
MODET
Device mode (text)
7
PRGSN
Program state (number)
8
PRGST
Program state (text)
9
PRGMN
Name of the selected program
10
STOPC
Stop condition
11
CHANS
Channel status
12
TOOLN
Tool number
13
SPDSP
Spindle speed
14
OVRSP
Override spindle percent
15
FEEDR
Actual feed rate
16
OVRFD
Override feed
17
PARTC
Actual part count
18
PARTR
Required parts
19
MFUNC
Active M functions
20
RVAR1
Value of R variable 1
21
RVAR2
Value of R variable 2
FIG 4: IDs, names and description of items
SETUP BACKGROUND SERVICE
To run CNCnetPDM as a background service for controllers with OPC Classic the service mandatorily has to run under the ‘auduser’ user account. To setup a CNCnetPDM background service proceed as follows:
Right click CNCnetPDM, select ‘Run as Administrator’
Click button [Install]
In the following dialog, section Service Account enter the name of your PC followed by a backslash and username auduser e.g. TESTPC\auduser
Enter the password for user auduser twice and click button [Ok], the dialog closes. Do not start the service.
As user ‘auduser’ does NOT have the right to ‘Log on as a service’ one additional step is needed.
Open a command prompt with elevated privileges, type in 'secpol.msc' and press enter.
Navigate to Security Settings -> Local Policies -> User Right Assignment.
Open ‘Log on as a service’ and add user ‘auduser’.
Apply the updated security settings by typing in 'gpupdate /force' followed by enter.
Now you should be able to start the background service without any issues.
This device driver enables to dynamically add, group, enable or disable items and change their names. The INI file automatically created by the device driver for every machine contains sections that allow you to control its behavior.
Section [GENERAL] contains information about global parameters used by the driver on startup, please only change the number from Alive command = 0 to another number if your controller does NOT reply to command ‘/Bag/State/opMode’. Use our test program to check if you can read this OPC item.
Commands defines the number of OPC commands you’d like to execute, maximum value = 30.
OPC Items you query are organized in sections e.g. [2]. Every section contains entries where you can define names and parameters for a specific OPC item.
Description of the numeric sections:
Entry
Description
[0]
Section identifier, numbers starting with 0 are queried
Active
If you set this to 0 the command is not executed
Name
A short name (max 5 characters) to describe the item e.g. STATN for status number
Comment
A comment that describes the command (optional)
Command
OPC command to be executed e.g. ‘/Channel/State/progStatus’ for NC program status. The command ‘cnc_oeestate’ executes several OPC commands and calculates output relevant for OEE, see section ‘Output item’ and chapter ‘Commands’ below.
Output item
For normal OPC commands like ‘/Channel/State/stopCond’ this is NOT needed. Only for command ‘cnc_oeestate’ you can enter the values described in chapter ‘Commands’ below.
Output section
You can output data to 3 sections that may contain up to 256 characters. 1 goes to section ‘O’, 2 to ‘A’ and 3 to ‘F’. If data in one section exceeds the maximum length you can send items to a different section. Make sure you have entries CollectOrders, CollectFeeder and CollectQuality enabled (=1) in CNCnetPDM.ini.
FIG 5: Description of a device INI file section
Note: To change commands, switch items on or off or alter its name while CNCnetPDM is running open the INI file with a text editor such as notepad, make the desired changes and save the file. To apply the changes immediately you can click on the machine in CNCnetControl on the left side followed by clicking buttons ‘Close’ and ‘Open’ above the section ‘Devices’.
COMMANDS
Here you can find information about commands and output items that can be used with this driver. In general you can use all commands supported by Sinumerik 840D controllers with OPC classic. A list of items that typically can be queried from these controllers is included in the driver package. See also the ‘SINUMERIK 840D Parameter Manual’ for details or contact us if you need help.
Command cnc_oeestate
This special command is not a real OPC item like ‘/Channel/State/progStatus’ for NC program status. It executes several OPC commands and calculates output relevant for OEE. It also translates numeric output of specific OPC queries into text.
COMMAND
OUTPUT ITEM
NOTES
cnc_oeestate
statenumber
Numeric OEE state of the device (2 = producing, 3 = manual, 4 = interrupted, 5 = error)
cnc_oeestate
statetext
State of the device as text (producing, manual, interrupted, error)
cnc_oeestate
modenumber
Numeric running mode of the controller (0 = JOG, 1 = MDA, 2 = AUTO
CNCnetPDM for Sinumerik 840D controllers with OPC classic also supports writing and changing of data on these devices from a remote PC. Although writing of ALL writable OPC items is supported it is highly recommended to start with simple commands like changing ‘R variables’. To do so proceed as follows:
With an unmodified INI file for a controller CNCnetPDM queries two ‘R variables’, section [20] = ‘R variable 1’, section [21] = ‘R variable 2’. To change the value of these 2 variables CNCnetPDM has to be running and you should see data for RVAR1 and RVAR2 via CNCnetControl, section ‘F’.
To change the value of a parameter first click on the device in the left pane (1). Then click on button [Command] (2). In the drop down box below number select or input 21 (3). Enter a new numeric value into the text box below command text (4) here 1500. Click button [OK] (5). You can see the new value in the ‘Device Data’ area in the right pane.
FIG 7: Change R-Variable on Sinumerik 840D controller
All successful write actions and errors are written to the device’s log file in subfolder \log.
TIPS
If you want to add additional items (up to 30 in total) first adjust the number of commands in section [GENERAL]. Then, copy and paste the last numeric section and do not forget to adjust the section number and its content!
TROUBLESHOOTING
The device driver writes a log file entry for any communication issue to the log file of the device. The file can be found in subdirectory \log of your CNCnetPDM program folder. The file format for the log file is log_ + device number + _ + date.txt. Please check this file first if you observe an issue.
If the machine shows a red icon, state disconnected and you get just output E = 0 the machine is not reachable at all. This has nothing to do with the device driver, the controller is switched off, it’s a network issue, DNS Hostname or IP Address is wrong.
If the machine also shows a red icon, state disconnected but you only get output E = 1 the machine is reachable but the controller does not respond to commands, check your controller setup and the parameters used in section [RS232] of CNCnetPDM.ini.Please use the tool CNCnetPDM.OpcDA.SimpleClient to check if the machine replies to commands.
If you do get numeric device states but not any of the preconfigured items please make sure that entries CollectOrders, CollectQuality and CollectFeeder are set to 1 in section [General] of CNCnetPDM.ini.
If specific items are not acquired check first with CNCnetPDM.OpcDA.SimpleClient that you get output. Also make sure that the numeric section of the item in the device drivers INI file is activated and has an entry for ‘Name’, inactive or items with empty names are not acquired. Also check that you didn’t misspell entries for command and output item in your device driver INI file.
UPGRADE DRIVER
If you already have a previous version of the driver installed and would like to upgrade to the most recent version proceed as follows:
Stop any CNCnetPDM background service or foreground program that uses the device driver
Extract all content of sinumerikda_dll.zip into the folder where you have CNCnetPDM installed, overwrite the existing files
Delete all sinumerikda_NNNN.dll and ClientAPI_NNNN.dll (NNNN = machine number) files. If you already have created adapted INI files for specific devices do NOT delete the sinumerikda_NNNN.ini files.
After restarting CNCnetPDM upgraded device driver versions for all machines are automatically created.