通过M580 PLC和ATV930的以太网通讯实验,了解Modbus TCP/IP和Ethernet IP通讯具体的实现过程,理解多种实现方式的区别。
名称 |
型号 |
注释 |
PLC |
BME H58 2040 |
包含机架、电源等。 |
变频器 |
ATV930U07M3 |
|
通讯电缆 |
网络电缆 |
实验环境使用普通网线即可,现场应用推荐使用超六类网线。 |
编程电缆 |
Mini USB接口电缆 |
一头为标准USB接口,一头为Mini USB接口。 |
三、实验准备工作
1. M580 PLC与ATV930变频器通讯端口介绍
BME H58 2040的正面和背面如图所示:
BME H58 2040各个部位的功能如表所示:
编号 |
名称 |
注释 |
1 |
LED诊断显示面板 |
|
2 |
PC和PLC连接的Mini USB接口 |
|
3 |
RJ45以太网连接端口 |
|
4 |
RJ45以太网双重连接端口 |
支持分布式设备和RIO子站 |
5 |
SFP插座 |
用于铜芯缆线或光纤热备链路连接 |
6 |
热备状态链路LED |
|
7 |
SD存储卡插槽 |
|
8 |
A/B/清除旋转选择开关 |
用于将CPU制定为A或B(热备),或清除现有应用程序。 |
ATV930的控制模块如图所示:
上图中3是控制电源类型选择拨码开关,5和6是扩展模块的插槽。需要注意的是,1,2,4都是RJ45端口,但是1是用于控制面板连接的,2的两个端口才是以太网通讯端口,4是用于Modbus RTU通讯的。
在我们的实验中,网线一头插入BME H58 2040的3或4中的任意一个端口,另一头插入ATV930U07M3的2中的任意一个端口即可实现以太网硬件连接。PC和PLC直接使用Mini USB电缆连接即可。需要注意的是,如果是使用添加DTM的方式来连接PLC和变频器,而且想在PLC在线修改变频器的DTM,PC和PLC必须通过网线连接。
本实验需要使用以太网通讯对变频器实现控制和监视,变频器参数的设置主要在控制通道和以太网通讯上。
在SoMove界面的“参数列表”中,选择“完整设置”中的“命令和参考”,将“参考频率通道1”设置为“嵌入式以太网”,将“控制模式配置”设置为“组合通道模式”,如图所示:
在SoMove界面的“参数列表”中,选择“通信”中“端口-Modbus TCP/以太网 IP”里的“常规设置”,将“IP分配模式”设置为“固定地址”,将“IP地址”、“子网掩码”、“网关地址”分别设置为“192.168.1.99”、“255.255.255.0”、“192.168.1.1”,如图所示:
在“协议和变频器配置文件”里,选择对应的通讯协议即可,如图所示:
通讯参数设置完毕后,需要将变频器断电后重新送电,以使通讯参数有效。
M580 PLC与ATV930变频器Modbus TCP/IP通讯可以通过很多种不同的方法来实现,我们将逐一进行实验。首先我们要在菜单“工具”→“项目设置”→“变量”中勾选“直接以数组变量表示”、“允许动态数组(ANY_ARRAY_XXX)”、“禁用数组大小兼容性检查”并确认,如图所示:
1)使用READ_VAR和WRITE_VAR功能块。
新建项目,选择CPU型号BME H58 2040,点击确定,如图所示:
双击“项目浏览器”中的“项目”,打开硬件组态界面,如图所示:
双击CPU上的以太网端口,打开以太网端口配置界面,如图所示:
点击“安全”标签里的“解锁安全”,解锁服务和访问控制,如图所示:
在“IP配置”标签,将“IP主地址”、“子网掩码”、“网关地址”分别设置为“192.168.1.9”、“255.255.255.0”、“192.168.1.1”,“IP地址A”、“IP地址B”分别设置为“192.168.1.11”、 “192.168.1.12”,配置完成后点击 确认,如图所示:
在“项目浏览器”中,在“程序”→“任务”→“MAST”→“段”上点击右键,新建一个名称为“ModbusTCP”,语言为“LD”的程序,如图所示:
在弹出的编程界面中,点击 “FFB输入助手”,在弹出的“函数输入助手”对话框的“FFB类型”里分别输入“READ_VAR”和“WRITE_VAR”并确认,在程序中添加对应的功能块,如图所示:
点击 ,添加一个“%S6”的秒脉冲,连接至“READ_VAR”和“WRITE_VAR”的“EN”脚,如图所示:
输入“READ_VAR”和“WRITE_VAR”各个引脚的值,如图所示:
ADR:读或写的子站地址,两个功能块都是输入的ADDM('0.0.3{192.168.1.99}'),ADDM是寻址命令,0.0.3指定的是M580上自带的以太网口,192.168.1.99是子站的IP地址。需要注意的是,M580上自带的以太网口是0.0.3,而不是按机架号+位置号+通道号的0.0.0,这一点比较特殊。
OBJ:对象类型,两个功能块都是使用的’%MW’。
NUM:起始地址,这里我们是直接对I/O Scanner对应的寄存器进行读写,两个功能块都是写0.
NB:读写数量,I/O Scanner默认的输入寄存器有状态字和输出转速、输出寄存器有控制字和给定转速,如图所示。数量都是两个,两个功能块都是写0.
RECP:接收地址,只需要两个即可,读取块使用%MW0:2,即使用%MW0和%MW1来存放状态字和输出转速的值。
EMIS:发送地址,只需要两个即可,写入块使用%MW10:2,即使用%MW10和%MW11来存放控制字和给定转速的值。
GEST:交换数据管理取,必须定义4个字。“READ_VAR”使用的是%MW100:4,即从%MW100开始的连续4个字,“WRITE_VAR” 使用的是%MW104:4,即从%MW104开始的连续4个字.
程序编写完毕后,点击菜单“生成”中的“重新生成所有项目”,将项目生成。
生成完毕后点击菜单“PLC”中的“连接”,再点击“将项目传输到PLC”,将程序下载到PLC中。如图所示:
下载完毕后点击菜单“PLC”中的“运行”,开始运行PLC中的程序。
在“项目浏览器”中右键点击“动态数据表”,选择“新建动态数据表”,如图所示:
确定后打开新建的数据表,添加%MW0,%MW1,%MW10,%MW11,如图所示:
如前文所述,这4个变量和变频器的寄存器的对应关系如表所示:
变量 |
变频器寄存器 |
%MW0 |
状态字 |
%MW1 |
输出转速 |
%MW10 |
控制字 |
%MW11 |
给定转速 |
右键选择%MW0和%MW10,将显示格式修改为16进制。
点击“修改”按钮,然后将%MW11的值修改为1500,对应1500rpm转速。然后将%MW10的值按顺序修改为6,7,F。可以看到%MW0的16进制值的尾数依次由50变为31,33,37,%MW1的值也从0逐渐上升到1500,表明变频器运行成功。如图所示:
如果想通过通讯进行其他的控制和监视,可以通过SoMove来编辑I/O scanner内的地址,如图所示。再将程序中的NB,RECP,EMIS做对应修改即可。
当然,在使用“READ_VAR”和“WRITE_VAR”功能块时,也可以不和变频器的I/O Scanner做映射,而是直接对变频器的寄存器做读和写的操作。这里我们需要做两个改动:
第一个是变频器需要设置modbus通讯的格式,如图所示:
这里我们将变频器的Modbus地址设置为3,波特率设置为19200bps,格式设置为8E1.
第二个是程序需要做相应的修改,如图所示:
ADR需要修改为ADDM('0.0.3{192.168.1.99}3'),即把变频器的Modbus地址添加进去。
“READ_VAR”的NUM修改为3201,NB修改为1,RECP修改为%MW0:1。即将变频器3201状态字的值存放到%MW0里。
“WRITE_VAR”的NUM修改为8501,NB依然为2,EMIS依然为%MW10:2。即将变频器8501控制字、8502频率给定的值存放到%MW10,%MW11里。
通过数据表内数值的修改,一样可以实现变频器的控制和监视。
2)使用DTM浏览器中的Modbus Device。
新建项目,选择CPU型号BME H58 2040。
双击“项目浏览器”中的“项目”,打开硬件组态界面。双击CPU上的以太网端口,打开以太网端口配置界面:点击“安全”标签里的“解锁安全”,解锁服务和访问控制。在“IP配置”标签,将“IP主地址”、“子网掩码”、“网关地址”分别设置为“192.168.1.9”、“255.255.255.0”、“192.168.1.1”,“IP地址A”、“IP地址B”分别设置为“192.168.1.11”、 “192.168.1.12”,配置完成后点击 确认,
以上步骤和使用功能块时一致,本文不再赘述。
点击菜单栏“工具”,在下拉菜单中选择“DTM浏览器”,如图所示:
在“DTM浏览器”中右键点击CPU即“<192.168.1.9> BMEP58_ECPU_EXT”选择“添加”,在弹出的添加对话框中选择“Modbus Device”,点击“添加DTM”,如图所示:
在弹出的设备属性对话框中,将“名称”修改为“ATV930”,点击确认,如图所示:
双击“DTM浏览器”中CPU即“<192.168.1.9> BMEP58_ECPU_EXT”,在CPU配置页选择“设备列表”→“[515]ATV930
选择“地址设置”标签,将IP地址修改为变频器的IP地址即192.168.1.99,“此设备的DHCP”选择为“已禁用”,点击“应用”,如图所示:
选择“请求设置”标签,点击“添加请求”,然后将新添加的请求中的“读取长度”和“写入长度”都修改为2,其他保持默认值,点击“应用”,如图所示:
点击“请求001:项目”,在“输入”标签选择第0个和第1个字节,点击“定义项目”,在弹出的对话框中将“新项目数据类型”修改为Word,“项目名称”修改为ETA,点击应用,如图所示:
使用同样的方法,将第2个和第3个字节定义为RFRD,点击应用,如图所示:
使用同样的方法,将“输出”标签里的第0个和第1个字节定义为CMD,第2个和第3个字节定义为LFRD,点击确定,如图所示:
通过以上操作,就可以把输入和输出的空间以4个字为单位映射到ETA,RFRD,CMD,LFRD这4个变量中,也就是我们需要使用的状态字、输出转速、控制字、给定转速。
在“项目浏览器”中的“动态数据表”中新建一个数据表,在新建的数据表中不要手动输入变量,点击选择按钮,在弹出的对话框中选择“ATV930”,如图所示:
这样ATV930的相关变量就直接全部添加,如图所示:
重新生成所有项目,连接PLC,将程序下载到PLC中,运行PLC程序后,可以发现状态字ETA的值已经通过通讯刷新过来了,如图所示:
一样的操作方式,通过修改CMD控制字和LFRD给定转速的值,可以让变频器运行起来,如图所示:
这种通讯方式也是映射的变频器I/O Scanner里的值,如果想对其他的值做读写,可以直接修改I/O Scanner内输入和输出的地址及数量,并在组态时做对应的修改即可。
当然,也可以不直接映射变频器I/O Scanner里的值,直接对变频器内的任意寄存器进行直接的读写操作,有几个地方需要改动:
第一个就是要打开变频器的Modbus,设置Modbus地址(3)、波特率(19200bps)、Modbus格式(8E1)等。
第二个是在“请求设置”里要做出相应的改动,“单元ID”修改为子站的Modbus地址即3,“读取地址”修改为3201,“读取长度”修改为1,“写入地址”修改为8501,“写入长度”修改为2,点击应用,如图所示:
第三个是在“请求001:项目”的“输入”和“输出”标签重新定义项目ETA,CMD,LFR,需要注意现在变量的总量是3个,而且LFR是给定频率而不是给定转速。
在离线模式下点击“生成更改”,再将程序下载到PLC中。可以看到虽然变量的数量发生了更改而且给定变为按频率给定,但控制和监视依然是可行的,如图所示:
3)使用DTM浏览器中的ATV930 DTM。
这种方法的实现步骤和Ethernet IP通讯实验类似,只是在添加ATV930的DTM时选择的通讯协议不同,需要选择Modbus TCP,本文不再赘述。具体步骤可参考下一节。
新建项目,选择CPU型号BME H58 2040。
双击“项目浏览器”中的“项目”,打开硬件组态界面。双击CPU上的以太网端口,打开以太网端口配置界面:点击“安全”标签里的“解锁安全”,解锁服务和访问控制。在“IP配置”标签,将“IP主地址”、“子网掩码”、“网关地址”分别设置为“192.168.1.9”、“255.255.255.0”、“192.168.1.1”,“IP地址A”、“IP地址B”分别设置为“192.168.1.11”、 “192.168.1.12”,配置完成后点击 确认,
以上步骤和Modbus TCP/IP实验中使用功能块时一致,本文不再赘述。
点击菜单栏“工具”,在下拉菜单中选择“DTM浏览器”,如图所示:
在“DTM浏览器”中右键点击CPU即“<192.168.1.9> BMEP58_ECPU_EXT”选择“添加”,在弹出的添加对话框中选择“ATV 9XX”,点击“添加DTM”,如图所示:
在弹出的对话框中选择Ethernet IP(如果是使用Modbus TCP则选择Modbus over TCP),点击确定,如图所示:
在弹出的设备属性对话框中将“名称”修改为ATV930,点击确定,如图所示:
双击“DTM浏览器”中CPU即“<192.168.1.9> BMEP58_ECPU_EXT”,在CPU配置页选择“设备列表”→“[513]ATV930
选择“地址设置”标签,将“IP地址修”改为变频器的IP地址即192.168.1.99,“子网掩码”修改为255.255.255.0,“网关”修改为192.168.1.1,“此设备的DHCP”选择为“已禁用”,点击“应用”,如图所示:
重新生成所有项目,将程序下载到PLC中,拔掉PC和CPU之间的Mini USB通讯电缆。将PC的IP地址修改为192.168.1.3,其他格式设置为和CPU、变频器一致,如图所示:
使用网线连接PC和CPU,点击菜单“PLC”中的“设置地址”,将“地址”修改为CPU的IP地址即192.168.1.9,“介质”修改为“TCPIP”,点击确定,如图所示: