西门子plc以太网通讯 西门子1200以太网通讯

2018年8月8日23:14:25 发表评论 4,072 阅读

以太网概述

PROFINET 通信口

S7-1200 CPU 本体上集成了一个 PROFINET 通信口,支持以太和基于 TCP/IP和UDP 的通信标准。这个PROFINET 物理接口是支持10/100Mb/s的 RJ45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。使用这个通信口可以实现 S7-1200 CPU 与编程设备的通信,与HMI触摸屏的通信,以及与其它 CPU 之间的通信。

支持的协议和最大的连接资源

S7-1200 CPU 的PROFINET 通信口支持以下通信协议及服务

  • TCP
  • ISO on TCP ( RCF 1006 )
  • UDP(V1.0 不支持)
  • S7 通信
    注意:S7-1200 CPU 只支持S7 通信的服务器(Sever)端,(使用PORTAL V10.5软件)
    S7-1200 CPU 支持S7 通信的服务器与客户端,(使用 STEP7 V11软件)

硬件版本 V4.1 支持的协议和最大的连接资源:

S7-1200的连接资源

分配给每个类别的预留连接资源数为固定值;您无法更改这些值。 但可组态 6个"可用自由连接"以按照应用要求增加任意类别的连接数。

● 示例1: 1 个 PG 具有 3 个可用连接资源。 根据当前使用的 PG 功能,该 PG 实际可能使用其可用连接资源的 1、2 或 3。 在 S7-1200 中,始终保证至少有 1 个 PG,但不允许超过 1 个 PG。

在CPU属性>常规>连接资源显示:

 

 

HMI连接资源

● 示例2:HMI 具有 12 个可用连接资源。 根据您拥有的 HMI 类型或型号以及使用的 HMI 功能,每个 HMI 实际可能使用其可用连接资源中的 1 个、2 个或 3 个。 考虑到正在使用的可用连接资源数,可以同时使用 4 个以上的 HMI。 HMI 可利用其可用连接资源(每个 1 个,共 3 个)实现下列功能:

  • 读取
  • 写入
  • 报警和诊断
HMI 1 HMI 2 HMI 3 HMI 4 HMI 5 HMI
使用的连接资源 2 2 2 3 3 12

以上示例共有5个HMI设备访问S7-1200,占用了S7-1200的12个HMI连接资源。

对于S7-1200 V4.1以上版本,有6个动态连接资源可以用于HMI连接。所以它们的最大HMI连接资源数可以达到18个。对于之前的版本只能用预留的HMI连接资源用于HMI访问。

HMI设备占S7-1200的HMI连接资源个数

  • 基于 WinCC TIA Portal的组态:
资源数(默认) 简单通讯 系统诊断 运行系统报警记录
基本面板 1 1 1 -
多功能面板 2 1 - -
精智面板 2 1 2 -
WinCC RT Advanced 2 1 2 -
WinCC RT Professional 3 2 2 3

注:“资源数(默认)”是当HMI与S7-1200在一个项目中组态HMI连接时,会占用S7-1200的组态的HMI连接个数。

如图:示例中HMI_2 为精智面板。

 

 

这个连接个数是这个HMI设备所能占用S7-1200的最大HMI连接个数,可以作为选型参考。

  • 目前Smart pannel不支持S7-1200
  • 可以访问S7-1200的HMI面板的其他信息

硬件版本 V3.0 支持的协议和最大的连接资源:

  • 3个连接用于操作面板
  • 1个连接用于编程设备(PG)与 CPU 的通信
  • 8个连接用于Open IE ( TCP, ISO on TCP, UDP) 的编程通信,使用T-block 指令来实现
  • 3个连接用于S7 通信的服务器端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信
  • 8个连接用于S7 通信的客户端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信

连接数是固定不变的,不能自定义。

注意:建立被动的TCP 、ISO on TCP 和UDP的连接时,建议使用端口范围: 2000~5000。一些端口号和TSAP 号是受到限制不能被使用的。 下列端口号和TSAP号不能使用:

  • ISO TSAP (passive): 01.00, 01.01, 02.00, 02.01, 03.00, 03.01
  • TCP/UDP port (passive): 20, 21, 25, 80, 102, 135, 161, 34962 … 34964,53, 80, 162, 443, 520, 9001

硬件版本 V2.0~V2.2 支持的协议和最大的连接资源:

  • 3个连接用于非 Comfort pannel触摸屏或2个连接用于Comfort pannel与 CPU 的通信
  • 1个连接用于编程设备(PG)与 CPU 的通信
  • 8个连接用于Open IE ( TCP, ISO on TCP, UDP) 的编程通信,使用T-block 指令来实现
  • 3个连接用于S7 通信的服务器端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信
  • 8个连接用于S7 通信的客户端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信

硬件版本 V1.0 S7-1200

  • 3个连接用于非 Comfort pannel触摸屏或2个连接用于Comfort pannel与 CPU 的通信
  • 1个连接用于编程设备(PG)与 CPU 的通信
  • 8个连接用于Open IE ( TCP, ISO on TCP) 的编程通信,使用T-block 指令来实现
  • 3个连接用于S7 通信的服务器端连接,可以实现与S7-200,S7-300以及 S7-400 的以太网S7 通信

 

物理网络连接

  • S7-1200 CPU的PROFINET 口有两种网络连接方法:
    直接连接:当一个S7-1200 CPU与一个编程设备,或是HMI ,或是另一个PLC通信时,也就是说只有两个通信设备时,实现的是直接通信。直接连接不需要使用交换机,用网线直接连接两个设备即可,如图1. 所示。
    图1. 通信设备的直接连接
  • 网络连接:当多个通信设备进行通信时,也就是说通信设备为两个以上时,实现的是网络连接,如图2. 所示。多个通信设备的网络连接需要使用以太网交换机来实现。可以使用导轨安装的西门子 CSM1277 的 4 口交换机连接其它 CPU 及 HMI 设备。CSM1277 交换机是即插即用的,使用前不用做任何设置。

    图2. 多个通信设备的网络连接(图:network connection)
    ① CSM1277 以太网交换机

PLC与PLC之间通信的过程

  1. 实现两个CPU 之间通信的步骤① 建立硬件通信物理连接:由于S7-1200 CPU 的PROFINET 物理接口支持交叉自适应功能,因此连接两个 CPU 既可以使用标准的以太网电缆也可以使用交叉的以太网线。两个CPU的连接可以直接连接,不需要使用交换机。
    ② 配置硬件设备:在 “Device View” 中配置硬件组态。
    ③ 配置永久IP 地址:为两个CPU 配置不同的永久IP 地址
    ④ 在网络连接中建立两个 CPU 的逻辑网络连接
    ⑤ 编程配置连接及发送、接收数据参数。在两个 CPU 里分别调用TSEND_C或TSEND、TRCV_C或TRCV 通信指令,并配置参数,使能双边通信。
  2. 配置 CPU之间的逻辑网络连接配置完 CPU 的硬件后,在项目树 “Project tree”>“Devices & Networks” >“Networks view”视图下,创建两个设备的连接。
    要想创建PROFINET 的逻辑连接,用鼠标点中第一个 PLC 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如图3. 所示。

    图3. 建立两个CPU之间的连接

编程指令及代码

所使用的通信指令

S7-1200 CPU中所有需要编程的以太网通信都使用开放式以太网通信指令

在 PORTIAL V10.5 和 TIA PORTIAL V11 软件内通过使用程序组T-block 来实现。调用T-block 通信指令并配置两个CPU之间的连接参数,定义数据发送或接收信息的参数。软件内提供了两套通信指令(两个软件实现功能相同):
不带连接管理的通信指令:

  • “TCON ” 建立以太网连接
  • “TDISCON” 断开以太网连接
  • “TSEND” 发送数据
  • “TRCV” 接收数据

带连接管理的通信指令:

  • “TSEND_C ” 建立以太网连接并发送数据
  • “TRCV_C ” 建立以太网连接并接收数据

TIA PORTIAL V11 支持UDP通讯(包括广播)使用 TCON和TDISCON创建连接或断开连接

  • “TUSEND ” 建立UDP以太网连接并发送数据
  • “TURCV ” 建立UDP以太网连接并接收数据

实际上“TSEND_C ”指令实现的是TCON ”,“TDISCON”和“TSEND”三个指令综合的功能。而“TRCV_C ”指令是TCON ”,“TDISCON”和“TRCV”指令的集合。

T-block 通信块的状态及错误代码

T-block 通信块的状态代码见表1.,错误代码见表2.。

表1.状态代码

错误 状态(W#16#...) 描述
0 0000 执行任务无错误
0 7000 没有激活的任务
0 7001 启动任务处理,建立连接,等待连接伙伴
0 7002 数据正在发送或接收
0 7003 连接中断
0 7004 连接建立并被监视,无激活的任务

表2. 错误代码

错误 状态(W#16#...)
描述
1 8070
所有内部背景存储区在使用中
1 8080
输入的通信口ID号无效
1 8081
超时,模块错误,内部错误
1 8085
LEN参数值为0,或者大于允许值
1 8086
CONNECT 参数在允许范围之外
1 8087
已经到达最大连接数,不允许额外的连接
1 8088
LEN参数大于DATA中所定义的长度;接收存储区太小。
1 8089
CONNECT参数未指向DB块
1 8090
信息长度非法,模块非法,信息非法。
1 8091
参数化信息版本错误
1 8092
参数化信息中非法的长度记录
1 809A
CONNECT 参数指向的区域不符合连接描述的长度
1 809B
连接描述中的local_device_id与CPU不符
1 80A1

连接错误

  • 定义的连接还未建立
  • 定义的连接当前被结束;通过这个连接的传输不允许
  • 接口正在重新初始化
1 80A3
试图终止一个不存在的连接
1 80A4
远程伙伴连接的IP 地址非法。例如,远程IP与本地IP相同。
1 80A7
通信错误:在TCON指令完成前又调用了TDISCON。
1 80B2
CONNECT参数指向了一个由关键字UNLINKED生成的DB块
1 80B3

参数不一致:

  • 连接描述中有错误
  • 本地端口(参数local_tsap_id)已经在另一个连接中出现
  • 连接描述中的ID与参数定义的ID不同
1 80B4

当使用ISO on TCP建立一个被动连接时,错误代码警告你所输入的TSAP不符合下面的地址要求:

  • 对于本地的一个2字节的TSAP ID值,第一个字节可以是E0或是E1(十六进制),第二个字节是00或是01。
  • 对于本地的三个字节或大于三个字节的TSAP ID值,第一个字节可以是E0或是E1(十六进制),第二个字节是00或是01,所有其它字节应该是有效的ASCII字符。
  • 对于本地的三个字节或大于三个字节的TSAP ID值,如果第一个字节不是E0或E1(十六进制),那么所有TSAP ID必须是有效的ASCII字符。
1 80C3 所有连接资源都被使用了
1 80A4 远程伙伴连接的 IP 地址无效。 例如,远程伙伴的 IP 地址与本地
伙伴的 IP 地址相同。
1 80A7 通信错误: 在 TCON 完成前调用了 TDISCON(TDISCON 必须
先完全终止 ID 引用的连接)
1 80B2 参数 CONNECT 指向使用关键字 UNLINKED 生成的数据块
1 80B3

不一致的参数:

  • 连接描述错误
  • 本地端口(参数 local_tsap_id)已在另一个连接描述中存在
  • 连接描述中的 ID 与作为参数指定的 ID 不同

西门子plc以太网通讯常见问题

S7-1200 CPU 与 S7-1200 CPU 通信常见问题
为什么通信数据区在输入指针形式的绝对地址时不允许输入?

答:通信数据区 “DATA” 在输入指针形式的地址时,虽然输入地址格式完全正确,但仍会出现红色 “P#DB3.DBX0.0 BYTE 100”,表示地址错误而不允许输入。这是因为在创建通信数据区 DB 块时选择了“Symbolic access only(仅符号寻址)”,只能用符号寻址方式访问这个DB块。只要在创建DB块时,不勾选“Symbolic access only(仅符号寻址)”,就可以正常输入指针形式的绝对地址了。

Tblock 通信指令是同步传输还是异步传输?

答:Tblock 通信指令是异步于程序传输的,每个扫描周期分配给通信任务的时间百分比可以在CPU属性中的 “Communication load(通信负载)" 中设定,默认值是 “20%”。这就要求在每个通信任务完成之前要保证数据区数据的一致性。

为何发送通信任务不执行或只执行了一次?

答:在执行发送指令时,“REQ” 输入端的每次上升沿会激活通信任务一次。如果这个位一直为“1”,则通信任务只会执行一次。

为何在使用TCP协议通信时,通信接收区的数据会错位?.

答:如果通信数据区与接收数据区的长度不一致,则会导致接收区的数据错位。

weinxin
plc入门知识问答
所有PLC工程师都会关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: