产品:siemens/西门子
产品规格:全新原装
产品:保证
产品价格:价格优势
公司大量现货!!!
【同样的价格、同样的、给您不一样的服务】
重庆暑鸿自动化设备有限公司(西门子集成商)销售西门子S7-200/300/400/1200PLC、数控、变频器、人机界面、屏、伺服、电机、西门子电缆等,并可提供西门子服务,欢迎来电垂询
地址:重庆市渝北区财富大道2号12-4
概述
S7-1200 与 S7-300 之间的以太网通信比较多,可以采用ISO on TCP、TCP和 S7 的进行通信。在S7-1200 CPU 中采用ISO on TCP和TCP这两种协议进行通信所使用的指令是相同的,都使用 T-block ( TSEND_C, TRCV_C, TCON, SCON, TSEN, TRCV ) 指令编程。S7-300 CPU一侧如果使用的是CPU集成的PN接口,连接不在STEP7的NetPro中建立连接,而是使用西门子提供的OPEN IE 的来实现。
本文主要介绍了如何实现在S7-1200 和S7-300 CPU集成PN口之间的ISO on TCP通信,包括通信的基本步骤、配置及编程等内容。具体的实现有多种,比如在S7-1200中可以使用不带连接的通信指令(TCON, SCON, TSEN, TRCV),也可以使用带连接的通信指令(TSEND_C, TRCV_C);在S7-300中可以采用功能块编程的来实现,也可以使用Open Communication Wizard工具(OPEN IE向导)的来建立OPEN IE的通信。
为了方便理解,本文在S7-1200中使用不带连接的通信指令TCON, SCON, TSEN, TRCV,在S7-300侧通过功能块编程的来实现。
关于S7-1200和S7-300 OPEN IE通信的文档可以登录西门子自动化与驱动集团网站的下载中心,网址:http://www.ad.siemens.com.cn/download/ ,根据如表1提供的文档编号搜索并下载相关文档。
文档编号 | 中文标题 |
A0426 | 西门子 S7-1200 PLC 技术参考Version 1.5 |
A0416 | S7-1200与S7-300 的以太网TCP 及ISO on TCP通信 |
A0421 | 如何实现两个S7-1200 CPU之间的以太网通信 |
A0415 | 通过S7协议实现S7-1200 与S7-300的通信 |
A0414 | S7-1200基本以太网通信使用指南 |
A0284 | 使用西门子PLC集成的PN口实现S5 兼容通信使用入门 |
A0345 | 使用 Open Communication Wizard 建立开放式 ISO on TCP 通信 |
A0346 | 使用 Open Communication Wizard 建立开放式 UDP 通信 |
A0347 | 使用 Open Communication Wizard 建立开放式 TCP 通信 |
A0344 | S7-300和S7-400集成PN口的S7通信 |
A0334 | PN CPU/CP的开放式通讯-Open IE |
表1 下载中心文档列表
2 软硬件及所要完成的通信任务
2.1硬件设备
实验的硬件设备:
1、S7-1200 CPU,CPU1212 AC/DC/RLY(6ES7 212-1BD30-0XB0)
2、S7-300 PN CPU,CPU317-2PN/DP(6ES7 317-2EH13-0AB0 V2.6.7)
3、PC机(带以太网卡)
4、SCALANCE X216交换机,S7-1200、S7-300和PC通过交换机互连起来
5、TP以太网电缆
2.2
1、STEP7 Basic V10.5 SP2
2、STEP7 V5.4 SP5
3、通信所需的功能块,请参见附件提供的例程 ”Sample_1 ( 50 KB ) ” 或参考下载中心文档:《A0284 使用西门子PLC集成的PN口实现S5 兼容通信使用入门》提供的程序。下载链接:80490650
2.3 所要完成的通信任务
本例中所要完成的通信任务定义为:
1、 将S7-1200的发送数据块DB3里的8个字节数据发送到S7-300的DB3中。
2、 将S7-300 DB3里接收到的8个字节数据再发送到S7-1200的接收数据块DB4中。
3 S7-1200 CPU的组态编程
3.1创建新项目
1、打开STEP 7 Basic 并新建项目
在STEP 7 Basic 的 “Portal View”中选择“Create new project”创建一个新项目,项目名称为“GS_ISO”。
2、添加硬件并命名PLC
然后 “Project view”,在“Project tree” 下双击 “Add new device”,在对话框中选择所使用的S7-1200 CPU(6ES7 212-1BD30-0XB0)添加到机架上,设备名为 PLC_1,如图1所示。
图1 添加新的PLC站
为了编程方便,我们使用 CPU 属性中定义的时钟位,定义如下:
在“Project tree> PLC_1 > Device configuration” 中,选中 CPU ,然后在下面的属性窗,“Properties > System and clock memory” 下,将位定义在MB1,时钟位定义在MB0,如图2所示。程序中我们主要使用 M0.3,它是以2Hz 的速率在0和1之间切换的一个位,可以使用它去自动发送任务。
图2 和时钟存储器
3、为 S7-1200 CPU的PROFINET 通信口分配以太网地址
在 “Device View”中 CPU 上代表PROFINET 通信口的绿色小方块,在下方会出现PROFINET 接口的属性,在 “Ethernet addresses”下分配IP 地址为 192.168.0.2 ,子网掩码为255.255.255.0,如图3所示。
图3为 S7-1200 CPU的PROFINET 接口分配IP地址
3.2调用并配置通信指令
1、在 PLC_1 的 OB1 中调用 “TCON”通信指令
“Project tree > PLC_1 > Program blocks > OB1” 主程序中,从右侧窗口 “Instructions > Extended Instructions > Communications” 下调用 “TCON” 指令,并选择 “Single Instance” 生成背景 DB块,如图4所示。
图4 调用TCON指令
2、定义PLC_1 的 “TCON” 连接参数
PLC_1 的 TCON 指令的连接参数需要在指令下方的属性窗口“Properties > Configuration > Connection parameter”中设置,如图5所示。连接参数说明:
End point
:选择通信伙伴,这里选择“unspecified”
Address
:通信伙伴S7-300站的IP地址“192.168.0.3”
Connection type
:选择通信协议为ISO on TCP
Connection ID
:连接的地址 ID 号,这个 ID 号在后面的编程里会用到
Connection data
:创建连接时,会自动生成本地的连接 DB 块,所有的连 接数据都会存在这个 DB 块中。
:选择本地 PLC_1作为连接,S7-300 CPU作为被动连接
Address details
:设定 TSAP 地址这里本地设置成“PLC_1”, TSAP ID自动为“50.4C.43.5F.31”,伙伴方设置成不设置TSAP(ASCII),设置TSAP ID 为“E0.02.50.4C.43.5F.31”。
图5 “TCON” 指令的连接参数
3、分配 “TCON” 的块参数
在指令下方的属性窗口“Properties > Configuration > block parameter”中设置,可以根据需要自己为“TCON” 块相应的输入输出参数。好参数的块,如图6所示。其中M8.0作为启动连接的触发位,连接ID = 1与连接参数里面的设置相同。
图6 “TCON” 的块参数
4、在 PLC_1 的 OB1 中调用 “TSEND” 发送通信指令
首先创建一个发送数据块,通过 “Project tree > PLC_1 > Program blocks > Add new block”,选择 “Data block” 创建 DB 块,选择寻址,“OK”键,如图7所示。
图7 创建一个发送数据块DB3
打开创建的发送数据块,在数据块中定义发送数据区为 8个字节的数组,如图8所示。
图8 创建发送数据区
然后在OB1 中调用“TSEND”发送通信指令,并为“TSEND”参数。使用M0.3( 2Hz 的时钟脉冲)上升沿发送任务,发送数据区为P# DB3.DBX0.0 BYTE 8,连接 ID = 1与连接参数里面的设置相同,发送长度LEN=8。分配好参数的“TSEND”块如图9所示。
图9 调用“TSEND”发送通信块
5、在 PLC_1 的 OB1 中调用“TRCV”接收通信指令
同样,先创建一个接收数据块DB4 ,如图10所示。“TRCV”接收通信指令的调用与“TSEND” 发送通信指令的调用相同,M8.1作为接收指令的使能位,如图11所示。
图10创建接收数据区
图11 调用“TRCV”接收通信块
6、在 PLC_1 的 OB1 中调用 “SCON”通信指令
后,为了断开通信链接,我们需要调用“SCON”通信指令,如图12所示。
图12 调用“SCON”通信块
3.3下载程序
至此,S7-1200侧的组态和编程都已经完成,可以在项目编译无错误后,直接下载到S7-1200 CPU中,并启动CPU的运行。
4 S7-300 CPU的组态编程
S7-300带PN接口的CPU支持ISO on TCP通信功能,通过该集成以太网接口组态ISO on TCP通信时,只能使用开放式通信的功能块,这些的功能块可以在STEP7 “ 通讯块”的 “库 ”中找到,如图13所示。
图13 S7-300 CPU通信指令库
库中提供了下列通信功能块:
′> FB 65 "TCON",用于建立连接,连接时需要UDT65来提供参数
> FB 66 "SCON",用于终止连接
> FB 63 "TSEND",用于发送数据到S7站点、S5站点、PC站或者第三方设备
> FB 64 "TRCV" 用于从S7站点、S5站点、PC站或者第三方设备接收数据
要通过CPU 的 集成PN 接口实现开放的ISO on TCP通信,不能在Netpro网络组态中直接建立连接,必须通序每个连接的参数。用于通信的FB功能块,请参见附件提供的例程 ”Sample_1 ( 50 KB ) ” 或参考下载中心文档《A0284 使用西门子PLC集成的PN口实现S5 兼容通信使用入门》提供的例程。下载链接:80490650
从附件提供的例程 ”Sample_1 ( 50 KB ) ” 中将把需要的程序块拷贝到新建的项目中,包括:
> UDT 65 "TCON_PAR",存放用户通信参数
> FB420 "SET_ISO_ENDPOINT" ,用于修改UDT65内通信对象参数
> FC21, 被FB420调用
随后,使用通信功能块 FB65 "TCON"、FB66 "SCON"、FB63 "TSEND" 和 FB64 "TRCV" 完成程序的编写。
4.1创建新项目
1、打开STEP7,新建一个项目
2、在项目中一个SIMATIC 300的站
3、组态硬件,一个CPU317-2PN/DP的CPU,并为PN接口分配IP地址“192.168.0.3”,如图14所示。同时,在CPU的“Cycle/Clock Memory”属性页中MB0为时钟存储器,在程序中可以使用M0.3(2Hz 的时钟脉冲)去自动发送任务,如图15所示。
图14为PN接口分配IP地址
图15设置时钟存储器字节
4.2编写通信程序
1、从样例程序中拷贝通信所需的块
从附件提供的sample_1 ( 50 KB ) 例程中把需要的FB420、FC21与UDT65程序块拷贝到新创建的项目中,如图16所示。
图 16
2、生成数据块
在程序中创建一个DB块,块号不限(本例为DB101),在块中建立变量DB_VAR,类型为UDT65,如图17所示。
图17
3、生成并调用FB块
首先生成一个FB块(本例为FB400),在FB400静态变量区建立一个结构“T_TSAP“,包含如下变量,并为变量分配初始值,如图18所示。
1) LOC_RACK_SLOT (BYTE)= B#16#2 表示有两个前导字符 0xE0 (CPU31x-2PN/DP 或者 CPU319-N/DP规定)和 0x02(CPU槽号)
2) LOC_TSAP(STRING14)= 本地用户定义的ASCII字符'PLC_1' (注意要与S7-1200侧设置保持一致)。
3) REM_RACK_SLOT(BYTE)= B#16#0 不使用两个前导符。
4) REM_TSAP (STRING16)= 远程用户定义的ASCII字符'PLC_1' (注意要与S7-1200侧设置保持一致)。
图18
然后在生成的FB400中调用FB420,如图19所示。
图19
其中参数的含义如下:
1)ID: 连接ID,与S7-1200里的设置保持一致
2)DEV_ID:用于本PLC型号(注意不是通信)
DEV_ID = B#16#1本PLC型号为 IM151-8 PN/DP CPU
DEV_ID = B#16#2本PLC型号为CPU31x-2PN/DP或IM154-8 CPU
DEV_ID = B#16#3本PLC型号为CPU319-N/DP
DEV_ID = B#16#5本PLC型号为CPU41x-N/DP
3)ACTIVE: 或是被动建立连接,通信双方必须一个,一个被动,本例中S7-300侧为被动方。
4)T_TSAP: 静态变量区的结构变量,用于ISO ON TCP 通信的TSAP地址
5)IP_ADDR1 ... IP_ADDR4: 通信伙伴的IP地址,即S7-1200的IP地址192.168.0.2
6)CON_DB: 用UDT65生成的变量,即DB1014、在OB1中调用发送和接收功能块
在OB1中先调用FB400功能块,为其背景数据块DB400,如图20所示。
图20
然后再在OB1中依次调用通信功能块FB65、FB64、FB63、FB66。其中发送和接收功能块FB64、FB63的数据区都为DB3,建立DB3如图21所示。关于块的使用请参考STEP7的在线帮助或相关文档说明。
图21
FB65 “TCON”,建立连接功能块,如图22所示。通过输入参数 "REQ"一个上升沿来建立连接。 “ID” 为连接ID,“CONNECT” 参数填写用 UDT65 生成的变量, 连接建立后会一直保持,直到调用FB66 "SCON" 断开连接、CPU停止或者断电。其中CONNECT为通过UDT65生成的DB块,即DB101, ID = 1。通过M8.0启业,执行连接的建立。
图22
FB64 “TRCV”,接收功能块,如图23所示。"TRECV" EN_R始终为TRUE, ID 填写连接ID,”DATA” 填写接收数据区,输出参数 "NDR" 用于表示新的数据已经收到,输出参数 "LEN" 表示接收的数据长度。本例中连接ID = 1。DB3作为接收数据块,接收数据的字节长度为8,接收作业通过M8.1使能。
图23
FB63 “TSEND”,发送功能块,如图24所示。连接ID = 1。DB3为发送数据块,发送字节长度为8,发送作业通过M0.3触发。"TSEND" 发送请求依靠输入参数"REQ"的上升沿来实现,如果“BUSY”位为true时不要触发"REQ"。输出参数 "DONE", "ERROR" 和 "STATUS" 用于评估工作的情况。
图24
FB66 “SCON”,取消连接功能块,如图25所示。可以根据需要取消ID=W#16#1的连接,作业通过M8.2使能。
图25
4.3下载程序
S7-300侧的组态和编程都完成后,直接下载到S7-300 CPU中,并启动CPU的运行。
5 监控通信结果
对S7-1200和S7-300都组态和编程后,下载所有组态及程序并搭建好网络后,首先在在S7-1200中将M8.0置位为1,然后再在S7-300中将M8.0置位为1,两个站的“TCON” 被,建立两个站之间的ISO on TCP连接。
连接正常建立后,即可以进行数据的交换。在S7-1200和S7-300站中将 ”TRCV” 功能块的EN_R置位为1,使能接收,监控通信结果如图26所示。
通过监控结果可以看到,S7-1200中发送数据块DB3的8个字节数据被发送到S7-300站的DB3中,同时,S7-300的DB3中接收到的数据又被发送到S7-1200的接收数据块DB4中。
图26 在线监控通信结果
描述
对于 SIMATIC S7-1200,从 CPU V2.0固件开始,STEP 7 (TIA-Portal) 提供 T_CONFIG 指令可以通过编程控制 CPU 集成 PROFINET 接口的配置。
图. 01
可以设置如下接口配置:
配置数据存储在 "Conf_Data" 结构体数据类型中。
图. 02
以PLC数据类型创建 "Conf_Data" 结构体数据类型。
它包含的数据类型:
说明
正确使用 T_CONFIG 指令需要注意以下几点:
序号. | 步骤 |
1 |
CPU 属性中,在 "Ethernet address" 下,选择想修改的设置: 下列设置可以被改变:
必须选择"... using a different method".
|
2 |
此外,地址数据结构 IF_CONF_v4 或 PROFINET 设备名数据结构 IF_CONF_NOS 中的参数 "Mode" 必须为值 1 (= 配置数据有效)。 取决于是否只修改接口地址还是也要修改PROFINET 设备名,必须设置 header 数据类型 IF_CONF_Header 中的 "SubfieldCount" 参数值为 "1" 或 "2" (= 结构体中的所有子域) (见图. 02). |
3 |
对数据类型 IP_V4 ,以 "Array of Bytes" 输入每一个要修改的地址。
|
4 |
以 "Array of Bytes" 一个字符一个字符的传送要修改的 PROFINET 名到 NOS 参数。 要遵从PROFINET名字的命名规则(如, 多240个小写字符、数字、连字号、句号). PROFINET 名可以短于 240 字节但必须大于 2 字节。 必须根据 "PROFINET 名字长度 + 6"来修改 "Length" 变量。
|
表 01
提示
告
本条目描述的功能和解决方案主要限于实现自动化任务。此外,如果该与工厂其它部分或整个互联网有连接,请注意必须采取适当的 措施以遵循相应的工业。更多信息参见条目ID: 50203404.
下载
学 T_CONFIG 指令,可以参考下面的例子项目。
它包含通过操作面板 KTP 600 Basic PN 修改 PROFINET 接口的配置。
当T_CONFIG 指令使用时,HMI 通过 "Change connection" 事件与新配置了PROFINET接口的控制器同步建立通讯。
由于 KTP 600 Basic PN 不支持无类别域间路由(CIDR),后的8位组IP地址只能在C类网络中修改。
KTP 600 Basic PN 也可以在没有硬件时由 STEP 7 V11 模拟。
项目中的 IP 地址如下:
图. 06
KTP 600 Basic PN 用户接口包含下列元素:
要进行确认,在 STEP 7 V11 中,可以通过刷新可访问节点来检查 IP 分配,通过"Online & Diagnostics" 下的"Assign name"功能来检查PROFINET设备名。
S7-1200存储卡的基本介绍
S7-1200CPU使用的存储卡为SD卡,存储卡中可以存储用户项目文件,有如下三种功能:
1. 作为CPU的装载存储区,用户项目文件可以仅存储在卡中,CPU中没有项目文件,离开存储卡无法运行。
2. 在有编程器的情况下,作为向多个S7-1200PLC传送项目文件的介质。
3. 忘记时,CPU内部的项目文件和。
4. 24M卡可以用于更新S7-1200CPU的固件版本
图1: S7-1200存储卡
如何存储卡:
将CPU上挡板向下,可以看到右上角有一MC卡槽,将存储卡缺口向上,如下图所示:
图2:存储卡
注意:
• 对于S7-1200CPU,存储卡不是必需的。
• 将存储卡插到一个处于运行状态的CPU上,会造成CPU停机。
• S7-1200 CPU 仅支持由西门子制造商预先格式化过的存储卡,即下列订货号产品:
订货号 |
容量 |
6ES7 954-8LF01-0AA0 |
24MB |
6ES7954-8LC01-0AA0 |
4MB |
6ES7 954-8LB01-0AA0 |
2MB |
表1:存储卡信息
• 如果使用 WINOOWs 格式化程序对SIMATIC 存储卡重新进行格式化,CPU将无法使用该重新格式化的存储卡。
• 目前S7-1200还无法配合存储卡实现配方和数据归档之类的功能。
2 存储卡的工作
存储卡有两种工作:
• 程序卡:存储卡作为S7-1200 CPU 的装载存储区,所有程序和数据存储在卡中,CPU 内部集成的存储区中没有项目文件,设备运行中存储卡不能被。
• 传输卡:用于从存储卡向CPU传送项目,传送完成后必须将存储卡。CPU可以离开存储卡运行。
修改存储卡的工作:
在STEP 7 Basic的项目视图下,左侧”Project View“--->"SIMATIC Card Reader" --->您的读卡器型号,如下图所示:
图3:Project View
右击存储卡的盘符(这里是F:),选择“属性”,打开下面窗口:
图4:MC属性
用户在“Card type”选择需要的工作,“OK”完成设定。
3 使用程序卡的不同
优点:更换CPU时不需要重新下载项目文件。
3.1 装载用户项目文件到存储卡:
• 步:按照上面将存储卡设定到“编程”。建议客户做此操作之前存储卡中的所有文件。
• 步:设置CPU的启动状态:在"Project tree"中右击CPU选择“属性”,在“属性”窗“Startup”,此处我们必须选择“Warm restart-RUN”
图5: Startup
• 第三步:将CPU断电。
• 第四步:将存储卡插到CPU卡槽内
• 第五步:将CPU上电
• 第六步:在STEP 7 Basic中下载,将项目文件全部下载到存储卡中。此时下载是将项目文件(包括用户程序、硬件组态和强制值)下载到存储卡中,而不是CPU内部集成的存储区中。
完成上述步骤后,CPU可以带卡正常运行。此时如果将存储卡,CPU会报错,"ERROR"红灯闪烁。
3.2 常见问题:
常见问题1:
为什么插上存储卡后CPU的“MAINT”灯闪烁,使用STEP 7 Basic下载是提示报错“The download of the hardware configuration failed (0050 -133 2 2458)”?
回答:
请存储卡中的所有文件,重新使用STEP7 Basic将存储卡设置到“编程”,然后再重复上述步骤。请您也检查存储的拨码开关,检查存储卡是否处于写保护。
常见问题2:
为什么CPU断电上电后停止状态,而不运行状态?
回答:
原因是CPU的启动不是“Warm restart-RUN”,详细请参考上面“步”。
4 使用传输卡
优点:在没有编程器的情况下,方便快捷地向多个S7-1200PLC拷贝项目文件。
4.1 向处于传输的存储卡中装载项目
• 步:按照上面将存储卡设定到“编程”。建议客户做此操作之前存储卡中的所有文件。
• 步:设置CPU的启动状态:在"Project tree"中右击CPU选择“属性”,在“属性”窗“Startup”,此处我们必须选择“Warm restart-RUN”
• 第三步:直接拖拽PLC设备到存储卡盘符
图6:拖拽
用户也可以直接将一张已经做好的“程序卡”更改为“传输卡”。
4.2 从存储卡项目到S7-1200PLC
• 步:将CPU断电
• 步:插卡到CPU卡槽
• 第三步:将CPU上电,用户会看到CPU的"MAINT"黄灯闪烁
• 第四步:将CPU断电,将存储卡
• 第五步:将CPU上电
常见问题:
为什么CPU断电上电后停止状态,而不运行状态?
回答:
1. CPU的启动不是“Warm restart-RUN”,详细请参考上面“步”。
2. 检查第三步,必须拖拽PLC项目到存储卡盘符,而不是程序块等其他项目内容。下载到存储卡中的项目文件有可能不完整,例如确实硬件组态等。
5 使用存储卡
如果客户忘记了之前设定到S7-1200的,通过”恢复出厂设置“无法S7-1200内部的程序和,因此的是使用存储卡。详细步骤如下:
1. 将S7-1200设备断电
2. 一张存储卡到S7-1200CPU上,存储卡中的程序不能有保护
3. 将S7-1200设备上电
S7-1200CPU上电后,会将存储卡中的程序到内部的FLASH寄存器中,即执行操作。
客户也可以用相同的一张全新的或者空白的存储卡到S7-1200CPU,设备上电后,S7-1200CPU会将内部存储区的程序转移到存储卡中,拔下存储卡后,S7-1200CPU内部将不在有用户程序,即实现了。存储卡中的内容可以使用读卡器。
注意:不要格式化存储卡
6 使用24M存储卡更新S7-1200CPU的固件版本
S7-1200的固件版本可以从西门子站下载:http://support.automation.siemens.com/WW/view/cn 。用户可以使用西门子网站右上方的搜索引擎在“Download”分类中搜索“S7-1200 firmware”。
注意:
1. 不同订货号的S7-1200CPU的固件文件不相同,下载地址也不相同。用户在下载和更新固件之前请核对产品订货号。
2. 2M存储卡不能用于CPU固件升级。
3. 固件升级前CPU内部存储的项目文件(程序块、硬件组态等)不受影响,不会被。
4. 如果存储卡中的固件文件订货号与实际CPU的订货号不一致,即使执行了下列步骤,CPU的原固件版本也不会改变。
更新CPU的固件具体步骤如下:
• 步:使用电脑通过读卡器存储卡中内容。注意:不要格式化存储卡!
• 步:从西门子站下载版本的固件文件。下载并解压缩,用户可以一个“S7_JOB.SYS”文件和“FWUOPDATE.S7S”文件夹。
• 第三步:将“S7_JOB.SYS”文件和“FWUOPDATE.S7S”文件夹拷贝到存储卡中。
• 第四步:将存储卡插到CPU1200卡槽中。此时CPU会停止,“MAINT”指示灯闪烁。
• 第五步:将CPU断电上电。CPU的“RUN/STOP”指示灯红绿交替闪烁说明固件正在被更新中。“RUN/STOP”指示灯亮,“MAINT”指示灯闪烁说明固件更新已经结束。
• 第六步:存储卡
• 第七步:再次将CPU断电上电
本文介绍了通过OPEN IE的实现S7-1200与SIMOTION D410PN之间的TCP通信的,包括通信的基本配置、组态和编程等内容。S7-1200实现TCP通讯的指令有两种,一是不带连接的指令(TCON,SCON,TSEND,TRCV),另一种是带连接的指令(T RCV_C,TSEND_C);SIMOTON包含的通信指令包括tcpOpenClient,tcpOpenServe r,tcpSend,tcpReceive,tcpCloseSever,tcpCloseConnection。
本文选用S7-1200不带连接的指令TCON,SCON,TSEND,TRCV,实现与D410 PN的通讯。
设备 |
订货号 |
版本 |
CPU 1214C DC/DC/DC |
6ES7214-1AE30-0XB0 |
V2.2 |
D410PN |
6AU1410-0AB00-0AA0 |
Version B, FW V4.2 |
SCANLANCE X208 |
6GK5208-0BA10-2AA3 |
V3.1 |
表1 所采用的硬件列表
§ TIA Portal V11 SP2
§ SCOUT V4.2.1
2.3 通讯参数设置
硬件连接配置
图1 硬件连接示意图
CPU 1214C和D410PN本身都带有集成PN口,可以直接使用。
IP 地址设置(子网掩码均为255.255.255.0):
DEVICE |
IP Address |
CPU 1214C |
192.168.0.4 |
D410DP |
192.168.0.2 |
PC |
192.168.0.10 |
表2 IP地址设置
打开TIA Portal,新建一个项目,在“添加新设备”中选择所需的硬件及版本,如图2所示。
图2 选择设备和版本
打开设备视图,设置设备“属性”下的以太网地址为192.168.0.4,子网掩码为255. 255.255.0。见图3。
图3 设置以太网地址
在设备视图的属性窗设置时钟存储器,将时钟存储器的地址设置为MB20,并使用其中的M20.5位,0和1以1Hz切换,用来循环发送任务,见图4。
图4 时钟存储器设置
打开SCOUT,新建一个项目,设置PG/PC接口为电脑的以太网卡,双击“INSERT SIMOTION DEVICE”后,选择相应版本的D410PN,并打开硬件组态画面,在其中设置PN口的以太网地址和子网掩码,见图5。
图5 组态D410PN地址
TCON,SCON,TSEND,TRCV等指令均可以在右侧指令中的“通信—〉开放式用户通信”找到。本文中所有通讯指令均在background 中执行。
S7-1200在本文中作为Server,通讯开始前先TCON指令来建立端口,并等待Client的建立连接请求,一旦通信连接建立,此时“REQ”就不再起作用,若想重新建立连接需先调用“SCON”断开连接,再从新“TCON”重新建立连接。
图6 调用TCON
“REQ”:TCON功能。
“ID”:设置所建立连接的ID,以后的TSEND、TRCV、SCON均使用此ID。
“CONNECT”:连接配置DB,在配置完TCON参数后自动生成。
“Done”:建立连接任务完成后置1。
“BUSY”:建立连接任务执行中置1。
“ERROR”为1时,在STATUS中显示错误代码,“ERROR”为0时,在STATUS中显示指令执行状态代码。
当连接建立后,通序段2可以将“opensever”置0。
在调用TCON指令时会要求设置连接参数,见图7。
图7 TCON连接参数设置
“伙伴”:选择未。
“地址”:设置与S7-1200通讯的SIMOTION的地址。
“连接类型”:选择TCP。
“连接ID”: 发送、接收和连接断开所使用的ID。
“连接数据”:设置新建或使用已有的连接DB。
“建立连接”:选择建立连接的一方为客户端,另一方为。
“端口”:设置本地和伙伴的端口号,在SIMOTION的指令中会用到这里。
设置TCON参数时要先选择“连接数据”中的“新建”,建立一个新的Connection DB,然后再填写各个参数。
在通讯建立后,TSEND,TRCV指令(将发送指令的“REQ”端置1,将接收指令的“EN_R”置1),用来发送和接受数据。
图8 TSEND连接参数设置
图9 TRCV连接参数设置
注意:
(1) 在建立“DATA”中要的发送数据和接受数据DB时,其块访问的必须是“-与S7-300/400兼容”,否则在该指令时会报错,见图10。
(2) TSEND与TRCV的“ID”必须与TCON中设置的相同,而此“ID”与SIMOTION中的“ID”未必相同。
(3) TRCV在接收数据后,“NDR”会自动置1,且“RCVD_LEN”会显示接收到的数据长度。
图10 数据 DB建立
若要断开当前连接,则调用SCON。断开连接后,根据程序段6,“dis con”位会被重新置0。
图11 SCON连接参数设置
SIMOTION的通信指令可以在Command library中的“Communication->Data transfer”目录下找到。通信程序块“TCP”background中运行。
tcpOpenClient指令,该指令用来在simotion 侧客户端端口,并向发送连接请求,若请求,则建立连接,并返回连接ID。该指令需使用上跳沿单次触发,此函数只调用一次,连接ID后应停止调用。
图12 tcpOpenClient指令参数设置
“port”:设置simotion本地端口号。
“severAddress”:设置通讯(S7-1200)地址(192.168.0.4)。
“serverport”:设置(S7-1200)端口号,必须与S7-1200组态中设置的相同。
“nextCommand”:
IMMEDIATELY:命令与后续所要执行的命令同步执行。
WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。
本文中将程序simotion的background中执行,因此若使用WHEN_COMMAND_DONE,有可能在该命令执行时间过长情况下background执行时,报错停机。
“OUT”:函数调用返回信息,包括执行状态和返回的连接ID,后面的发送和接收指令均使用该ID。数据类型为结构体(StructRetTcpOpenClient),参考表3。
结构 |
名称 |
数据类型 |
functionResult |
状态信息,查看 连接是否建立 |
DINT |
connectionId |
连接号 |
DINT |
表3 TcpOpenClient返回值结
TcpSend指令用于发送数据,与S7-1200的接收指令相对应,可循环调用。
图13 TcpSend参数设置
“ConnectionId” :使用tcpOpenClient返回的ID。
“nextCommand”:
IMMEDIATELY:命令与后续所要执行的命令同步执行。
WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。
本文中将程序simotion的background中执行,因此若使用WHEN_COMMAND_DONE,有可能在该命令执行时间过长情况下background执行时,报错停机。
“DataLength”:发送数据的字节长度,本例为8,发送数据区的前8个字节。
“Data”:发送数据区,数据类型为数组,ARRAY[0..4095] OF BYTE。
“OUT”:输出通信状态。
注意:SIMOTION的发送区(接收区)与PLC的接收区(发送区)数据长度必须一致。
TcpReceive指令用于发送数据,与S7-1200的接收指令相对应,可循环调用。
图14 TcpReceive参数设置
“ConnectionId” :使用tcpOpenClient返回的ID。
“nextCommand”:
IMMEDIATELY:命令与后续所要执行的命令同步执行。
WHEN_COMMAND_DONE:命令执行或失败后执行后续的命令,异步执行。
本文中将程序simotion的background中执行,因此若使用WHEN_COMMAND_DONE,有可能在该命令执行时间过长情况下background执行时,报错停机。
“receivevarible”:接收数据区,数据类型为数组,ARRAY[0..4095] OF BYTE。
“OUT”:调用函数返回信息,包括调用状态和接收的字节数量。数据类型为结构体(StructRetTcpReceive),参考表4。
结构 |
名称 |
数据类型 |
functionResult |
接收状态信息 |
DINT |
dataLength |
接收字节长度 |
UDINT |
表4 TcpReceive返回值结构
本例中使用的程序可以在“S7-1200.zip (1350 KB) ( 1350 KB )”和“D410.zip (1597 KB) ( 1597 KB ) ”这两个压缩包中找到。
首先在S7-1200侧建立连接的指令“TCON”,等待SIMOTION侧的连接请求,接着在SIMOTION侧打开客户端指令“TcpOpenClient”,发送建立连接的请求。请求后,“TcpOpenClient”的返回值结构中的functionResult会显示“0”,同时在connec tionId中会返回ID(此ID与PLC中设置的ID未必一致)。
之后分别使能PLC侧和SIMOTION侧的发送接收指令,开始数据传送。
SIMOTION侧WATCH TABLE监控结果:
图15 SIMOTION侧接收和发送的数据
PLC侧监控表的监控结果:
图16 PLC侧接收和发送的数据