☰
工业远程数据采集实战:IR615+InConnect+组态软件全解析
2026/9/30 15:18:16 网站建设 项目流程

接手这套“IR615路由器 + InConnect平台 + 组态软件”远程数据采集项目的时候,我的第一反应不是兴奋,是松了口气。做工业现场的人都知道,远程采集这块业务,最折磨人的从来不是组态软件怎么画画面,而是那条“数据通道”到底稳不稳、通不通、安不安全。IR615负责把现场设备接到4G网络,InConnect平台负责把网络那头的远程电脑和现场PLC拉到一条加密数据链路上,组态软件则把Modbus寄存器里那些冷冰冰的数字变成有业务意义的画面。三个角色各管一段,合起来就是一套典型的工业物联网远程数据采集架构,适合无人值守站点、泵站配电房、环保监测站这类场景。这篇内容我就按照自己部署的实际过程来写,从选型思路到具体配置,再到踩坑排障,希望能帮正要上这套方案的朋友少走几步弯路。

1. 整套方案的架构思路:一条链路解决三件事

远程数据采集听起来不复杂,就是“在现场把数据读上来,传到远处看”。但真正落地的时候,你会发现它其实是由三个独立难题叠加而成的:现场接入、远程连通、上位机展示。每一个环节都有专门的设备和软件去解决,但把这仨拼成一条完整链路,才是项目真正的核心工作。

1.1 为什么现场采集要用IR615这类工业路由器

先讲一个很实际的对比。很多人在项目初期会想:我不就是传个数据吗,拿个家用路由器或者干脆用电脑拨号上网行不行?行,但仅限于实验室。到了工业现场,你会遇到一连串家用设备扛不住的事:电源电压波动大,雷击浪涌常见,机柜温度经常飙到五六十度,网络一断就得自己恢复,甚至还要接RS485串口仪表。家用路由器在这类环境里,运气好撑几个月,运气差就是不断死机重启、Wi-Fi掉线、配置丢失。

IR615这类工业4G路由器就是为这些场景设计的,拿我用的那台来说,DIN导轨安装可以直接卡进机柜,宽压直流供电从12V到48V都吃得住,运行温度范围比商用设备宽得多,自带看门狗能自动恢复死机状态。更重要的是它带双SIM卡槽,主卡流量耗尽或者信号出问题,可以自动切到备用卡,这一点对无人值守站点来说相当于多了一条保命通道。至于工业接口,以太网口和RS232/RS485串口都是标配,既能接网口PLC,也能直接接串口仪表,灵活性比家用设备高一个等级。

1.2 InConnect平台解决的核心问题是什么

设备接到4G网之后,下一关就是“远程怎么连”。现场路由器拿到的基本都是运营商分配的私网IP,而且每次重新拨号IP都可能变,远程电脑根本没法定向找到它。传统做法是申请公网IP、做端口映射,费钱费事不说,安全风险也大——把PLC的502端口直接暴露在公网上,就跟把家门钥匙挂在门外一个道理。

InConnect平台的出现,本质上就是把这个矛盾绕开了。它采用的是设备主动上云的连接方式:现场IR615开机之后,主动向InConnect云平台发起加密连接,远程电脑这边安装官方客户端后登录同一个账号,就能通过云平台作为中转,建立一条加密安全通道,直接访问现场PLC的内网IP。整个过程不需要公网IP,不需要在路由器上开任何入站端口,远程电脑和现场设备之间跑的是双向验证的专用数据通道。对于我这种需要同时维护十几个站点的人来说,InConnect控制台还能集中查看每台设备的在线状态、信号强度、流量情况,甚至远程升级路由器固件,省掉了大量跑现场的时间。

1.3 组态软件在整条链路里的地位

数据通道打通以后,剩下的“最后一公里”就是上位机怎么把这些数据变成能看、能操作的东西。这就是组态软件干的活。有人会用MES厂商或者云平台来做数据展示,但更多时候,客户要的就是一个贴近传统习惯的SCADA画面:有设备布局图、有实时数值、有趋势曲线、有报警列表。

组态软件的选择范围其实很大,传统的有WinCC、组态王、InTouch,开源阵营里有FUXA、Node-RED加Dashboard这类组合。我个人在中小型项目里更偏向FUXA,原因很直接:免费开源、基于Web浏览器访问、部署轻量,而且原生支持Modbus TCP/Modbus RTU、OPC UA、Siemens S7、BACnet、MQTT这些工业协议,用Docker一条命令就能跑起来。最关键的是,FUXA的数据点配置方式非常直观,建设备、加Tag、绑定画面控件,逻辑跟主流商业组态软件一致,迁移成本很低。

整条链路串起来就是这个逻辑:现场PLC或智能仪表通过以太网或RS485接到IR615路由器,IR615通过4G网络保持与InConnect云平台的长连接,远程电脑运行InConnect客户端建立加密通道,此时FUXA组态软件就能像访问本地设备一样,用Modbus TCP协议去读现场PLC里的数据。通道隔离、设备主动上云、上位机无感接入,这套结构最大的好处是——不管现场在多么复杂的网络环境里,你永远只需要关心“通道通没通”和“点位对没对”这两件事。

2. 关键细节:选型、账号与通信规划

方案框架搭起来之后,真正决定项目顺不顺利的,反而是那些容易被忽略的细节。我给自己定的规矩是:先花半天把细节想清楚,再动手配置。原因很简单,后面九成的问题都出在选型不全、账号没配好、点位表一塌糊涂上。

2.1 硬件接口与SIM卡准备

先说硬件。IR615的型号后缀不同,接口配置会有差异,比如有的是双以太网口加一个RS232/RS485串口,有的带Wi-Fi。下单之前一定要对着现场设备清单做一次接口核对:PLC是什么品牌什么型号,走以太网还是串口,如果走串口是RS232还是RS485,波特率、数据位、校验位是多少。这一步漏了,等设备到了现场才发现没有对应接口,再折腾就非常被动了。

供电方面要提前确认机柜里的直流电源电压。IR615支持宽压输入,但我见过有人直接接到PLC的24V开关电源上,结果那路上还挂了好几个电磁阀,电压波动一大路由器就重启,找了一下午原因才定位到是供电稳定性问题。稳妥做法是给路由器配独立的工业电源或者至少是单独一路带隔离的24V输出。

SIM卡是另一个容易被低估的环节。要选择开通数据业务的物联网卡或者普通流量卡,APN参数要先问清楚运营商。国内几家的常见APN,移动一般是cmnet,联通是wonet或3gnet,电信是ctnet,用户名密码一般留空。但如果是企业定制的物联网专网卡,APN可能是专用的,这个必须找客户经理确认,别想当然。流量套餐按“单站点每月几百MB到几个GB”去预估基本够用,但如果你要做远程视频监控或者固件远程升级,流量消耗会大一个量级,要提前评估。

2.2 InConnect账号体系与设备绑定

InConnect平台的操作流程,大多数人第一次接触会觉得像在配置一个云服务器后台,实际上它的逻辑很“工业”:注册账号、创建组织/站点、添加设备、绑定服务。需要注意,在平台上添加设备时填的序列号必须和IR615机身标签上的序列号完全一致,包括大小写和横杠。我有一个习惯,拿到新路由器第一件事就是拍一张机身铭牌照片存进项目文档,避免在机柜里找个标签还要拿手电筒照半天。

创建设备并激活之后,平台一般会要求你在路由器侧也开启InConnect相关功能。IR615的固件里有一块独立的菜单,进去之后会显示设备激活状态、云平台连接状态、固件版本等信息。这个环节有个很常见的坑:路由器固件版本太老,云平台上的新功能拉不起来。所以路由器到手第一步先检查固件版本,有更新就升到最新,再去做云平台绑定,能省掉很多诡异问题。

设备绑定好之后,你需要在InConnect控制台里添加“应用”或“服务”——简单理解就是告诉平台:我远程需要访问现场哪个IP的哪个端口。举个例子,现场西门子PLC的IP是192.168.1.10,Modbus TCP端口是502,那就在应用列表里添加一个条目,IP填192.168.1.10,端口填502。可以同时添加多个应用,比如你还要SSH登录路由器自己,那就把路由器的局域网IP和22端口也加进去。这一步的目的就是建立一个“访问清单”,避免远程通道建立后能够访问到的范围过大,不安全。

2.3 Modbus点位表怎么设计才不容易翻车

接下来这个建议,真的听进去了能帮你少加很多班。开始配置组态软件之前,先把Modbus点位表理清楚。点位表就是一张Excel表格,字段至少包括:设备名称、模块类型(Modbus TCP还是RTU)、Unit ID、功能码、寄存器地址(要明确是0基址还是1基址)、数据类型(16位、32位浮点、32位整数等)、字节序、缩放系数、工程量单位、描述。

为什么要这么细?因为远程调试的每一分钟都是成本。链路通了之后,如果PLC数据读出来是乱码,排查过程要反复远程登录、发报文、看返回,一不小心就要跑现场。而提前把点位表做扎实,配置的时候对着填,能避免绝大多数问题。

有一个细节特别容易错:Modbus地址在PLC内部是1基址,但在Modbus报文里实际用的是0基址,差1偏移。组态软件里填地址时,有些软件要求填报文地址,有些要求填设备地址,差了1就所有点都读错。FUXA这类开源软件一般在配置界面写得很清楚是“Address”,但最好还是对照软件文档确认一次。另外,32位浮点位占两个连续寄存器,还存在字节序问题,常见的有ABCD、BADC、CDAB、DCBA四种排列方式,不对就出现“几十万”或者“一点几E-39”这类离谱的数值。点位表里把每个浮点点的字节序标出来,能省掉大量试错时间。

3. 从零配置的完整实操记录

这一部分我按实际动手的顺序来写。环境背景:一个污水处理站点,现场有1台Modbus TCP协议的PLC,IP是192.168.1.10,端口502,还有几块RS485接口的多功能电表。我需要在公司远程把这些数据采到FUXA组态软件里,展示液位、流量、总功率、用电量等指标。

3.1 IR615上线:APN、信号与LAN规划

路由器上电之后,先用网线把电脑接到IR615的LAN口,浏览器打开默认管理地址(每台设备出厂不同,以说明书为准,常见是192.168.1.1)。登录后第一步不是急着配4G,而是先把LAN口IP改掉。因为现场设备网段是192.168.1.x,路由器LAN口默认也是192.168.1.1,这样会和PLC的IP冲突。我把路由器LAN口改成192.168.1.254,DHCP服务关闭——因为现场设备都是固定IP,不需要路由器分配地址,关闭DHCP能避免下面接的电脑拿到一个和PLC冲突的IP。

然后配置4G拨号。在WAN设置里选择4G/LTE模式,填好运营商APN参数,保存后观察拨号状态。正常情况下,一两分钟内路由器WAN口会获取到一个IP地址。注意,这个IP多半是运营商分配的私网地址,不要看到是10.x或者100.x开头就觉得不对劲,这是正常的,因为InConnect走的是设备主动上云通道,根本不需要WAN口拿到公网IP。

信号强度要在这里先确认好。IR615的状态页面一般能看到RSRP、SINR等参数。参考标准大概是:RSRP大于-95 dBm算良好,-105到-115算一般,低于-120基本就是信号很差,需要换天线位置或者加装室外天线。SINR最好在10以上,低于5的话网络质量会很差,表现为延迟忽高忽低。我这次装的位置信号算可以,RSRP在-89左右,SINR是13,整体够用。

如果你现场接的是RS485串口仪表,还需要在路由器上配置串口透传或Modbus网关功能。IR615固件里一般有串口设置面板,把接口模式选成RS485,设置好波特率和数据格式,然后开启Modbus网关,把串口映射到一个局域网TCP端口上(比如502)。这样远程上位机就可以用Modbus TCP协议去访问串口设备了,只不过网关会自动在TCP报文和RTU报文之间转换。这一步如果路由器型号不支持,就得另外配一个串口服务器,道理是一样的。

3.2 InConnect远程通道搭建与验证

路由器上线之后,登录InConnect云平台。先在“设备”页面确认刚才绑定的IR615状态是“在线”。如果状态一直是离线,八成是设备序列号没对上或者路由器固件太旧,先排查这两个。随后在设备详情里添加应用,我把PLC的192.168.1.10:502加进去,另外把路由器自身的192.168.1.254:443加进去,方便远程登录路由器管理界面做维护。

接下来是远程电脑侧。下载安装InConnect客户端,登录,界面里能看到这台IR615设备,点击“连接”,客户端会在本机创建一个虚拟网络适配器并分配一个地址。这时候在命令行Ping一下现场PLC的IP,如果通了,说明加密通道已经建立。请注意,这条路不是把数据从公网透传过来,而是通过云平台建立了一条安全通道,你的电脑就像临时接入到了现场局域网里。Ping通之后再用Modbus调试工具读一次PLC的寄存器,确认Modbus报文明明能返回数据,这相当于对整个传输链路做了“冒烟测试”。现场我遇到过通道通了但Modbus就是不同,最后发现是上位机防火墙挡了502端口,放行之后就正常了。

关于InConnect客户端连接后分配的虚拟IP,不同版本机制不完全一样,有的会直接把现场局域网网段映射到本机,有的需要你在上位机添加一条静态路由。我建议下载官方最新的客户端使用说明看一下,针对“我应该Ping哪个地址”有明确的说明。不过只要Modbus调试工具能读通,就说明链路没问题,可以直接进下一步配置组态软件。

3.3 FUXA组态软件接入数据

我用Docker部署FUXA,一条命令就能启动:docker run -d --name fuxa -p 80:1881 frangoteam/fuxa,官方镜像还支持挂载数据卷持久化配置,这个对项目交付很重要,不然容器一删配置全没。部署完打开浏览器进入FUXA管理界面,就在这一步会遇到不少初学者卡壳的问题——先不要急着画画面,先把数据源配好。

在FUXA里新建设备,协议选Modbus TCP,主机地址填现场PLC的IP(就是192.168.1.10),端口502,Unit ID按PLC程序里配置的值填,比如1。保存后可以在线测试,看设备状态是否变成“通信正常”。这一步如果连不上,问题一定出在通道或者地址端口上,放心排查链路即可。接着添加数据点(Tag):名称填“液位”,地址填PLC程序中液位寄存器对应的Modbus地址,数据类型选16位无符号整数或者32位浮点,字节序按点位表填。每个Tag保存后,FUXA会自动开始轮询,实时值会显示在设备列表里。

然后才开始搭建画面。FUXA的可视化编辑器拖控件、绑Tag的方式跟WinCC这类软件很接近,文本控件绑定液位Tag,再做一个百分比的柱状图控件绑定同一个液位值,保存发布后浏览器就能实时看到数据刷新。到这里,远程数据采集的完整流程已经走通了——现场PLC的数据,穿透4G网络和加密通道,实时显示在远程电脑的浏览器组态画面上。

3.4 FUXA多位号相加的三种实现方式

之前有朋友问“FUXA组态软件怎么实现多位号相加”,正好借这次项目详细说一下。所谓多位号相加,在工业现场通常有两种含义:一种是把多个数据点的值加在一起,比如4块电表的功率总和;另一种是把多个连续寄存器数据组合成一个值,比如32位数据由两个16位寄存器组成。FUXA对这两种情况都有解决办法,而且不止一种。

第一种情况,多个Tag直接求和。最简单的做法是在FUXA画面上放一个文本控件,在控件属性里找到表达式或脚本绑定功能,写一个简单的JavaScript表达式,引用那几个Tag的变量,比如U1功率+U2功率+U3功率+U4功率。这种方式的优点是实现快,不用额外增加设备配置,适合显示总功率这类临时需求;缺点是表达式维护起来不直观,点位一变就得改表达式,而且如果参与计算的某个点断线报错,表达式的结果也会异常。

第二种情况,用一个“计算Tag”来集中管理。在FUXA的Tag管理里,有些版本支持在Tag之间做简单的运算映射,或者在脚本引擎里写一个周期执行的函数,定期把几个源Tag的值相加,结果写入一个结果Tag。画面上的控件直接绑结果Tag就行,业务逻辑和显示做到了分离。后期要加点位、改权重,只改计算脚本的引用即可,不用动画面。这种方式适合点位多且计算逻辑反复调整的场景,比在控件上写表达式更推荐。

第三种情况,把计算还是放在下位机或采集器里做。比如你用的是带计量功能的PLC或者多功能电表,它本身就能输出“总功率”这个寄存器,那上位机只读这一个数值就行。很多现场就是习惯把简单计算下沉到PLC程序里,上位机永远只读结果,这样链路数量短、刷新快、也不容易出错。缺点是如果路由器只接串口电表,电表本身没有可编程能力,那就只能在组态软件里做这个加法了。

至于32位数据由多个寄存器组合的问题,FUXA在Modbus设备的Tag配置里有“数据类型”选项,直接选DWord或Float32,它就会自动把相邻两个寄存器合起来解析。关键是在字节序设置上选对排列顺序。如果读出来的数值完全离谱,就轮流试一遍ABCD、BADC、CDAB、DCBA四种组合,一般能立刻定位到正确的那一项。这里多说一句,多寄存器组合的字节序,不同品牌PLC的默认方式不一样,点位表里标记好是很有价值的。

4. 现场踩坑实录与问题排查

远程项目的问题排查比本地要难,因为你看不到现场、摸不到设备,所有判断都只能靠远程工具和数据。我把这次项目中遇到的和朋友反馈中比较有代表性的问题整理成表,再挑几个典型的展开讲讲,给大家一个可以照着操作的排查手册。

现象可能原因排查与处理
路由器4G拨不上号SIM卡未插好/APN错误/信号太弱检查SIM卡状态,核对APN,看信号参数RSRP/SINR
路由器上网正常但InConnect设备离线序列号未绑定/固件版本过旧核对序列号,升级固件,确认路由器侧InConnect功能已开启
上位机Ping通PLC但Modbus读不了防火墙拦了502端口/Unit ID不对放行上位机TCP 502端口,核对PLC的Unit ID
数据读出来是乱码或天文数字字节序错误/数据类型选错/地址偏移切换四种字节序,核对数据类型和Modbus地址
组态画面数据刷新很慢轮询周期太长/Tag数量过多调整设备采样时间,合理设置轮询分组
断线后长时间不自动恢复路由器看门狗未开启/客户端未设置自动重连开启IR615看门狗,InConnect客户端开启开机自启和自动重连

4.1 路由器连不上网这样查

路由器全部配置完后,发现4G始终拨不上号。第一步看SIM卡是否被识别,管理界面里SIM卡状态一栏如果读不出ICCID,就断电重插一遍,很多所谓“没信号”其实只是卡没插到位。第二步核对APN,尤其是运营商定制的物联网卡,APN大概率不是默认值,必须找运营商确认。第三步看天线,IR615的天线接口是多芯的,拧不紧或者天线拧错接口都会导致信号很差,我见过一台设备SINR一直是负值,结果就是天线口的一个密封圈把接口垫歪了,重新拧紧后信号直接恢复正常。第四步确认路由器的时间同步是否正常,NTP时间不对的话,面向云平台的加密连接可能会因为证书校验不过而失败,这个坑比较隐蔽,建议一开始就在路由器上把NTP服务器地址配好。

4.2 组态软件读不出数据的定位方法

链路是通的,但FUXA里的Tag值一直是0或者显示离线,这种情况我的标准排查顺序是:先用Modbus调试工具软件手动发送读请求,确认PLC端口确实有响应。调试工具能不能读到,直接决定了问题在通道还是在上位机软件配置。如果调试工具读到正常数值,那就是FUXA里设备配置的问题:Unit ID写没写对、地址是否偏移、寄存器数量是否正确。很多PLC程序里用到的保持寄存器地址是40001,但报文里实际寻址是0,有些软件填40001它能自动映射,有些软件必须填0,差距就在这。

还有一种比较迷惑的情况:单个Tag读取正常,但一添加几十个Tag就有一半读不到。这种多半是超出了PLC的单个Modbus报文数据长度上限,或者PLC的程序里有多个数据块,FUXA需要分批读取,而其中某个批次的地址顺序不连续导致读失败。解决办法是把Tag按数据块分组配置,不要让组态软件一次性扫描全部地址,或者专门挑几个核心点位测试,确认基础通信没问题再逐步添加。

4.3 延迟不稳定与丢包的应对思路

4G链路的延迟天然比有线局域网高,正常情况在30到80毫秒之间。但如果连续Ping同一个PLC地址,延迟忽大忽小甚至丢包,就需要重点关注了。先看信号参数,如果SINR低于10或者RSRP跳变超过10dB,大概率是室外天线位置或者线缆接头问题。如果信号很好但延迟依然高,看看是不是路由器启用了不必要的数据包处理功能,关闭之后会顺滑很多。

组态软件的轮询策略也要配合调整。远程链路带宽有限,如果上位机以100毫秒周期去轮询上百个寄存器,很容易造成网络拥塞,表现出来就是画面数据跳变或者偶尔断帧。合理做法是:需要快速响应的点位用500毫秒到1秒的采样周期,普通趋势点位用3到5秒,历史统计点位甚至可以几十秒一次。FUXA支持按设备的采样时间设置,把不同实时性的数据点分到多个设备里,可以有效地平摊网络负载。

4.4 FUXA特有坑与调试手段

FUXA有几个自己特有的坑,官方文档写得比较简略,得靠踩坑补课。第一,容器部署时需要用“数据卷”把配置目录持久化,否则重建容器配置全丢。第二,Tag地址配置界面里,不同协议字段的含义差异很大,Modbus TCP是地址类型选择,OPC UA是节点ID格式,如果混用很容易串,做项目时可以在Tag命名上加上前缀区分协议,比如MB_液位、PLC_液位。第三,画面编辑完要点击发布生效,不然刷新页面看到的还是旧画面。第四,表达式脚本如果引用了不存在的Tag名,不会报编译错误,而是在运行日志里输出警告,画面却没有数据,调试时要重点看浏览器控制台和FUXA运行日志的报错。

数据写入这块也提一下。远程数据采集不只是读,有时还要远程控制,比如远程启动水泵、远程切换阀门。FUXA里Modbus写入一般通过控件动作或者脚本实现,写保持寄存器时要注意功能码的选择和写单个寄存器与写多个寄存器的区别。千万别在正式项目里不做权限控制就直接开放远程写操作,我一般会在画面层面对写操作控件加权限角色限制,并且把关键控制对象的PLC程序里设计成脉冲触发而不是电平触发,防止通道抖动误动作。

5. 一些个人经验与后续扩展

整套系统跑通之后,我最大的感受是:远程采集链路三成的问题在通,七成的问题在点位表和配置规范。Ping通不代表数据对,数据对不代表业务对,每一步都要留痕。尤其是点位表,在我这里是比任何组态画面都重要的交付物。画面可以重画,脚本可以改,点位表一旦混乱,后期每次排查都是额外加班。

运维习惯上,我建议给每台IR615贴上标签,写明SIM卡号、序列号、APN、站点名称、配置日期,这个习惯在很多项目里帮我快速定位了问题设备。InConnect控制台上,每次修改现场应用列表之后,记得在远端重新连接一次,因为通道列表的变更有时不会自动同步到已建立的连接。另外,组态软件的账号密码千万不要用默认的,这是远程控制现场设备的门户,安全习惯比技术本身更重要。

这套架构后续扩展空间也很大。IR615本地支持采集数据通过MQTT转发到云平台,如果你不想使用传统组态软件,可以直接把数据推到IoT平台,手机端做看板。FUXA本身也支持MQTT协议接入,可以作为MQTT客户端订阅现场上行的数据,画面展示完全不用变。如果你需要历史数据分析和报表,FUXA可以接InfluxDB这类时序数据库,配置好之后历史曲线和日报统计就是开箱即用的事。但要提醒一句,加了历史库之后流量和服务器成本会上升,小项目用SQLite或者CSV导出就够,不必贪大求全。

最后再说一个每次项目交付都会做的小技巧:把现场设备的“标准配置备份”导出一份存到公司服务器上。IR615的配置、FUXA的Docker镜像版本、InConnect客户端版本,这些信息都固化到一个项目文档里。设备出问题时,照着文档恢复能省掉大量“版本不匹配”造成的折腾。远程数据采集这行,拼到最后拼的不是技术上限,而是这些琐碎细节上的稳定和耐心。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询