S7-200通信最经济的方式就是采用PPI协议和自由口通信协议。对于S7-200之间进行通信,PPI协议又更适合——它比自由口通信的编程更简单!下面就对这个PPI通信进行说明——以2台S7-200通信为例,做一个实例。
设备配置:1台S7-200 CPU 226CN的PLC、 1台S7-200 CPU 224XP的PLC
硬件连接:原则上需要配备1条紫色的Profibus电缆、2个黑色的Profibus-DP接头。如果需要在PLC通信时对所有在线的PLC进行监控/编程操作而不占用另外的通信口(也就是说,假如所有PLC用端口PROT1进行PPI通信,而现在要对所有PLC依次编程/监控,但又不想占用这些PLC的端口PROT0——端口PROT0可能已作它用),那么必须在其中1台PLC采用带编程口的Profibus-DP接头。所以说,带编程口的Profibus-DP接头在整个网络中只需要一个就可以了。这样,也就可以在某一台PLC处对在网的其它PLC进行编程/监控。
引脚分配:
........S7--200 CPU上的通讯端口是符合欧洲标准EN 50170中PROFIBUS标准的RS--485兼容9针D型连接器。下表列出了为通讯端口提供物理连接的连接器,并描述了通讯端口的针脚分配。下面是S7-200的通信接口——D型9孔母头的引脚定义。
网络电缆的偏压电阻和终端电阻
为了能够把多个设备很容易地连接到网络中,西门子公司提供两种网络连接器:一种标准网络连接器(引脚分配如表7-7所示)和一种带编程接口的连接器,后者允许您在不影响现有网络连接的情况下,再连接一个编程站或者一个HMI设备到网络中。带编程接口的连接器将S7--200的所有信号(包括电源引脚)传到编程接口。这种连接器对于那些从S7--200取电源的设备(例如TD200)尤为有用。两种连接器都有两组螺钉连接端子,可以用来连接输入连接电缆和输出连接电缆。两种连接器也都有网络偏置和终端匹配的选择开关。典型的网络连接器偏置和终端如图所示:
........处于中间节点的从站在不工作时可以断电。
PROFIBUS电缆的接法
........PROFIBUS电缆,紫色,只有两根线在里面,一根红的一根绿的,然后外面有屏蔽层,接线的时候,要把屏蔽层接好,不能和里面的电线接触到,要分清楚进去的和出去的线分别是哪个,假如是一串的,就是一根总线下去,中间不断地接入分站,这个是很常用的方法,在总线的两头的两个接头,线都要接在进去的那个孔里,不能是出的那个孔,然后这两个两头的接头,要把它们的开关置为ON状态,这时候就只有进去的那个接线是通的,而出去的那个接线是断的,其余中间的接头,都置为OFF,它们的进出两个接线都是通的(我觉得德国人真的是和我们的思维不同,我觉得应该是OFF表示关闭吧,他偏设置ON为关闭,搞不懂)。这就是线的接法,接好了线以后呢,还要用万用表量一量,看这个线是不是通的。假如你这根线上只有一个接头,你量它的收发两个针上面的电阻值,假如是220欧姆,那么就是对的,假如你这根线已经做好了,连了一串的接口,你就要从一端开始逐个检查了。第一个单独接线的接口,是ON状态,然后你把邻近的第一个接口的开关也置为ON,那么这个接口以后的部分就断了(出口的线已经被关掉了啊~)现在测最边上,就是单线接的那个接口,之后的东西一直都是测这个接口,测它的收发两个针,和刚才一样,假如电阻是110欧姆(被并联了),那么这段线路就是通的,然后把中间刚才那个改动为ON的接口改回到OFF,然后是下一个接口改为ON,。。。。。。就这么测下去,哪个的电阻不是110欧姆了,就是那一段的线路出问题了。
........PROFIBUS网络电缆(西门子产品号:6XV1 830-0EH10),波特率为100Kbps以下时也可使用普通双绞线(截面积不小0.22平方毫米)。 原则上绿色接RS485信号负(对应Profibus接头的A1)、红色接RS485信号正(对应Profibus接头的B1)。当然,统一反着接也可以——绿色接RS485信号正(对应Profibus接头的B1)、红色接RS485信号负(对应Profibus接头的A1)。不要交叉就行。
Profibus-DP现场总线电缆电缆:用于Siemens公司支持的Profibus-DP总线系统。
●能够对应12Mbps的高速传送,充分发挥PROFIBUS-DP的功能。
●铝箔PET带和高密度编织的双层屏蔽使抗干扰性能出色,通信的传送质量稳定。
●护套使用了柔软性和耐油、耐热性能良好的无铅聚氯乙烯混合物。
●护套的颜色以紫色(RAL001)为标准色。
........德国LAPP UNITRONICO BUS L2/FIP:实心裸铜丝导体,2芯绞合成对,芯线颜色为红+绿。 铝箔屏蔽后加裸铜丝编织,PVC外护套,阻燃,符合VDE 0472第804部份,B类试验(IEC 332.1),紫色(RAL4001)。
........传输速率决定允许的总线电缆最大长度如下:
PROFIBUS-DP 1.5MBit/s=最长200m
(SIMATIC网) 12.0MBit/s=最长100m
工厂通讯处理层 1.0MBit/s=最长200m
2.5MBit/s=最长200m
........上述参数适用于PROFIBUS-DP及PROFIBUS—FMS总线电缆。
........国产普通屏蔽电缆也可以替代PROFIBUS电缆,没有问题,实践证明是可以用的。这样说吧,使用是没有问题的,但是是要有些请提条件的,比如西门子给出的多大速率下对应多大的通讯距离,西门子DP电缆没有问题,但是国产屏蔽电缆就有可能不能用到这么长的通讯距离。要选用质量好的国产屏蔽电缆。
........为了保证信号的稳定要在DP网络的两端接电阻,3和8脚接220电阻,3和VP引脚接390电阻,8脚和DGND脚接390电阻。如果有RS485连接器,就不用自己加终端电阻,RS485连接器中已经自带终端电阻了。
.......国产屏蔽电缆抗干扰的能力应该要若一些,如果是电磁环境很差的地方,例如有交交变频系统等,建议使用profibus-dp电缆。比较重要的系统中,对通讯安全非常严格的话,建议还是使用西门子的profibus-dp电缆。
........上面是官方提到的硬件连接方式, 在实际中,我们可能因为使用情况不同(临时使用、实验使用、同一个电控柜内使用等),手边没有现成的Profibus电缆和Profibus-DP接头。那么,在这种情况下就需要自己制作了。下面就简单说一下制作方法:
1、不带编程口的通信线制作:
........有多少个PLC就买多少个D型9针公头,然后买需要长度的Profibus电缆(实在没有,买屏蔽双绞线也可以,不过抗干扰性没那么好哟;近距离的话,随便用什么线连接都可以,哪怕是2根单股导线,也没问题)。通过电缆,把这些D型9针公头的3脚依次连接在一起,把这些D型9针公头的8脚也依次连接在一起。接线的时候注意点,不要接错了——笔者就因为疏忽大意接错线,导致查了几个小时的故障才发现接线错了(首先怀疑线错了,用万用表打,没发现问题,晕哟,可能是遇见鬼了;最后把线全拆了,重新焊接即恢复正常)。
........如果通信存在问题,那么建议把这些D型9针公头的5脚也接在一起,强制低电位相等。如果有屏蔽线的话,就接上屏蔽线。屏蔽层接到每台设备的外壳并最后接大地。
........至于终端电阻和偏置电阻,距离短的话,就可以不接了。不过,虽然不接,也得了解其原理——终端电阻和偏置电阻如17楼图示。因为PROFIBUS的连接电缆通常采用TYPE A标准,其中的电缆阻抗值最大为165欧,390/220/390的等效电阻是170,是为了实现阻抗匹配。当没有通讯进行时,终端电阻可以保证信号线间的电压差。通常加载在终端的电压为5V,390/220/390使得两信号线点的电压值分别为1.95和3.05V,是理想的静态电压(差分)。
........官方的PROFIBUS接头有进线和出线2个口,采用官方的PROFIBUS接头接线时需要注意:“首站”和“末站”都接进线。
........其实“首站”和“末站”接出也能通信的,但是为了保证通讯的稳定,“首站”和“末站”都要把终端电阻置为ON,这时如果还把“首站”和“末站”接出线,那么“首站”和“末站”都被终端掉了。所以西门子规定:“首站”和“末站”都接进线。
2、带编程口的通信线制作:
........先制作不带编程口的通信线,然后再找一个D型9孔母头,与其中一台PLC的D型9针公头一对一连接:1-1,2-2,3-3,4-4,5-5,6-6,7-7,8-8,9-9。PLC编程电缆(多主站电缆)连接那个D型9孔母头。这样,电脑就可以监控那台PLC了。同时,因为同时也连接到了网内所有PLC,所以也可以监控网内所有PLC。
........注意:无论是否采用西门子原装的总线电缆和接头,如果是不带编程口,那么就只能监控到1台PLC而监控不到在网的其它PLC————例如,1台PLC采用端口PORT1与其他PLC进行通信,而编程电缆连接到了这台PLC的端口PORT0,那么在电脑上是无法监控到在网的其它PLC的。因为,电脑的编程电缆的通信线3,8脚和在网的其它PLC都不存在物理连接嘛。
采用了不带编程口的通信线,PLC插在不是联网那个通信口上监控,只能看到1台PLC:
采用了带编程口的通信线,PLC插在联网那个通信口上监控,能看到在网的所有PLC:
不过,最好只搜索设定的波特率就可以了,不要搜索所有波特率,否则可能出现问题:
要监控在网的哪台PLC,需要打开相应的PLC程序,然后搜索出所有的PLC,再把光标置于相应的PLC上,点击“确定”。然后可以下载和监控那台PLC:
如果电脑上当前PLC程序和“通信”的当前地址的PLC的程序不同,是无法监控该PLC的。
如果电脑上当前PLC程序“系统块”中的地址和“通信”的当前地址不同,那么将无法下载:
下面就来针对dingqw1234网友的要求做一个实例:1台CPU 226CN 作为主站,1台CPU 224XP作为从站,要把CPU 224XP的输入点数据全部传到CPU 226CN里面。
一、硬件连接:
........按照上面所说的方法,用到编程口的通信电缆把CPU 226CN和CPU 224XP的端口PORT1连接起来。当然,这个连接口可以随意组合,不过,根据不同的情况,可能会影响到程序的编制——如果同一台PLC的2个编程口的地址不同(要连接多个通信设备或不同的用途,就需要把2个通信口设置为不同的地址),那么就可能会影响到程序的编制。
二、PLC地址分配:
........编程软件TEP 7 MicroWIN分配的地址固定是0;程序中PLC的默认地址为2,这个我们要修改;因为该系统中没有其它设备,例如人机界面/触摸屏,这里就把CPU 226CN的PROT0口的地址设为1,把CPU 226CN的PROT1口的地址设为2,把CPU 224XP的PROT0口的地址设为3,把CPU 224XP的PROT1口的地址设为4。
........当然,每个PLC的2个端口可以设置为相同的地址,这样的好处是:当一个通信口坏掉时,可以插到另外一个通信口,而不用更改主站PLC的程序。
........把每个PLC的2个端口设置为不相同的地址,笔者认为这样做没有什么好处(如果你知道,请告诉笔者,多谢!),只有坏处:当一个通信口坏掉时,插到另外一个通信口,需要更改与这台PLC通信的主站PLC的程序。不过这个例子中笔者这样分配地址,是做个实验而已。
三、编程:
........针对上面的控制要求,从站CPU 224XP就不需要编程了,只需要把CPU 224XP的PROT0口的地址设为3,把CPU 224XP的PROT1口的地址设为4并下载系统块就可以了。这个步骤就不赘述了,地址设置方法请参阅对CPU 226CN的设置。
........下面是对主站CPU 226CN进行编程和系统块地址设置的步骤。该例中,采用PPI协议进行通信(比自由口通信要简单得多),而且采用指令向导来编程(比直接设置特殊存储器SMB、调用NETR和NETW指令要简单得多)。
........点“设置PG/PC接口”,选中“PC/PPI Cable(PPI)”,点“属性”,在“本地连接”中选择你的编程程电缆的类型——COM1、COM2或是USB;在PPI中勾选“高级PPI”——非西门子官方电缆就不要选了,即使选了也不支持。点击“确定”——“确定”。
........把编程电缆插到每个PLC,对每个PLC设置指定的地址和设置统一的波特率——如果电缆质量不好,非原装电缆,波特率设置不要过高。先点“通信”,然后双击“双击刷新”。搜索到PLC地址后,设置好当前PLC地址。然后修改系统块中的PLC端口,按照预设的地址进行修改。最后下载系统块,把PLC相应端口设置为预设的地址。这个操作比较简单,我就不在贴图赘述了。
........把编程电缆插回到D型9孔母头。点击“通信”,取消勾选“搜索所有波特率”,然后双击“双击刷新”:
把光标移动到要监控/下载的PLC上面。如果要编226CN主站,移到地址2,如上图。
点击“工具”——“指令向导”,选择“NETR/NETW”,点击“下一步”:
选择需要配置的操作数量(这个例子为1),点击“下一步”:
选择主站的通信口(本例为端口1),点击“下一步”:
选择读还是写(本例为读),选择读几个数据(本例读2个数据,IB0-IB1;对于226CN的输入,应当读3个数据,IB0-IB2,共24个输入),选择PLC的地址(本例为4):
说明:
如果您在配置NETR,指定以下内容:
- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。
- 从远程 PLC 读取数据的位置。有效操作数:VB、IB、QB、MB、LB。
如果您在配置 NETW,指定以下内容:
- 数据存储在本地 PLC 中的位置。有效操作数:VB、IB、QB、MB、LB。
- 向远程 PLC 写入数据的位置。有效操作数:VB、IB、QB、MB、LB。
点击“下一步”:
至此,向导完成。
然后在组程序中调用生成的加密子程序:
然后,下载该程序到PLC中即可。
然后监控程序,如果错误输出为1,那么是有问题的,表示通信不成功。如下图,M0.1的值为1:
只有错误输出为0,通信才是成功的(网络读写成功),如下图:
通信成功以后,重站PLC的输入就被读取到主站的VB存储器中了:
完整案例
你要告诉大家,你是什么PLC之间的通讯,S7-200与S7-200?S7-300与S7-300?还是S7-300与S7-200或者其它,不然,大家都不知道该怎么说才好。
直接用通信协议发送和接收信号。
智能网关IGT-DSER支持多点对多点的设置之间通讯,支持以太网,串口设备混合数据交换;无需编程开发,只须配置数据的起始地址和数量即可,支持热插拔,断电重启后自恢复运行,在实际的工程项目中应用方便。
下面是罗克韦尔(AB)的Compact系列的PLC与西门子S7-1500之间的通讯的配置,实现AB的标签数组与西门子DB数据块之间通讯。
首先在AB的PLC内建立输入和输出数组,用于接收和写入S7-1500的PLC数据,名称分别是IN_INT16、OUT_OUT16,输入80个字即160个字节,输出40个字即80个字节,类型都为INT,如下图,注意新建立的数组下载后重启PLC才会生效。
然后在西门子PLC内建立数据块_4和数据块_5两个DB,号码分别是DB101、DB102,DB101写入到AB的PLC,DB102接收AB的PLC数据,都需要取消优化访问,字节数据与AB的PLC对应,如下图,同样新建立的DB下载后重启PLC才会生效。
然后开始配置网关,通过网关的参数设置软件(下载地址)搜索到网关模块后,读取默认参数,在'功能'->‘类型与设备选择’页面的4种类型选择最下面一项,点'确认当前选择'按钮,切换为类型4,系统为IGT-CLI-MEX,即多设备数据交互模式,如下图,然后下载重启:
重启后设置网关模块的网口参数,AB PLC的IP地址为192.168.1.9,S7-1500的IP地址为192.1668.2.111,不在同一个网段,分别接入网关的两个网口。网口1的IP地址默认是192.168.1.244,网口2的IP地址是192.168.2.244,可以都用默认IP,网口1接AB的PLC,网口2接S7-1500。
通过‘功能’->‘PLC之间通讯配置’切换到数据配置页面,根据以上地址空间配置数据,配置好的数据表如下图:
上表中设备ID是每台PLC设备的号码,可在1~254之间自由分配;DB号码/文件号码参数里AB的PLC对应数组内的起始地址,支持多维数组,比如二维数据格式为0,0;起始地址参数里AB的PLC对应数组名称,或者变量名称,须要与PLC内的名称完全一致;字节数量设置交互的字节数据,只需设置目标设备的数量,上图中的160,2表示160个字节,PLC内存为2字节数据,如果PLC的数组数据类型是DINT,则设置为160,4;网络端口参数AB的是44818,S7的是102;更详细的参数介绍查看网关的手册第6章。
可以看到上图中消息栏有显示'所有条目通讯正常'的信息,表示网关状态是正常的,可以通过PLC的编程软件分别强制数据进行监视测试,先在DB101里面的前10个数据和最后10个数据分别设置上数据,然后通过RSLogix 5000监视,如下图:
可以看到数值都能对应上,然后同样的方法测试从AB的PLC到S7的数据,在OUT_INT16数组的前5个和最后5个设置上数据,然后通过博图软件监视,如下图:
可以看到数据已经实现了双向正常交互,更详细的资料可查看网关手册。