Omron PLC:接 LabVIEW 常踩的 5 个坑

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 排查顺序:遇到问题按这个顺序走

  1. 先分清隐式还是显式。要周期性刷新 I/O 数据就先解决 EDS;只是偶尔读几个变量就用 Get/Set Attribute Single。
  2. 再确认数据类型:Omron 的布尔不是标准的一位语义,读回来带类型码,写进去要按它要的长度和位置,Type 用 Raw。
  3. 然后确认 PLC 侧符号属性:有没有做网络变量发布、Array Symbol 有没有勾掉、数组大小对不对。
  4. 最后才看 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,或者几台设备要串成一套系统,欢迎在评论区留言;身边朋友有类似项目,也欢迎帮忙引荐。

相关推荐
南京码讯光电技术有限公司33 分钟前
工业5G/4G路由器怎么选?核心参数解析与工业级网关选购指南
网络·智能路由器
爱和冰阔落42 分钟前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
我是koten6 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
feng_you_ying_li14 小时前
linux之数据链路层
linux·网络·智能路由器
国科安芯16 小时前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
爱吃奥利奥_wen17 小时前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
国科安芯18 小时前
算力上天之后的电与静:星上边缘计算载荷带外管理网络的低功耗调度与辐射容错
网络·人工智能·嵌入式硬件·安全·边缘计算·低轨卫星·商业航天
wdeok18 小时前
Socket编程UDP-简单的聊天室
网络·网络协议·udp
Android系统攻城狮20 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频