Ми розробляємо мобільні додатки для промислових верстатів з ЧПК. Fanuc, Siemens Sinumerik, Heidenhain TNC, LinuxCNC — це обладнання з жорсткими вимогами до надійності, безпеки та точності. Мобільний додаток не замінює пульт оператора — він доповнює його: дозволяє контролювати виконання програми, завантажувати G-коди, відстежувати телеметрію шпинделя та осей, отримувати аварійні сповіщення. Завдяки інтеграції з сучасними протоколами MTConnect та OPC UA ви отримуєте доступ до даних верстата в реальному часі з будь-якого пристрою — навіть з планшета, що особливо зручно для віддаленого моніторингу та швидкої реакції на аварії.
Типова складність — інтеграція з різнорідними інтерфейсами. Без глибокого досвіду легко помилитися з вибором протоколу або зіткнутися з недокументованими особливостями. За 10+ років ми підключили понад 50 верстатів різних виробників і знаємо, як вирішити задачу швидко та без сюрпризів. У нашій практиці були випадки, коли через MTConnect ми знімали дані при завантаженні верстата 95% — це дозволило передбачити знос інструменту та знизити позапланові простої.
Важно розуміти: мобільне керування ЧПК — це не іграшка. Помилки можуть призвести до пошкодження інструменту або браку. Тому ядро нашої архітектури — безпека, аудит та ізоляція. Далі розберемо, які протоколи та підходи ми використовуємо.
Інтерфейси промислових ЧПК
Кожен виробник ЧПК надає свій API. Рівень відкритості — різний:
| Система | Протокол/API | Транспорт |
|---|---|---|
| Siemens Sinumerik | OPC UA (S7 опціонально) | Ethernet |
| Fanuc FOCAS | FOCAS2 DLL (Windows) або REST через MTConnect | TCP |
| Mitsubishi CNC | CNC Open API REST | Ethernet |
| LinuxCNC | XML-RPC, HAL remote | TCP |
| Heidenhain TNC | DNC-інтерфейс, LSV2 | RS-232/Ethernet |
| Haas | MTConnect / Haas API | Ethernet |
MTConnect — відкритий стандарт (ANSI/MTC1.4) для читання стану верстата. Більшість великих виробників підтримують його як додатковий інтерфейс.
Як обрати протокол: MTConnect vs OPC UA?
MTConnect краще підходить для читання даних: швидкість опитування до 10 Гц, легка інтеграція через HTTP. OPC UA — для двонаправленого обміну та керування: до 20 Гц, вбудовані механізми безпеки. Якщо потрібно лише моніторити стан — вистачить MTConnect. Для активного керування (запуск програм, корекція координат) обирайте OPC UA.
| Критерій | MTConnect | OPC UA |
|---|---|---|
| Призначення | Моніторинг (read-only) | Читання + запис |
| Швидкість | до 10 Гц | до 20 Гц |
| Безпека | Немає вбудованої | Шифрування, аутентифікація |
| Складність | Низька | Середня |
| Підтримка | Широка (Fanuc, Haas, Mazak) | Siemens, Beckhoff, ABB |
MTConnect: читання даних верстата
MTConnect Agent надає HTTP API. Потокове читання через current (знімок) та sample (історія з буфером):
class MTConnectClient(private val agentUrl: String) {
suspend fun getCurrent(): MTConnectDocument {
val response = httpClient.get("$agentUrl/current") {
accept(ContentType.Application.Xml)
}
return parseMTConnectXml(response.bodyAsText())
}
// Long-polling стрим змін від sequence number
fun streamSamples(from: Long? = null): Flow<MTConnectEvent> = flow {
var nextSequence = from
while (true) {
val url = if (nextSequence != null)
"$agentUrl/sample?from=$nextSequence&count=100"
else
"$agentUrl/sample?count=100"
val response = httpClient.get(url)
val doc = parseMTConnectXml(response.bodyAsText())
doc.streams.forEach { stream ->
stream.events.forEach { event -> emit(event) }
}
nextSequence = doc.header.nextSequence
if (doc.streams.isEmpty()) delay(500)
}
}
}
Типові DataItem: execution (ACTIVE/STOPPED/INTERRUPTED), program, line, Xact/Yact/Zact, Sspeed, load.
OPC UA: Siemens Sinumerik
Для Sinumerik 840D sl — OPC UA Server вбудований в NCU. Простір імен Siemens (urn:Siemens:SINUMERIK:NC) містить вузли для всіх параметрів. Підключення через Eclipse Milo:
class SinumerikOpcUaClient(private val endpoint: String) {
private lateinit var client: OpcUaClient
suspend fun connect() {
val endpoints = DiscoveryClient.getEndpoints(endpoint).await()
val ep = endpoints.first { it.securityPolicyUri == SecurityPolicy.None.uri }
client = OpcUaClient.create(ep.endpointUrl,
endpointFilter = { it == ep },
configurer = { config ->
config.setIdentityProvider(UsernameProvider("OpcUaClient", "password"))
})
client.connect().await()
}
suspend fun readSpindleSpeed(): Double {
val nodeId = NodeId.parse("ns=2;s=/NC/Spindle[u1,1]/actSpeed")
val value = client.readValue(0.0, TimestampsToReturn.Both, nodeId).await()
return (value.value.value as Number).toDouble()
}
fun subscribeToAxisPositions(callback: (AxisPositions) -> Unit) {
val subscription = client.subscriptionManager.createSubscription(500.0).await()
val nodes = listOf("Xact", "Yact", "Zact").map { axis ->
NodeId.parse("ns=2;s=/NC/Channel[u1,1]/MachineAxis[$axis]/actPos")
}
subscription.createMonitoredItems(
TimestampsToReturn.Both,
nodes.map { MonitoredItemCreateRequest(ReadValueId(it, AttributeId.Value.uid(), null, null),
MonitoringMode.Reporting, MonitoringParameters(0.0, 100.0, null, 10, true)) },
) { item, _ ->
item.setValueConsumer { _, value -> /* оновлюємо позицію осі */ }
}
}
}
Чому безпека критична для мобільного керування?
Запис команд у ЧПК — потенційно небезпечна операція. Порушення безпеки може призвести до поломки інструменту або травм. Ми застосовуємо чотирирівневий захист:
- Аутентифікація та авторизація: JWT з коротким TTL, MFA для критичних операцій.
- Зона мережі: ЧПК в ізольованій виробничій мережі, API-шлюз — єдина точка входу.
- Блокування: команда запуску програми блокується, якщо двері верстата відкриті (дані з safety PLC). Додаток не обходить фізичні блокування.
- Аудит: кожна команда логується з timestamp, user ID, IP джерела.
suspend fun startProgram(programName: String) {
val state = getMachineState()
require(state.doorsClosed) { "Двері верстата відкриті" }
require(state.execution == Execution.STOPPED) { "Верстат не зупинено" }
require(state.emergencyStop == EmergencyStop.ARMED) { "E-Stop не зведено" }
auditLogger.log(Action.START_PROGRAM, programName, currentUser)
mtConnectAdapter.sendCommand(StartProgramCommand(programName))
}
Завантаження NC-програм
G-code програми (.nc, .mpf для Siemens, .cnc для Fanuc) завантажуються через FTP або DNC-інтерфейс. Приклад на Flutter:
Future<void> uploadNcProgram(File program, String remotePath) async {
final ftp = FtpConnect(
host: machineIp,
user: ftpUser,
pass: ftpPassword,
timeout: 30,
);
try {
await ftp.connect();
await ftp.changeDirectory(remotePath);
final uploaded = await ftp.uploadFile(program);
if (!uploaded) throw Exception('FTP upload failed');
} finally {
await ftp.disconnect();
}
}
Процес роботи та терміни
Ми працюємо ітеративно, з чіткими етапами:
- Аналітика (2 тижні): аудит інтерфейсів вашого обладнання, збір вимог.
- Прототип (3 тижні): демонстрація базового моніторингу на реальному верстаті.
- Розробка (6–8 тижнів): реалізація всіх функцій — керування, завантаження файлів, безпека.
- Тестування (2 тижні): на вашому стенді за участю операторів.
- Деплой та навчання (1 тиждень): встановлення на планшети, інструктаж.
Типовий проект займає від 10 до 16 тижнів. Вартість розраховується індивідуально після аудиту — для отримання точної оцінки вашого проекту зв'яжіться з нашими інженерами.
Що входить в роботу
- Аудит інтерфейсів ЧПК та мережі.
- Розробка модуля моніторингу (MTConnect або OPC UA).
- Реалізація команд керування з системою блокувань.
- Інтеграція з існуючими системами (MES, ERP).
- Завантаження та синхронізація NC-програм.
- Аварійні сповіщення (push, email).
- Розгортання на пристроях iOS/Android.
- Навчання операторів та документація.
- Підтримка 3 місяці (опціонально).
Типові помилки при інтеграції
- Використання небезпечних протоколів (Telnet, чистий FTP).
- Ігнорування затримок мережі: команди повинні перевіряти стан перед відправкою.
- Відсутність резервування: при розриві зв'язку додаток має коректно відновлювати сесію.
- Перевантаження ЧПК запитами: не опитуйте частіше 100 мс без необхідності.
Чому обирають нас
Ми займаємося промисловою автоматизацією понад десять років. За цей час реалізували понад 50 проектів для заводів та цехів. Наші інженери сертифіковані за стандартами безпеки IEC 62443. Гарантуємо, що додаток пройде App Store Review (Section 5.1) і не викличе претензій щодо безпеки. Економія часу оператора сягає 40%, а зниження простоїв — до 30%. Якщо ви хочете отримати надійне рішення для керування ЧПК, замовте консультацію. Отримайте демо-версію для вашого обладнання вже сьогодні.







