Есть два варианта подключения станков Siemens Sinumerik к системе DPA, каждый вариант реализован в виде отдельного драйвера:
*'''Siemens (Step 7)''' - чтение данных по TCP/IP протоколу S7.
*'''Siemens (DDE)''' - чтение данных через механизм взаимодействия приложений в операционных системах Microsoft Windows, для этого драйвера необходимо предварительно установить [[Агент DPA]]
Если HMI работает под управлением ОС Windows (как правило это Windows XP) и в диспетчере задач среди запущенных процессов присутствует процесс '''ncdde.exe''' это однозначно говорит о том, что необходимо использовать драйвер '''Siemens (DDE)''', во всех остальных случаях подойдет драйвер '''Siemens (Step 7)'''.
На текущий момент встречался только один тип ЧПУ, который подключается через DDE - это '''840D'''.
===Siemens (Step 7)===
Настройка сводится к тому, что в HMI необходимо выставить опцию S7 и установить корректный IP адрес. После этого можно подключать станок к системе DPA.
====Проброс порта====
Встречаются станки, на которых HMI работает под управлением ОС Windows и в нем присутствует два сетевых интерфейса: один - внутренняя сеть станка, второй - сеть предприятия. При таком сценарии HMI общается с контроллером через внутреннюю сеть и протокол S7 не доступен из сети предприятия. Для того, чтобы подключить такой станок к системе DPA предварительно необходимо сделать проброс порта с сетевой карты станка которая подключена к сети предприятия на 102 порт контроллера, который подключен ко второй сетевой карте. Это можно сделать штатными средствами ОС Windows.
[[file:SiemensPortForwarding.png]]
На примере выше HMI имеет два сетевых интерфейса: 192.168.50.28 - подключен к сети предприятия, 192.168.214.241 подключен к контроллеру, который находится по адресу 192.168.214.1. Необходимо сделать так, чтобы входящие соединения на 103 порт интерфейса 192.168.50.28 переадресовывались на 102 порт контроллера.
Для настройки проброса порта необходимо выполнить следующие действия:
* Установить корректный IP адрес на сетевом интерфейсе, подключенном в сеть предприятия (в примере: 192.168.50.28)
* Запомнить IP адрес интерфейса подключенного в станочную сеть (в примере 192.168.214.241)
<span style="color:red"><b>Внимание!</b></span> Адрес на интерфейсе подключённом в станочную сеть менять не надо.
* Определить IP адрес контроллера (в примере 192.168.214.1), для этого необходимо запустить командную строку cmd и выполнить команду:
<code>netstat -ano</code>
в результате выполнения команды отобразится таблица текущих сетевых подключений, необходимо найти строку, в которой будет присутствовать IP адрес интерфейса, подключенного в станочную сеть (который мы запомнили), второй IP адрес в этой строке и будет IP адресом контроллера (в примере 192.168.214.1)
* Выполнить команду для проброса порта (в командной строке cmd):
<span style="color:red"><b>Внимание!</b></span> Проброс порта на ОС Windiws XP работает только в том случае, если установлена поддержка протокола [https://support.microsoft.com/en-us/help/555744 IPv6]. Для его установки необходимо выполнить следующую команду:<br/>
<code>netsh int ipv6 install</code>
* Если используется FireWall, то необходимо добавить порт 103 в исключения:
После выполнения всех этих действий станок можно подключить к системе DPA. В качестве драйвера нужно выбрать '''Siemens (Step 7)''', указать IP адрес и порт (в примере использовался 103). В остальных полях можно оставить значения по умолчанию.
[[file:NewDriverSiemensS7portForward.png]]
===Siemens (DDE)===
Предварительно необходимо [[Агент_DPA_для_платформы_NT#Установка и настройка|установить Агент DPA]]
При создании драйвера необходимо выбрать тип '''Siemens (DDE)'''. Единственное поле, которое необходимо заполнить это '''IP-адрес''' (IP адрес на HMI можно сконфигурировать стандартными средствами ОС Windows). В поле '''порт''' можно оставить значение по умолчанию '''5505''' (агент использует этот порт, если не произовидилась какая-либо кастомизация при установке и настройке агента). Поля '''Service''' и '''Topic''' заполнять не нужно.
[[file:NewDriverSiemensDDE.png]]
==Настройка снапшотов==
* Через агента (Siemens 840D advanced)
Основным различием при созднии создании новых снапшотов является то, что у драйвера, который работает через агент агента есть дополнитлеьные дополнительные поля:
* Тип данных (по умолчанию: Auto)
* service (по умолчанию пусто)
[[file:newSiemensS7Snapshot.png]]
эти поля можно не заполнять оставив значенич значения по умолначниюумолчанию.
===Список параметров===
Каждый параметр снапшота имеет свое наименование и адрес по которому располагаются данные на станке. После заполнения этих полей, необходимо нажать кнопку '''Добавить'''. В одном снапшоте можно указать несколько параметров которые будут прочитаны за один запрос, после ввода данных о каждом параметре необходимо нажимать кнопку '''Добавить'''. По завершению формирования списка необходимо нажать кнопку '''Создать'''.
Поле, в которое вводится адрес параметра поддерживает автозаполнение – просто начните писать путь и система сама предложит вам дальнейшие варианты.
<span style="color:red"><b>Внимание!</b></span> Все пути для чтения параметров начинаются с символа '''/'''
===Примеры параметров===
{| class="wikitable"
|Номер инструмента на первом канале
|/Channel/State/acMeasTNumber[u1,1]
|-
|Идентификатор инструмента на первом канале
|/Channel/State/actToolIdent[u1]
|-
|Чтение R регистра 502
|/Channel/Parameter/R[u1,502]
|
|-
|Чтение AC_TIMER таймера 12
|/Channel/State/acTimer[12]
|}
===Учет времени выпуска===
Для учета времени работы УП или подпрограммы или какой-либо части программы можно использовать программные таймеры. Для этого в тело программы необходимо добавить следующий код:
<code>$AC_TIMER[n]=0</code>
где параметр n - любой номер свободного таймера.
Сразу после выполнения данной строчки кода инициализируется новый таймер, который будет хранить время в секундах (дробное число) с момента инициализации таймера.
Этот таймер можно использовать в любых расчетах или логических выражениях внутри тела программы.
Так же можно записать текущее значение таймера, например, в R-регистр:
<code>R123=$AC_TIMER[n]</code>
при исполнении данной строчки в R-регистр с номером 123 запишется время прошедшее с начала инициализации таймера до момента исполнения данной строчки кода.
Когда таймер больше не нужен его можно деактивировать, вызвав следующую строчку кода:
<code>$AC_TIMER[n]=-1</code>
или перезапустить:
<code>$AC_TIMER[n]=0</code>
Чтение текущего значения таймера можно реализовать через чтение соответствующей переменной в снапшоте драйвера:
<code>/Channel/State/acTimer[12]</code>
или через чтение R-регистра, в который предварительно было записано значение таймера:
<code>/Channel/Parameter/R[123]</code>
==Ошибки==
===5000 Задание на связь невыполнимо 50580===
При использовании протокола S7 возможно появление ошибки 5000 Задание на связь невыполнимо 50580.
Это связано с тем, что у контроллера программно ограничено количество одновременных подключений.
Изменить это можно с помощью переменной '''$MN_MM_NUM_MMC_UNITS'''
В случае возникновения этой ошибки необходимо увеличить значение этой переменной на 2, после чего произвести полную перезагрузку станка.
Установка соответствующей настройки зависит от версии и производителя HMI.
Необходимо перейти в привилегированный режим Manufacturer, затем
Setup -> Machine Data (MD) -> General MD
Найти параметр $MN_MM_NUM_MMC_UNITS и увеличить значение на 2