1、变频器与西门子变频器与西门子变频器与西门子变频器与西门子PLC在自由口模式下的串行通信在自由口模式下的串行通信在自由口模式下的串行通信在自由口模式下的串行通信 之所以我的博客关于通讯的内容多,主要是因为我对PLC和变频器通讯的知识比较少。现在也只做过西门子S7-226与英威腾变频器的Modbus和自由口的通讯 1 引言 变频器与plc配套应用是常见的自动化集成系统。由plc发出启动、停止、运行频率等指令,来控制变频器的运转及频率输出,达到控制生产过程自动化目的。基于串行通讯的变频器与plc集成技术具有的优点得到广泛的工程重视。本文介绍三菱变频器f700与西门子plc s7-200在自由口模式下
2、的串行通信,达到plc对变频器的便捷控制。 2 变频器与plc的连接 plc s7-200与三菱变频器通信采用rs485接口的串行方式。s7-200侧为九针接口,三菱变频器为rs485端子,采用二线式连接。 3 通讯系统设计 3.1 plc的自由口通信模式 s7-200支持自由口通信模式。自由口模式使s7-200可以与许多通信协议公开的其他设备和控制器进行通信。波特率为1200115200 b/s(可调整)。 自由口模式的数据字节格式总是有一个起始位、一个停止位,用户可以选择7位或者8位数据,也可以选择是否有校验位以及是奇校验还是偶校验。 在自由口模式下,通过使用发送中断、接收中断、发送指令(
3、xmt)和接收指令(rcv),为所有通信活动编程。在自由口模式下,通信协议完全由用户程序控制。 3.2 三菱变频器专用协议 在自由口模式下,plc与变频器通信遵循三菱变频器专用协议。首先,按照变频器通讯规格对变频器参数进行设置(具体参照变频器手册)。其次通信采用以下步骤: 向变频器发送要求数据(变频器不会自动发送数据),经变频器等待时间后,从变频器向plc发送返回数据,等待变频器处理事件后,进行再处理。plc与变频器通信以ascii码(16进制)进行。plc对变频器进行运行状态监控、运行频率设置、启动、停止等操作。这些数据的收发采用不同的数据模式。如运行频率采用附表所示数据模式。 附表 运行频
4、率写入数据格式 1 2 3 4 5 6 7 8 9 10 11 12 13 ENQ 变频器站号 命令代码 等待时间 数据 求和校验 附表中,enq为控制符,实际发送16进制数据05,其余皆为ascii码表示。变频器站号范围为031,指令代码在变频器手册中给出,如运行频率写入为ee。不同运行指令有不同数据。求和校验求法如下:将从“站号”到“数据”的ascii码按16进制加法求总和,再对和的低两位进行ascii编码。字符数13是结束字符可以是cr或lf。 4 自由口通信编程设计 下面用实例来介绍自由口模式下的通信,plc向变频器发送20hz频率。(要使频率写入有效,开始时plc先向变频器发送“写入
5、”指令,命令代码fb。) 主程序: 网络1: ld sm0.1 /初始化 movb 16#09, smb130 /端口1自由口模式,波特率9600,每个字符8位,无校验 movb 16#b0, smb187 /写接收指令控制字,允许rcv,检测信息结束字符、空闲线起始条件 movb 16#0d, smb189 /设置信息结束字符为16#0d(回车符) movw +5, smw190 /设置空闲线检测时间间隔为5ms movb 100, smb194 /设置最大字符数为100 网络2: ld sm0.0 movb 16#0d, vb100 /发送数据字符数为13 movb 16#05, vb10
6、1 /通讯要求 movb 16#30, vb102 /变频器站号01 movb 16#31, vb103 movb 16#44, vb104 /频率写入命令代码 movb 16#44, vb105 movb 16#31, vb106 /等待时间110ms movb 16#32, vb107 /发送频率20hz movb 16#30, vb108 movb 16#30, vb109 movb 16#30, vb110 movb 16#44, vb111 /求和校验码de movb 16#45, vb112 movb 16#0d, vb113 /结束字符 movb 0, mb10 网络3: ld
7、sm0.0 atch int_0:int0, 26 /端口1发送完中断,连接到中断0 atch int_2:int2, 24 /端口1接收完中断,连接到中断2 eni /允许中断 网络4: ld sm0.0 r sm187.7, 1 /禁止接收(避免接收发送冲突)复位sm187.7为0即禁止接收 rcv vb149, 1 xmt vb100, 1 /开始发送 中断程序0: 网络1: ld sm0.0 movb 5, smb35 atch int_1:int1, 11 /定时中断到中断1 中断程序1: 网络1: ld sm0.0 dtch 11 s sm187.7, 1 /允许接收(置位sm187.7为1) rcv vb149, 1 /开始接收 中断程序2: 网络1: ld sm0.0 incb mb10 /每发送接收完一次mb10加1 ab= mb10, 3 /当超过3次,退出不再发送 creti 网络2: ldb= smb186, 16#20 /接收无误条件下 ab= vb150, 16#06 /接收数据无错误,退出 creti not /否则,再发送 r sm187.7, 1 rcv vb149, 1 xmt vb100, 1 5 结束语 变频器与plc在自由口模式下通信,具有很大的灵活性,方便了工程应用。笔者在实际项目中进行了运用,以上方法成功通过,并收到较好的效果。