展开查看
以下是引用jacky_andy在2014-11-04 13:21:25的发言 >99楼:西门子的通信方式太多,拿以太网来说
tcp udp 还有iso on tcp等等协议,在用这些协议的时候,我不是太会选择到底用哪一种。
如果两者都是西门子的系统的话,我是肯定选择s7协议。
和第三方通信,到底应该怎么选择,一直困扰着我。
说来话长,如果深入浅出的话,在以太网主站通信上先划分S/R 和S7通信。
先来说说S/R,即Send / Receive方式,也叫S5兼容通信。要说明白必须知道它的由来。
S5 PLC 在以太网上最初只有ISO通信,即使用MAC地址,地址分布都是由080006以后开始,这是给西门子预留的,全球统一,现在地址用完了,所以MAC地址也变了。其实无所谓,因为mac地址可以改变,只要在一个网络内不一样就可以了。
通信方式就是S/R了,对等发送与接收,有一个好处,接收区大于发送区就可以了。我发送时你必须要有接收块,否则会报无接收资源故障信息。使有起来非常方便,两个站点先建立一个连接,然后可以在一个连接上同时调用发送与接收块。在这基础上又产生了WRITE和Fetch,即单边编程的方式,直接将对方的数据抓到本地的数据区,也可以将本地的数据直接写到对方的地址区。所以看程序想了解通信时,可以先看连接表,否则无法从程序中读出(太累了),因为大部分通信程序一样。
使用MAC地址不能路由,所以后来出现的支持TCP的通信处理器,例如CP1430 TCP,与ISO通信方式一样,唯一的不同是使有IP地址,支持路由了。另外使用标准的TCP/IP可以与其他设备通信,不需要驱动,数据透明,ISO 也说通信透明,但是要参考ISOXXXX规约,得自己动手写驱动。
会了PLC通信的组态后,连接上位机也就变得方便了,例如WINCC与S5以太网layer4的通信就是使用了WRITE和Fetch,参数都一样,S5 PLC 不需要编写通信程序(除了send all和receive all)指定地址区。
有一点没有确定,就是S5 这块通信板是否支持ISO_on _tcp,需要查一下。为什么出ISO_on _tcp连接呢,我想可能大家都熟悉ISO通信了,这其实是在TCP上使用了原来ISO的机制,从状态上看,TCP/IP使用端口号,ISO_on _tcp使用TASP号,自己可以定义几个字符作为标识,其实背后也对应着一个固定的端口号(猜的,像S7通信使用102),使用TCP/IP好好的,基于什么样的需求要使用ISO_on _tcp,熟悉,不是,因为TCP/IP是数据流方式通信,发送10个字节是,接收去可以是8个字节,那么怎样接收呢,很关键,下班吃饭,下次再接着说吧。