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面板的其他信息 请参考:https://support.industry.siemens.com/cs/ww/en/view/109475049
硬件版本 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之间通信的过程 实现两个cpu 之间通信的步骤
① 建立硬件通信物理连接:由于s7-1200 cpu 的profinet 物理接口支持交叉自适应功能,因此连接两个 cpu 既可以使用标准的以太网电缆也可以使用交叉的以太网线。两个cpu的连接可以直接连接,不需要使用交换机。
② 配置硬件设备:在 “device view” 中配置硬件组态。
③ 配置永久ip 地址:为两个cpu 配置不同的永久ip 地址
④ 在网络连接中建立两个 cpu 的逻辑网络连接
⑤ 编程配置连接及发送、接收数据参数。在两个 cpu 里分别调用tsend_c或tsend、trcv_c或trcv 通信指令,并配置参数,使能双边通信。
配置 cpu之间的逻辑网络连接
配置完 cpu 的硬件后,在项目树 “project tree”>“devices & networks” >“networks view”视图下,创建两个设备的连接。
要想创建profinet 的逻辑连接,用鼠标点中第一个 plc 上的profinet通信口的绿色小方框,然后拖拽出一条线,到另外一个plc 上的profinet通信口上,松开鼠标,连接就建立起来了,如图3. 所示。
图3. 建立两个cpu之间的连接 s7-1200 cpu通过ethernet 与s7-1200 cpu 通信的方式 s7-1200 与 s7-1200 之间的以太网通信可以通过 tcp 或 iso on tcp 协议来实现,使用的通信指令是在双方 cpu 调用 t-block (tsend_c, trcv_c, tcon, tdiscon, tsen, trcv) 指令来实现。通信方式为双边通信,因此 tsend 和 trcv 必须成对出现。
硬件和软件需求及所完成的通信任务 硬件:
① s7-1200 cpu
② pc (带以太网卡)
③ tp电缆(以太网电缆)
软件:
step7 v11 or higher
所完成的通信任务:
① 将plc_1 的通信数据区 db3 块中的 100 个字节的数据发送到 plc_2 的接收数据区 db4 块中。
② 将plc_2 的通信数据区 db3 块中的 100 个字节的数据发送到 plc_1 的接收数据区 db4 块中。
通信的编程,连接参数及通信参数的配置 1. 打开 step7 v11 软件并新建项目
在 step7 v11的 “portal view” 中选择 “create new project” 创建一个新项目
2. 添加硬件并命名plc
然后进入 “project view”,在“project tree” 下双击 “add new device”,在对话框中选择所使用的s7-1200 cpu添加到机架上,命名为 plc_1,如图1.所示。
同样方法再添加通信伙伴的s7-1200 cpu ,命名为 plc_2。
图1. 添加新设备
为了编程方便,使用 cpu 属性中定义的时钟位,定义方法如下:
在 “project tree” > “plc_1” > “device configuration” 中,选中 cpu ,然后在下面的属性窗口中,“properties” > “system and clock memory” 下,将系统位定义在mb1,时钟位定义在mb0,如图2.所示。
时钟位我们主要使用 m0.3,它是以2hz 的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。
图2. 系统位与时钟位
3. 为 profinet 通信口分配以太网地址
在 “device view”中点击 cpu 上代表profinet 通信口的绿色小方块,在下方会出现profinet 接口的属性,在 “ethernet addresses” 下分配ip 地址为 192.168.0.1 ,子网掩码为255.255.255.0,如图3. 所示。
图3. 分配ip 地址
同样方法,在同一个项目里添加另一个新设备s7-1200 cpu 并为其分配 ip 地址为192.168.0.2
4. 创建 cpu之间的逻辑网络连接
在项目树 “project tree”>“devices & networks” >“networks view” 视图下,创建两个设备的连接。用鼠标点中 plc_1 上的profinet通信口的绿色小方框,然后拖拽出一条线,到另外一个plc_2 上的profinet通信口上,松开鼠标,连接就建立起来了,如图4.所示。
图4. 建立两个 cpu的逻辑连接
在 plc_1 中调用并配置“tcon”、“tsend”、“trcv” 通信指令 1.在 plc_1 的 ob1 中调用“tcon” 通信指令
① 在第一个 cpu 中调用发送通信指令,进入 “project tree” > “ plc_1” > “program blocks” > “ob1” 主程序中,从右侧窗口 “instructions” > “communications” > “open user communications”下调用 “tcon” 指令,创建连接,如图1.所示。
图1. 调用“tcon”通信指令
② 创建db2 分配连接参数,见图2所示
图2. 创建连接数据块 db2(con_db)
③ 定义plc_1的 “tcon”连接参数
plc_1 的 tcon 指令的连接参数需要在指令下方的属性窗口“properties”> “configuration”>“connection parameter”中设置,如图3.所示。
图3. 定义 tcon 连接参数
连接参数说明:
end point :可以通过点击选择按钮选择伙伴 cpu :plc_2
connection type :选择通信协议为 tcp(也可以选择 iso on tcp 或udp协议)
connection id :连接的地址 id 号,这个 id 号在后面的编程里会用到
connection data :创建连接时,生成的con_db块。见图2所示
active connection setup :选择本地 plc_1作为主动连接
address details :定义通信伙伴方的端口号为:2000;如果选用的是 iso on tcp 协议,则需要设定的tsap 地址(ascii 形式),本地 plc_1可以设置成“plc1”,伙伴方 plc_2 可以设置成“plc2”。
2.定义 plc_1 的“tsend”发送通信块接口参数
① 调用 “tsend” 在ob1内调用 发送100个字节数据到plc2中
进入 “project tree” > “ plc_1” > “program blocks” > “ob1” 主程序中,从右侧窗口 “instructions” > “communications” > “open user communications”下调用 “tsend” 指令,,如图4.所示。
图4. 调用 tsend
② 创建并定义plc_1的发送数据区 db 块。
通过“project tree”>“plc_1”>“program blocks”>“add new block”,选择“data block” 创建 db 块,选择绝对寻址,点击“ok”键,定义发送数据区为 100个字节的数组,如图4.及图5.所示。
图5. 创建发送数据区 db 块
注意:对于双边编程通信的 cpu ,如果通信数据区使用 db 块,既可以将 db 块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式,必须创建绝对寻址的 db 块。
图6. 定义发送数据区为字节类型的数组 图 plc1_tsendc_data
③ 定义 plc_1 的“tsend”发送通信块接口参数,如图7.所示。
图7. 定义 tsend 接口参数
参数说明:
输入接口参数:
req
:= m0.3
// 使用 2hz 的时钟脉冲,上升沿激活发送任务
id : = 1 //创建连接id
len
:= 100
//发送数据长度
data
:= p#db3.dbx0.0 byte 100
// 发送数据区的数据,使用指针寻址时,db块要选用绝对寻址
输出接口参数:
done
:= m300.0
//任务执行完成并且没有错误,该位置 1
busy
:= m300.1
// 该位为 1,代表任务未完成,不能激活新任务
error
:= m300.2
//通信过程中有错误发生,该位置 1
status
:= mw302
//有错误发生时,会显示错位信息号
3.在 plc_1 的ob1中调用接收指令t_cv 并配置基本参数
为了实现 plc_1 接收来自 plc_2 的数据,则在 plc_1 中调用接收指令t_rcv 并配置基本参数。
① 创建并定义plc_1的接收数据区 db 块。
通过“project tree”>“plc_1”>“program blocks”>“add new block”,选择“data block” 创建 db 块,选择绝对寻址,点击“ok”键,定义发送数据区为 100个字节的数组,如图7.及图8.所示。
图8. 创建接收数据区 db 块
注意:对于双边编程通信的 cpu ,如果通信数据区使用 db 块,既可以将 db 块定义成符号寻址,也可以定义成绝对寻址。使用指针寻址方式,必须创建绝对寻址的 db 块。
图9. 定义接收数据区为字节类型的数组
② 调用 “trcv” 在ob1内调用
进入 “project tree” > “ plc_1” > “program blocks” > “ob1” 主程序中,从右侧窗口 “instructions” > “communications” > “open user communications”下调用 “trcv” 指令,配置接口参数,,如图10.所示。
图10. 调用 trcv 指令并配置接口参数
参数说明:
输入接口参数:
en_r
:= true
// 准备好接收数据
id
:= 1
// 连接号,使用的是 tcon 的连接参数中 id号
len
:= 100
// 接收数据长度为 100 个字节
data
:= p#db4.dbx0.0 byte 100
// 接收数据区的地址
输出接口参数:
ndr
:= m310.0
// 该位为 1,接收任务成功完成
busy
:= m310.1
// 该位为 1,代表任务未完成,不能激活新任务
error
:= m310.2
// 通信过程中有错误发生,该位置 1
status
:= mw312
// 有错误发生时,会显示错误信息号
rcvd_len
:= mw314
// 实际接收数据的字节数
注意:len设置为 65535 可以接收变长数据。
tcp 通信 使用tcp 协议通信,除了连接参数的定义不同,通信双方的其它组态及编程与前面的iso on tcp 协议通信完全相同。但注意:主动连接方强烈建议选择s7-300 cp卡。
s7-1200 cpu中,使用 tcp 协议与s7-300通信时,plc_1的连接参数,如图1.所示。通信伙伴 s7-300 的连接参数,如图2.所示。
图1.s7-1200 的tcp连接参数的配置 tcp1200_connection.bmp
图2. s7-300 的s7-300 cp卡创建tcp连接参数的配置
图3.s7-300 的s7-300 cp卡创建tcp连接参数的配置,设置连接伙伴
图3. s7-300 cp卡创建tcp连接参数的配置,设置连接伙伴地址及端口
特别注意(不建议使用) 如果一定要创建s7-1200主动连接,那么在s7-300 cp卡,创建连接,一定不能填写对方ip与端口如图4
图4. s7-300 cp卡创建tcp连接参数的配置,一定不能设置对方ip与端口
湖南 长沙 西门子 6es7274-1xa30-0xa0