Files
Denso/docs/ScriptEngine/BuiltInAPIs.md
2026-07-03 16:31:37 +07:00

3.8 KiB

Built-in APIs / API Tích hợp Sẵn

📋 Overview / Tổng quan

Các APIs có sẵn trong tất cả scripts mà không cần import hoặc khai báo.

📝 Logger API

Logger.Info("Informational message");
Logger.Warning("Warning message");
Logger.Error("Error message");

🎯 Mission Management APIs

// Create mission
Guid missionId = CreateMission("DeliverPackage",
    fromLocation: "A1",
    toLocation: "B2");

// Cancel mission
CancelMission(missionId);

⚙️ Task Control APIs

EnableTask("MonitoringTask");   // Resume task - chuyển từ Paused → Running
DisableTask("MaintenanceTask"); // Pause task - chuyển từ Running → Paused

Lưu ý:

  • EnableTask/DisableTask là API level (public interface cho scripts)
  • Tương đương với Pause/Resume ở state machine level
  • Xem chi tiết về Task state machine trong StateMachine_Design.md

🔌 IO Connection APIs / API Kết nối IO

ScriptEngine hỗ trợ các giao tiếp công nghiệp phổ biến để tích hợp với thiết bị bên ngoài:

HTTP Connection

var httpConn = RobotNet.CreateHttpConnection("http://localhost:8080", timeoutSeconds: 30);
await httpConn.ConnectAsync();
var response = await httpConn.GetAsync("/api/data");
await httpConn.PostAsync("/api/update", jsonData, "application/json");
await httpConn.DisconnectAsync();

ModbusTCP Connection

var modbusConn = RobotNet.CreateModbusTcpConnection("192.168.1.100", port: 502, slaveId: 1);
await modbusConn.ConnectAsync();
var registers = await modbusConn.ReadHoldingRegistersAsync(0, 10);
await modbusConn.WriteSingleRegisterAsync(0, 100);
await modbusConn.DisconnectAsync();

OPC UA Connection

var opcConn = RobotNet.CreateOpcUaConnection("opc.tcp://localhost:4840");
await opcConn.ConnectAsync();
// Hoặc với authentication
await opcConn.ConnectAsync("username", "password");

var value = await opcConn.ReadNodeAsync("ns=2;s=MyVariable");
await opcConn.WriteNodeAsync("ns=2;s=MyVariable", 123);
var nodes = await opcConn.BrowseNodesAsync();
await opcConn.DisconnectAsync();

ProfiNet Connection

var profinetConn = RobotNet.CreateProfiNetConnection("192.168.1.100", slot: 1, subslot: 1);
await profinetConn.ConnectAsync();
var data = await profinetConn.ReadAsync(index: 0, length: 100);
await profinetConn.WriteAsync(index: 0, data: byteArray);
await profinetConn.DisconnectAsync();

Lưu ý: ProfiNet implementation hiện tại là skeleton, cần thêm thư viện hoặc implement protocol stack đầy đủ.

var cclinkConn = RobotNet.CreateCcLinkIeConnection("192.168.1.100", stationNumber: 1);
await cclinkConn.ConnectAsync();
var data = await cclinkConn.ReadAsync(address: 0, length: 10);
await cclinkConn.WriteAsync(address: 0, data: ushortArray);
await cclinkConn.DisconnectAsync();

Lưu ý: CC-Link IE implementation hiện tại là skeleton, cần thêm thư viện hoặc implement protocol stack đầy đủ.

Connection Lifecycle

Tất cả connections đều implement IDisposable và nên được dispose sau khi sử dụng:

using var httpConn = RobotNet.CreateHttpConnection("http://localhost:8080");
await httpConn.ConnectAsync();
// ... use connection ...
// Automatically disposed when exiting using block

Last Updated: 2025-11-13