技术论坛

 回复:应用探讨——S7-200 PLC通信常遇到的问题

返回主题列表
作者 主题

奇侠

经验值:6044
发帖数:3917
精华帖:20
楼主    2011-05-10 12:57:50
主题:应用探讨——S7-200 PLC通信常遇到的问题
S7-200虽然是小型PLC,却可以支持很多的通信方式。每种通信方式都有自己的特点,比如支持的通信距离、通信站点数、波特率、组态方式、适用范围等;进行这些通信时经常会遇到一些问题,为了更好地应用这些通信,我们可以结合不同的通信方式进行探讨,例如:
1. modbus RTU通信常遇到的问题,比如:modbus功能码、库存储区分配、HMI设备通过modbus协议读取模拟量值;
2. USS通信特点,注意事项;
3. PPI通信有时会有延时,为什么?
4. S7-200能支持怎样的MPI通信,能用MPI方式与PPI主站的S7-200 PLC通信吗?
5. PROFIBUS DP通信主站和从站数据区对应问题;
6. CP243-1能直接跟其它厂家的设备进行以太网通信吗,怎样实现跟S7-300/1200通信?
7. S7-200其它通信注意事项。
提供“下载中心”参考文档如下:
A0136《西门子S7-200 LOGO! SITOP》
A0148《S7-200与S7-300之间的通讯(更新版)》
42122427《适用于工业以太网和信息技术的 CP 243-1 通信处理器》
1109582《S7-200系统手册》

活动奖励:
此次集中交流将持续至7月14日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。
对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选任一款奖品。
交流结束后也将专门整理重要内容,供广大网友分享参考。
预祝大家交流愉快,收获丰富!
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
4楼    2011-05-11 07:41:22
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
S7-200与S7-300的MPI通信
MPI(多点接口)是西门子内部使用的通信协议,物理层为RS-485。通过MPI网络的S7基本通信,S7-300可以用系统功能X_GET和X_PUT来读、写S7-200的存储区,最多可读、写76字节的数据,S7-200不需要编写通信程序。其优点是使用PLC自带的RS-485通信接口,不需要增加通信用的硬件,编程简单,容易实现。
1.通信参数的设置
用系统块设置CPU 224在MPI网络中的站地址为3。为了方便下载和监控,将S7-200、S7-300和计算机的通信速率均设置为19.2 kbit/s。需要将系统块下载到CPU,设置的参数才会起作用。
组态时将CPU 315-2DP连接到MPI网络上,设置MPI站地址为2。将设置的参数下载到CPU 315-2DP。
2.CPU 315-2DP读写CPU 224的V区的编程
在CPU 315-2DP的OB35中调用SFC 68“X_PUT”,将本站的DB 1的76字节数据发送到通信伙伴的DB 1的DBB100~DBB175,即CPU 224的VB100~VB175。调用SFC 67“X_GET”,读取CPU 224的VB200~VB275(即DB 1的DBB200~DBB275)中的数据,将它们存放到DB 2。执行OB35的时间间隔为默认的100ms。
下面是CPU 315-2DP的循环中断组织块OB35的程序:
程序段 1:将本站的DB1中的数据写入CPU 224的V区
CALL "X_PUT"
REQ :=TRUE
CONT :=TRUE
DEST_ID :=W#16#3 //S7-200的MPI地址
VAR_ADDR:=P#DB1.DBX100.0 BYTE 76 //S7-200要写入数据的VB100~VB175
SD :=P#DB1.DBX0.0 BYTE 76 //存放本站要发送的数据的地址区
RET_VAL :=MW2
BUSY :=M0.1
程序段 2:读取CPU 224的V区的数据,保存到本站的DB 2
CALL "X_GET"
REQ :=TRUE
CONT :=TRUE
DEST_ID :=W#16#3
VAR_ADDR:= P#DB1.DBX200.0 BYTE 76 //要读取S7-200的VB200~VB275
RET_VAL :=MW4
BUSY :=M0.3
RD := P#DB2.DBX0.0 BYTE 76 //保存读取的数据的地址区
为了验证通信是否实现,在初始化程序OB100将数据块DB 1的76字节数据发送区的字预置为W#16#3333,将DB 2的76字节数据接收区复位为0。
3.CPU 224的程序
为了验证通信是否实现,在CPU 224的OB1中,在第一个扫描周期将发送数据区VW204~VW274预置为16#2222,将接收数据区VW100~VW174清零。
LD SM0.1
FILL 16#2222, VW204, 38
FILL 16#0, VW100, 38
可以用CPU 315-2DP的变量表和CPU 224的状态表来监视参与通信的存储区。
我第1次做实验的时候,很顺利地一下就成功了。总的感觉是只要组态和编程没有问题,通信很容易实现。
追求完美
nnnn1234
至圣

经验值:22482
发帖数:4950
精华帖:57
8楼    2011-05-11 11:55:01
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
和硬件有关的通讯注意事项:
1)使用符合要求的硬件(电缆、插头),并按规范制作
2)保持通讯端口(驱动电路)之间的共模电压差在一定范围内
3)注意防止电磁干扰
PPI网络通讯需要注意事项:
   1)在一个PPI网络中,与一个从站通讯的主站的个数并没有限制,但是一个网络中主站的个数不能超过32个。主站既可以读写从站的数据,也可以读写主站的数据。也就是说,S7-200作为PPI主站时,仍然可以作为从站响应其他主站的数据请求。 一个主站CPU可以读写网络中任何其他CPU的数据。
   2)避免简单地定时激活NetR/NetW:由于串行通讯的特点(如上所述),无法得知何时真正结束。如果定时进行网络读写通讯,必须判断此次通讯是否正常结束
   3)同时有效的NetR/NetW指令不能超过8个,否则通讯请求队列会超出操作系统的管理能力
   4)使用SM0.0调用网络读写指令,虽然能长期工作,但不能超过8个指令,而且会出现监控时指令块变为红色的现象,最好还是加上必要的读写状态判断条件。
The darkness is no darkness with thee.
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
11楼    2011-05-11 12:13:34
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
通信的转换时间

PPI编程电缆从接收模式切换到发送模式时,需要一定的转换时间。转换时间与波特率有关(见系统手册的表7-11)。
如果在使用自由端口模式的系统中使用PPI电缆,下面的情况必须在用户程序中考虑电缆的转换时间:
(1) S7-200 CPU响应RS-232C设备发送给它的报文
在接收到RS-232C设备的请求报文后,S7-200 CPU发送响应报文的延迟时间必须大于等于电缆的转换时间。
(2) RS-232C设备响应S7-200 CPU发送给它的报文
在接收到RS-232C设备的响应报文后,S7-200 CPU发出下一次请求报文的延迟时间必须大于等于电缆的切换时间。
在两种情况下,延迟使PPI多主站电缆有足够的时间从发送模式切换到接收模式,使数据从RS-485口传到RS-232C口。
在自由口通信编程时,应在适当的时候启用定时中断,来保证收、发模式转换时提供足够的延时时间。
追求完美
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
30楼    2011-05-12 08:05:24
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
S7-200与MM440的USS通信
控制设备有两种地:
1)安全保护地(或称大地,电磁兼容性地),将设备的金属外壳连接到安全保护地,可以保证操作人员的安全。
2)信号地(电子设备的电位参考点,有人称为仪表地),下图中PLC和变频器的通信除了RS-485的A、B线外,还必须连接双方标有0V的端子,图中的0V点就是信号地。
所有节点的地(OV)必须连在一起,否则可能毁坏通信接口!!
信号地不能与设备的安全保护地相连,否则可能毁坏通信接口!!
我自己就有过烧坏通信口的惨痛教训。


长度大于2米的总线电缆的两端都应设置终端电阻。
使用modbus协议或USS协议之前,需要先安装S7-200的指令库。USS协议指令在指令树的“\指令\库”文件夹中。
下面是USS通信的程序:


指令USS_INIT的参数Mode为1,将端口分配给USS协议,参数Active共32位(第0~31位),每一位对应一台变频器。例如2#10的第1位为1,表示激活1号变频器。
USS_CTRL指令用于控制处于激活状态的变频器,每台变频器使用一条USS _CTRL指令。
Drive是变频器的站地址,实数Speed_SP是用满速的百分比表示的速度设定值。
RUN输入位用于控制变频器的运行和停止,OFF2为1时变频器按惯性滑行,直到停车。OFF3为1时变频器快速停车。方向位DIR用于设置变频器的运动方向。
Error是错误字节,Status是变频器返回的状态字的原始值,实数Speed是变频器返回的用满速百分比表示的变频器速度。
Run_EN用于指示变频器的运行/停止状态,D_Dir用于指示变频器的旋转方向,Inhibit用于指示变频器的禁止位的状态。Fault是故障位。
实验表明,可以用I0.0~I0.4来控制电动机的运行、减速停车、快速停车、故障确认和运行方向。Q0.0~Q0.4分别是变频器的确认信号、运行状态、旋转方向、禁止位的状态和故障位的状态。
追求完美
聚沙成洲
奇侠

经验值:7266
发帖数:1835
精华帖:22
40楼    2011-05-12 11:09:22
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
quote:以下是引用张小五在2011-05-11 16:33:54的发言:
MPI方式与PPI主站的S7-200 PLC通信
是可以通信的,MPI主要是S7-200的通信方式
PPI主要是S7-300/400的对外通信


你把MPI与PPI搞反了,《在西门子S7-200 LOGO! SITOP》是这样描述S7 200的MPI通信的:

MPI (Multipoint interface)是SIMATIC S7多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量PLC之间近距离通信。

通过PROFIBUS电缆和接头,将控制器S7-300或S7-400的CPU自带的MPI编程口及S7-200CPU 自带的PPI通信口相互连接,以及与上位机网卡的编程口(MPI/DP 口)通过PROFIBUS或MPI电缆连接即可实现。 网络中当然也可以不包括PC机而只包括PLC。

MPI的通信速率为19.2K~12Mbit/s ,但直接连接S7-200CPU通信口的MPI网,其最高速率通常为187.5Kbit/s (受S7-200CPU最高通信速率的限制)。

在MPI网络上最多可以有32个站,一个网段的最长通信距离为50米(通信波特率为187.5Kbit/s时),更长的通信距离可以通过RS-485中继器扩展。

MPI允许主-主通信和主-从通信,每个S7-200CPU通信口的连接数为4个。

MPI协议不能与一个作为PPI主站的S7-200CPU通信,即S7-300或S7-400与S7-200通信时必须保证这个S7-200 CPU不能再作PPI主站,Micro/WIN也不能通过MPI协议访问作为PPI主站的S7-200CPU。

S7-200CPU只能做MPI从站,即S7-200CPU之间不能通过MPI网络互相通信,只能通过PPI方式互相通信。





图1. 一个MPI网络例子

如上图STEP 7-Micro/WIN可以与S7-200CPU建立MPI主-从连接。硬件使用CP5611卡加上PROFIBUS或MPI电缆,S7-200 CPU通信口上要使用带编程口的网络连接器。S7-200CPU的通信口最低通信速率可设为19.2K,最高187.5K。

注:CP5613不能通过MPI方式与S7-200 CPU通信口进行编程通信。

S7-300和S7-400 CPU可以作为MPI主站用XGET(SFC67)和XPUT(SFC68)指令读取S7-200数据,S7-300的通信数据包最大为76个字节,S7-400的通信数据包最大为84个字节。S7200 CPU中不需要编写任何与通信有关的程序,只需要将要交换的数据整理到一个连续的V 存储区当中即可。

如果需要在主站中(如S7-300)如何配置S7200 CPU MPI从站的详细文档,可访问客户支持部网站上的“下载中心”网页,在“通信/网络"目录中下载《S7-200与S7-300之间的通信》。


xiangping
游士

经验值:230
发帖数:139
精华帖:2
45楼    2011-05-12 14:50:37
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
PPI通信
1、关于S7-200系列的通信PLC的地址的设置
在Step7中的通信——通信端口中设置为PLC的地址设置为2或3等下载入及计算机即可生效。
2、自由口通信和PPI通信
PPI通信PLC主机采用指令NETR和NETW指令,在主机中的数据存储格式按PPI数据存储格式存储,从机中数据没有按照数据格式进行存储。
从机不需要采用指令,在从机中数据的安排是直接将PPI通信中指定的地址的内容通过通信指令传送,指令NETW是将数据从主机传送到从机,NETR指令的作用是将远程的数据传送到主机。
EG:(PPI通信例程)
主机:
LD SM0.1
MOVB 16#0A, SMB30
FILL 0, VW100, 10
LD V100.7
MOVB VB107, QB0
LDN SM0.1
AN V100.6
AN V100.5
MOVB 3, VB101
MOVD &IB0, VD102
MOVB 1, VB106
NETR VB100, 0
LDN SM0.1
AN V110.6
AN V110.5
MOVB 3, VB111
MOVD &VB100, VD112
MOVB 1, VB116
MOVB IB0, VB117
NETW VB110, 0
从机:
LD SM0.0
MOVB VB100, QB1
这个程序中直接将主机的IB0数据存储到远程的VB100中,其中从机VB100存储的数据为主机中VB117的数据,即通信指令中的数据存储区的数据,由此可知从机数据存储没有按照PPI协议的数据格式存储。
注:
关键处理中是关于从机中数据存储空间的分配的问题。
九仙山人
奇侠

经验值:6421
发帖数:1347
精华帖:5
50楼    2011-05-12 16:58:01
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
通讯出错排查
遇到通讯问题,我们要有耐心,逐项排查各种影响因素,直到通讯成功,可以参考如下的步骤:
(1) 检查Step7-Micro/WIN与Windows操作系统是否完全兼容;
(2) 检查是否使用西门子的原装编程电缆,并区分新旧两种电缆;
(3) 检查电脑上的COM通讯口设置,记住把接收和发送缓冲区都设置为最小值,并保持选中“FIFO”选择框;
(4) 检查编程电缆的DIP开关设置,是否与Micro/WIN的通讯速率设置相同;对于普通编程电缆,搜索速率最高为19.2,因此如果CPU通讯口速率被设置为187.5K,则不能被找到。
(5) 检查CPU右下角的传感器直流电源输出电压(测量L+/M),电压应当高于22V
(6) 使用wipeout.exe程序,恢复CPU的出厂设置。缺省情况下CPU通讯口地址为2,通讯速率9.6K。这个程序可在STEP7-Micro/WIN的安装光盘中找到。
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
51楼    2011-05-13 06:34:01
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
不能安装EM277的GSD文件的原因与解决的办法
GSD (General Station Des cription,常规站说明)文件是可读的ASCII码文本文件,包括通用的和与设备有关的通信的技术规范。要实现S7-200和S7-300的DP通信,需要安装DP从站模块EM277的GSD文件。可以在下载中心搜索和下载GSD文件。
执行HW Config中的菜单命令“选项”→“安装GSD文件”,在出现的“安装GSD文件”对话框中,用最上面的选择框选中GSD文件“来自目录”或“来自项目”。点击“浏览”按钮,用出现的“浏览文件夹”对话框选中GSD文件或项目所在的文件夹,选中列表框中出现的GSD文件,点击“安装”按钮,开始安装。
安装GSD文件时,可能会出现一个对话框,报告“目前尚无法更新。在一个或多个STEP 7应用程序中将至少有一个GSD文件或类型文件正在被引用。”点击“确定”按钮,不能安装GSD文件。
这是因为当前打开的某个项目中包含DP从站,至少有一个GSD文件被引用。必须关闭所有已打开并引用了GSD文件的项目(包含DP从站的项目),只打开没有DP从站的项目,才能安装GSD文件。
安装好以后,可以在STEP 7的硬件组态工具HW Config右边的硬件目录窗口的文件夹\PROFUBUS DP\Additional Field Devices\PLC\SIMATIC中看到EM 277,将它拖拽到组态窗口的DP网络上就可以了。
追求完美
Automann
至圣

经验值:18299
发帖数:6168
精华帖:137
52楼    2011-05-13 08:09:25
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
modbus通信的基本知识和应用举例
modbus是美国的Modicon公司开发的一种报文传输协议,1979年该公司成为施耐德公司的一部分。modbus协议在工业控制中得到了广泛的应用,它已经成为一种通用的工业标准。
modbus协议是一个主-从协议,采用请求-响应方式。串行总线中只有一个主站,可以有1~247个从站。
modbus协议有ASCII和RTU(远程终端单元)这两种报文传输模式。ASCII模式每个8位字节都转换为两个ASCII字符发送。RTU模式的报文以字节为单位进行传输,报文最长为256字节。在同样的波特率下,传输效率比ASCII模式的高,不需要作ASCII码与二进制数之间的转换。
下面是modbus RTU通信帧的基本结构:
地址 功能码 数据1 …… 数据n CRC低字节 CRC高字节
从站地址为0~247,它和功能码均占一个字节,命令帧中PLC地址区的起始地址和CRC各占一个字,数据以字或字节为单位(与功能码有关),以字为单位时高字节在前,低字节在后。报文的最后两个字节是循环冗余校验码(CRC),CRC的高字节在前,低字节在后。
modbus包括多种功能,每一功能都有相应的功能代码。S7-200支持的modbus功能见S7-200的系统手册。
可以用计算机作modbus主站,S7-200作从站,计算机发送带有从站地址的请求报文,具有该地址的从站接收到后发出响应报文进行应答。
功能3用于读取单个或多个保持寄存器(V 存储区中的字)的内容,最多可以读120个字。下面是功能3的请求帧:
站地址 3 首字地址 字数 CRC
假设用功能3读取1号站中从VW20开始的两个字(VW20和VW22),VW20对应的modbus地址为000010,对应的十六进制数为16#000A,字数为16#0002,CRC为16#09E4,则请求帧为 01 03 00 0A 00 02 E4 09(十六进制数)。
响应帧的格式如下:
站地址 3 数据字节数 数据字1 …… 数据字n CRC
假设VW20和VW22的值分别为16#1234和16#ABCD,CRC为16#2000,响应帧为01 03 04 12 34 AB CD 00 20(十六进制数)。
追求完美
流年2
游士

经验值:193
发帖数:8
精华帖:1
54楼    2011-05-13 14:38:41
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
用过200与300的通讯,通过EM277挂在300的DP网络上。EM277中的byte、word是数据传输时数据一致性的问题,比如选用8byte和选用4Word有什么区别,选用byte,数据传输时已字节为单位传输,选用word时,数据传输以字为单位传输。如选用8byte in/8byte out 时,200中的VB0-VB7为300传给200的数据,对应300中的PIB0-PIB7;VB8-Vb15为200传给300的数据,对应300中PQB0-PQB7。若有多个EM277从站,则在组态时,要设置EM277的偏移地址。
8803
侠圣

经验值:2747
发帖数:564
精华帖:6
65楼    2011-05-18 02:48:33
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
quote:以下是引用Mr.M在2011-05-16 13:56:29的发言:
记得一次用串口通信调试软件modscan32 测试S7-200的modbus从站功能,通讯不上,下载的是西门子官方的modbus程序代码,不知道是何原因?大家再用的串口通信调试软件 是什么呀?各位老师可否分享下

我在一次调试时,由于库运行地址与程序中的数据区有冲突,一直通讯不上,最后我是先测试一个空程序,然后再逐渐添加所调试的程序,找出冲突的数据区,OK。调试软件也是modscan32。
调试模块是用研华的485-232模块。
应该注意一下:子程序参数HOLDSTAR和MAXHOLD指定的保持寄存器区,是在S7-200 CPU的V数据存储区中分配,此数据不能和库指令数据区有任何重叠,否则在运行中会产生严重错误,不能通信。
modbus中保持寄存器区按“字”寻址,MAXHOLD规定的是VW个数,不是VB个数。
例如:HOLDSTAR=VB0
MAXHOLD=1000
(1) 实际上这个通信缓冲区占用了VB0-VB1999共2000个字节。
(2) 库指令保留数据区至少从VB2000开始。
(3) 保持区不一定从VB0开始。
不耻下问
Touchech
新手

经验值:40
发帖数:13
精华帖:1
74楼    2011-05-26 15:45:57
精华帖  主题:回复:应用探讨——S7-200 PLC通信常遇到的问题
quote:个人认为s7-200的USS通讯抗干扰能力太差了.我都是按照MM440手册上说的接地和连线.(用西门子专用的DP线).距离只要超过60到70米.只要大功率的变频器一开.马上通讯出错.但是用modbus来做通讯.相对USS的抗干扰能力要好的多.同样的项目我采用S7-200和汇川的MD320做modbus通讯.一点问题都没有.也不清楚是什么原因.



USS通信时最后一个站的偏置电阻和终端电阻一定要有,确保通信线上的电平稳定,同时吸收网络上的反射信号。
变频器本身就是一个大干扰源,通信线质量和屏蔽层接地的情况直接影响到通讯的效果。
modbus和USS在S7-200中都是利用自由口的接收和发送指令编写的,本身都属于串口通信。
USS和modbus的抗干扰性的比较没有确定的结果。本身两个通信协议就不一样,USS协议是S7-200与西门子的变频器进行通信的一种协议,而且是适用于实时性要是不是非常严格的情况。
因为变频器不用,个人觉得进行比较不是很有说服力。
不管怎样跟变频器通信时一直注意干扰的问题。
来自西门子技术支持!
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。