1 引言
随着plc技术的不断发展,越来越显示其强大的核心控制功能,plc和其他设备之间的连接已经从比较烦琐的传统i/o方式向越来越受欢迎的简洁先进的通信方式过渡,不仅为设计者节省了大量的硬件成本,更能为远程控制,组网提供了可能,使控制系统更加无缝地融为一体。
本文主要通过艾默生plc和多台变频器组网通信(以modbus协议方式)为例,说明plc和多台变频器网络控制的通信程序的设计方法。
2 modbus协议简要介绍
modbus协议由美国著名的modi -con公司提出,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信,不同厂商生产的控制设备可以连成工业网络,进行集中监控,它已经成为一通用工业标准。控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:ipc,hmi,plc等;典型的从设备:各种仪表,plc,变频器等。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。modbus协议建立了主设备查询和从设备回应的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。modbus协议同时支持rtu模式和ascii模式,rtu模式对应的帧格式如下:(ascii模式介绍省略)。
3 艾默生plc集成的modbus协议功能
艾默生ec20系列plc的通信口com 1集成了modbus主站协议, 在编程时先在编程软件的系统块里进行设置具体如下:系统块→“通信口”菜单→“通信口1参数设置”菜单→选“modbus协议”→进行“modbus设置”→进行通信参数和(主模式)站号等设置即可。
然后利用modbus指令进行编程——modbus (s1) (s2)(s3)各参数含义如下:
s1 指定的通讯通道;
s2 发送数据起始地址;
s3 接收数据起始地址;
modbus指令发送过程中,自动加上所需的起始字符,结束字符和校验和;发送的数据,不需设定发送的数据长度,系统会根据功能码自动按系统内部设定长度进行发送。
图1 rtu模式对应的帧格式
2个重要的通信标志:sm135— modbus的通讯成功标志位,通讯成功时置位,不会自动复位,所以在发送数据的时候要进行一次复位;sm136—modbus的通信错误标志位,通信错误(包括从设备没有回应)时置位,不会自动复位,所以在接收数据的时候要进行一次复位。
4 艾默生变频器通信协议
艾默生公司生产的ev系列变频器都集成modbus协议,且提供rs23 -2c和rs485通信口供用户选择,所以通过plc和变频器通信的方式完成控制比较简单经济,而且显得系统比较高档,下面简单介绍其协议:
(1) 支持modbus rtu和ascii格式;
(2) 参数的modbus协议地址影射规则:变频器的功能码参数、控制参数和状态参数都映射为modbus的读写寄存器。变频器功能码的组号映射为寄存器地址的高字节,组内索引映射为寄存器地址的低字节。变频器的控制参数和状态参数均虚拟为变频器功能码组。功能码组号与其映射的寄存器地址高字节的对应关系如下:f0组:0x00;f1组:0x01;f2组:0x02;f3组:0x03;f4组:0x04;f5组:0x05;f6组:0x06;f7组:0x07;f8组:0x08;f9组:0x09;fa组:0x0a;fb组:0x0b;fc组:0x0c;fd组:0x0d;fe组:0x0e;ff组:0x0f;fh组:0x10;fl组:0x11;fn组:0x12;fp组:0x13;fu组:0x14;变频器控制参数组:0x32;变频器状态参数组:0x33。例如变频器功能码参数f3.02的寄存器地址为0x302,变频器功能码参数ff.01的寄存器地址为0xf01。
(3) 支持的功能码如下(见表1);
(4) 具体的协议介绍请参考艾默生变频器用户手册。
5 程序流程图
主设备对从设备的消息查询命令主要分为2大类,连续命令序列和随机命令序列。
连续命令序列:主设备需要定时或连续向从设备发送的命令序列。特点是周期性,连续性。如plc对变频器读取运行频率命令,运行状态命令等。
随机命令序列:主设备不定时或随机向从设备发送的命令序列。特点是不定时性,随机性。如plc对变频器的启停控制,改写频率或其他参数等(见图2)。
图2 程序流程图
6 程序清单
本程序主要介绍1台ec20plc(作为主站)按照modbus协议网络对3台变频器(从站号分别是2,3,4)进行通信控制的简单范例,本例中:
连续命令序列 包括对2,3,4号变频器的运行频率的读取;
随机命令序列 包括对2,3,4号变频器进行启动,停止,更改频率的命令操作;
(1) “变频器正转”子程序清单如下:
//主程序中用m1993作为各发送辅助使能,主要用于modbus指令的上升沿触发无其他用
ld lm0 //位输入参数型—发送辅助使能
rst sm135 //复位成功标志
rst sm136 //复位失败标志
ld sm0 //运行标志
mov z0 v9 //保存z0值到v9
ld sm0 //运行标志
mov v0 v10 //从机地址
mov 16#6 v11 //功能码
mov 16#32 v12 //寄存器地址高字节
mov 16#0 v13 //寄存器地址低字节
mov 1 v14 //写入数据高字节
mov 16#c7 v15 //写入数据低字节
//以下把发送数据转移到d7940-d7945里
ld sm0
mov 0 z0
ld sm0
for 6
ld sm0
mov v10z0 d7940z0