清晰的调用契约
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 型号与现场需求,销售团队会在一个工作日内回复导入评估与报价。