1、摘要:介绍了三菱 FX2N 系列 PLC 在无协议通信方式下与基于 DS18b20 型数字温度传感器的 STA-D 温度采集模块以 Modbus 协议通信, 实现即时读取温度, 并给出了相关程序。随着 3C 技术迅速发展, 网络集成信息自动化正迅速应用到现场设备、控制中, 现场总线控制系统正逐步取代传统的集散控制系统 , 其中 Modbus 现场总线协议在基于 PLC 的控制系统中得到了越来越广泛的应用. 在本系统中, 以PLC 为主机、温度采集模块为从机, 完成对生产过程的自动控制、工业流程及工艺参数的显示、修改, 根据 PLC 的无协议通信功能 , 用 Modbus 现场总线协议实现主机与
2、从机的通讯。本文基于某监控系统的设计, 实现了三菱 FX2N 系列 PLC 在无协议通信方式下与 DS18b20 型数字温度传感器的采集模块以 Mo dbus 协议通信, 在电炉熔化工作过程中, 对电炉、电容、冷却水等 100 多点的温度实现巡检。1 系统硬件组成温度监控部分系统的硬件由 DS18b20 型数字温度传感器、采集模块、FX2N 系列 PLC、FX2N-485-BD、HITECH 触摸屏组成, 其结构如图 1 所示。图 1 系统硬件组成DS18b20 是世界上首个支持单线总线接口( 1w ire bus inter face) 的数字化温度传感器, 单总线接口便于构建分布式的温度测
3、控网络 , 数字化的输出提高了信号传输的可靠性, 而且使外围电路大为简化。 DS18b20 具有很高的适应性和性价比, 其测温范围为- 55 125 , 测温精度为 0. 5 , 测温距离最大为 200 m , 测温方式使用 3 线制, 本系统使用的传感器排序方式为指定排序。DS18b20 内部主要有 3 个数字部件: 1 个温度传感器、1 个 64 位的激光刻蚀 ROM、9 字节高速暂存器 Scratchpad RAM 和 3 字节 EERAM. ROM 上 64 位数据是传感器的序列号。暂存器确保数据的完整性, 数据先被写入暂存器, 并可以被读回. 数据经校验后, 可以由拷贝暂存器命令传输
4、到 EERAM, 以确保更改存储器时数据的完整性。暂存器为 9 个字节, 第 0 和第 1 字节是温度编码的低字节和高字节.第 2 和第 3 字节是温度编码的低字节和高字节的拷贝, 第 4 字节是配置寄存器, 其值决定温度转换的分辨率。本系统采用的 STA-D 温度采集模块, 是一种远程数字化温度采集系统 , 有10 个通道, 每个通道最多可以挂接 16 个 DS18b20 型数字温度传感器,总共可以监控 160 个点的温度, 以 RS485 方式同上位机通讯 , 通信协议为标准Modbus 协议, 波特率为 9 600 bps, 与上位机通信距离最大为 1 200 m, 工作电源为 12 2
5、4 V, 工作温度为- 20 75 。 与 FX2N?485?BD 采用两线制的 485 连线方式 ( 图 2) ,接线要使用规范的屏蔽线 。图 2 485 连接图台湾 HITECH 公司触摸屏 PWS 系列是专为 PLC 设计的互动式工作站, 用 232 直接与 PLC 连接 , 可以直接读取 PLC 的数据寄存器, 具有良好的人机界面, 操作人员通过它可设置所有参数, 控制系统自动运行。并且编程简便, 运行稳定, 可设置不同的管理权限, 适合于本系统使用。2 Modbus 协议标准的 Modbus 口是使用 RS?232C 兼容串行接口, 它定义了连接口的针脚、电缆、信号位、传输波特率、奇
6、偶校验, 控制器能直接或经由 Mo dem 组网. 控制器通信使用主! 从技术, 即仅一设备( 主设备) 能初始化传输( 查询) , 其它设备( 从设备) 根据主设备查询提供的数据作出相应反应。表 1 Modbus 部分功能码定义Modbus 通讯协议有两种传送方式 ? RT U 方式和 ASCII 方式。 本系统使用 RTU 模式, 这种方式的主要优点是: 在同样的波特率下 , 可比 ASCII 方式传送更多的数据。使用 RTU 模式时, 消息发送至少要以 3. 5 个字符时间的停顿间隔开始, 如图 3 的 T1- T 2- T 3- T 4 所示。 传输的第一个域是设备地址, 可以使用的传
7、输字符是十六进制数值。 通信期间, 网络设备不断侦测网络总线 , 包括停顿间隔时间内, 当第一个域( 地址域) 接收到, 每个设备都进行解码以判断是否发往自己的。 在最后一个传输字符之后, 至少要有 3. 5 个字符时间的停顿以标定消息的结束, 之后可开始新的消息传输。典型的消息帧如图 3 所示。 使用RT U 模式, 消息包括了一个基于 CRC 方法的错误检测域. CRC 域检测了整个消息的内容。图 3 M odbus 消息帧结构CRC 域是两个字节, 包含一个 16 位的二进制值。它由传输设备计算后加入到消息中。 接收设备重新计算收到消息的 CRC, 并与接收到的 CRC 域中的值比较,
8、如果两值不同, 则有误, 后面将具体讲述 CRC 算法的实现。3 系统软件构成考虑到操作的方便性, 在系统初次安装时, 先在 PC 机上用上位机软件将所有传感器的 ID 搜索出来, 然后按实际安装位置给每个传感器编号 , 读温度测试传感器是否工作正常。在 PLC 上使用 Mo dbus 协议通信时首先要对通信格式进行设定, 即对 D8120 寄存器进行写操作, 在本系统条件下设置为 0C87 , 即数据长度为 8 位, 无校验, 无起始位与停止位, 波特率 9 600 bps。 修改D8120 设置后, 确保通断 PLC 电源一次。 再用 RS 指令进行数据的传输, 相关程序格式如图 4 所示
9、。图 4 RS 指令程序格式按照上述程序格式, 即可在数据发送区写入指令进行相应的操作。1) 读取温度, 其指令格式: 设备地址 命令号 通道号 传感器编号 读取个数高 8 位 低 8 位 CRC 低 8 位 CRC 高 8 位 , 其中 CRC 校验字节以子程序形式调用. 设备响应: 设备地址 命令号 返回的字节个数 数据 1 数据 2 . . . 数据 n CRC 低 8 位 CRC 高 8 位 。每个 18b20 读取温度的返回值占用两个字节 .转换方法: 将实际温度扩大 100 倍, 再将此数值分为两个字节传送出来即可. 例如, 实测出来温度是 28.65 , 扩大 100 倍即 2
10、865, 则发送的第一个字节是 2 865/ 256 即是 11, 第二个字节是 2 865% 256 即 49, 那么传送的两个字节为 00B 和 031。需要注意的是, 由于采用两线制的 485 连线方式 , 会产生回波通信, 即接收端会先接收到自己发送出去的数据, 但数据还是会正常发送给采集模块 , 此时接收端则应该避开前面的无用数据, 接收后面模块响应的有效数据。2) 在系统运行后, 若需更换传感器, 则需执行以下两条指令, 首先, 搜索ID, 01 06 0c 00 00 00 CRC 低 CRC 高 , 此指令为搜索模块 1上各个通道的所有传感器。 然后写编号, 例如: 01 06
11、 09 05 00 05 CRC 低 CRC 高 , 表示将第 9 通道的原来编号为 05 的传感器更换后重新设定为 05, 执行此两条指令后, 方可重新读取温度。3) CRC 校验字节的生成是比较关键的一步,其过程比较复杂, 步骤如下:预置一个 16 位 CRC 寄存器为十六进制 FFFF, 即所有数位均为 1。该 16 位寄存器的低 8 位字节与信息帧的第一个字节的低 8 位进行 若向右移出的数位是 0, 则返回。重复 和, 直至移出 8 位。重复 , 直至该报文所有字节均与 16 位寄存器进行& 异或? 运算, 并移位 8 次。将得到的 l6 位 CRC 寄存器的高、低位字节进行, 即
12、2 字节 CRC, 加到报文。其程序流程如图 5, 以上面的温度读取指令为例, 其 CRC 校验梯形图如图6。图 5 CRC 校验流程图 6 CRC 校验程序在读取温度时, 应严格遵守 DS18b20 的读写时序, 否则就会出现错误, 丢帧等, 若用脉冲信号定时读取, 则间隔应不小于 100 ms. 一般出现错误帧时数据显示为 0 , 此时可以进行简单的滤波, 例如传回值为 0 时不显示数据, 或者多组数据取平均值后再显示, 以避免温度显示的大幅度跳动。 DS18b20 的初始化温度显示为 85, 若一直不变, 则此传感器可能已经损坏或是接线不良, 应进行相应的检查。4 结束语该系统应用于生产过程实时监控中, PLC 既作为现场控制机完成对生产过程的自动控制, 又作为主从通信的主机, 与相关仪表连接, 实现与基于 Modbus 现场总线协议的 DS18b20 型数字温度传感器的采集模块的主从通信, 并通过PLC 高速实时网络实现对其的远程监控。 该系统目前处于试运行阶段, 表现较为稳定, 通信可靠, 效果良好。