文章目录

激光测距传感器与PLC的通信配置

发布于 2026-03-26 08:35:28 · 浏览 7 次 · 评论 0 条

激光测距传感器与PLC的通信配置

本文以常见的 Modbus RTU 协议为例,详细阐述将激光测距传感器接入西门子 S7-1200 PLC 的完整配置流程。该流程涵盖物理接线、传感器参数设置、PLC 硬件组态及程序逻辑编写,确保数据能够准确传输。


1. 硬件接线与物理层连接

在确保系统断电的前提下,完成传感器与 PLC 通讯模块(CM 1241 RS485)的物理连接。

准备工具:剥线钳、一字螺丝刀、双绞屏蔽电缆。

  1. 剥开 线缆末端绝缘层,露出金属导线约 8mm。
  2. 连接 传感器的 V+ 端子至 24V DC 电源正极。
  3. 连接 传感器的 GND 端子至 24V DC 电源负极,并确保与 PLC 共地。
  4. 连接 通讯线。根据 RS485 标准规范,按照下表对应关系接线。
传感器端子标识 PLC (CM1241) 端子标识 线缆颜色建议 (参考) 功能说明
A+ (或 485+) T/R A+ 绿色 数据正极
B- (或 485-) T/R B- 红色 数据负极
GND (屏蔽) GND 黄绿双色 屏蔽接地
  1. 拧紧 端子螺丝,用手轻拽线缆确认无松动。

2. 激光测距传感器参数配置

通过传感器的按键或显示面板,将其通讯模式调整为 Modbus RTU 从站模式,并设置通讯参数。

  1. 进入 传感器的设置菜单。
  2. 选择 通讯接口或接口模式选项。
  3. 设置 协议类型为 Modbus RTU
  4. 设置 波特率为 19200 bit/s(需与后续 PLC 设置一致,常用值:9600 或 19200)。
  5. 设置 数据位为 8,停止位为 1,校验位为 Even (偶校验) 或 None (无校验)。
  6. 设置 从站地址为 1
  7. 保存 设置并重启传感器,使参数生效。

3. PLC 硬件组态

打开 TIA Portal (博途) 软件,对 PLC 进行硬件配置。

  1. 双击 项目树中的“设备组态”。
  2. 点击 右侧硬件目录,展开 Communications Modules -> RS485
  3. 拖拽 CB 1241 (RS485) 模块至 PLC 的左侧空闲插槽。
  4. 选中 刚添加的 CB 1241 模块,在下方属性选项卡中 点击 “常规” -> “RS485 接口”。
  5. 修改 以下端口参数,使其与传感器完全一致:
    • 波特率:选择 19.2 kbps
    • 奇偶校验:选择 Even (偶校验)
    • 数据位:保持 8 bit
    • 停止位:保持 1 bit
  6. 编译 并保存硬件配置。

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
  1. 双击 Main [OB1] 进入程序编辑界面。
  2. 打开 指令树,找到 communications -> Modbus RTU
  3. 拖拽 MB_CLIENT 指令到程序段 1 的梯级中。
  4. 配置 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 字节)
  1. 创建 一个全局数据块(例如 DB1),取消勾选“优化的块访问”,并在其中定义一个 Array[0..3] of Byte 类型的变量,用于接收数据。
  2. 编写 请求脉冲逻辑。在 MB_CLIENT 指令上方插入一个常开触点,接入系统存储位 M0.3 (1s 脉冲) 或使用时钟脉冲。
  3. 下载 程序到 PLC 并 监控 程序状态。

5. 数据处理与换算

传感器返回的原始数据通常是 16 位或 32 位整数。假设传感器返回的距离值以整数形式存储在 DB1.DBW0 和 DB1.DBW2 中(高位在前或低位在前取决于传感器定义),需将其转换为浮点数以便显示。

  1. 确认 传感器的数据格式。例如:Register Value = Distance (mm)
  2. 编写 转换逻辑。若原始值为整数,先转换为双整数,再转换为实数。
  3. 应用 比例换算公式。

如果传感器输出值与实际距离存在线性关系,例如:量程 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} $$

  1. 在程序中实现 该计算:
    • 使用 MUL 指令将 DB1.DBD0 (原始值) 乘以 500.0
    • 使用 DIV 指令将结果除以 5000.0
    • 传送 最终结果至输出变量 MD100 (Real 类型)。
  2. 在 HMI 监控表 中添加变量 MD100,验证数值是否随传感器移动而变化。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文