西门子除了以太网通讯,还有那些通讯?
1 内容概述
首先,这里对S7-200通讯性能做一个整体介绍,请看CPU200和扩展模块示意图(上图),CPU200会集成1~2个RS485通讯口,集成的通讯口可以实现PPI、MPI和自由口通讯,在自由口方面,西门子 已经为客户开发Modbus RTU主站和从站通讯指令库-USS通讯指令库。CPU200后的第一个扩展模块是CP243-2,是ASI主站通讯模块,使用两个槽位资源,支持的协议版本是2.1版本。第二个扩展模块是EM277,是标准的PROFIBUS DP从站通讯模块,EM277后面的EM241模块是一个模拟的电话调制解调器模块。最后两个模块CP243-1、CP243-1IT是以太网通讯扩展模块,支持西门子内部的S7协议,目前已经有新一代的CP243-1模块来代替之前的两个模块。CP243-1的IT功能主要包括Email、HTML和FTP三种。
2 PPI通信
(1)PPI通信
PPI协议原为点对点通讯,是一个主站-从站协议,主站设备将通讯请求发送至从站设备,然后从站设备进行响应,随着产品的发展,目前也支持多主站网络。PPI协议是基于开放互联OSI 7层模型的通讯结构的基础上通过令牌环实现网络。PPI使用1位起始位,1位停止位,8位数据位和偶校验。PPI协议使用CPU200集成的RS485通讯口,可以实现编程通讯,S7-200PLC之间的通讯以及和人机界面之间的通讯。CPU200集成的通讯口有一个PG连接资源和三个OP连接资源,支持的波特率有9.6k、19.2k和187.5k,支持多主站,最远的通讯距离为50米,一个网段内最多有32个节点,可以使用中继器进行网段隔离以及通讯距离的扩展
(2)CPU200之间的PPI通信
我们首先介绍两个CPU200之间的PPI通讯,这里的两个S7-200PLC分别是PPI的主站和从站,在主站一侧,用户需要配置网络读写向导,使用向导生成的子程序。在从站一侧,只需要在系统块中设置与主站相同的通讯速率和不同的通讯地址即可。
我们打开S7-200编程软件,点击'工具'下拉菜单,选择指令向导,在指令向导中选择网络读写向导,然后点击下一步(如图1);
图(1)
本界面(图2)是向导中的第一步,用户首先要设置一共要配置多少条网络读/写操作,CPU200允许用户最多配置24个网络读写操作
图(2)
接下来(图3)用户选择使用哪个通讯口进行PPI通讯,0口或者1口,一旦选定了,此向导所有的网络读写操作都会经过该口,向导会为子程序定义一个缺省的名称,默认是'NET_EXE',当然也可以修改这个名称;
图(3)
在这里(图4)我们逐条定义每条网络通讯读写内容。首先定义此操作是网络读还是网络写,从远程PLC的什么地址范围读或者写多少个字节到本地的什么地址,有效的数据存储区为VB、IB、QB、MB,每条网络读写可以传送16个字节的数据。远程PLC的地址必须与从站PLC系统块里的端口地址相同。在本截图(图4)的例子中,主站是从从站的VB0读到本地的VB0,一共读16个字节的数据,配置完成后我们点击'下一项操作'按钮,即可编辑下一个网络读或者写操作,全部操作配置完成后,点击'下一步'按钮即可继续;
图(4)
向导即将配置完成时,会提示用户为其分配一段未使用的V存储区地址范围(图5),配置的每一个网络操作需要12个字节的V存储区地址空间,如果配置了两个网络读写操作就会占用24个字节的V存储区地址空间,用户也可以自己定义或使用建议地址来选取V存储区的地址范围。需要注意的是,要保证用户程序中已占用的V存储区地址以及网络操作中读写所占用的V存储区区域以及向导此处所占用的V存储区地址空间不能够有任何重复,否则会导致程序不能正常工作;
图(5)
网络读写向导会自动生成一个子程序和一个全局符号表(图6);
图(6)
向导生成的'NET_EXE'需要在主程序中用SM0.0持续调用,子程序的'Timeout'输入管脚是超时参数管脚,如果通讯中遇到问题,等待时间超过此延时时间,'NET_EXE'子程序会报错,在这里(下图)填0表示不启动延时检测,我们可以以秒为单位指定延时检测时间,有效数据范围为1-36767。
向导子程序内部会自动协调同一时刻只有8条网络读或网络写指令被激活。
3 MPI通信
(1)MPI通信
S7-200PLC集成的485接口可以作为MPI的从站,通过MPI通讯可以实现S7-200PLC的编程通讯,S7-200与S7-300/400集成MPI口之间的通讯,与HMI人机设备之间的通讯。作MPI通讯时,S7-200PLC支持的波特率为19.2kps和187.5kps,另外MPI通讯设备不能与作为PPI主站的S7-200PLC进行数据交换。。
S7-200与S7-300之间采用MPI通讯时,S7-200PLC不需要编写任何与通讯有关的程序,只需要将要交换的数据整理到一个连续的V存储区当中即可。而在S7-300PLC中需要在程序中调用系统功能'X_GET'(SFC67)和'X_PUT'(SFC68),每次读或者写操作由SFC的功能管脚'REQ'输入的1信号触发,'DEST_ID'是指S7-200PLC的MPI地址,在本例子中(上图)是2。S7-200的V存储区被S7-300PLC看作是DB1,因此在远程数据地址输入管脚'VAR_ADDR'我们填写的'P#DB1.DBX0.0 BYTE 8'即是从S7-200PLC VB0开始的8个字节,'SD'和'RD'指向的是S7-300内部的数据存储区,在本例子中使用的都是M存储区。