KeepRobots 工程笔记,不是法律意见,条文截至 2026-10-23,原文链接见文末。
不少团队的美国认证计划只有一行: 无线用带 FCC ID 的现成模组,主板找实验室做 SDoC ,几周就能搞定。
对 2026-07-28 以后、在美国境外生产的新款 AMR、人形和四足,这一行走不通了。47 CFR 2.903(c)(2) 写明,FCC 受控清单的禁令 连本来可以走 SDoC 的设备也包括在内 。就算模组有 FCC ID、EMC 测得再好,新型号也拿不到授权。2026-10-13 起又多了一条线:只要板子上有一颗受控清单点名实体生产的逻辑元件,不是机器人的设备也可能被卡住。
问题不在于少做了哪一项认证,而在于 这些合规项之间有先后关系,排第一的那项卡住了,后面的全白做 。Wiki 上的清单表达不了这种先后关系,代码可以。下面用一段 70 行的 Python,把「一台机器人进美国要过哪些合规项」写成规则和自检函数,拿 4 台 虚构机型 跑一遍。
一、先看结果:四台虚构机型,四种结局
四台机器都是编的,参数只用来演示规则:
- 虚构 AMR-X1 :中国产的新款仓储 AMR,整机加充电桩 180 kg,Wi-Fi 用已认证模组,标志只有 CE 和 CCC,电池包有 UN 38.3 测试摘要。
- 虚构 DLV-S2 :中国产送餐机器人,2025 年就拿到了 FCC 授权,有 ETL 标志,电池包没有自己的测试摘要(只有电芯的),在加州也卖。
- 虚构 ARM-C6 :中国产固定式协作臂,新型号,无线部分没用整模组方案,只有 CE。
- 虚构 ARM-C7 :和 C6 一样,唯一区别是通信板出自受控清单点名的某家实体,并假设律师已判断:该实体若自己生产整机也会被禁(两点都是假设)。
运行 python3 us_cert_check.py 的输出是 Markdown 表,原样贴在下面:
虚构 AMR-X1(中国产新仓储 AMR):4 项 BLOCK/GAP
| 状态 | 项目 | 说明 |
|---|---|---|
| BLOCK | 受控清单·机器人 | 新型号拿不到授权,SDoC 也不行 2.903(a)、(c)(2);除非 DoW 有条件批准 |
| ASK | 受控清单·元件 | 拿 BOM 逐项核对 2.903(b)(2) |
| BLOCK | FCC 有意辐射体 | 模组 FCC ID 复用;看不到时外壳贴 Contains FCC ID 15.212(a)(1)(vi)(A) |
| BLOCK | FCC 数字电路 | Class A/B:SDoC 或认证 15.101 表 1 |
| GAP | NRTL 标志 | 只有 CCC/CE,不算 NRTL 1910.303(a);充电桩单独看 |
| ASK | 机器人专项标准 | UL 3100 |
| OK | 锂电池 UN 38.3 | 电池包要自己的测试和摘要,电芯测过不算 173.185(a)(1)、(a)(3) |
虚构 DLV-S2(中国产送餐机,2025 年已授权):1 项 BLOCK/GAP
| 状态 | 项目 | 说明 |
|---|---|---|
| OK | 受控清单·机器人 | 老型号可继续进口/销售;相同零件维修不受限(FCC FAQ) |
| OK | FCC 有意辐射体 | 模组 FCC ID 复用;看不到时外壳贴 Contains FCC ID 15.212(a)(1)(vi)(A) |
| OK | FCC 数字电路 | Class A/B:SDoC 或认证 15.101 表 1 |
| OK | NRTL 标志 | 已有 NRTL 标志;充电桩单独看 |
| ASK | 机器人专项标准 | UL 3300(+ UL 62368-1/60335-1) |
| GAP | 锂电池 UN 38.3 | 电池包要自己的测试和摘要,电芯测过不算 173.185(a)(1)、(a)(3) |
| ASK | 充电器能效 | 加州 Title 20 / MAEDbS 登记是否覆盖,逐款判断 |
虚构 ARM-C6(中国产固定式协作臂):1 项 BLOCK/GAP
| 状态 | 项目 | 说明 |
|---|---|---|
| N/A | 受控清单·机器人 | 不在定义内(固定式/本土生产等),留书面判断 |
| ASK | 受控清单·元件 | 拿 BOM 逐项核对 2.903(b)(2) |
| TODO | FCC 有意辐射体 | 整机发射部分认证:Wi-Fi/蓝牙 15.201(b),蜂窝 Part 22/24/27 |
| TODO | FCC 数字电路 | Class A/B:SDoC 或认证 15.101 表 1 |
| GAP | NRTL 标志 | 只有 CE,不算 NRTL 1910.303(a);充电桩单独看 |
| ASK | 机器人专项标准 | UL 1740 + R15.06-2025 |
虚构 ARM-C7(同 C6,但通信板触发 2.903(b)(2)):4 项 BLOCK/GAP
| 状态 | 项目 | 说明 |
|---|---|---|
| N/A | 受控清单·机器人 | 不在定义内(固定式/本土生产等),留书面判断 |
| BLOCK | 受控清单·元件 | 含清单实体所产逻辑元件 2.903(b)(2),2026-10-13 起 |
| BLOCK | FCC 有意辐射体 | 整机发射部分认证:Wi-Fi/蓝牙 15.201(b),蜂窝 Part 22/24/27 |
| BLOCK | FCC 数字电路 | Class A/B:SDoC 或认证 15.101 表 1 |
| GAP | NRTL 标志 | 只有 CE,不算 NRTL 1910.303(a);充电桩单独看 |
| ASK | 机器人专项标准 | UL 1740 + R15.06-2025 |
四个反直觉的地方:
- AMR-X1 的工程准备最省事,结局却最差 。两项 FCC 本来都是常规 TODO,因为受控清单那一行是 BLOCK,被一起标成了 BLOCK。唯一的出路是美国战争部(原称国防部,2025 年起启用这一名称,下文简称 DoW)的有条件批准。
- DLV-S2 是老型号,反而最安全 。受控清单只管新型号,已授权型号照样进口和销售。它的问题出在一个很普通的地方:电池包没有自己的 UN 38.3 测试摘要,到了货代那里就会卡住。
- ARM-C6 不受机器人这一条管 。固定式机械臂不在 DA 26-786 的定义里,它要补的是 NRTL 和 UL 1740 这条线。
- ARM-C7 只差一块板 。它不是「先进机器人」,但如果律师确认 2.903(b)(2) 两个条件都满足,结局就和 AMR-X1 一样。其他三台的元件行是 ASK,意思是这一项脚本判断不了,要拿 BOM 逐项核对。
状态说明:BLOCK 是被前置项卡死;GAP 是缺材料,能补;TODO 是常规要做;ASK 是要问认证机构;N/A 是不适用,但要留一份书面判断。
二、代码(70 行,标准库,Python 3.8+)
"""机器人进美国合规自检(工程笔记,不是法律意见;规则截至 2026-10-23)"""
from dataclasses import dataclass, field
@dataclass
class Robot:
name: str
ground_mobile: bool # 地面移动、自主导航(AMR/人形/四足)
kg_with_dock: float # 整机 + 底座/充电桩
sensors: bool # 环境感知传感器
net_kbps: int # 最高网络速率(有线/无线/蜂窝都算)
us_made: bool # 满足 48 CFR 25.101(a) domestic end product
authorized: bool # 2026-07-28 前已拿到 FCC 授权的老型号
radios_all_certified_modules: bool
workplace: bool # 放在客户员工工作的场所
marks: set = field(default_factory=set) # 已有标志:CE/CCC/UL/ETL...
category: str = "other"
lithium: bool = True
un383_pack_report: bool = False
sold_in_ca: bool = False
covered_entity_logic_parts_prohibited: bool = False # 2.903(b)(2) 两个条件都要满足,由律师判断
NRTL = {"UL", "ETL", "CSA-US", "TUV-US"}
STD = {"delivery": "UL 3300(+ UL 62368-1/60335-1)", "amr": "UL 3100",
"arm": "UL 1740 + R15.06-2025", "other": "视产品而定,问 NRTL"}
def covered(r): # DA 26-786 附录 C 定义的简化版:按生产地
return (r.ground_mobile and r.kg_with_dock * 2.2046 > 4.4 and r.sensors
and r.net_kbps >= 200 and not r.us_made)
def check(r):
rows, cov, new = [], covered(r), not r.authorized
rows.append(("受控清单·机器人", ("BLOCK" if new else "OK") if cov else "N/A",
("新型号拿不到授权,SDoC 也不行 2.903(a)、(c)(2);除非 DoW 有条件批准" if new else
"老型号可继续进口/销售;相同零件维修不受限(FCC FAQ)") if cov else "不在定义内(固定式/本土生产等),留书面判断"))
if ent := new and r.covered_entity_logic_parts_prohibited:
rows.append(("受控清单·元件", "BLOCK", "含清单实体所产逻辑元件 2.903(b)(2),2026-10-13 起"))
elif new: rows.append(("受控清单·元件", "ASK", "拿 BOM 逐项核对 2.903(b)(2)"))
st = "BLOCK" if new and (cov or ent) else ("OK" if r.authorized else "TODO")
radio = ("模组 FCC ID 复用;看不到时外壳贴 Contains FCC ID 15.212(a)(1)(vi)(A)" if r.radios_all_certified_modules
else "整机发射部分认证:Wi-Fi/蓝牙 15.201(b),蜂窝 Part 22/24/27")
rows.append(("FCC 有意辐射体", st, radio))
rows.append(("FCC 数字电路", st, "Class A/B:SDoC 或认证 15.101 表 1"))
if r.workplace:
ok = bool(r.marks & NRTL)
rows.append(("NRTL 标志", "OK" if ok else "GAP", "已有 NRTL 标志;充电桩单独看" if ok
else f"只有 {'/'.join(sorted(r.marks)) or '无'},不算 NRTL 1910.303(a);充电桩单独看"))
rows.append(("机器人专项标准", "ASK", STD.get(r.category, STD["other"])))
if r.lithium: rows.append(("锂电池 UN 38.3", "OK" if r.un383_pack_report else "GAP",
"电池包要自己的测试和摘要,电芯测过不算 173.185(a)(1)、(a)(3)"))
if r.sold_in_ca: rows.append(("充电器能效", "ASK", "加州 Title 20 / MAEDbS 登记是否覆盖,逐款判断"))
return rows
FLEET = [ # 四台都是虚构机型,参数为演示而编
Robot("虚构 AMR-X1(中国产新仓储 AMR)", True, 180, True, 1000, False, False,
True, True, {"CE", "CCC"}, "amr", un383_pack_report=True),
Robot("虚构 DLV-S2(中国产送餐机,2025 年已授权)", True, 45, True, 300, False, True,
True, True, {"CE", "ETL"}, "delivery", sold_in_ca=True),
Robot("虚构 ARM-C6(中国产固定式协作臂)", False, 30, True, 1000, False, False,
False, True, {"CE"}, "arm", lithium=False),
Robot("虚构 ARM-C7(同 C6,但通信板触发 2.903(b)(2))", False, 30, True, 1000, False, False,
False, True, {"CE"}, "arm", lithium=False, covered_entity_logic_parts_prohibited=True),
]
if __name__ == "__main__":
for r in FLEET:
rows = check(r)
bad = sum(s in ("BLOCK", "GAP") for _, s, _ in rows)
print(f"\n**{r.name}:{bad} 项 BLOCK/GAP**\n\n| 状态 | 项目 | 说明 |\n|---|---|---|")
for item, s, why in rows:
print(f"| {s} | {item} | {why} |")
设计上只有一个关键点: FCC 两行的状态 st 由受控清单两行的结果推出来,不单独判断 。这样合规项之间的先后关系就写在代码里了,排期时不会再出现「EMC 已经测完、证书却出不来」的情况。
想接进自己的流程,可以把 FLEET 换成从 BOM 或 PLM 导出的 YAML,有 BLOCK 时用 sys.exit(1) 退出,放进发货前的检查里。
三、依据,以及代码简化了什么
| 规则 | 原文依据 | 代码里简化了什么 |
|---|---|---|
| 机器人受控(按生产地) | FCC DA 26-786 附录 C;47 CFR 2.903(a)、(c)(2) | 只判 5 个条件,没写远程/自主运行、控制软件、医疗器械等排除项 |
| 元件受控(按实体) | 47 CFR 2.903(b)(2),91 FR 57798,2026-10-13 生效 | 「是否属于清单实体所产、实体自产整机是否会被禁」整个交给人工判断 |
| 有意辐射体 | Wi-Fi/蓝牙:15.201(b) TCB 认证;蜂窝:Part 22/24/27(22.377、24.51、27.51),同样要认证,通常由 TCB 发证 | 不区分频段和模组类型 |
| 无意辐射体 | 15.101 表 1:Class A/B 数字设备 SDoC 或认证 | 不判 Class A 还是 B |
| 模组标签 | 15.212(a)(1)(vi)(A):模组 FCC ID 从外面看不到时才要外标签;电子显示另见 (vi)(B) | 只提示,不检查标签实物 |
| 电气安全 | 29 CFR 1910.303(a)、1910.399 | NRTL 名单写死成 4 个简写 |
| 锂电池运输 | 49 CFR 173.185(a)(1)、(a)(3)、(a)(5) | 不区分装机电池、随机电池、备件电池;不查 Wh 标识 |
下面讲几条工程上最容易踩坑的地方。
1. 两条受控线:机器人按生产地,元件按实体
第一条是机器人线 。DA 26-786 把「境外生产的先进机器人设备」加进了受控清单,取得 DoW 有条件批准的除外。「境外生产」指的是不满足 48 CFR 25.101(a) 的「domestic end product」, 按生产地判断,不按公司身份 。加拿大工厂、欧洲工厂生产的也算境外。定义排除了网联车辆、无人机、医疗器械和固定式机器人(关节、并联、直角坐标和 SCARA),ARM-C6 和 C7 在这条线上都是 N/A。
第二条是元件线 。FCC 2026-09-11 发布、10-13 生效的新规(91 FR 57798)改写了 2.903(b):设备里只要有一颗由受控清单 点名实体 生产的「逻辑元件」,并且假如整机由这家实体生产就会被禁,整机就拿不到新授权。「逻辑元件」借用了数字设备的定义,指时钟超过 9 kHz、用数字技术的模块、子板和芯片等;外壳、紧固件、电阻、线束和普通电芯不算。
两条线的关系,新规原文说得很清楚:元件规则只适用于按实体点名的条目, 不适用于按生产地划线的条目 (无人机、路由器、机器人这类),除非生产元件的实体本身也被单独点名。新规只管新提交的授权申请,不影响已授权设备。所以 BOM 评审要同时问两个问题:整机在哪生产?板上的逻辑元件是谁生产的?
同一份新规还有两点和工程有关:清单实体对自家设备做任何修改,都不能走许可变更,要重新完整认证(2.932(f)、2.1043(a));在线市场以后要在售卖页显示 FCC ID,有实物或货权的平台 2027-03-01 起执行,只靠卖家声明的平台 2027-06-01 起执行。
老型号 不受影响。FCC 的事实说明写明进口、销售和使用照旧;FCC 常见问题也写明,不禁止维修已授权设备,也不禁止用 相同零件 替换部件。改硬件就要小心了:2026-10-22,FCC 用个案豁免(DA 26-1146)允许 Intel 对其已授权的境外产 AGV 做硬件变更和维护。这件事要靠单独豁免才能做,说明改硬件不是默认可以的,改版之前先问律师。
有条件批准这条路确实有人走通了。截至 2026-10-21,FCC 一共公告了 5 项机器人有条件批准 :
| 公告 | 日期 | 对象 |
|---|---|---|
| DA 26-957 | 09-09 | Husqvarna AB 割草机器人平台(305v/310v/420v/440v IQ) |
| DA 26-996 | 09-18 | ANSCER Robotics AMR(AR250/AR650/AR1250) |
| DA 26-1063 | 10-02 | Matic Robots 地面清洁机器人 + 充电桩 |
| DA 26-1114 | 10-16 | Volley Automation 的 AGV/AMR |
| DA 26-1130 | 10-21 | Vulcan Robotics 的 Sourccey 移动机器人平台 |
这 5 项里没有人形,也没有四足。申请条件之一是要提交美国本土化生产计划。
2. 用已认证模组能省掉什么,省不掉什么
模组方案能省掉的是 发射部分的重复认证 。标签要求是有条件的:模组贴着自己的 FCC ID 标签,装进主机后从外面看不到时,主机外壳要有指向模组的标签(15.212(a)(1)(vi)(A)),措辞 FCC 给了例子:「Contains Transmitter Module FCC ID: XYZMODEL1」或者「Contains FCC ID: XYZMODEL1」。模组用电子方式显示 FCC ID 的,另按 (vi)(B) 处理。
省不掉的是主机自己的主控等数字电路,它们属于无意辐射体,要按 15.101 走 SDoC 或认证。所以代码里有意辐射体和数字电路分成了两行。还要记住:模组有 FCC ID 只说明它当年拿到了授权,不说明它的生产实体不在清单上,元件线要单独查。
3. NRTL:CE 和 CCC 都不算
美国没有一部联邦法律规定所有电器必须做 UL。但 OSHA 对雇主有要求:工作场所的电气设备要经过「approved」,按 1910.399 的定义,通常就是由 NRTL 列名或贴标。UL 只是 NRTL 之一,Intertek(ETL)、CSA Group、TÜV 等也在 OSHA 的名单上。
所以这一项一般不是海关拦你,而是客户的采购、物业和电气检查员拦你。正式判断以 OSHA NRTL 名单和证书上的「us」标识为准。两个常见误判:适配器带 UL 认可零件标志不等于整机已经列名;充电桩要单独看。
4. UN 38.3:电芯测过,电池包也要测
49 CFR 173.185(a)(1) 原文写的是,电池 不论所用电芯是否属于已测试型号 ,本身都要按 UN 38.3 测试;(a)(3) 要求制造商和后续分销商都能提供测试摘要。DLV-S2 的 GAP 就出在这里。另外,(a)(5) 规定 2024-05-10 起锂离子电池外壳要标出瓦时(Wh)额定值,备件电池别漏了。装机电池、随机备用电池、单独寄的备件电池,运输要求各不相同,发货前要和货代逐项确认。
5. 代码里没写的
- UL 3300、UL 3100、UL 1740 选哪一份 由认证机构根据产品决定,所以这一项在代码里永远是 ASK。据我们所知,人形和四足目前没有专门的认证类别。
- 加拿大是另一套体系 :ISED 编号、ICES-003、带「c」的标志、英法双语,FCC 证书不能代替 ISED 证书。截至查证日,没有找到加拿大有类似受控清单的措施。
- 联邦 DOE 消费品电池充电器标准(10 CFR 430.32(z))只是能效那一行的背景,商用充电桩落不落在范围内,要逐款判断。
四、怎么用这段代码
- 先跑受控清单两行。新型号得到 BLOCK 的,先不要排 EMC 和安规测试,先找美国律师出书面判断。元件线要拿着 BOM 和受控清单逐项对。
- 结果是 GAP 的项,交给认证实验室报价排期。很多 NRTL 在国内有实验室,可以问能不能一次出美国和加拿大的双标(cULus、c-CSA-us 等)。
- 发货前用 FCC ID 查询(fcc.gov/oet/ea/fccid)核对每个模组的编号,并拍下铭牌照片。美国的大客户采购、物业和电气检查员都会要。
规则是按截至 2026-10-23 的公开原文整理的, 具体型号适不适用、怎么认证,请以美国律师和认证实验室的意见为准 。FCC 有条件批准的名单还在增加,规则也在改,用之前请先查最新公告。
本文由 KeepRobots 团队撰写。KeepRobots 是温哥华的机器人现场服务公司,给别家生产的机器人做北美部署、售后和备件存放,不生产也不卖机器人,不做认证、不代办认证。写这类笔记,是因为在现场核对铭牌、FCC ID 和 NRTL 标志本来就是上门部署要做的第一步,标签缺了,部署就做不下去。
相关阅读
- 机器人出口美国要哪些认证?UL、FCC、NRTL 一张表看懂(含加拿大对照):keeprobots.com/zh/notes/ro…
- 机器人出海北美全流程指南(选市场、认证、demo、部署、售后、备件按阶段串起来):keeprobots.com/zh/guides/r…
- 美国现场服务和合作方式:keeprobots.com/zh/partners…
参考来源 (查证日期 2026-10-23)
- FCC DA 26-786(受控清单加入境外生产先进机器人设备,2026-07-28):docs.fcc.gov/public/atta…
- FCC 事实说明 DOC-423682:docs.fcc.gov/public/atta…
- FCC 受控清单常见问题(机器人和逆变器):www.fcc.gov/covered-lis…
- 91 FR 57798(FCC 26-50 第三号报告和命令,逻辑元件、修改须重新认证、在线市场显示 FCC ID,2026-10-13 生效):www.federalregister.gov/documents/2…
- FCC DA 26-1114(Volley Automation 有条件批准):docs.fcc.gov/public/atta…
- FCC DA 26-1130(Vulcan Robotics 有条件批准):docs.fcc.gov/public/atta…
- FCC DA 26-1146(Intel AGV 个案豁免):docs.fcc.gov/public/atta…
- 47 CFR 2.903:www.ecfr.gov/current/tit…
- 47 CFR 15.101:www.ecfr.gov/current/tit…
- 47 CFR 15.201:www.ecfr.gov/current/tit…
- 47 CFR 15.212:www.ecfr.gov/current/tit…
- 47 CFR 22.377 / 24.51 / 27.51(蜂窝发射机认证):www.ecfr.gov/current/tit… 、www.ecfr.gov/current/tit… 、www.ecfr.gov/current/tit…
- OSHA 29 CFR 1910.303:www.osha.gov/laws-regs/r…
- OSHA 29 CFR 1910.399:www.osha.gov/laws-regs/r…
- OSHA NRTL 项目:www.osha.gov/nationally-…
- UL 3300 列入 NRTL 适用测试标准(90 FR 61414,2025-12-31):www.federalregister.gov/documents/2…
- 49 CFR 173.185:www.ecfr.gov/current/tit…
- 10 CFR 430.32:www.ecfr.gov/current/tit…
- 加州能源委员会 电池充电器系统:www.energy.ca.gov/programs-an…