西门子模块6ES7355-2CH00-0AE0性能参数
西门子s7-1200 紧凑型在当前的市场中有着广泛的应用,由于其,所以常被用作小型自动化控制设备的控制器,这也使得它经常与modbus仪表(扫描枪、打印机等设备进行通讯。因为没有第三方modbus仪表,这里就以s7-200作为第三方的仪表为例介绍modbus通讯。
1.控制系统原理
图1:通讯系统原理
2.硬件需求
s7-1200 plc目前有3种类型的cpu:
1)s7-1211c cpu。
2)s7-1212c cpu。
3)s7-1214c cpu。
这三种类型的cpu多都可以连接三个串口通信模版。
本例中使用的plc硬件为:
1)pm1207( 6ep1 332-1sh71 )
2) s7-1214c ( 6es7 214 -1be30 -0xb0 )
3) cm1241 rs485 ( 6es7 241 -1ch30 -0xb0 )
4)cpu224xp (6es7 214-2ad23-0xb0)
3.软件需求
1) 编程软件 step7 basic v10.5 ( 6es7 822-0aa0-0ya0)
2)编程软件 step 7 microwin; modbus库软件选项包
4.组态
我们通过下述的实际操作来介绍如何在step7 basic v10.5 中组态s7-1214c 和s7-200的modbus通信。
4.1 s7-1200作modbus主站,s7-200作modbus从站
s7-1200作为modbus主站的配置步骤如下:
点击桌面上的“totally integrated automation portal v10”图标,打开如下图:
图2: 新建s7 -1200项目
首先需要选择“create new project”选项,然后在“project name:”里输入modbus_master;在“path:”修改项目的存储路径为“c:\”;点击“create”,这样就创建了一个文件modbus的新项目。创建后的窗口如下图所示:
图3: 新建项目后
点击门户视图左下角的“project view”切换到项目视图下,如下图:
图4: 切换到项目视图
打开后,在“devices”标签下,点击“add new device”,在弹出的菜单中输入设备名“plc_1”并在设备列表里选择cpu的类型。选择后如下图:
图5: plc硬件组态
插入cpu后,点击cpu左边的空槽,在右边的“catalog ”里找到“communication”下的rs485模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此rs485模块硬件接口参数,选择rs485模块,在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有下面五个选项, “general”; “port configuration”;“transmit message configuration”;“receive message configuration”;“io address/hw identify”。在“general”里包括了此模块的“项目信息”;而在“port configuration”里可以对端口的进行参数配置,
波特率为:9600 ;
校验方式:无 ;
数据位为:8 ;
停止位: 1;
硬件流控制:无;
等待时间: 1ms
设置参数如下图:
图6: rs485端口配置
在“transmit message configuration”和“receive message configuration”里保持默认设置,在“io address/hw identify”里确认一下“硬件识别号”为11。
此时,完成了硬件的组态,接下来需要编写modbus通讯程序。
在plc中编写发送程序。在项目管理视图下双击“device”—》“program block”—》“add new block”在弹出的窗口中选择“organizations block(ob)”,然后在其右边的窗口里选择“startup”,去除“symbolic access only”的选项勾。如下图所示:
图7: 添加启动ob块
点击“ok”后会打开此ob块,然后在启动ob块里用mb_comm_load(注:mb_comm_load和mb_master功能块是在“project library”下的“library”选项卡里,如下图所示:)
图8: library
调用后如下图所示:
图9: 调用mb_comm_load块
在调用mb_comm_load功能块时 ,都会自动弹出创建相应背景数据块的界面,如下图:
图10:创建背景数据块
按上面的步骤在ob1中插入mb_master功能块如下图:
图11:调用mb_master块
在插入功能块的过程,相应的生成mb_comm_load_db和mb_master_db,两个背景数据块。然后再创建一个发送或接收的数据缓冲区,点击plc_1项目下的“program block”下的“add new block”,在弹出的窗口中选择db类型为“bbbbbb db”,并去掉“symbolic access only”选项勾(这样可以对该db块进行直接地址访问),并取名该db块为mb_comm_db。建好这个db块后,双击打开mb_comm_db预先定义数据区的大小,如下图所示:
图12:数据区的定义
完成数据区的定义后,接下来就可以对mb_comm_load功能块和mb_master功能块进行参数赋值,赋值的参数见图9和图11。 在上面的编程块里需要注意的是,在mb_master功能块中的参数mb_addr参数是从站的modbus的站地址。这里要读取的从站的站地址为2;关于mode、data_addr、data_len可在下表中查看,data_ptr存放发送或接收到的数据。
表1:mb_master modbus功能表
上面就完成了程序的编写,对项目进行编译;右击plc_1项目在弹出的菜单里选择“complies all”选项,这样就对硬件与软件进行编译,如下图:
图13:编译项目
编译且没有错误后就可以下载程序到plc中,同样右击plc_1项目,在弹出的菜单选择“download to device”。
s7-200作为modbus从站的配置步骤如下:
点击桌面上的“v4.0 step 7 microwin sp6”图标(因为step 7 microwin安装时并没有安装modbus的库程序,所以modbus的库程序是需要单独安装的,安装后才可以在库程序中调用modbus的通讯功能块,关于库程序可以咨询西门子热线或访问西门子的****),打开后并编写modbus从站程序如下图:
图14:s7-200 modbus从站编程
在上面调用的是端口0的程序,所以在连接通讯线时,需要连接到端口0上,编译并下载项目到s7-200的plc中。下载后运行plc。
用dp电缆连接s7-1200与s7-200。
在线监控s7-200中的程序,并监控变量表,修改vb1000到vb1011的值为1到12(vb1000到vb1011对应的modbus的地址为40001-40006)。监控到的值如下图所示:
图15:s7-200监控变量值
在线监控 s7-1200变量表如下图:
图16:s7-1200监控变量值
4.2 s7-200作modbus主站,s7-1200作modbus从站
s7-1200作为modbus从站的配置步骤如下:
图17:s7-1200监控变量值
首先需要选择“create new project”选项,然后在“project name:”里输入modbus_slave在“path:”修改项目的存储路径为“c:\backup file”;点击“create”,这样就创建了一个文件modbus_slave的新项目。创建后的窗口如下图所示:
图18: 新建项目后
点击门户视图左下角的“project view”切换到项目视图下,如下图:
图19:切换到项目视图
图20: plc硬件组态
波特率为:9600 ;
校验方式:无 ;
数据位为:8 ;
停止位: 1;
硬件流控制:无;
等待时间: 1ms
设置参数如下图:
图21: rs485端口配置
此时,完成了硬件的组态,接下来需要编写modbus通讯程序。
图22: 添加启动ob块
点击“ok”后会打开此ob块,然后在启动ob块里用mb_comm_load(注:mb_comm_load和mb_slave功能块是在“project library”下的“library”选项卡里,如下图所示:)
图23: library
调用后如下图所示:
图24: 调用mb_comm_load块
在调用mb_comm_load功能块时 ,都会自动弹出创建相应背景数据块的界面,如下图:
图25:创建背景数据块
按上面的步骤在ob1中插入mb_slave功能块如下图:
图26:调用mb_slave块
在插入功能块的过程,相应的生成mb_comm_load_db和mb_slave_db,两个背景数据块。然后再创建一个发送或接收的数据缓冲区,点击plc_1项目下的“program block”下的“add new block”,在弹出的窗口中选择db类型为“bbbbbb db”,并去掉“symbolic access only”选项勾(这样可以对该db块进行直接地址访问),并取名该db块为mb_comm_db。建好这个db块后,双击打开mb_comm_db预先定义数据区的大小,如下图所示:
图27:数据区的定义
完成数据区的定义后,接下来就可以对mb_comm_load功能块和mb_slave功能块进行参数赋值,赋值的参数见图24和图26。 在上面的编程块里需要注意的是,在mb_slave功能块中的参数mb_addr参数是此从站的modbus站地址。这里定义为此从站的站地址为2;mb_hold_reg是指向modbus保持寄存器db的指针。保持寄存器db必须为典型的全局db。mb_slave所提供给主站的功能见下表:
表3:mb_slave modbus功能表a
表4:mb_slave modbus功能表b
图28:编译项目
s7-200作为modbus主站的配置步骤如下:
点击桌面上的“v4.0 step 7 microwin sp6”图标(因为step 7 microwin安装时并没有安装modbus的库程序,所以modbus的库程序是需要单独安装的,安装后才可以在库程序中调用modbus的通讯功能块,关于库程序可以咨询西门子热线或访问西门子的****),打开后并编写modbus主站程序如下图:
图29:s7-200 modbus主站编程
用dp电缆连接s7-1200与s7-200。
在线监控s7-1200中的程序,并监控变量表,修改db3.dbb0到db3.dbb20的值为1到21(db3.dbb0到db3.dbb19对应的modbus的地址为40001-40010)。监控到的值如下图所示:
图30:s7-1200监控变量值
在线监控 s7-200变量表如下图:
图31:s7-1200监控变量值
从上面的变量监控表里可以看到vb420中没有数据,因为在主站的s7-200里的程序里只读取10个变量(即40001-40010)对应着的vb400-vb419,所以vb420的数据没有接收