S7200SMARTS7通信.docx
《S7200SMARTS7通信.docx》由会员分享,可在线阅读,更多相关《S7200SMARTS7通信.docx(29页珍藏版)》请在冰豆网上搜索。
S7200SMARTS7通信
一、S7-200SMARTCPU之间的以太网通信
S7-200SMARTCPU固件版本V2.0及以上版本的CPU可实现CPU、编程设备和HMI(触摸屏)之间的多种通信:
—CPU与编程设备之间的数据交换。
—CPU与HMI之间的数据交换。
—CPU与其他S7-200SMARTCPU之间的PUT/GET通信。
S7-200SMARTCPU以太网连接资源如下:
—1个连接用于与STEP7Micro/WinSMART软件的通信。
—8个连接用于CPU与HMI之间的通信。
—8个连接用于CPU与其他S7-200SMARTCPU之间的PUT/GET主动连接
—8个连接用于CPU与其他S7-200SMARTCPU之间的PUT/GET被动连接
PUT/GET指令格式
S7-200SMARTCPU提供了PUT/GET指令,用于S7-200SMARTCPU之间的以太网通信(PUT/GET指令格式见表1)。
PUT/GET指令只需要在主动建立连接的CPU中调用执行,被动建立连接的CPU不需要进行通信编程。
PUT/GET指令中TABLE参数用于定义远程CPU的IP地址、本地CPU和远程CPU的数据区域以及通信长度(TABLE参数定义见表2)。
表1PUT和GET指令:
LAD/FBD
STL
描述
PUTTABLE
PUT指令启动以太网端口上的通信操作,将数据写入远程设备。
PUT指令可向远程设备写入最多212个字节的数据。
GETTABLE
GET指令启动以太网端口上的通信操作,从远程设备获取数据。
GET指令可从远程设备读取最多222个字节的数据。
表2PUT和GET指令的TABLE参数定义:
字节偏移量
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0
D1
A2
E3
0
错误代码4
1
远程CPU的IP地址
2
3
4
5
预留(必须设置为0)
6
预留(必须设置为0)
7
指向远程CPU通信数据区域的地址指针
(允许数据区域包括:
I、Q、M、V)
8
9
10
11
通信数据长度5
12
指向本地CPU通信数据区域的地址指针
(允许数据区域包括:
I、Q、M、V)
13
14
15
1 D:
通信完成标志位,通信已经成功完成或者通信发生错误。
2 A:
通信已经激活标志位。
3 E:
通信发生错误,错误原因需要查询错误代码4。
4 错误代码:
见表3PUT和GET指令TABLE参数的错误代码。
5 通信数据长度:
需要访问远程CPU通信数据的字节个数,PUT指令可向远程设备写入最多212个字节的数据,GET指令可从远程设备读取最多222个字节的数据。
表3PUT和GET指令TABLE参数的错误代码:
错误代码
描述
0
通信无错误
1
PUT/GETTABLE参数表中存在非法参数:
∙本地CPU通信区域不包括I、Q、M或V。
∙本地CPU不足以提供请求的数据长度。
∙对于GET指令数据长度为零或大于222字节;对于PUT指令数据长度大于212字节。
∙远程CPU通信区域不包括I、Q、M或V。
∙远程CPU的IP地址是非法的(0.0.0.0)。
∙远程CPU的IP地址为广播地址或组播地址。
∙远程CPU的IP地址与本地CPU的IP地址相同
∙远程CPU的IP地址位于不同的子网。
2
同一时刻处于激活状态的PUT/GET指令过多(仅允许16个)
3
无可以连接资源,当前所有的连接都在处理未完成的数据请求(S7-200SAMRTCPU主动连接资源数为8个)。
4
从远程CPU返回的错误:
∙请求或发送的数据过多。
∙STOP模式下不允许对Q存储器执行写入操作。
∙存储区处于写保护状态
5
与远程CPU之间无可用连接:
∙远程CPU无可用的被动连接资源(S7-200SMARTCPU被动连接资源数为8个)。
∙与远程CPU之间的连接丢失(远程CPU断电或者物理断开)。
6-9
预留
通信资源数量
S7-200SMARTCPU以太网端口含有8个PUT/GET主动连接资源和8个PUT/GET被动连接资源。
例如:
CPU1调用PUT/GET指令与CPU2~CPU9建立8主动连接的同时,可以与CPU10~CPU17建立8被动连接(CPU10~CPU17调用PUT/GET指令),这样的话CPU1可以同时与16台CPU(CPU2~CPU17)建立连接。
关于主动连接资源和被动连接资源的详细解释如下:
1、主动连接资源和被动连接资源
∙调用PUT/GET指令的CPU占用主动连接资源数;相应的远程CPU占用被动连接资源。
2、8个PUT/GET主动连接资源
∙S7-200SMARTCPU程序中可以包含远多于8个PUT/GET指令的调用,但是在同一时刻最多只能激活8个PUT/GET连接资源。
∙同一时刻对同一个远程CPU的多个PUT/GET指令的调用,只会占用本地CPU的一个主动连接资源和远程CPU的一个被动连接资源。
本地CPU与远程CPU之间只会建立一条连接通道,同一时刻触发的多个PUT/GET指令将会在这条连接通道上顺序执行。
∙同一时刻最多能对8个不同IP地址的远程CPU进行PUT/GET指令的调用,第9个远程CPU的PUT/GET指令调用将报错,无可用连接资源。
已经成功建立的连接将被保持,直到远程CPU断电或者物理断开。
3、8个PUT/GET被动连接资源
∙S7-200SMARTCPU调用PUT/GET指令,执行主动连接的同时也可以被动地被其他远程CPU进行通信读写。
∙S7-200SMART最多可以与被8个不同IP地址的远程CPU进行建立被动连接。
已经成功建立的连接将被保持,直到远程CPU断电或者物理断开。
指令编程举例
在下面的例子中,CPU1为主动端,其IP地址为192.168.2.100,调用PUT/GET指令;CPU2为被动端,其IP地址为192.168.2.101,不需调用PUT/GET指令,网络配置见图1。
通信任务是把CPU1的实时时钟信息写入CPU2中,把CPU2中的实时时钟信息读写到CPU1中。
图1CPU通信网络配置图
1、CPU1主动端编程
CPU1主程序中包含读取CPU实时时钟、初始化PUT/GET指令的TABLE参数表、调用PUT指令和GET指令等。
网络1:
读取CPU1实时时钟,存储到VB100~VB107。
图2读取CPU1实时时钟
注:
READ_RTC指令用于读取CPU实时时钟指令,并将其存储到从字节地址T开始的8字节时间缓冲区中,数据格式为BCD码。
网络2:
定义PUT指令TABLE参数表,用于将CPU1的VB100~VB107传输到远程CPU2的VB0~VB7。
图3定义PUT指令TABLE参数表
∙a.定义通信状态字节
∙b.定义CPU2IP地址
∙c.定义CPU2的通信区域,从VB0地址开始
∙d.定义通信数据长度
∙e.定义CPU1的通信区域,从VB100地址开始
网络3:
定义GET指令TABLE参数表,用于将远程CPU2的VB100~VB107读取到CPU1的VB0~VB7。
图4定义GET指令TABLE参数表
∙a.定义通信状态字节
∙b.定义CPU2IP地址
∙c.定义CPU2的通信区域,从VB100地址开始
∙d.定义通信数据长度
∙e.定义CPU1的通信区域,从VB0地址开始
网络4:
调用PUT指令和GET指令。
图5调用PUT指令和GET指令
2、CPU2被动端编程
CPU2的主程序只需包含一条语句用于读取CPU2的实时时钟,并存储到VB100~VB107,如图6所示。
图6读取CPU2实时时钟
PUT/GET例程
为了更好地理解PUT/GET指令的编程,可参考下面的例程。
PUT_GET_CPU1.smart
PUT_GET_CPU2.smart
注意:
此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。
使用该软件的风险完全由用户自行承担。
由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
二:
S7-200SMARTCPUPUT/GET向导
在 S7-200SMARTCPU之间以太网通信 章节中CPU1的PUT/GET指令的编程可以使用PUT/GET向导以简化编程步骤。
该向导最多允许组态16项独立PUT/GET操作,并生成代码块来协调这些操作。
PUT/GET向导编程步骤
1、STEP7Micro/WINSMART在“工具”菜单的“向导”区域单击“Get/Put”按钮,启动PUT/GET向导(见图1)。
图1启动PUT/GET向导
2、在弹出的“Get/Put”向导界面中添加操作步骤名称并添加注释(见图2)。
图2添加PUT/GET操作
∙a.点击“添加”按钮,添加PUT/GET操作
∙b.为每个操作创建名称并添加注释
3、定义PUT/GET操作(见图3、图4)。
图3定义PUT操作
∙a.选择操作类型,PUT或GET
∙b.通信数据长度
∙c.定义远程CPU的IP地址
∙d.本地CPU的通信区域和起始地址
∙e.远程CPU的通信区域和起始地址
图4定义GET操作
∙a.选择操作类型,PUT或GET
∙b.通信数据长度
∙c.定义远程CPU的IP地址
∙d.本地CPU的通信区域和起始地址
∙e.远程CPU的通信区域和起始地址
4、定义PUT/GET向导存储器地址分配(见图5)。
图5分配存储器地址
注:
点击“建议”按钮向导会自动分配存储器地址。
需要确保程序中已经占用的地址、PUT/GET向导中使用的通信区域与不能存储器分配的地址重复,否则将导致程序不能正常工作。
5、在图5中点击“生成”按钮将自动生成网络读写指令以及符号表。
只需用在主程序中调用向导所生成的网络读写指令即可(见图6)。
图6主程序中调用向导生成的网络读写指令
PUT/GET向导例程
为了更好地理解PUT/GET指令的编程,可参考下面的例程。
PUT_GET_CPU1.smart
PUT_GET_CPU2.smart
注意:
此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。
使用该软件的风险完全由用户自行承担。
由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。
常见问题
1、S7-200SMARTCPU以太网通信端口支持哪些通信协议,是否支持TCP、UDP和ISOonTCP等开放式用户通信或ModbusTCP通信?
S7-200SMARTCPU以太网通信端口从V2.2固件支持TCP、UDP和ISOonTCP等开放式用户通信及ModbusTCP通信。
2、S7-200SMARTCPU标准型和紧凑型产品是否都支持GET/PUT通信?
S7-200SMARTCPU全系列产品都支持GET/PUT通信。
但是固件版本低于V2.0的产品不支持GET/PUT通信,CPU固件可以通过MicroSD卡进行升级。
3、S7-200SMARTCPU在同一时刻能否对同一个远程CPU调用多于8个GET/PUT指令?
同一时刻对同一个远程CPU可以调用多于8个GET/PUT指令。
同一时刻对同一个远程CPU调用多个GET/PUT指令只会占用1个GET/PUT主动连接资源,而不是8个主动连接资源。
4、为什么有些第三方触摸屏不能与STEP7-Micro/WINSMART软件同时访问S7-200SMARTCPU?
虽然S7-200SMARTCPU以太网端口具有25个连接资源,但是其中只有1个连接资源(PG连接资源)用于与STEP7-Micro/WINSMART软件的通信。
如果第三方触摸屏与S7-200SMARTCPU的连接也使用PG连接资源,就会造成第三方触摸屏不能与STEP7-Micro/WINSMART软件同时访问S7-200SMARTCPU。
5、GET/PUT指令可以传送的最大用户数据是多少?
GET指令可从远程站点读取最大222个字节的用户数据,PUT指令可向远程站点写入最大212个字节的用户数据;大数据量的用户数据通信可以调用多个GET/PUT指令来实现。
采用GET/PUT向导时每个操作的读写用户数据的最大个数为200个字节。
6、GET/PUT通信错误有哪些可能原因?
GET/PUT指令TABLE参数表的第一个字节提供了“错误代码”,用于排查错误原因。
GET/PUT指令故障可能原因:
●S7-200SMARTCPU固件版本较低,通信双方CPU固件都需要V2.0及以上版本。
●超出了本地CPU主动连接资源限制或远程CPU无可用的被动连接资源。
●GET/PUT指令TABLE参数定义错误。
●通信站点之间的物理连接出错。
二:
S7-200SMARTCPU与S7-300/400以太网接口进行S7通信
S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。
经过测试发现S7-300/400通过集成的PN口或CP343-1/CP443-1与S7-200SMARTPLC之间的S7通信也是可以成功的,但是需要S7-300/400侧编程调用PUT/GET指令。
注意:
1.S7-200SMARTCPU与S7-300/400CPU之间的S7通信未经西门子官方测试,本文档仅供客户测试使用,使用该种通信方式所产生的任何危险需要有客户自己承担!
2.S7-200SMARTPLCV2.0版本才开始支持PUT/GET通信,V1.0版本的CPU需要升级固件后方可支持PUT/GET。
3.S7-300/400若采用CP通信时,则需要采用Standard或Advanced类型通信模块,CP343-1Lean模块不支持。
4.本文仅介绍S7-300集成PN口与S7-200SMARTCPUS7通信。
S7通信介绍
S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。
S7-300/400通过以太网接口与S7-200SMARTPLC之间的S7通讯经过测试是可以成功的,但是需要S7-300/400侧编程调用PUT/GET指令,见表1所示。
表1PUT和GET:
S7-400
S7-300
描述
简要描述
SFB14
FB14
读数据
单边编程读访问。
SFB15
FB15
写数据
单边编程写访问。
S7-300/400根据使用通信接口(集成的PN口或CP343-1/CP443-1)不同,调用的功能块来源也不同。
通信接口为S7-300集成PN接口时,需要使用StandardLibrary中PUT/GET指令,如图1所示。
图1S7-300PN接口需采用StandardLibrary
通信接口为S7-300CP通信模块时,需要使用SIMATIC_NET_CP库中PUT/GET指令,如图2所示。
图2S7-300CP模块接口需采用SIMATIC_NET_CP库
S7-400CPU不区分通信接口,需要使用SystemFunctionBlocks中的SFB14/SFB15指令块,如图3所示。
图3S7-400需采用SFB程序块
硬件及网络组态
本文以采用1个315-2PN/DP,1个S7-200SMARTPLC为例,介绍它们之间的S7通信。
在STEP7中创建一个新项目,项目名称为S7-300-SMART。
插入1个S7-300站,在硬件组态中插入CPU315-2PN/DP。
如图4所示。
图4STEP7项目中插入S7-300站点
设置CPU315-2PN/DP的IP地址:
192.168.0.1,如图5所示。
硬件组态完成后,即可下载该组态。
图5设置CPUPNIP地址
打开“NetPro”设置网络参数,选中CPU315-2PN/DP,在连接列表中建立新的连接。
步骤如图6所示。
图6NetPro组态视图中插入新连接
选择Unspecified 站点,选择通讯协议S7connection,点击Apply,如图7所示。
图7组态新连接
在弹出的S7connection属性对话框中,勾选Establishanactiveconnection,设置Partneraddress:
192.168.0.2(S7-200SMARTPLCIP地址),如图8所示。
图8设置S7连接参数
点击"AddressDetails",再弹出来的对话框设置Partner的Slot为1,如图9所示。
点击OK即可关闭该对话框。
图9设置“addressdetails”参数
网络组态创建完成后,需要编译,如图10所示。
图10保存并编译连接
网络组态编译无错,鼠标先点击CPU315-2PN/DP,然后点击下载按钮下载网络组态,步骤如图11所示。
图11下载组态连接
程序编程
可以通过SFB/FB14"GET",从远程CPU中读取数据。
S7-300:
在REQ的上升沿处读取数据。
在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。
在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。
S7-400:
在控制输入REQ的上升沿处启动SFB。
在此过程中,将要读取的区域的相关指针(ADDR_i)发送到伙伴CPU。
远程伙伴返回此数据。
在下一个SFB/FB调用处,已接收的数据被复制到组态的接收区(RD_i)中。
必须要确保通过参数ADDR_i和RD_i定义的区域在长度和数据类型方面要相互匹配。
通过状态参数NDR数值为1来指示此作业已完成。
只有在前一个作业已经完成之后,才能重新激活读作业。
远程CPU可以处于RUN或STOP工作状态。
如果正在读取数据时发生访问故障,或如果数据类型检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
通过使用SFB/FB15"PUT",可以将数据写入到远程CPU。
S7-300:
在REQ的上升沿处发送数据。
在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。
在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。
S7-400:
在控制输入REQ的上升沿处启动SFB。
在此过程中,将指向要写入数据的区域(ADDR_i)的指针和数据(SD_i)发送到伙伴CPU。
远程伙伴将所需要的数据保存在随数据一起提供的地址下面,并返回一个执行确认。
必须要确保通过参数ADDR_i和SD_i定义的区域在编号、长度和数据类型方面相互匹配。
如果没有产生任何错误,则在下一个SFB/FB调用时,通过状态参数DONE来指示,其数值为1。
只有在最后一个作业完成之后,才能再次激活写作业。
远程CPU可以处于RUN或STOP模式。
如果正在写入数据时发生访问故障,或如果执行检查过程中出错,则出错和警告信息将通过ERROR和STATUS输出表示。
打开SIMATIC315PN-1的OB1,在OB1中依次调用FB14,FB15如图12、图13所示:
图12FB14调用
表2.FB14参数说明:
参数
描述
数据类型
存储区
描述
REQ
INPUT
BOOL
I、Q、M、D、L
上升沿触发调用功能块
ID
INPUT
WORD
M、D、常数
地址参数ID
NDR
OUTPUT
BOOL
I、Q、M、D、L
为1时,接收数据成功
ERROR
OUTPUT
BOOL
I、Q、M、D、L
接收到新数据
STATUS
OUTPUT
WORD
I、Q、M、D、L
故障代码
S7-300:
ADDR_1
S7-400:
ADDR_i
(1≤i≤4)
IN_OUT
ANY
M、D、I、Q、M、D、
T、C
从S7-200SMART的数据地址中读取数据;V区数据对应DB1。
S7-300:
RD_1
S7-400:
RD_i
(1≤i≤4)
IN_OUT
ANY
S7-300:
M、D
S7-400I、Q、 M、D、T、C
本站接收数据地址
图13FB15调用
表3.FB15参数说明:
参数
描述
数据类型
存储区
描述
REQ
INPUT
BOOL
I、Q、M、D、L
上升沿触发调用功能块
ID
INPUT
WORD
M、D、常数
地址参数
DONE
OUTPUT
BOOL
I、Q、M、D、L
为1时,发送完成
ERROR
OUTPUT
BOOL
I、Q、M、D、L
为1时,有故障发生
STATUS
OUTPUT
WORD
I、Q、M、D、L
故障代码
S7-300:
ADDR_1
S7-400:
ADDR_i
(1≤i≤4)
IN_OUT
ANY
M、D、I、Q、M、D、T、C
从S7-200SMART的数据地址中读取数据;V区数据对应DB1。
S7-300:
SD_1
S7-400:
SD_i
(1≤i≤4)
IN_OUT
ANY
S7-300:
M、D
S7-400I、Q、M、D、T、C
本站发送数据地址
注意:
S7-200SMARTPLC不需要编程。
S7-200SMART中的V存储区在S7-300/400PLC编程中以DB1数据块的形式体现。
三:
S7-200SMARTCPU与S7-1200进行S7通信