首页 上一页 1 2 下一页 尾页

(已结帖)工控PLC擂台第27期--PLC 以太网通讯 点击:3591 | 回复:30



云锋

    
  • 精华:1帖
  • 求助:5帖
  • 帖子:279帖 | 5541回
  • 年度积分:0
  • 历史总积分:30128
  • 注册:2005年6月24日
发表于:2011-03-04 14:44:55
楼主

实际工程中用过的PLC 以太网通信案例,需要把PLC型号、与PLC通信的设备、通信的各种参数及情况、通信实现的功能等说明清楚,贴出程序并加以说明。

PLC及与PLC通信的设备类型不限。

工控PLC擂台每周一期,本期下周结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:30积分。

MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。

MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。



楼主最近还看过



abysmal

  • 精华:1帖
  • 求助:0帖
  • 帖子:12帖 | 2176回
  • 年度积分:6
  • 历史总积分:11194
  • 注册:2001年10月26日
发表于:2011-03-05 06:23:36
1楼
上星期用ISaGRAF做了一个基于UDP/IP 的多站通讯的演示程序。

用户的要求:主站需要500ms一次向7个从站发送数据,每个从站则2秒一次向主站传送数据。有一个从站作为备用主站,当主站发生故障时起到主站的作用。为了便于演示,主站和从站的程序代码应该是相同的,程序根据PLC的IP地址确定自己的身份。

welfare87

  • 精华:0帖
  • 求助:4帖
  • 帖子:44帖 | 2827回
  • 年度积分:0
  • 历史总积分:25853
  • 注册:2009年2月20日
发表于:2011-03-05 19:44:11
2楼

S7-200 之间的以太网通信
       S7-200 之间的以太网通信,S7-200 既可以做为Server(服务器)端,也可以做为Client(客户端)。
1、S7-200 做为Server 端
        S7-200 做为Server 端时,只响应Client 端的数据请求,不需要编程,只要组态CP243-1 就可以了。 

(1)选择“工具”菜单下的“以太网向导...”。
     

 (2)打开“以太网向导”,简单介绍CP243-1 及以太网的有关信息,点击“下一步”。
      
(3)设置CP243-1 模块的位置,如不能确定,可以点击“读取模块”由软件自动探测模块的位置,点击“下一步”。

(4)设定CP243-1 模块的IP 地址和子网掩码,并指定模块连接的类型(本例选为自动检测通讯),点击“下一步”。
(5)确定PLC 为CP243-1 分布的输出口的起始字节地址(一般使用缺省值即可)和连接数据数,点击“下一步”。
(6)设置本机为服务器,并设置客户机的地址和TSAP。
           TSAP:由两个字节构成,第一个字节定义了连接数,其中: 
           Local TSAP 范围:16#01,16#10~16#FE
           Remote TSAP 范围:16#01,16#03,16#10~16#FE 
           第二个字节定义了机架号和CP 槽号。
           如果只有一个连接,可以指定对方的地址,否则可以选中接受所有的连接请求。
        “保持活动”功能是CP243-1 以设定的时间间隔来探测通信的状态,此时间的设定在下步设定。
(7)选择是否需要CRC 保护,如选择了此功能,则CP243-1 在每次系统重启时,就校验S7-200 中的组态信息看是否被修改,如被改过, 则停止启动,并重新设置IP 地址。
“保持活动间隔”即是上步中的探测通信状态的时间间隔。

(8)选定CP243-1 组态信息的存放地址,此地址区在用户程序中不可再用。
(9)至此,S7-200 服务器端的以太网通信已经组态完毕,如下图, 给出了组态后的信息。点击“完成”保存组态信息。
(10)在程序调用子程序“ETH0_CTRL”。
         参数说明:ETH0_CTRL 为初始化和控制子程序,在开始时执行以太网模块检查。应当在每次扫描开始调用该子程序,且每个模块仅限使用一次该子程序。每次CPU 更改为RUN(运行)时,该指令命令CP243-1以太网模块检查V 组态数据区是否存在新配置。如果配置不同或CRC保护被禁用,则用新配置重设模块。
当以太网模块准备从其他指令接收命令时,CP_Ready 置1。Ch_Ready的每一位对应一个指定,显示该通道的连接状态。例如,当通道0 建立连接后,位0 置1。Error(错误)包含模块通信状态。 
2、S7-200 做为Client 端
       S7-200 做Client 端时,组态步骤前5 步同S7-200 做Server 时,注意在第4 步中客户端的地址要设主192.168.147.2。
(1)~(5)步同Server 端时的步骤。
(6)选择本机为客户机,并设定服务器的地址和TSAP。由于客户机需要组态发送或接收服务器的数据,点击“数据传输”按钮。 

(7)在弹出的画面中点击“新传输”。
(8)选择客户机是接收还是发送数据到服务器及接收和发送的数据
区,如有多个数据传输(最多32 个,0~31),可按“新传输”按钮
定义新的数据传输。

彩云之滇东北

  • 精华:20帖
  • 求助:5帖
  • 帖子:107帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2011-03-06 13:23:10
3楼
我有西门子300的通信,稍后发上   

iori880808

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 67回
  • 年度积分:0
  • 历史总积分:522
  • 注册:2010年12月12日
发表于:2011-03-06 15:21:36
4楼
用组态软件就可以实现多台PLC之间的数据交换。不用编写通讯程序

bhdxzgp

  • 精华:5帖
  • 求助:8帖
  • 帖子:141帖 | 5451回
  • 年度积分:0
  • 历史总积分:21609
  • 注册:2006年4月16日
发表于:2011-03-06 15:47:28
5楼
S7300和S7200的以太网模块都用过!

五花马

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 52回
  • 年度积分:0
  • 历史总积分:290
  • 注册:2006年8月15日
发表于:2011-03-06 17:25:40
6楼

弄个双以太网的冗余的,其他的就别发了。

hjcan

  • 精华:1帖
  • 求助:0帖
  • 帖子:13帖 | 292回
  • 年度积分:0
  • 历史总积分:2940
  • 注册:2011年2月21日
发表于:2011-03-06 20:41:22
7楼

通过调用S7通讯提供的SAPI-S7应用程序接口实现PC机与S7300/400PLC基于工业以太网的数据通讯

1、SIMATIC NET工业以太网

SIMATIC NET工业以太网是用于大型集散控制系统的高速网络系统,最高通信速率可达100Mbps,通讯距离为1.5Km(同轴电缆)或4.5Km(光纤)网络可连接多于1000个节点。它是基于IEEE802.3的工业标准总线系统,采用CSMA介质访问控制协议。节点之间通过连接方式进行数据传输,由主动站建立连接,被动站加以确认。PG/PC和PLC之间可建立无穷多个连接,而每个PLC最多可建立16个PLC-PLC连接。每一个连接最多一次可发送240个字节;传送的数据为:I/O地址,中间寄存器和DB数据块。可按位、字节、字、双字等方式读写。

工业以太网由独立的网段组成,每个网段最多500m,最多可连接100个站点,网段之间用中继器连接。两站之间最多接两个中继器,构成1000米得远程中继站。每个数据终端设备DTE通过耦合器连接到网上,DTE可以是工作站PC和编程器PG,S7、S5、M7等系列得PLC设备,以及其他支持ISO传输的非西门子系统。网络通讯接口设备为自带CPU的CP(通讯处理器)模块,在它的固件中固化了ISO参考模型的1到7层协议。CP完成所有的通讯任务,可大大减轻DTE的CPU负担。S7-300一般采用CP343-1板,S7-400一般采用CP443-1板。PC/PG上一般装有网卡CP1613,也可以用CP1413、CP1511、CP1411。 

2、 S7通讯

S7通讯是SIMATIC S7 PLC之间得最佳化通讯协议,它也允许用户通过S7协议连接PC和工作站。每个作业的用户的最大用户数据量可到64K(中等到大型的数据量)。可以被MPI、PROFIBUS和工业以太网所支持,是西门子公司开发的基于应用层的一个协议。S7通讯提供了简明、强有力的通讯服务和与网络无关的用户接口,用于工业以太网、PROFIBUS和MPI。需要安装SIMATIC Net软件,目前最新版本是V6.2。 

3、 数据通讯的实现

S7通信协议不公开,管理计算机和调试计算机上第三方软件编制的程序如何实现PC机与西门子S7 300/400 PLC之间的信息通讯是个棘手的问题。为了允许PC机和工作站上的应用程序与西门子S7系列产品进行S7通讯,西门子公司提供了一个SAPI-S7应用程序接口,通过它可以灵活而方便地跟西门子S7系列产品进行通信。安装SIMATIC Ner软件后,会在系统system32目录下生成一个s732.dll文件,该动态链接库提供了大量基于WindowsNT、Window95/98、Windows3.11和MS-DOS的函数,这样就使得用户解决PLC和PC机的数据交换和数据处理问题变为可能。通信编程包括两个部分:(1)CP连接组态(2)PLC与上位机通信编程。 

4、 CP连接组态

可采用step7软件或step7软件中用于工业以太网的NCMS7软件对CP进行网络组态。通讯处理器CP可连接PC,PC/PG上一般装网卡CP1613。在Windows控制面板下的“set PC/PG”下安装所用网卡驱动程序,并设协议、站号、波特率、是否为主站,完成对VFDs(Virtual Field Device)和S7 connections的配置[4]。 

8、 PLC和上位机的通讯编程

S7-300/400PLC有以下各类资源:①输入点I:接收外部开关量信号 ②输出点Q:输出给外部的开关量信号 ③内部辅助点M:存放所需中间结果 ④时间继电器T ⑤计数器 ⑥数据块DB:存放程序数据的存储区域 ⑦外设输入PI:主要接收模拟量输入信号经A/D转换⑧外设输出PQ:给出模拟两输出值[5]。要读/写这些资源,首先要建立PLC和PC机的连接。 

(1) 初始化与PLC的连接

SAPI-S7应用程序接口提供的管理服务模块(Administrative Services)提供了一些可供读出配置信息和登录/退出通讯系统的函数,下面作一些简要介绍:

Ø s7_get_device() :通过此函数,用户程序可以查询所有已安装的CP的CP名。

Ø s7_get_vfd() :通过此函数,用户程序可以查询任一指定CP的所有已配置的VFD。

Ø s7_init():通过此函数,用户程序可登录通讯系统。

Ø s7_get_cref() :此函数提供了一个指向所选S7 connection名的指针。

Ø s7_get_conn():此函数返回已登录VFD的所有S7 connection名和指向他们的指针。

Ø s7_shut():通过此函数,用户程序可退出通讯系统。

一个应用程序可以登录一个或多个CP的若干个VFD,只有当应用程序登录CP及其所选的VFD,在配置期间指定给该VFD的所有连接才是有效的。

(2)读/写PLC内部资源

初始化与PLC的连接成功后,就可以对PLC进行读写操作。对PLC存储区即数据块DB的读写是实现监控的最基本操作。SAPI-S7应用程序接口提供的变量服务模块(Variable Services)提供了一些读写函数,由于篇幅有限,现选一些经常用到的函数作一些简单介绍。

Ø s7_cycl_read():此函数通知服务方准备对单存储单元循环读一个变量。

Ø s7_get_cycl_read_ind():此函数接收来自服务方发送的数据。

Ø s7_multiple_read_req():此函数通知服务方准备对多存储单元读一个或多个变量。

Ø s7_get_multiple_read_cnf():此函数接收来自服务方的一个或多个变量的值。

Ø s7_multiple_write_req():此函数通知服务方准备对多存储单元写一个或多个变量。

Ø s7_get_multiple_write_cnf():此函数接收来来自服务方的执行上述写请求的结果。

需要特别注意的是:S7 300/400PLC遵循“高地址、低字节”的规律,这与某些习惯用法不同。例如在C++Builder6中,变量类型为word的变量,它的数据存放顺序是“低地址,低字节”的规律。因此在对所读取的数据进行操作或给PLC数据块中写数据字时要进行相应的处理。

为解决上位机不能因前台的信息处理而中断后台的监听等问题,可采用多线程编程技术,将对PLC内部资源的读/写功能模块交给一个后台线程来完成。多线程编程技术能提高CPU利用率,加快信息处理,提高系统的实时性,在由多台计算机组成的分布式实时控制系统中应用多线程技术是完全必要的。 

(3) 后台读/写线程模块部分代码

·····

do

{

ret = s7_receive(cp_descr,&cref,&orderid);

switch(ret)

{

case S7_NO_MSG:

break;

case S7_INITIATE_CNF:

Synchronize(my_get_initiate_cnf);

Synchronize(my_multiple_read_req);

break;

case S7_MULTIPLE_READ_CNF:

Synchronize(my_get_multiple_read_cnf);

Synchronize(my_multiple_read_req);

break;

·

·

case S7_ABORT_IND:

Synchronize(my_get_abort_ind);

break;

case S7_VFD_STATE_CNF:

Synchronize(my_get_vfd_state_cnf);

Synchronize(my_abort);

break;

case S7_VFD_USTATE_IND:

Synchronize(my_get_vfd_ustate_ind);

break;

default :

·····

}

}while(ret != last_event_expected)

siyuan3222

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 170回
  • 年度积分:0
  • 历史总积分:627
  • 注册:2007年10月23日
发表于:2011-03-06 23:47:00
8楼
楼上那个应该是西门子的以太网通讯例子吧

zhxl198808

  • 精华:5帖
  • 求助:10帖
  • 帖子:46帖 | 3915回
  • 年度积分:0
  • 历史总积分:22216
  • 注册:2008年9月06日
发表于:2011-03-07 08:56:39
9楼

学习了,还请大家都关照下,谢谢诶

 

彩云之滇东北

  • 精华:20帖
  • 求助:5帖
  • 帖子:107帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2011-03-07 09:33:57
10楼

第一步:组台硬件

第二步:组台网络
第三步:配置从站通讯
第四步:编辑控制程序
实现多个cpu通讯

伺服菜鸟

  • 精华:0帖
  • 求助:2帖
  • 帖子:23帖 | 269回
  • 年度积分:0
  • 历史总积分:867
  • 注册:2008年10月17日
发表于:2011-03-07 10:40:32
11楼

关于以太网通讯我感觉主要有3点:1.主要是看好以太网模块在模组中所在的位置

2.设置好以太网的网址

3.确定联接的线没有故障

下面我以三菱Q系列PLC为例,是一台负荷区分设备,主要的PLC构成如图:

现在设置PLC编程软件,首先把PLC各个模块所在位置设定好,每个模块的点数确定好,后设置图如下:
确定完各个模块的I/O点数后,然后设置网络参数,网络参数主要是以太网模块的起始I/O,站号以及操作设置里面的基本参数;如下图:
这些参数设置好,就可以实现正常的通信了
因这设备也用到了CC-LINK,我也顺便把设置参数列出来,不多解释,上图:
本人嘴拙,不会细细描述,大概就是这样,呵呵

cqu_rockwell

  • 精华:16帖
  • 求助:0帖
  • 帖子:678帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2011-03-07 20:42:05
12楼

通过CP343-1 实现S7-300 之间的以太网通讯

一、硬件组态
首先搭建一套测试设备,设备的结构图如下:
2 套S7-300 系统由PS307 电源、CPU314C-2DP、CPU314C-2PTP、CP343-1、CP343-1 IT、
PC、CP5611、STEP7 组成,PLC 系统概貌如下图:

如下将一步一步展示如何实现2 套S7-300 之间的以太网通讯:
第一步:打开SIMATIC Manager,根据我们系统的硬件组成,进行系统的硬件组态,如图:
插入 2 个S7300 的站,进行硬件组态:
分别组态2 个系统的硬件模块:
设置CP343-1、CP343-IT 模块的参数,建立一个以太网,MPI、IP 地址:

cqu_rockwell

  • 精华:16帖
  • 求助:0帖
  • 帖子:678帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2011-03-07 20:56:31
13楼

二、网络组态
组态完2套系统的硬件模块后,分别进行下载,然后点击Network Configration按钮,打开系统的网络组态窗口NetPro,选中CPU314,如下图:

 

在窗口的左下部分点击鼠标右键,插入一个新的网络链接,并设定链接类型为ISO-on-TCP connection 或 TCP connection或 UDP connection 或 ISO Transport connection,如下图:
点击OK后,弹出链接属性窗口,使用该窗口的默认值,并根据该对话框右侧信息进行后面程序的块参数设定:
当2套系统之间的链接建立完成后,用鼠标选中图标中的CPU,分别进行下载,这里略去CPU314C-2DP的下载图示:

cqu_rockwell

  • 精华:16帖
  • 求助:0帖
  • 帖子:678帖 | 8694回
  • 年度积分:0
  • 历史总积分:57901
  • 注册:2010年6月30日
发表于:2011-03-07 20:59:36
14楼
三、程序编程
到此为止,系统的硬件组态和网络配置已经完成。下面进行系统的软件编制,在SIMATIC Manager界面中,分别在CPU314C-2PTP、CPU314C-2DP中插入OB35定时中断程序块和数据块DB1,DB2,并在两个OB35中调用FC5(AG_Send)和FC6(AG_Recv)程序块,如下图:
创建DB1、DB2数据块,如下图:
2套控制程序已经编制完成,分别下载到CPU当中,将CPU状态切换至运行状态,就可以实现S7-300之间的以太网通讯了。
如下界面说明了将CPU314C-2DP 的DB1中的数据发送到CPU314C-2PTP 的DB2中的监视界面:
a. 选择Data View,切换到数据监视状态:
b. CPU314C-2DP 的DB1中发送出去的数据:
c. CPU314C-2PTP 的DB2中接收到的数据

秒杀G

  • 精华:12帖
  • 求助:0帖
  • 帖子:55帖 | 1460回
  • 年度积分:0
  • 历史总积分:12556
  • 注册:2009年4月10日
发表于:2011-03-09 14:46:57
15楼
楼上的,你字体模糊啊……

秒杀G

  • 精华:12帖
  • 求助:0帖
  • 帖子:55帖 | 1460回
  • 年度积分:0
  • 历史总积分:12556
  • 注册:2009年4月10日
发表于:2011-03-09 14:50:38
16楼
回复内容:
对:彩云之滇东北 关于

第一步:组台硬件

第二步:组台网络
第三步:配置从站通讯
第四步:编辑控制程序
实现多个cpu通讯
内容的回复:


是走的Profibus还是以太网

玻璃的心

  • 精华:30帖
  • 求助:2帖
  • 帖子:962帖 | 5801回
  • 年度积分:0
  • 历史总积分:61250
  • 注册:2010年6月11日
发表于:2011-03-09 15:01:28
17楼
回复内容:
对:秒杀G 关于回复内容:
对:彩云之滇东北 关于

第一步:组台硬件

第二步:组台网络
第三步:配置从站通讯
第四步:编辑控制程序
实现多个cpu通讯
内容的回复:


是走的Profibus还是以太网
内容的回复:

明显Prifibus,这个猫是不能给分吧!!!!!

涛声依旧

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 540回
  • 年度积分:5
  • 历史总积分:18865
  • 注册:2006年12月03日
发表于:2011-03-09 15:03:40
18楼
我的WINCC和S7用以太网通讯突然中断,西门子的说少了一个以太网抓包软件。还有就是共地没有做好。叫我不知道是不是这么回事???????

涛声依旧

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 540回
  • 年度积分:5
  • 历史总积分:18865
  • 注册:2006年12月03日
发表于:2011-03-10 00:01:30
19楼

没有人回答啊            

yanwen0227

  • 精华:2帖
  • 求助:49帖
  • 帖子:577帖 | 9385回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2011-03-10 02:20:35
20楼

楼上的各位辛苦了.......


热门招聘
首页 上一页 1 2 下一页 尾页