返回主站|会员中心|保存桌面

AB罗克韦尔服务商    

PLC、变频器、人机界面、传感器

联系方式
  • 联系人:吴经理
  • 电话:18576370666
新闻分类
  • 暂无分类
首页 > 新闻中心 > PLC和磁栅尺通讯程序!
新闻中心
PLC和磁栅尺通讯程序!
发布时间:2025-10-01        浏览次数:4        返回列表

PLC 与磁栅尺的通讯程序设计需要根据磁栅尺的信号类型(模拟量、数字量或总线型)和 PLC 型号来制定。以下是常见的三种通讯方式及对应的程序实现思路:

一、磁栅尺类型与通讯方式选择

  1. 模拟量输出磁栅尺(输出 0-10V 或 4-20mA)

    • 连接:通过 PLC 的模拟量输入模块(如 S7-1200 的 SM 1231)接收信号

    • 特点:结构简单,适合短距离、低精度场景

  2. 数字量脉冲输出磁栅尺(A/B 相脉冲 + 参考点信号)

    • 连接:通过 PLC 的高速计数模块(如 S7-1200 的 HSC 功能)接收脉冲

    • 特点:精度较高,适合中等速度运动控制

  3. 总线型磁栅尺(如 PROFINET、Modbus-RTU)

    • 连接:通过 PLC 的对应总线接口直接通讯

    • 特点:精度高,支持远距离传输和诊断功能

二、数字量脉冲型磁栅尺与 S7-1200 PLC 通讯程序

以 A/B 相脉冲磁栅尺为例,使用 S7-1200 的高速计数器(HSC)功能实现位置读取:

1. 硬件组态设置

  • 在 TIA Portal 中配置高速计数器:

    1. 打开设备组态,双击 CPU 进入属性界面

    2. 选择 "高速计数器",启用 HSC1(如使用 I0.0/I0.1 作为 A/B 相输入)

    3. 设置计数模式为 "正交计数"(A/B 相脉冲),计数方向由 A/B 相相位差决定

2. 程序实现(TIA Portal V15,STL 语言)

// Modbus-RTU初始化

CALL "MB_COMM_LOAD" , DB10

     REQ             :=TRUE

     COM_RS485       :=1             // CM 1241模块地址

     BAUDRATE        :=9600

     PARITY          :=1             // 无校验

     STOPBITS        :=1

     MODE            :=0             // 主站模式

     DONE            =>"MB_Init_Done"

     ERROR           =>"MB_Init_Error"

     STATUS          =>"MB_Init_Status"

3. 程序说明

  • 初始化部分:设置 HSC 为正交计数模式,适用于 A/B 相脉冲信号

  • 位置换算:根据磁栅尺分辨率(如 1μm / 脉冲)将脉冲数转换为实际长度单位

  • 方向判断:通过 HSC 的方向标志位判断磁栅尺移动方向

  • 清零功能:可通过外部按钮或程序指令复位当前位置值

  • // 读取磁栅尺当前位置

  • A     "MB_Init_Done"

  • CALL "MB_MASTER" , DB20

  •      REQ             :=TRUE

  •      MB_ADDR         :=1             // 磁栅尺从站地址

  •      MODE            :=1             // 读取保持寄存器

  •      ADDRESS         :=0             // 位置数据寄存器地址

  •      LENGTH          :=2             // 读取2个寄存器(32位数据)

  •      DATA_PTR        :=#PosData      // 存储位置数据的指针

  •      DONE            =>"Read_Done"

  •      BUSY            =>"Read_Busy"

  •      ERROR           =>"Read_Error"

  •      STATUS          =>"Read_Status"


  • // 数据转换

  • A     "Read_Done"

  • L     #PosData[0]                  // 高16位

  • SLW   16

  • L     #PosData[1]                  // 低16位

  • OW

  • T     "当前位置_raw"               // 32位原始位置值

三、Modbus-RTU 总线型磁栅尺与 PLC 通讯程序

以 S7-1200 通过 Modbus-RTU 读取磁栅尺为例:

1. 硬件配置

  • PLC 端:配置 CM 1241 RS485 模块(6ES7 241-1CH32-0XB0)

  • 磁栅尺端:设置相同的波特率(如 9600)、奇偶校验(如无校验)、从站地址(如 1)

2. 程序实现(使用 Modbus 库)

// 磁栅尺位置读取程序

// 硬件:S7-1214C + 脉冲型磁栅尺(A/B相)

// 功能:读取当前位置、清零、方向判断


// 1. 初始化高速计数器(首次执行)

A     "首次扫描"                 // 系统位M10.0

FP    "初始化脉冲"               // 上升沿检测

JC    _INIT                      // 跳转到初始化


// 2. 读取当前位置值

L     "HSC1当前值"               // 读取高速计数器当前值(DINT类型)

T     "当前位置_raw"             // 存储原始位置值


// 3. 位置换算(根据磁栅尺分辨率)

// 例:磁栅尺分辨率为1μm/脉冲,直接转换为mm

L     "当前位置_raw"

L     1000.0

/R

T     "当前位置_mm"              // 实际位置(mm)


// 4. 方向判断

A     "HSC1方向标志"             // 高速计数器方向位(TRUE为正向)

=     "正向移动"

AN    "HSC1方向标志"

=     "反向移动"


// 5. 手动清零功能

A     "清零按钮"                 // 外部清零信号(I0.2)

FP    "清零脉冲"

L     0

T     "HSC1设定值"               // 设定当前值为0

S     "HSC1复位"                 // 触发复位


_INIT:

// 初始化高速计数器参数

L     16#0001                   // 使能HSC1,正交计数模式

T     "HSC1控制字"

L     0

T     "HSC1预设值"               // 初始位置设为0

L     16#8000                   // 启动计数

T     "HSC1控制字"

四、关键注意事项

  1. 接线规范

    • 脉冲型:A/B 相需差分输入,建议使用屏蔽双绞线

    • 总线型:需注意终端电阻(120Ω)的设置,避免信号反射

  2. 干扰处理

    • 磁栅尺信号线缆远离动力线(至少 30cm)

    • 做好接地处理,确保 PLC 与磁栅尺共地

  3. 精度校准

    • 定期通过参考点信号进行位置校准

    • 在程序中加入滤波处理,减少信号波动影响

  4. 故障诊断

    • 脉冲型:监控脉冲丢失情况(可通过超时检测)

    • 总线型:利用 Modbus 的错误码判断通讯故障

根据实际使用的磁栅尺型号和 PLC 系列,可能需要调整具体参数和地址。建议参考磁栅尺的通讯手册和 PLC 的系统手册进行详细配置。

收缩
  • 电话咨询

  • 18576370666
  • 添加微信客服