Omron 常进 LabVIEW 的是三类东西:CJ1M/CJ2M、NX102 这类 PLC,G9SP 系列安全控制器,以及 SSR 之类的低压执行元件。PLC 侧主流走 EtherNet/IP(NI 的工业通信工具包),另有 DSC 加 OPC 的共享变量老路。
>
这台设备最容易卡住的地方不是梯形图怎么写,而是 EDS 从哪来、Omron 到底支不支持 tag 读写。

Omron CJ2M 走 EtherNet/IP,LabVIEW 用显式报文读写 PLC 数据
01 这台设备怎么接进来
接进来常见三条路。
一是 EtherNet/IP。装 NI 的 EtherNet/IP 工具包,用显式报文那组 VI 就能和 CJ2M 通信。但有个前提容易被忽略:tag 读写在 Omron 上不成立。按"放一个 Tag Read VI、一个 Tag Write VI 就行,连会话都不用建"这条思路走,结果完全走不通------tag 方式是 Rockwell PLC 才有的,Omron 不支持,显式通信要用 Get/Set Attribute Single 这类 VI。这一点文档里不会提前说明,能白折腾很久。
二是 DSC 加 OPC。LabVIEW 8.6 加 DSC 模块加 NI OPC Server 接 CJ1M,把共享变量映射到 PLC 数据存储器,一个案例里挂了上百个共享变量。
三是把厂商的 .NET 通信库包一层:把 Omron 提供的十几个 dll(含 CIPCompolet.dll、CIPCoreDotNet.dll)按 NI 知识库的做法转成 .NET 组件再调用。
02 5 个具体问题与解法
- EDS 文件得自己造,没有现成的下载。 要用隐式(I/O)通信,就必须给 PLC 一份描述 LabVIEW 这一侧的 EDS,这是反复卡住的一步。工具包不提供标准 EDS,示例工程里也没配。可行做法是参照工具包的 Create Assembly Instance VI 例子自己写:默认 assembly 实例号是 100 和 150,这两个数在报文和 EDS 里写成十六进制 0x64 和 0x96,很容易看漏。用自造 EDS 接通 CJ2 的关键一步,是把 EDS 里的 MajorRev 改成和你的 EIP 驱动版本对应------2018 版驱动写 18,否则写 17。
- 读回来是个四字节数组,第一位 193 不是故障。 用 EthernetIP Read Tag 读 Omron 的一个布尔量,拿到的是 193、0、x、0 这样的四元素数组,PLC 上变量一变,第三个元素跟着变。193 就是十六进制的 0xC1,是 CIP 规范里布尔的 Data Type Code。另外 Type 一定要选 Raw,选 BOOL 会报数据类型不符。这个响应里第二、第四个字节代表什么,目前没有公开的完整解释。
- 写布尔的报文长度是靠试出来的。 用 EthernetIP Write Tag Raw 写,先报 CIP Status 0x13(数据不够);字节数从 4 加到 6,错误变成 0x20 加扩展状态 0x8022;线索是 Omron 侧那个布尔量其实按 16 位处理,符号数组大小可以设成 16。最后跑通的格式是:第一字节数据类型码、第二字节 0、第三字节元素个数、第四字节数据低字节、第五字节数据高字节;并且要在 CX Programmer 里去掉布尔符号的 "Array Symbol" 勾选。反直觉的一点是------改第四字节会报 0x8017,真正让 PLC 变量置 1 的是第五字节。Rockwell 的惯例不一样,它的布尔在 Write/Read Raw Tag 例子里按 DWORD 处理,别混用。
- 安全控制器的通信口基本是封的。 G9SP-N20S 想和 LabVIEW 通信:USB 口厂商只给编程用;RS-232 模块在较老的控制器和软件版本(1.1 / 1.10)上不激活;以太网能用,但每站要多加模块和路由开销。用 USB 转串口线加自制电缆(G9SP 那一侧是日式接线),把 2、3 脚短接做回环时串口收发完全正常,一接上 G9SP 指示灯就毫无反应,波特率设 9600 也没用。这个现象目前没有公开的可靠解法。
- 输出电流不够就别硬驱动。 用 USB-6501 的数字输出直接驱动 24 V 的 SSR、再去带一个 24 VDC 1.6 W 的阀,可行的判断是可以走开集(open collector)配置,但更倾向选自带 8 路继电器输出、且带 8 路可接受 60 V 数字输入的模块。
03 排查顺序:遇到问题按这个顺序走
- 先分清隐式还是显式。要周期性刷新 I/O 数据就先解决 EDS;只是偶尔读几个变量就用 Get/Set Attribute Single。
- 再确认数据类型:Omron 的布尔不是标准的一位语义,读回来带类型码,写进去要按它要的长度和位置,Type 用 Raw。
- 然后确认 PLC 侧符号属性:有没有做网络变量发布、Array Symbol 有没有勾掉、数组大小对不对。
- 最后才看 LabVIEW 侧:IP 和节点号、EIP 驱动版本和 EDS 里的 MajorRev 对不对得上。走 DSC 加 OPC 路线的,注意变量引擎跑久了会崩,稳定性要自己先测。
04 一台能干什么,几台搭起来能干什么
单台 Omron PLC 接进 LabVIEW,就是把设备的动作和状态跟上位机逻辑连起来:上位机下配方和启停,PLC 回状态和计数。
几台搭起来,LabVIEW 是中间那一层:同一个程序里可以同时管 PLC、管相机和视觉、再用 NI 的数字 I/O 模块驱动小功率负载。跨厂商的那一处------NI 的视觉软件和 Omron 的 NX102 对不上------恰是问题最集中的地方:那套配置改了四个不同的 IP 都没通,还卡在目标设备只能把 revision 设成 0、而要求是 2 这件事上。
我们专注 LabVIEW 软件开发与测试测量系统集成,从硬件选型、方案设计到现场交付调试,提供一站式服务。手上有一台设备想接进 LabVIEW,或者几台设备要串成一套系统,欢迎在评论区留言;身边朋友有类似项目,也欢迎帮忙引荐。