Iaiops factory
Skill industrial-aiops/industrial-aiops/skills/iaiops-factory
npx -y skills add industrial-aiops/industrial-aiops --skill iaiops-factoryAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Factory edition of iaiops — discrete-manufacturing lines: OPC-UA, Modbus-TCP/RTU, Siemens S7comm (S7-300/400/1200/1500), Mitsubishi MC/MELSEC, Omron FINS (CS/CJ/CP/NX), Allen-Bradley EtherNet/IP (ControlLogix/CompactLogix), EtherCAT (CoE/SOEM), PROFINET (DCP discovery), MTConnect (CNC machine tools), IO-Link (master JSON — sensor-level visibility), MQTT/Sparkplug B/UNS, plus the cross-protocol brain (downtime root-cause, OEE, asset inventory). Use for PLC, CNC, servo/drive bus, name-of-station, tag browse, Unified Namespace, or production-line troubleshooting tasks. Read-first, MOC-gated writes. Also covers Phoenix Contact PLCnext vPLC (via its built-in OPC-UA + Modbus servers).
SKILL.md
12.6 KB, ~4.4k tokens by cl100k_base, as published. Nobody here has run it
iaiops-factory — 离散制造 edition(11 协议 + 脑)
启动:IAIOPS_MCP=factory / iaiops-mcp-factory。PLCnext vPLC 现场用精简
IAIOPS_MCP=plcnext / iaiops-mcp-plcnext(= opcua+modbus,走 vPLC 内建服务)。
单协议现场直接 IAIOPS_MCP=<协议>。EtherCAT 需 extra:pip install iaiops[ethercat];
PROFINET:pip install iaiops[profinet](或 iaiops[factory] bundle);Omron FINS 客户端为 in-repo 纯 stdlib 实现,无需第三方库。
工具
OPC-UA(只读)
opcua_server_info/opcua_browse/opcua_read_node/opcua_read_manyopcua_subscribe_sampleopcua_read_alarmsopcua_alarm_events(A&C 带时间戳)opcua_read_history(HDA)opcua_diagnose_connection— 连接失败五类归因(证书/策略/认证/网络/配置)opcua_discover_tags— 自动发现 + 语义资产建模opcua_health_summary— tag vs 阈值分类;opcua_anomaly_scan— 有界统计异常扫描
Modbus-TCP / Modbus-RTU(本 edition 只读)
modbus_read_holding(FC03)modbus_read_input(FC04)modbus_read_coils(FC01)modbus_read_discrete(FC02) — 带解码提示modbus_detect_byte_order— 自动探测寄存器块字节/字序modbus_list_templates/modbus_apply_template— 厂商寄存器模板 → 命名 tagmodbus_health_summary— 寄存器 vs 阈值分类
Siemens S7comm(pyS7)
s7_cpu_infos7_read_areas7_read_dbs7_read_manys7_write_db— [WRITE][HIGH][MOC] 写 DB 单值(默认 off)
三菱 MC(3E;Q/L/iQ)
mc_cpu_statusmc_read_wordsmc_read_bitsmc_read_manymc_write_words— [WRITE][HIGH][MOC](默认 off)- CC-Link 经主站读(零 CC-Link 硬件,见 docs/CCLINK.md):
mc_cclink_templatesmc_cclink_link_read(RX/RY/RWr/RWw 刷新映像,模板默认值待核实per 项目)mc_cclink_network_health(SB/SW 每站链路诊断:classic SW0080–;IE Field SB0049 + SW00B0– + SW00A0– baton pass)
Omron FINS(in-repo stdlib 客户端;CS/CJ/CP/NX-via-FINS)
fins_cpu_info(0501 CPU 型号/版本)fins_cpu_status(0601 运行状态/模式/故障字)fins_read_words(0101; DM/CIO/W/H/A/EM, ≤500 字)fins_read_bitsfins_read_many(单会话批量, ≤20 项)fins_write_words— [WRITE][HIGH][MOC](0102;默认 off)
Allen-Bradley EtherNet/IP(pycomm3)
eip_controller_infoeip_list_tagseip_read_tageip_read_manyeip_write_tag— [WRITE][HIGH][MOC](默认 off)plctype选驱动(config key 或工具入参):logix(默认;ControlLogix/CompactLogix/ GuardLogix 符号 tag)、slc(PLC-5/SLC-500/MicroLogix PCCC 数据表:N7:0整数、B3:0/0位、F8:0浮点、T4:0.ACC/C5:0.ACC;eip_list_tags改列数据文件目录)、micro800(Micro820/850/870 符号变量,仅 IP)。真 PLC-5/SLC/MicroLogix/Micro800 待核实。
EtherCAT(pysoem/SOEM;Linux + root/CAP_NET_RAW + 专用网卡 + 真从站)
ethercat_master_stateethercat_slavesethercat_slave_infoethercat_read_sdo(CoE SDO 上载)ethercat_read_pdo(输入过程映像单帧)ethercat_write_sdo/ethercat_set_state— [WRITE][HIGH][MOC] (AL-state 切换可 START/STOP 运动;默认 off)
PROFINET(DCP 发现,layer-2 raw socket;不碰 RT 循环数据)
profinet_discover(IdentifyAll)profinet_identify_stationprofinet_station_paramsprofinet_asset_inventoryprofinet_dcp_set— [WRITE][HIGH][MOC] 重编址 name/IP(可断 IO 关系;默认 off)
MTConnect(只读;CNC 机床 agent)
mtconnect_probemtconnect_currentmtconnect_samplemtconnect_assetsmtconnect_oee_snapshot— availability/execution/mode/program(OEE 输入)
IO-Link(只读;主站 JSON 接口 — 传感器级可见性)
iolink_master_info— 主站身份(/deviceinfo:productcode/serial/hw/sw)iolink_ports— 有界端口扫描(≤32:mode/status + 在线设备身份)iolink_device_info— 单端口设备身份(vendorid/deviceid/productname/serial/status)iolink_read_pdin— 过程数据输入(raw hex + 字节数组;按 IODD 解码)iolink_read_isdu— ISDU 参数读(iolreadacyclic,index/subindex 有界)iolink_scan— 主站 + 全端口一次性快照- 配置
flavor: iotcore(ifm IoT-Core POST envelope,默认)或rest(plain-REST GET,Balluff/Turck 类);v1 只读,无写工具
MQTT / Sparkplug B / UNS(含裸 MQTT)
mqtt_read_topicsparkplug_decode_payloadsparkplug_subscribe_samplesparkplug_node_listuns_browseuns_topic_audituns_schema_driftuns_live_auditsparkplug_live_schemauns_live_driftmqtt_publish— [WRITE][HIGH][MOC](默认 off)
离散制造专属(edition 工具;仅随 factory edition 加载,不进全局脑)
changeover_analysis— 换型/SMED 时长:换型 = 上个产品末件到下个产品首件的间隔(OEE 可用率 只汇总、不拆解)。从好件完成流按产品切换测每次换型,排最长、算均值/总换型时间,worst-first, 每时长引用两端时间戳。纯分析,喂 MES/PLC 好件计数。
Gateway MES/SCADA 读层(edition 工具;厂商 SCADA/MES 平台 HTTP web API — 只读)
厂商 SCADA/MES 平台的 Gateway HTTP/web API 暴露 MES 侧生产面(模块健康、tag 树、当前值、
活动告警、tag 历史)——这是基座 opcua connector 覆盖不到的部分。该平台同时跑一个 OPC-UA
server,但那已由 opcua connector 处理,本读层不碰 OPC-UA。全部只读(risk=low),
无任何写工具——是厂商官方 MCP 模块的受治理/只读补集(差异化在审计/预算/回滚 harness,不在写)。
ignition_gateway_status— 网关/模块健康 + 可达性(Gateway doctor 步;{gateway, modules[]})ignition_tag_browse— 按 provider/path 浏览 tag 树({name, path, type, has_children})ignition_tag_read— 单/多 tag 当前值/质量/时间戳({path, value, quality, timestamp})ignition_alarm_status— 活动/已确认告警列表(归一化)ignition_tag_history— 单 tag 时间窗历史(有界聚合样本 ≤5000)- API token/key 从加密 secret store 按 key 名取,绝不内联;
flavor(webdev/gateway:资源路径 + 字段别名)仅存在于连接器内;确切 API 版本/路径 + live gateway 待核实。
跨协议脑(永远随 server 暴露)
- 诊断:
diagnose_dataflowdowntime_root_causedowntime_root_cause_livedowntime_triagelearn_cause_weightsrca_corpus_from_maintenancehistorian_healthalarm_bad_actorstag_healthsubscription_healthheartbeat_healthalarm_flood_analysisalarm_cascadealarm_rationalization_worksheet - 数据质量:
data_quality_scorecarddata_quality_fleet_rollup - 分析:
oee_computedowntime_eventsoee_multidimmonitor_changeshealth_summary(deprecated)anomaly_scan(deprecated) - 资产:
asset_inventorycross_protocol_asset_modeladopt_alias_mapdiff_alias_map - 基线:
baseline_learnbaseline_checkbaseline_record_changebaseline_status(change-log 基线:拒学薄历史、只报持续越带、每次告警必引基线样本 —— 非黑盒异常检测) - 合规/信创:
compliance_mappingcompliance_frameworkscompliance_dengbao_levelscompliance_reportcompliance_evidence_bundlehistorian_pushexport_datahistorian_queryhistorian_coveragestream_publishstream_publish_eventrca_narratefleet_statusfleet_incidentspdm_forecast - 程序解读:
plc_program_outlineplc_program_xrefplc_program_sectionplc_program_visibility(解读导出的 ST/AWL/L5X 程序,只读文件,强制引用行号) - 元:
protocols_supported
Workflows
- Doctor-first:
protocols_supported→iaiops doctor(或opcua_diagnose_connection之类协议自检)→ 再读数。 - Read-first:browse/list → 单点读 → 批量/采样;"没数据"用
diagnose_dataflow, 停机用downtime_root_cause_live(advisory + 证据链)。 - MOC 写:本 edition 的 8 个写工具(s7/mc/fins/eip/ethercat×2/profinet/mqtt)统一
risk=HIGH+ 默认dry_run=True+ 改前值 undo +iaiops approve具名审批 双确认。未经授权绝不写生产控制系统。
支持版本矩阵(内部 HLD §8,设计文档不随本仓发布;待核实 不得当既成事实)
| 协议 | 库(pin) | 规范/版本 | 覆盖 | 传输 | 自测 |
|---|---|---|---|---|---|
| OPC-UA | asyncua>=1.0,<2 | OPC UA 1.0x(DA+HA+AC 子集) | 任意合规 Server | opc.tcp | ✅ mock+HDA |
| Modbus-TCP | pymodbus>=3.5,<4 | App 1.1b3;FC 1/2/3/4(读);写 FC05/06/15/16 未实现(read-only);字节序探测+厂商模板 | 任意 TCP 从站 | TCP/502 | ✅ |
| Modbus-RTU | pymodbus>=3.5,<4 + pyserial>=3.5 | Modbus serial (RTU) | 串口从站 | RS-485/serial | ✅ socat PTY 真串口链路 verified 2026-07-02;物理 RS-485 待核实 |
| S7comm | pyS7>=2.8,<3 | ISO-on-TCP (RFC1006) | S7-300/400/1200/1500(后者需开 PUT/GET、关 optimized DB) | TCP/102 | ✅ |
| 三菱 MC | pymcprotocol>=0.3,<1 | MC/SLMP 3E(1E 待核实) | Q/L/QnA/iQ-R/iQ-L | TCP/UDP | ✅ |
| Omron FINS | in-repo stdlib client(无第三方 pin) | FINS per Omron W227/W342(0101/0102/0501/0601 子集;CS/CJ-mode 区码) | CS/CJ/CP/NX(NJ via FINS) 家族(厂内覆盖 待核实) | UDP 9600(默认)+ FINS/TCP | ✅ in-repo mock responder 验证(tests/test_fins.py);live PLC 待核实 |
| EtherNet/IP | pycomm3>=1.2,<2 | EtherNet/IP+CIP:Logix tag + PCCC 数据表 | AB Logix(ControlLogix/CompactLogix/GuardLogix)+ PLC-5/SLC-500/MicroLogix(PCCC)+ Micro800(plctype 选) | TCP/44818 | ✅ mock(Logix + SLCDriver);真 PLC-5/SLC/MicroLogix/Micro800 待核实 |
| EtherCAT | pysoem>=1.1,<2(extra) | EtherCAT;CoE SDO/PDO | SOEM 兼容主从 | Linux+root+真从站 | ⚠️ 无软仿真;真机 待核实 |
| PROFINET | pnio-dcp>=1.1,<3(extra) | DCP 发现/诊断,不碰 RT 循环 | 西门子系 PN 站 | L2 raw socket | ✅ mock;真机 待核实 |
| MTConnect | requests>=2.31,<3 | MTConnect 1.x | CNC/机床(agent) | HTTP REST | ✅ 静态XML |
| IO-Link | requests>=2.31,<3(复用 MTConnect pin) | IO-Link Master JSON Integration(IOLINK-JSON);ifm IoT-Core / plain-REST 双 flavor | 带 JSON/REST 接口的主站(ifm/Balluff/Turck 类) | HTTP REST/JSON | ✅ mock 主站(双 flavor);live master 待核实 |
| MQTT/Sparkplug B | paho-mqtt>=2.0,<3 + protobuf>=4.25,<8 | MQTT 3.1.1/5;SpB(Tahu);亦支持裸 MQTT | SpB 边缘/Broker;UNS | TCP/1883/8883 | ✅ |
| PLCnext vPLC | 复用 OPC-UA/Modbus pin | 菲尼克斯 PLCnext 内建 OPC-UA(4840)+Modbus-TCP | Phoenix Contact vPLC | opc.tcp+TCP/502 | ✅ 路由验证(tests/test_plcnext_route.py);活体 待核实 |
| Gateway MES/SCADA 读层: WebDev | requests>=2.31,<3(复用 MTConnect pin,无新 HTTP 依赖) | Gateway HTTP web API(WebDev 模块 JSON 端点:/system/webdev/... — status·tags/browse·tags/read·alarms·tags/history);只读,不碰平台 OPC-UA server(由 opcua connector 覆盖);确切 API 版本/路径 待核实 | 平台 Gateway 聚合的 provider tag / 告警 / 历史 | HTTPS + token/API-key | ✅ mock 网关(in-repo,双 flavor);live gateway + 确切 API 版本/路径 待核实 |
| Gateway MES/SCADA 读层: Gateway | requests>=2.31,<3(复用 MTConnect pin,无新 HTTP 依赖) | Gateway HTTP web API(内建状态/系统函数 REST:/data/status·/data/tags·/data/alarms 布局);只读,JSON 建模,确切路径树 待核实 | 平台 Gateway 状态/模块/tag/告警/历史 | HTTPS + token/API-key | ✅ mock 网关(in-repo,双 flavor);live gateway + 确切 API 版本/路径 待核实 |