全国服务热线 158****1992

6SL3120-2TE13-0AA4

发布:2023-06-01 17:13,更新:2023-10-26 04:00

   西门子S7-1500 与 S7-1500 之间的以太网通信可以通过 TCP 或 ISO on TCP 协议来实现,使用的通信指令是在双方 CPU 调用 T-block (TSEND_C, TRCV_C, TCON, TDISCON, TSEN, TRCV) 指令来实现。通信方式为双边通信,因此 TSEND 和 TRCV 必须成对出现。

一、S7-1500 CPU之间TCP通讯组态准备

1、硬件准备:
① S7-1500 CPU
② PC (带以太网卡)
③ TP电缆(以太网电缆)

2、软件准备:
博图 V14 (本文以博图V14为例)

二、通信的编程,连接参数及通信参数的配置

1. 打开 博图 v14 软件并新建项目

2. 添加硬件并命名plc
然后进入 “Project view”,在“Project tree” 下双击 “Add new device”,在对话框中选择所使用的S7-1500 CPU添加到机架上,命名为 PLC_1。同样方法再添加通信伙伴的S7-1500 CPU ,命名为 PLC_2。

为了编程方便,使用 CPU 属性中定义的时钟位,定义方法如下:
在 “Project tree” > “PLC_1” > “Device configuration” 中,选中 CPU ,然后在下面的属性窗口中,“Properties” > “System and clock memory” 下,将系统位定义在MB1,时钟位定义在MB0。时钟位我们主要使用 M0.3,它是以2Hz 的速率在0和1之间切换的一个位,可以使用它去自动激活发送任务。

3. 为 PROFINET 通信口分配以太网地址
在 “Device View”中点击 CPU 上代表PROFINET 通信口的绿色小方块,在下方会出现PROFINET 接口的属性,在 “Ethernet addresses” 下分配IP 地址为 192.168.0.1 ,子网掩码为255.255.255.0,如下图所示。

1.jpg

同样方法,在同一个项目里添加另一个新设备S7-1500 CPU 并为其分配 IP 地址为192.168.0.2。

4. 创建 CPU之间的逻辑网络连接
在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。用鼠标点中 PLC_1 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如下图所示。

2.jpg

5. 创建 CPU之间的TCP连接
创建TCP连接方式有两种方式:使用程序块、使用组态的连接。 使用程序块:参见plc编程方式
使用组态的连接:两种方式
(1)、在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。选择连接,下拉列表选择tcp,然后用鼠标点中 PLC_1 上的PROFINET通信口的绿色小方框,然后拖拽出一条线,到另外一个PLC_2 上的PROFINET通信口上,松开鼠标,连接就建立起来了,如下图所示。

3.jpg

(2)、在项目树 “Project tree”>“Devices & Networks” >“Networks view” 视图下,创建两个设备的连接。选择连接,下拉列表选择tcp,然后用鼠标点中 PLC_1 上右键选择添加新连接,然后在弹出的对话框内选择要连接的PLC,点击添加按钮。通过这种方式建立的连接可以在连接选项内看到已经建立的连接,并且可以更改连接相关参数。用此方式编程中需要注意,选择连接类型时要选择使用组态的连接如下图所示。

4.jpg

前段时间朋友在移值S7-400程序到S7-1500时,遇到UC指令报错,不能使用。微信发来图片,根据PORTAL中的提示,找不到相关设置,如下图:

图1

图1.png 

因为以前在用STEP 7编程时,也很少使用UC/CC指令,基本都是CALL指令,于时,找了一些资料看了一下,如下图:

STEP 7中的UC/CC指令说明

图2

图2.png

PORTAL中的UC/CC指令说明

图3

 图3.png

使用UC/CC指令时,FC/FB不能有任命接口参数,FB也不能有背景数据块。在STEP7中,使用UC/CC调用FC/FB是不区分的,一视同仁。在PORTAL中,还要激活“通过寄存器传递参数“并且要取消使用块优化访问方式。

于是,分别在STEP 7和PORTAL中进行了测试。

在STEP 7中测试,FC/FB都能使用UC指令正常调用 ,如下图

图4

图4.png

在PORTAL中测试,UC指令调用FC时,PORTAL会自动转换成CALL指令,但是FB就会报错,并且在FB的属性中也找不到“通过寄存器传递参数“这个选项。如下图:

图5

图5.png

图5.1

图5.1.png

这就奇怪了,资料上明明写了激活“通过寄存器传递参数“并且要取消使用块优化访问,难道还有哪里设置不对。在无意间,打开了FC5的属性,奇迹发生了,这个功能居然有参数选项,别的块为什么会没有呢?于是仔细的对比了一翻,发现了端倪。原来有参数选项的块,编程语言是用的STL,其它没有参数选项的块,用的是LAD编程语言。

为了证实这一点,于是做了如下测试:

1.    FC/FB编程语言都是LAD,结果

-FC/FB的属性中没有参数选项

-UC调用FC会自动转换为CALL指令调用

-UC调用FB会出错

-CC调用指令同上

图6

图6.png

2. FC/FB编程语言都是STL,结果

 -FC/FB的属性中有参数选项,取消块优化访问方式后,才能激活“通过寄存器传递参数“

-UC正常调用FC

 -UC正常调用FB

 -CC指令同上

图7

图7.png

其它编程语言SCL/FBD/GRAPH测试结果与LAD相同,这里不再描述。

*后结论:

在STEP7中,无论使用哪程序编程语言,只要不带有接口参数的FC/FB,都可以使用UC/CC指令调用

在PORTAL中,被调用的FC在不激活“通过寄存器传递参数“选项时,使用UC/CC指令,块会自动转换为CALL指令。FB块会出错。

PORTAL中用UC/CC指令调用 FC/FB块,编程语言必须是STL,且不能带用接口参数,在FC/FB的块属性中,要取消块优化访问方式,激活“通过寄存器传递参数“选项后,才能使用UC/CC指令。


联系方式

  • 地址:上海杨浦 上海市松江区广富林路4855弄88号3楼
  • 邮编:200093
  • 电话:158****1992
  • 经理:聂聪
  • 手机:158****1992
  • 传真:021-33556143
  • QQ:2724917714
  • Email:2724917714@qq.com