清楚的呼叫契約
JSON-RPC 2.0 定義了 method、params、id、result、error,請求與回應一一對應,錯誤碼有標準可循。
Technology
Falcon 不發明新協定。它把 PLC 與 HMI 之間的串列通訊,翻譯成工程師早已熟悉的 JSON-RPC 2.0 訊息,並直接走 MQTT 發佈與訂閱。
Falcon 一端接在現場的串列通訊上,另一端以 MQTT 把資料交給你的系統。
| 連接位置 | 支援方式 |
|---|---|
| 現場端:PLC ↔ HMI | 串列通訊:RS-232、RS-422、RS-485 |
| 系統端:Falcon → MES / SCADA / 雲端 | MQTT,訊息格式為 JSON-RPC 2.0 |
| PLC 與 HMI 之間使用乙太網路 | 目前不支援 |
請透過詢價表單告訴我們你的 PLC / HMI 型號與接線方式,我們會確認對應的通訊協定與接線。
JSON-RPC 2.0 定義了 method、params、id、result、error,請求與回應一一對應,錯誤碼有標準可循。
MQTT 輕量、支援 QoS 與保留訊息,是 AIoT 與工業 4.0 最普遍的傳輸協定,幾乎所有平台都能直接介接。
Python、Node.js、C#、Go,或 Node-RED、雲端 IoT 服務,只要會收發 JSON 與 MQTT 就能整合。
監聽資料、遠端指令、系統狀態都走同一個 MQTT Broker,架構簡單、權限集中管理。
每台 Falcon 以 Gateway ID 作為 Topic 前綴,依用途分出請求、回應、事件與狀態。
| Topic | 方向 | 用途 |
|---|---|---|
falcon/{gw}/rpc/req | 用戶端 → Falcon | JSON-RPC 請求(讀寫點位、控制、回放) |
falcon/{gw}/rpc/res/{client} | Falcon → 用戶端 | 對應 id 的 JSON-RPC 回應 |
falcon/{gw}/event | Falcon → 訂閱者 | 監聽到的 PLC ↔ HMI 通訊(JSON-RPC notification) |
falcon/{gw}/status | Falcon → 訂閱者 | 上線 / 離線狀態(retained + LWT) |
用戶端將請求發佈到 rpc/req,並以 reply_to 指定回應 Topic;Falcon 執行後回傳相同 id 的結果或錯誤。
// Topic: falcon/line-01/rpc/req
{
"jsonrpc": "2.0",
"id": "c7f2-0001",
"method": "tag.write",
"params": {
"tag": "D100",
"value": 1250,
"reply_to": "falcon/line-01/rpc/res/mes-01"
}
}// Topic: falcon/line-01/rpc/res/mes-01
{
"jsonrpc": "2.0",
"id": "c7f2-0001",
"result": {
"tag": "D100",
"value": 1250,
"ts": "2026-11-04T08:15:02.481Z"
}
}{
"jsonrpc": "2.0",
"id": "c7f2-0002",
"error": {
"code": -32602,
"message": "Invalid params",
"data": { "tag": "D9999", "reason": "out of range" }
}
}Falcon 監聽到 HMI 與 PLC 之間的通訊時,會以沒有 id 的 JSON-RPC notification 發佈到 event Topic,任何訂閱者都能即時取得。
// Topic: falcon/line-01/event (JSON-RPC notification, no id)
{
"jsonrpc": "2.0",
"method": "traffic.observed",
"params": {
"direction": "hmi->plc",
"op": "read",
"tags": { "D100": 1200, "M20": true },
"ts": "2026-11-04T08:15:01.937Z"
}
}方法以「領域.動作」命名,一眼就能看懂用途。
| Method | 說明 |
|---|---|
tag.read | 讀取一或多個 PLC 點位的目前值 |
tag.write | 寫入 PLC 點位(控制介入) |
monitor.subscribe | 設定要監聽並發佈的點位範圍 |
log.record | 開始 / 停止錄製通訊 log |
log.replay | 回放指定 log,重現現場通訊 |
system.info | 取得 Gateway 版本、狀態與連線資訊 |
用 paho-mqtt 不到 30 行就能訂閱事件並讀取點位。
import json, uuid
import paho.mqtt.client as mqtt
GW = "falcon/line-01"
ME = "mes-01"
def on_message(client, userdata, msg):
print(msg.topic, json.loads(msg.payload))
client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id=ME)
client.on_message = on_message
client.connect("broker.local", 1883)
client.subscribe(f"{GW}/event")
client.subscribe(f"{GW}/rpc/res/{ME}")
req = {
"jsonrpc": "2.0",
"id": str(uuid.uuid4()),
"method": "tag.read",
"params": {"tags": ["D100", "M20"], "reply_to": f"{GW}/rpc/res/{ME}"},
}
client.publish(f"{GW}/rpc/req", json.dumps(req), qos=1)
client.loop_forever()本頁的 Topic 命名、方法名稱與欄位為示意範例,實際規格以產品技術文件為準。
Supported PLC
Falcon 支援台灣產線常見的日系與台系 PLC,以串列通訊(RS-232 / RS-422 / RS-485)連接,不需要更換既有設備。
同一品牌依系列與通訊協定支援程度不同。請透過詢價表單告訴我們你的型號,我們會提供相容性確認;清單以外的品牌也歡迎詢問。 聯絡業務詢價 →
告訴我們你的 PLC / HMI 型號與現場需求,業務團隊會在一個工作天內回覆導入評估與報價。