西门子200smart与台达MS300变频器和欧姆龙E5CC温控器通讯程序 器件:西门子s7 200 smart PLC,扩展模块SB CM01,台达MS300变频器,欧姆龙E5cc 温控器,昆仑通态触摸屏(带以太网),中途可以加路由器 控制方式:触摸屏与plc以太网通讯,PLC本体com口与变频器通讯485口相连,扩展模块SB CM01与欧姆龙温控器485通讯 功能:触摸屏控制变频器设定频率,启停,读取输出频率,电压。 同时读取温控器实际温度,设定温控器温度。 说明:是程序,非硬件。 程序有注释,变频器设置,温控器设置,接线都有,一应俱全

最近搞了个项目,涉及到西门子200smart PLC与台达MS300变频器、欧姆龙E5CC温控器的通讯,今天就来和大家分享一下其中的程序实现,硬件方面咱就先略过啦。

整体架构概述

这次用到的器件有西门子s7 200 smart PLC ,搭配扩展模块SB CM01 ,还有台达MS300变频器、欧姆龙E5cc 温控器,以及昆仑通态触摸屏(带以太网),必要时还可以加个路由器。控制方式上,触摸屏与plc通过以太网通讯,PLC本体的com口与变频器的485通讯口相连,扩展模块SB CM01则与欧姆龙温控器的485通讯口相连。

功能需求就是触摸屏能控制变频器的设定频率、启停,并且读取其输出频率和电压;同时能读取温控器的实际温度,还能设定温控器的温度。

变频器设置

台达MS300变频器需要进行一些基本设置,才能与PLC正常通讯。例如,要设置通讯波特率、数据格式等参数,使其与PLC的设置匹配。

// 假设设置波特率为9600bps,数据格式8位数据位,1位停止位,无校验
P0 - 02 = 2; // 通讯协议选择为Modbus RTU
P11 - 00 = 0; // 通讯站号设置为0
P11 - 01 = 0; // 波特率选择9600bps
P11 - 02 = 0; // 数据格式8N1

这些参数设置好后,变频器就准备好和PLC进行通讯啦。

温控器设置

欧姆龙E5CC温控器同样需要设置相关通讯参数。

// 设置通讯波特率为9600bps,数据格式8位数据位,1位停止位,偶校验
SET1 - C1 = 1; // 选择通讯协议为Modbus RTU
SET1 - C2 = 0; // 站号设置为0
SET1 - C3 = 3; // 波特率9600bps
SET1 - C4 = 2; // 数据格式8E1

这样温控器也能和PLC愉快通讯了。

PLC程序实现

与变频器通讯部分

NETWORK 1
// 初始化变频器通讯
LD SM0.1
MOVB 16#81, SMB30 // 设置端口0为自由口模式,9600bps,8位数据位,无校验,1位停止位
XMT VB0, 0 // VB0为发送缓冲区,0表示端口0

NETWORK 2
// 读取变频器输出频率
LD SM0.0
MOVW &VB100, VW20 // VW20存放读取变频器输出频率的指令地址
MOVB 16#03, VB20 // 功能码03,读取保持寄存器
MOVB 1, VB21 // 变频器站号1
MOVW 16#0021, VW22 // 寄存器地址,这里假设输出频率寄存器地址为0021
MOVW 16#0001, VW24 // 读取1个寄存器
MOVB 16#00, VB26 // 填充字节
MOVB 16#00, VB27 // 填充字节
MOVW 16#0000, VW28 // CRC校验初始值
CALL USSCRC, VB20 // 计算CRC校验
MOVB VB29, VB30 // CRC校验低位
MOVB VB30, VB31 // CRC校验高位
XMT VB20, 0 // 发送读取指令

NETWORK 3
// 处理变频器返回数据
LD SM0.0
LDB= SMB86, 16#20 // 接收完成且无错误
MOVB RB0, VB40 // RB0为接收缓冲区,将接收数据存到VB40
// 这里开始对返回数据进行解析,获取输出频率等信息

在这段代码里,首先初始化PLC与变频器通讯的端口模式和参数。然后通过发送特定指令去读取变频器的输出频率,这里用到了USSCRC指令计算CRC校验,保证数据传输的准确性。接收完成后,对返回的数据进行解析就能得到想要的变频器信息。

与温控器通讯部分

NETWORK 4
// 初始化温控器通讯
LD SM0.1
MOVB 16#81, SMB130 // 设置端口1(扩展模块CM01)为自由口模式,9600bps,8位数据位,无校验,1位停止位
XMT VB50, 1 // VB50为发送缓冲区,1表示端口1

NETWORK 5
// 读取温控器实际温度
LD SM0.0
MOVW &VB150, VW52 // VW52存放读取温控器实际温度的指令地址
MOVB 16#03, VB54 // 功能码03,读取保持寄存器
MOVB 1, VB55 // 温控器站号1
MOVW 16#0002, VW56 // 假设实际温度寄存器地址为0002
MOVW 16#0001, VW58 // 读取1个寄存器
MOVB 16#00, VB60 // 填充字节
MOVB 16#00, VB61 // 填充字节
MOVW 16#0000, VW62 // CRC校验初始值
CALL USSCRC, VB54 // 计算CRC校验
MOVB VB63, VB64 // CRC校验低位
MOVB VB64, VB65 // CRC校验高位
XMT VB54, 1 // 发送读取指令

NETWORK 6
// 处理温控器返回数据
LD SM0.0
LDB= SMB186, 16#20 // 接收完成且无错误
MOVB RB1, VB70 // RB1为接收缓冲区,将接收数据存到VB70
// 这里开始对返回数据进行解析,获取实际温度等信息

这部分和变频器通讯类似,先初始化与温控器通讯的端口。然后发送指令读取温控器的实际温度,同样经过CRC校验保证数据正确,接收完成后解析数据。

触摸屏与PLC通讯

触摸屏与PLC通过以太网通讯相对简单些,在昆仑通态触摸屏软件里设置好PLC的IP地址等参数就行。然后建立变量连接,将触摸屏上的控制按钮、输入输出框等控件与PLC的寄存器关联起来,就能实现通过触摸屏控制变频器和温控器的功能啦。

以上就是整个西门子200smart与台达MS300变频器和欧姆龙E5CC温控器通讯程序的大致内容,希望对大家有所帮助!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐