激光测距传感器与PLC的通信配置
本文以常见的 Modbus RTU 协议为例,详细阐述将激光测距传感器接入西门子 S7-1200 PLC 的完整配置流程。该流程涵盖物理接线、传感器参数设置、PLC 硬件组态及程序逻辑编写,确保数据能够准确传输。
1. 硬件接线与物理层连接
在确保系统断电的前提下,完成传感器与 PLC 通讯模块(CM 1241 RS485)的物理连接。
准备工具:剥线钳、一字螺丝刀、双绞屏蔽电缆。
- 剥开 线缆末端绝缘层,露出金属导线约 8mm。
- 连接 传感器的
V+端子至 24V DC 电源正极。 - 连接 传感器的
GND端子至 24V DC 电源负极,并确保与 PLC 共地。 - 连接 通讯线。根据 RS485 标准规范,按照下表对应关系接线。
| 传感器端子标识 | PLC (CM1241) 端子标识 | 线缆颜色建议 (参考) | 功能说明 |
|---|---|---|---|
A+ (或 485+) |
T/R A+ |
绿色 | 数据正极 |
B- (或 485-) |
T/R B- |
红色 | 数据负极 |
GND (屏蔽) |
GND |
黄绿双色 | 屏蔽接地 |
- 拧紧 端子螺丝,用手轻拽线缆确认无松动。
2. 激光测距传感器参数配置
通过传感器的按键或显示面板,将其通讯模式调整为 Modbus RTU 从站模式,并设置通讯参数。
- 进入 传感器的设置菜单。
- 选择 通讯接口或接口模式选项。
- 设置 协议类型为
Modbus RTU。 - 设置 波特率为
19200bit/s(需与后续 PLC 设置一致,常用值:9600 或 19200)。 - 设置 数据位为
8,停止位为1,校验位为Even(偶校验) 或None(无校验)。 - 设置 从站地址为
1。 - 保存 设置并重启传感器,使参数生效。
3. PLC 硬件组态
打开 TIA Portal (博途) 软件,对 PLC 进行硬件配置。
- 双击 项目树中的“设备组态”。
- 点击 右侧硬件目录,展开
Communications Modules->RS485。 - 拖拽
CB 1241 (RS485)模块至 PLC 的左侧空闲插槽。 - 选中 刚添加的 CB 1241 模块,在下方属性选项卡中 点击 “常规” -> “RS485 接口”。
- 修改 以下端口参数,使其与传感器完全一致:
- 波特率:选择
19.2 kbps - 奇偶校验:选择
Even(偶校验) - 数据位:保持
8 bit - 停止位:保持
1 bit
- 波特率:选择
- 编译 并保存硬件配置。
4. PLC 程序逻辑编写
在 Main [OB1] 主程序块中,调用 MB_CLIENT 指令进行通讯。以下是 Modbus 读取功能的实现逻辑。
flowchart TD
A[Start] --> B[System Clock 1s Pulse]
B --> C{First Scan?}
C -- Yes --> D[Set REQ to M0.0]
C -- No --> E[Check DONE or ERROR]
D --> F[Execute MB_CLIENT]
E --> F
F --> G{DONE = 1?}
G -- Yes --> H[Read DATA_PTR
Convert to Real] G -- No --> I[Check ERROR Code] H --> J[End] I --> J
Convert to Real] G -- No --> I[Check ERROR Code] H --> J[End] I --> J
- 双击 Main [OB1] 进入程序编辑界面。
- 打开 指令树,找到
communications->Modbus RTU。 - 拖拽
MB_CLIENT指令到程序段 1 的梯级中。 - 配置
MB_CLIENT指针引脚参数,如下表所示:
| 引脚名称 | 填入值/地址 | 说明 |
|---|---|---|
REQ |
M0.0 |
通讯请求信号(上升沿触发) |
DISCONNECT |
FALSE |
保持连接,不主动断开 |
MB_MODE |
0 |
0 = 读,1 = 写 |
MB_ADDR |
1 |
传感器从站地址 |
MB_DATAPTR |
P#DB1.DBX0.0 BYTE 4 |
存储读取数据的目标地址(需新建 DB1) |
MB_LEN |
2 |
读取数据的长度(2 个寄存器 = 4 字节) |
- 创建 一个全局数据块(例如
DB1),取消勾选“优化的块访问”,并在其中定义一个 Array[0..3] of Byte 类型的变量,用于接收数据。 - 编写 请求脉冲逻辑。在
MB_CLIENT指令上方插入一个常开触点,接入系统存储位M0.3(1s 脉冲) 或使用时钟脉冲。 - 下载 程序到 PLC 并 监控 程序状态。
5. 数据处理与换算
传感器返回的原始数据通常是 16 位或 32 位整数。假设传感器返回的距离值以整数形式存储在 DB1.DBW0 和 DB1.DBW2 中(高位在前或低位在前取决于传感器定义),需将其转换为浮点数以便显示。
- 确认 传感器的数据格式。例如:
Register Value = Distance (mm)。 - 编写 转换逻辑。若原始值为整数,先转换为双整数,再转换为实数。
- 应用 比例换算公式。
如果传感器输出值与实际距离存在线性关系,例如:量程 0-500mm 对应输出值 0-5000,则计算公式为:
$$ D_{actual} = \frac{R_{raw} \times D_{max}}{R_{max}} $$
其中:
- $D_{actual}$ 为实际距离(单位:mm)
- $R_{raw}$ 为从 Modbus 寄存器读取的原始数值
- $D_{max}$ 为传感器最大量程(例如 500)
- $R_{max}$ 为传感器最大输出代码(例如 5000)
假设 $R_{raw} = 2500$,代入公式计算:
$$ D_{actual} = \frac{2500 \times 500}{5000} = 250.0 \text{ mm} $$
- 在程序中实现 该计算:
- 使用
MUL指令将DB1.DBD0(原始值) 乘以500.0。 - 使用
DIV指令将结果除以5000.0。 - 传送 最终结果至输出变量
MD100(Real 类型)。
- 使用
- 在 HMI 监控表 中添加变量
MD100,验证数值是否随传感器移动而变化。

暂无评论,快来抢沙发吧!