设备名称 |
设备型号 |
PS 307 |
6ES7 307-1EA00-0AA0 |
CPU 315-2DP |
6ES7 315-2AG10-0AB0 |
MMC |
6ES7 953-8LG11-0AA0 |
CP341 |
6ES7 341-1AH01-0AE0 |
Dongle |
6ES7 870-1AB01-0YA0 |
应用CP341进行 MODBUS协议通信时需要有Dongle的支持。在使用之前先将Dongle安装在CP341模块的背面的Dongle插槽中,Dongle和插入Dongle前后的CP341如下图所示:
图1
注意:STEP7 V5.X软件上,必须安装如下软件包才可进行后续的组态配置。
1、打开上面创建的项目ptp,用鼠标右键点击项目名称,选择Insert New Object-> SIMATIC 300 Station,更改站的名称为CP341 Modbus-S。
图2
2、双击Hardware进入硬件配置画面,插入RACK、CPU315-2DP、CP341。
图3
3、 双击CP341模板,点击Parameter...,配置CP341参数。在Protocol选项中选择MODBUS Slave。
图4
4、双击Protocol下的信封图标,配置MODBUS Slave参数,点击MODBUS-Slave按钮。
图5
图6
6、FC02读取输入数据位的状态,地址对应如上文所述。
图7
7、FC03,06,16组态输出寄存器数据区,对应西门子数据区为DB块。
图8
8、FC04组态输入寄存器数据区,对应西门子数据区同样是DB块。
图9
9、设置写参数的限制值。
图10
10、如果选用的是RS422/485接口的CP341时,还需要设置接口类型,如下图所示,其它参数均采用默认设置。
图11
11、配置完成后保存时会提示是否装载驱动。
图12
12、此时必须连接到实际的PLC,点击Yes按钮装载驱动,装载时CPU必须为STOP模式。驱动装载完成后,如果再次装载,STEP7会提示Driver already exists,配置完成后点击“编译保存”按钮保存编译硬件组态,并确认没有错误。
图13
1、将FB7,FB8添加到程序Blocks中,方法为双击OB1,打开OB1编程画面,从库Libraries->CP PtP->CP341中调用发送程序块FB8和接收程序块FB7,然后再从OB1中删除。因为MODBUS从站通讯要用到这两个功能块。
2、调用MODBUS从站功能块FB80,位置在Libraries->Modbus->Modbus ->FB80。分配背景数据块DB80,将参数LADDR设为硬件组态中的起始逻辑地址256。
图14
2、调用MODBUS从站功能块,设置参数。
图15
LADDR |
硬件组态中的起始逻辑地址,本例中为256 |
START_TIME |
超时初始化定时器,本例中为T1 |
START_TIME |
超时初始化时间值,本例中为1s |
OB_MASK |
外设访问错误屏蔽位,本例中为M100.0 |
CP_START |
FB初始化始能位,本例中为M100.1 |
CP_START_FM |
CP_START初始化的上升沿位,本例中为M100.2 |
CP_START_NDR |
从CP写操作位,本例中为M100.3 |
CP_START_OK |
初始化成功标志,本例中为M100.4 |
CP_START_ERROR |
初始化失败标志,本例中为M100.5 |
ERROR_NR |
错误号,本例中为MW102 |
ERROR_INFO |
错误信息,本例中为MW104,可以查看Modbus Slave 手册第10章 |
3、创建FC03,06,16功能代码通讯数据块DB1。
图16
4、创建FC04功能代码通讯数据块DB2。
图17
本文档使用的CP341的接口是RS232C,因此需要通过标准的RS232C电缆来连接CP341和计算机的串口,具体的电缆连接方法请查看CP341手册B章节连接电缆部分(见:手册、文档和软件链接部分)。
如果使用的CP341是RS485接口的模块,需要使用RS232C/RS485转换器。
通信测试
前面使用Step7 V5.5软件已经将通信CP341的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件Modscan32软件来测试CP341和计算机的通信,步骤如下
1、首先将硬件配置和程序下载到CPU315-2DP中。在计算机上打开MODBUS主站仿真软件Modscan32。
图18
2、点击Modscan32上的Connection->Connect,显示画面如下,选择计算机和CP341相连的COM口COM1,设好波特率,数据位,停止位,校验方式,如下图:
图19
3、设置完成,点击OK,显示画面如下。
图20
4、数据显示区的10个地址的数据对应CPU中DB1的前10个字(Word)的数值(DBW0–DBW10分别为1-10 ),如下图。
图21
5、其它数据的读取,只需更改访问的数据类型,此处不再介绍。
6、但要说明一下对于浮点数的显示,PLC中浮点数的高16位和低16位与Modscan32显示的相反,即PLC中浮点数的高16位对应Modscan32显示浮点数的低16位,PLC中浮点数的低16位对应Modscan32显示浮点数的高16位,可在程序中做一下处理,如下图:
图22
此时Modscan32显示的浮点数40001对应MD200的浮点数值,但MODBUS地址对应DB1.DBD0。
图23
更详细的资料请参看如下手册:
CP341使用手册