技术专题探讨-PLC以太网通信

已锁定

  • 帖子

    3970
  • 精华

    20
  • 被关注

    19

论坛等级:奇侠

注册时间:2003-06-16

普通 普通 如何晋级?

技术专题探讨-PLC以太网通信

13647

77

2009-06-08 23:12:39

再次召集网友相聚,这次咱们来讨论一下SIMATIC PLC之间的以太网通信。
西门子早在1985年就推出了以太网产品SINEC H1总线电缆。1989年推出了冗余的以太网结构,增加了网络的可用性。然后相继推出各种各样的工业以太网产品,包括1996年推出了OLM,1998年推出CP443-1IT产品等等。特别是从2003年开始PROFINET网络和相关产品相继问世,这让我们有一种应接不暇的感觉。工业以太网技术发展快速,主要是由于其网络特点决定的,主要包括简便的网络安装,灵活的布线,100M/1G的带宽,通信数据量大,冗余网络架构,IT的广泛应用等等。
西门子工业以太网通信服务,包括PG/OP通信服务,S7通信服务,ISO通信服务,ISO on TCP通信服务,TCP/IP通信服务,UDP通信服务,PROFINET CBA通信服务,IT通信服务等等。其背后实际上包括S7,RFC1006,TCP,UDP,CBA,IT等网络协议。这就让我们在建立CPU之间的通信时面临诸多的选择和疑问,使用哪一种通信方式呢?它们之间有什么区别呢?编程时有需注意什么呢?
在建立通信连接时,可以在NetPro中进行建立静态连接,例如S7 Connections, TCP connections等等。也可以使用Open IE的方式建立动态链接,使用T block来进行连接和数据交换。那么这两种方式又有什么优缺点?
在选择某种通信服务时,常常提到通信连接资源数的限制,CPU和PLC的通信模板都会对前面描述的各种各样的通信服务定义限制个数。那么如何理解通信资源,资源数量的限制?哪种通讯服务占用什么样的通讯资源?
对于上面很多问题欢迎大家畅所欲言,提出您在工作和项目中所遇到的问题或者解决方案,让我们共同分享或是寻找更优解决方案,相互探讨和学习!
此次集中探讨将持续至7月10日,其中有突出表现的网友将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分;根据交流情况,会酌情赠送小礼品。
交流结束后将整理精华内容,供广大网友分享参考。
祝您交流愉快!
重要声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论

提拉米苏

  • 帖子

    8
  • 精华

    0
  • 被关注

    2

论坛等级:新手

注册时间:2006-02-14

普通 普通 如何晋级?

发布于 2009-06-09 09:18:55

0楼

使用T block通讯时,PLC中的读写在不同数据区,如果有多台PC,数据处理较麻烦,特别是写
评论

amen2008

  • 帖子

    3130
  • 精华

    0
  • 被关注

    17

论坛等级:侠圣

注册时间:2005-08-24

普通 普通 如何晋级?

发布于 2009-06-09 09:30:39

0楼

我只用过通过程序中调用系统功能实现两个以太网设备通讯,还有OPC,其他的方法没有用到过,在这里学习了!!希望大火踊跃发言
保持一个好的心态!
评论

不得不爱

  • 帖子

    499
  • 精华

    6
  • 被关注

    7

论坛等级:侠士

注册时间:2006-06-20

普通 普通 如何晋级?

发布于 2009-06-09 10:40:49

0楼

有一个问题:
为什么CPU315可以在属性里设置通讯资源数目,
315以上和400系列CPU属性里面却没有了这个选项呢?
You are beautiful It's true
评论

satanttt

  • 帖子

    398
  • 精华

    1
  • 被关注

    5

论坛等级:侠客

注册时间:2004-06-03

普通 普通 如何晋级?

发布于 2009-06-09 11:12:24

0楼

实际工作中用到400 CP 读多个 300CP的数据问题。 底下的300数量10个左右,因为300经常断电不使用,导致400读写程序都是失效的。这时候程序监控,运行速度都变的很慢,几乎不能监控。后来把读写通讯程序做成100MS一次后,才好一点,不过还是很慢。请问有什么其他方法可以解决以上问题吗?
-新年快乐-
评论

四书五经

  • 帖子

    780
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2009-06-09 12:52:20

0楼

quote:以下是引用satanttt在2009-06-09 11:12:24的发言:
实际工作中用到400 CP 读多个 300CP的数据问题。 底下的300数量10个左右,因为300经常断电不使用,导致400读写程序都是失效的。这时候程序监控,运行速度都变的很慢,几乎不能监控。后来把读写通讯程序做成100MS一次后,才好一点,不过还是很慢。请问有什么其他方法可以解决以上问题吗?

我不知道你400和300的连接采用的是什么方式,是TCP,还是ISO ON TCP,还是S7?
如果你用的是FC5,FC6进行通讯,如果你的编程习惯很好,你应该就不会出现这样的问题?
我们知道对于通讯来说,好的习惯是首先判断连接的好坏,再进行数据通讯。如果说连接已经不正常了,发送数据还有什么用呢?所以对于SEND/RECIVE通讯,我们可以首先调用FC10(AG_Cntrl)进行连接状态的判断,如果FC10的执行结果是连接已经不正常了,那就通过判断跳过FC5,FC6的执行!这样应该就不会出现以上问题了。呵呵,至于FC10的具体使用可以参考在线帮助。
说到此,不禁感慨一下,真正在我们的编程中有这么好的编程习惯的人有多少呢?包括我在内,一般在程序中实现了功能就行了,至于一些异常情况的处理很少去实现的。记得很早以前有老工程师和我说过,一外国公司在武刚做的一套控制系统,整个异常处理占总程序量的70%,而这70%的程序几乎很少使用,可能一年都用不到1次。但出现异常的时候,如果没有这些程序整个生产就会出现问题。
呵呵,我是做编程出身的,对于编程的问题多说了一些!希望大家不要见怪!!
评论

satanttt

  • 帖子

    398
  • 精华

    1
  • 被关注

    5

论坛等级:侠客

注册时间:2004-06-03

普通 普通 如何晋级?

发布于 2009-06-09 13:21:04

0楼

quote:以下是引用四书五经在2009-06-09 12:52:20的发言:
quote:以下是引用satanttt在2009-06-09 11:12:24的发言:
实际工作中用到400 CP 读多个 300CP的数据问题。 底下的300数量10个左右,因为300经常断电不使用,导致400读写程序都是失效的。这时候程序监控,运行速度都变的很慢,几乎不能监控。后来把读写通讯程序做成100MS一次后,才好一点,不过还是很慢。请问有什么其他方法可以解决以上问题吗?

我不知道你400和300的连接采用的是什么方式,是TCP,还是ISO ON TCP,还是S7?
如果你用的是FC5,FC6进行通讯,如果你的编程习惯很好,你应该就不会出现这样的问题?
我们知道对于通讯来说,好的习惯是首先判断连接的好坏,再进行数据通讯。如果说连接已经不正常了,发送数据还有什么用呢?所以对于SEND/RECIVE通讯,我们可以首先调用FC10(AG_Cntrl)进行连接状态的判断,如果FC10的执行结果是连接已经不正常了,那就通过判断跳过FC5,FC6的执行!这样应该就不会出现以上问题了。呵呵,至于FC10的具体使用可以参考在线帮助。
说到此,不禁感慨一下,真正在我们的编程中有这么好的编程习惯的人有多少呢?包括我在内,一般在程序中实现了功能就行了,至于一些异常情况的处理很少去实现的。记得很早以前有老工程师和我说过,一外国公司在武刚做的一套控制系统,整个异常处理占总程序量的70%,而这70%的程序几乎很少使用,可能一年都用不到1次。但出现异常的时候,如果没有这些程序整个生产就会出现问题。
呵呵,我是做编程出身的,对于编程的问题多说了一些!希望大家不要见怪!!


ISO 协议。多谢您的回答。FC10,我将在接下去的时间中加入这断程序,如果可行,这下可算解决一个大问题了。
还有一个问题 ISO 协议和 TCP-ISO协议那个实时性好。 我们的设备400通过顶上的一个788主战 连接744 744在下接300从战。这样的连接方式。 现场作用TCP-ISO协议延迟很厉害。
-新年快乐-
评论

技工

  • 帖子

    77
  • 精华

    4
  • 被关注

    5

论坛等级:游侠

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2009-06-09 13:27:52

0楼

赞同楼上的用法. 检查通讯状态lifebeat的用法也可参考
评论

amen2008

  • 帖子

    3130
  • 精华

    0
  • 被关注

    17

论坛等级:侠圣

注册时间:2005-08-24

普通 普通 如何晋级?

发布于 2009-06-09 13:47:24

0楼

网络诊断和网络监视的程序中必须得有!习惯问题!
保持一个好的心态!
评论

cg122

  • 帖子

    318
  • 精华

    1
  • 被关注

    7

论坛等级:侠士

注册时间:2007-08-22

普通 普通 如何晋级?

发布于 2009-06-09 15:46:07

0楼

我没怎么用过PLC之间直接读写数据。因为PLC之间共享的变量不多,一般都是在人机界面组态软件里的脚本里做变量的传送。

进来学习下。
评论

David.Xue

  • 帖子

    11
  • 精华

    0
  • 被关注

    2

论坛等级:新手

注册时间:2008-06-11

普通 普通 如何晋级?

发布于 2009-06-09 16:05:26

0楼

其它品牌的PLC能与siemensPLC做以太网通讯吗?
以太网现在有没有类似串口的“通讯管理器?
评论

木子俊

  • 帖子

    2
  • 精华

    0
  • 被关注

    1

论坛等级:新手

注册时间:2009-05-23

普通 普通 如何晋级?

发布于 2009-06-10 02:16:59

0楼

这个通信方式很不错!不只知道有什么优缺点?
尊重别人!尊重自己!愉快生活!
评论

dinbin

  • 帖子

    671
  • 精华

    3
  • 被关注

    4

论坛等级:侠客

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2009-06-10 09:18:18

0楼

我觉得,到了以太网这一层还要花大量的时间去处理如何判断通讯正常的问题有些疑问,大家想想最简单的一个例子,办公室里有很多人用电脑,如果一个人的关机会明显影响到其他人的通讯,这种网络也太脆弱了,关键在于结合交换机这块的功能。
一直在学习
评论

四书五经

  • 帖子

    780
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2009-06-10 09:59:26

0楼

quote:[b]以下是引用satanttt在2009-06-09 13:21:04的发言:
ISO 协议。多谢您的回答。FC10,我将在接下去的时间中加入这断程序,如果可行,这下可算解决一个大问题了。
还有一个问题 ISO 协议和 TCP-ISO协议那个实时性好。 我们的设备400通过顶上的一个788主战 连接744 744在下接300从战。这样的连接方式。 现场作用TCP-ISO协议延迟很厉害。

不用客气!
因为TCP协议本身是基于字节流的,对于工业控制设备实现起来很不方便,ISO 协议是基于数据包的,对于工业通讯实现起来更简单。ISO ON TCP通讯是在TCP通讯的基础上把数据进行分段和重组,使之符合ISO协议的标准,其底层仍然是TCP协议。所以ISO协议实时性更好一些。但ISO ON TCP的延迟也不应该有这么大吧。是不是无线网络没有设置好!另采用ISO协议就没有延迟吗?或者无线网络的通讯质量不好,从而导致TCP多次重发数据?
另想知道你这个方案是什么行业的?谢谢!
评论

技工

  • 帖子

    77
  • 精华

    4
  • 被关注

    5

论坛等级:游侠

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2009-06-10 10:03:10

0楼

办公室里的电脑是有人在操作,而PLC不编程自己是不会去判断的,但楼上谈到的利用交换机来判断也是个思路,直接读交换机的端口连接状态.
评论

liwenqun

  • 帖子

    5350
  • 精华

    25
  • 被关注

    8

论坛等级:奇侠

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2009-06-10 11:44:35

0楼

对于西门子的以太网 PLC之间进行通讯时使用的协议大概有以下几种(S5的就不提了,因为我没用过)
1、S7通讯 (包括S7-TCP、ISO、ISO-on-TCP等) 使用简单,直接通过S7连接的ID号程序就能很好的调用了
2、直接用TCP、UDP(这样编程麻烦)也就是Open-IE功能,如果要连接ModbusTCP之类的其它工业以太网(必须是没有更改TCP包头、仅将TCP发送的数据进行协议封装的协议)
3、profinet
另外现在CP模块或者PN/DP的CPU都支持Profinet 可以使用PN-IO或者CBA进行通讯

这里需要说明的是 无论是S7还是TCP或者ISO on TCP等,使用的均为标准以太网的协议,其实时性还是没有严格的保证。
怎么论坛改成这样了??
评论

liwenqun

  • 帖子

    5350
  • 精华

    25
  • 被关注

    8

论坛等级:奇侠

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2009-06-10 11:50:17

0楼

另外,个人感觉 虽然Step7里面给出各种连接方式,但是常用的或者说针对S7-300/400之间相互通讯的话,就选择S7通讯或者Profinet就可以了
别的呢知道有这么个东西,用到了再查查资料 呵呵
怎么论坛改成这样了??
评论

四书五经

  • 帖子

    780
  • 精华

    58
  • 被关注

    30

论坛等级:侠圣

注册时间:2005-12-23

普通 普通 如何晋级?

发布于 2009-06-10 16:16:12

0楼

对于S5兼容通讯(Send/Recive),调用FC5/FC6最好不要就直接调用FC5/FC6就完事了。应该按照如下格式进行调用:
CALL FC 5 (
ACT := M100.0,
ID := 1,
LADDR := W#16#100,
SEND := P#DB100.dbx0.0 BYTE 240,
LEN := 240,
DONE := M100.1,
ERROR := M100.2,
STATUS := MW102 );

R M100.0;
SET;
A M100.1;
JC done;
SET;
A M100.2;
JC err;
BEU;//功能块还没执行完,结束程序
done: S M100.0; //功能块执行完了,触发下一次发送
BEU;
err: S M100.0;//出错了,也触发下一次发送,这里也可以加入出错处理
BEU;

以上代码摘自STEP7在线帮助。这样做的好处是保证在数据发送完成后再启动下一次发次。不会出现上一次数据还没发完,又开始新的发送的情况。呵呵,既然功能块提供了这么多状态,那就应该把他们都用上,好的程序还是应该这样写!
评论

赵欣

官方工程师

  • 帖子

    376
  • 精华

    49
  • 被关注

    100

论坛等级:奇侠

注册时间:2006-07-07

白金 白金 如何晋级?

发布于 2009-06-10 16:49:19

0楼

quote:以下是引用四书五经在2009-06-10 16:16:12的发言:
对于S5兼容通讯(Send/Recive),调用FC5/FC6最好不要就直接调用FC5/FC6就完事了。应该按照如下格式进行调用:
CALL FC 5 (
ACT := M100.0,
ID := 1,
LADDR := W#16#100,
SEND := P#DB100.dbx0.0 BYTE 240,
LEN := 240,
DONE := M100.1,
ERROR := M100.2,
STATUS := MW102 );

R M100.0;
SET;
A M100.1;
JC done;
SET;
A M100.2;
JC err;
BEU;//功能块还没执行完,结束程序
done: S M100.0; //功能块执行完了,触发下一次发送
BEU;
err: S M100.0;//出错了,也触发下一次发送,这里也可以加入出错处理
BEU;

以上代码摘自STEP7在线帮助。这样做的好处是保证在数据发送完成后再启动下一次发次。不会出现上一次数据还没发完,又开始新的发送的情况。呵呵,既然功能块提供了这么多状态,那就应该把他们都用上,好的程序还是应该这样写!

那么Done信号意味着什么呢?
读万卷书 行万里路
评论

姑苏城外

  • 帖子

    1526
  • 精华

    20
  • 被关注

    7

论坛等级:侠圣

注册时间:2006-05-29

普通 普通 如何晋级?

发布于 2009-06-10 20:45:21

0楼

通常做通讯都是数据正常就停手了,深入之后会使用一些诊断功能完善项目程序(比如SFC87),这样出现问题后可以快速确定故障所在
与人规矩,不与人巧!
评论
技术专题探讨-PLC以太网通信 已锁定

本版热门话题

通信与网络组件

共有91条技术帖

相关推荐

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。