组态和配置
打开软件STEP7,点击项目->新建...创建一新项目,项目名称为ET200SP_ModbusM。
用鼠标右键点击项目名称,选择“插入新对象->SIMATIC 300站点”
双击“硬件”进入硬件组态界面,插入导轨RACK、CPU315-2PN/DP,为CPU315分配IP地址,新建子网Ethernet(1)。
从右边的硬件目录中拖拽正确的ET200SP接口模块到子网Ethernet(1)中,将CM PtP拖拽放入插槽1中,将Server module拖拽放入插槽2
右键点击ET200SP(IM155-6PN)选择“对象属性”,在Device Name中输入设备名称(本例中输入:IM155-6PN),点击按钮“Ethernet..”为ET200SP接口模块设置一个IP地址。注意:这里是在组态中为ET200SP接口模块设置设备名称和IP地址,另外还要给实际硬件ET200SP接口模块分配真正的设备名称和IP地址,要与组态的一致,这里不做讲解。
安装库文件
添加库文件。进入链接(Link:http://support.automation.siemens.com/CN/view/zh/75226762),进入页面:在S7-300/400(Step7 V5.5)分布式外设中使用ET200MP/ET200SP的PtP指令。下载“MODBUS(RTU)”软件包(Modbus_RTU_V1_2.ZIP)。
在之前创建的项目中,点击“文件->打开..”。
进入属性页“库”,点击“浏览”
在“浏览”页中,找到之前下载存储的软件包“Modbus_RTU_V1_2”,选中并确定。
软件会进入“Modbus_RTU_V1_2”,可以看到相关的 PtP 通信功能块。直接关闭该界面。
重新打开之前创建的项目,进入OB1,在总览的“库”中,可以找到添加的库文件“Modbus_RTU_V1_2”
在工作区空白处点击鼠标右键,选择“插入新对象->数据块”,创建1个数据块DB1
DB1中创建1个变量(本例中使用默认变量名),这个变量的类型是array,数组元素数量是100,元素的类型是word。
双击打开OB1,将功能块 FB640(Modbus_Comm_Load MODBUS)和功能块 FB641(Modbus_Master MODBUS)拖拽到程序段1和程序段2中,分别为这2个FB块生成背景数据块DB640和DB641,并填写相关管脚参数。
功能块FB640的相关参数设置见下表
双击“硬件(Hardware)”进入硬件组态,再进入CPU的属性“周期/时钟存储器”,勾选“时钟存储器”,本例使用默认字节MB0。
由于这是远程站ET200SP的串口通信,为了防止300CPU停机,建议在项目中创建OB82、OB121、OB122直接下载下去,这些OB块不需要做编程,如下图。
另外,点击右键进入FB640和FB641的属性框,查看2个FB的调用函数,可以看到FB640需要调用FB611和FB612,FB641需要调用FB613、FB614和FB617。如下图。
因此,我们需要在程序段中插入FB611、FB612、FB613、FB614和FB617,然后接着删掉,这样在项目中就会出现这些FB块,下载项目时一定要下载。如下图。
鉴于CPU启动后,直接就进行通信,而无需手动操作,可以做以下2段程序,第1个在OB100中(即在图22中增加程序段4),将FB640的REQ进行置位。;第2个在OB1中(在FB640后插入程序),端口初始化成功后,使用FB640的DONE复位REQ,同时将FB641的COM_RST置位。如下图。增加这2段程序段后,CPU启动后就可以自动进行通信。
前面使用Step7 V5.5软件已经将ET200SP的串口通信模块的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件ModSim32软件来测试串口通信模块和计算机的Modbus主站通信,步骤如下。
1、双击ModSim32软件图标,新建项目,点击Port1,进入端口1做设置,本例计算机只有一个端口,所以就对端口1做设置,如果计算机有多个端口,要注意所选端口。
进入Port1设置界面,设置波特率、数据位、奇偶校验等参数,要和ET200SP串口通信模块的参数相同
点击“OK”,选择软件的03功能码界面,本例设置03功能码的20个数据,其中前4个数据分别设置成1—10。