Selec FLEX 2M 远程I/O Modbus模块入门

Selec的Flexys是一个模块化的可编程逻辑控制器(PLC)及其相关插件模块系列。Flexys系列还包含本文介绍的RS-485 Modbus远程扩展模块。图1展示了Selec EXP FLEX 3M V3以及一个FL-SC-AI03-U-AO02-U模块。它们共同为配备Modbus的PLC增加了模拟功能,提供三个14位模拟输入和两个模拟输出。

本工程简报对如图1配置的Selec EXP FLEX远程底座进行了一般性介绍。其结果是一个独立的多功能Modbus模拟模块。可以将更多模块组合在一起,以扩展远程I/O功能。


本文是DigiKey工业自动化现场指南的一部分

位置 :Start It → SELEC
难度:seedling: 学生 — 难度等级说明
最后更新 :2026年3月9日


图1:搭载FL-SC-AI03-U-AO02-U模拟卡的Selec EXP FLEX 3M V3远程Modbus底座图像。它已准备好通过AC-USB-RS485-02 USB转RS-485电缆进行编程。

技术提示 :本文概述了准备所介绍的Selec模拟卡通过Modbus进行远程操作的必要步骤。该流程普遍适用于所有Selec Flexys卡

请务必查阅Selec相关资料,了解如何将模块与其Flexys系列PLC连接的信息。

准备 Selec 组件用于通用 Modbus 的步骤

本节提供了准备Selec设备的一般性概述。请务必查阅相应的说明手册以获取详细信息。例如,我们重点介绍Modbus接口,但略过了0-10 V与4-20 mA输入和输出配置的细节。请注意,相关卡(如数字I/O卡)将有类似的Modbus要求,但硬件配置独特。

步骤总结如下:

  • 设置EXP FLEX 2M V3远程底座的Modbus波特率和地址。

  • 配置FL-SC-AI03-AO02-U卡的跳线。

  • 通过24 VDC电源为EXP FLEX 2M V3远程底座供电。

  • 对EXP FLEX 2M V3扩展模块进行编程。

  • 根据需要连接Modbus接线和终端电阻。

  • 将FL-SC-AI03-AO02-U卡的内部寄存器映射到其Modbus地址

  • 对PLC进行编程

设置波特率和 Modbus 地址

EXP FLEX 2M V3底座有四个必须设置的DIP开关。它们位于模块的右下角,如图1所示。这些开关被“编程”为19200波特率和物理Modbus地址1。

设置内部跳线

诸如FL-SC-AI03-AO02-U等Selec Flexys卡必须使用排针跳线进行配置才能正常运行,如图2所示。此卡可配置为与许多常见的模拟工业设备连接。这包括0-10 VDC、4-20 mA以及多种热传感器,包括RTD和热电偶,例如J型和K型。
有关配置该卡的更多信息,请参阅Selec说明手册。

图2 :FL-SC-AI03-AO02-U卡内部跳线图像。请注意,所有通道均配置为电压模式。

技术提示 :Modbus使用差分信号传输来最大限度地减少远距离通信的噪声。双绞线的极性至关重要,如果接线接反,系统将无法运行。

这个DIY LED逻辑探头是检查通信活动的好工具。

EXP FLEX 2M V3 供电

EXP FLEX 2M V3由24 VDC电源供电。

可以推测,该模块将安装在距离主PLC较远的远程机柜中。然后安装一根双绞线用于Modbus通信。可以从主设备机柜向远程机柜铺设电源线。然而,在远程机柜中安装专用的24 VDC电源可能是更明智的做法。

EXP FLEX 2M V3 扩展模块进行编程。

必须对EXP FLEX 2M V3远程底座进行编程,使其识别主站卡。Selec提供了一个EXP FLEX 2M V3实用程序来完成此任务。运行中的程序截图如图3所示。

编程需要一个USB转RS-485适配器,例如图1所示的Selec AC-USB-RS485-02

完成后,EXP FLEX 2M V3上先前亮起的红色错误指示灯将熄灭。

3 EXP FLEX 2M V3实用程序的屏幕截图。下半部分显示所选卡的“查看Modbus表”信息。

根据需要连接 Modbus 导线和终端电阻

系统现在已准备好对Modbus通信做出适当响应。请查阅您的PLC文档以及Selec资料,以确定最适合您系统的设置。

一般而言,使用Belden 9841屏蔽双绞线可实现远距离可靠通信。此外,您可能需要添加120Ω终端电阻以减少线路反射。

映射 Modbus 地址

Modbus是一种基于地址的协议。要使用该硬件,我们必须获得一张将寄存器名称与Modbus地址对应起来的映射表。下面的代码清单中提供了一个示例。

查找Selec卡的Modbus地址确实需要一些工作。最便捷的位置似乎是EXP FLEX 2M V3实用程序中的“查看Modbus表”,如图3所示。

技术提示 :对于模拟信号,Modbus识别只读输入寄存器和读/写输出寄存器。对于模拟卡,模拟输入(测量的温度、电压和电流)与输入寄存器相关联。设备配置寄存器(保持寄存器)用于写入以修改硬件操作。

/*
 * Modbus Register Map for Selec FL-SC-AI03-U-AO02-U
 * 
 * - The module is part of the Selec Flexys Series. It features:
 *     3 Channel Analog Input
 *     2 Channel Analog Output
 *
 * Reminder: Set the programming headers for J1 to J5 before use.
 *
 * Note: 
 * - Modbus Input Registers (Read-Only) begin at addresses 30000.
 * - Modbus Holding Registers (Read/Write) begin at addresses 40000.
 * 
 **************************
 * Input Resister Mapping *
 ************************** 
 * Register Name Modbus Address Description
 * Mod_ID         30000
 * HW_VerNo       30001
 * SWVerNo        30002
 * SlotStatus     30003
 * SlotErrorCnt   30004
 * 
 * AI3_U_PV0      30005           Input value channel 0 e.g., when set to voltage, 9.5 VDC in yields 9500
 * AI3_U_PV1      30006           Input value channel 1
 * AI3_U_PV2      30007           Input value channel 2
 * 
 * AI3_U_PVS0     30008           Channel 0 status e.g., 2 is overrange
 * AI3_U_PVS1     30009           Channel 1 status 
 * AI3_U_PVS2     30010           Channel 2 status
 * 
 ***************************
 * Output Resister Mapping *
 *************************** 
 * Register Name  Modbus Address  Description
 * REG_AI3_U_SEN0 40000            Input channel 0 configuration value e.g., set to 15 to read voltage
 * REG_AI3_U_SEN1 40001           Input channel 1 configuration value
 * REG_AI3_U_SEN2 40002           Input channel 2 configuration value
 *
 * REG_AO2_U_OPT0 40003           Set Output % (0-100%) where 950 yields a physical 9.5 VDC output
 * REG_AO2_U_OPT1 40004           Set Output % (0-100%)
 * 
 * REG_AO2_U_TYP0 40005           Output 0 (module channel 3) configuration value e.g., 0 for voltage
 * REG_AO2_U_TYP1 40006           Output 1 (module channel 4)

编写您的 PLC 程序

我们现在准备将Selec远程Modbus基座集成到更大的工业控制系统中。按照您PLC的文档配置Modbus。然后,读取和写入相应的寄存器。

技术提示 :Modbus地址对程序员来说是一个容易出错的地方。例如,我见过一些函数读取输入寄存器。这些函数没有使用地址30005来读取通道0的输入寄存器,而是使用了值5。这个抽象函数随后会适当处理Modbus协议。

结束语

我很兴奋能将这款Selec产品集成到我的下一个PLC项目中。无需太多努力,我们就构建了一个基于Modbus的RS-485远程I/O系统,主PLC与远程机箱之间的距离可能长达1000英尺。

在结束之前,请记住本文档是使用Selec组件的一般指南。如果您能协助扩展本主题以涵盖其他模块,我们将不胜感激。

我是否提到过,可以将多个远程FLEX 2M底座并排放置,以扩展基于Modbus的远程I/O系统。

:books: 继续探索工业控制系统

如果本次讨论对您有帮助,您可能还想了解:

:world_map: DigiKey 导航