西门子S7-200 自由口通信实用文档.

西门子S7-200 自由口通信实用文档.
西门子S7-200 自由口通信实用文档.

主题:应用探讨—S7-200 自由口通信—发帖整理

强大而灵活的自由口通信能力,是S7-200系统的一个重要特点。S7-200 CPU的RS485通信口提供了建立在串行通信基础上的“自由”通信能力,数据传输协议完全由用户程序决定。通过自由口方式,S7-200可以与串行打印机、条码阅读器等通信。而S7-200的编程软件也提供了一些通信协议库,如USS协议库和MODBUS RTU从站协议库,它们实际上也使用了自由口通信功能。

开设本话题的目的,在于澄清自由口通信的基本概念,强调使用中的要点,讨论应用的常见问题。经过此次集中交流,解决了如下一些问题:

1. 自由口通信基本概念

2. 自由口通信编程指令的使用和技巧

3. 自由口通信常见问题

4. 产品功能建议

更多信息请参考下面文档。

“下载中心”参考文档:

文档编号“1109582”——S7-200《可编程控制器系统手册》

文档编号“A0136”——《西门子 S7-200?LOGO!?SITOP 参考》

以下为本次探讨的发帖整理,查看原始交流内容请点击此处。

1.自由口通信基本概念(1楼——5楼)

2.自由口通信编程指令的使用和技巧(6楼——15楼)

3.自由口通信容易犯的错误(16楼——24楼)

4.产品功能建议(25楼——27楼)

quote:

以下是引用BABU在2011-01-20 15:17:08的发言:

我回来了,项目终于做完了,可以回家过年了,:)。

自由口通信真是折腾的我好惨啊,简单回顾一下,希望对像我这样的菜鸟有些借鉴作用。

先感谢一下西门子论坛和热线,没少骚扰他们。

在完全没有准备的情况下甲方又加进一个仪表,做什么自有口通信,晕阿!没办法,迎着上吧!

网上搜资料,看手册,越看越糊涂!时间紧迫,还是直接上手做吧。

首先是把PLC和仪表连接起来,可仪表的口是rs232的,热线工程师告诉我得做rs232/485的转换,打车到市场上买个转换器(打车钱比设备钱还多,可见现场多么偏僻阿),听卖转换器的老板给我分析了一下每种的区别——不光是价格的区别,说实在的,当时非常惭愧,老板懂的比我多多了。

买回来后自己动手焊线,一个人费了九牛二虎之力,焊的那个惨样就不用说了,还好有壳可以包装一下。

焊好了,实验一下效果吧,不知到怎么做了,打电话。

热线工程师告诉我找个串口调试工具,连接到pc机上测试。

在串口调试工具上发一串数,在200上收,ok!高兴坏了,没白忙活。

硬件上应该没问题了,接下来开始做程序了。

先得理解仪表的协议,弄清了仪表先要收到请求数据的命令,然后根据命令做出响应。

同样,先用串口调试工具和仪表连接进行通信测试,还算聪明吧,:)!

然后开始在200里编写收发程序,开始时整个思路都是乱的,无从下手。就把200手册上的例子程序整个抄上,在cpu224的两个接口间进行通信实验。

经过不停的实验,终于一点一点地理解了控制字节、控制参数的含义,怎么设置接收结束条件,怎么使用中断、怎么控制接收和发送等等。

ok,开始真正地与仪表通信了。

发请求命令,收数据,可收到的数据是ASCII码,得进行数据转换。

根据大侠们的提醒,经过实验知道了怎么将ASCII码转换为实际的工程数据。

到此基本结束了,虽然说着好像也没什么,但只有我最了解其中的痛苦,不停地实验,不停地修改阿!

后面在实际运行中又遇到了有时通信中端的问题,将双绞线的屏蔽接到地上后暂时还没出现问题。

总结一下,个人认为作自由口通信需要做好以下几方面工作:

1、最主要的是多动手,光看资料是没有用的,只有自己亲自去动手实验一下才能发现问题和帮助理解。

2、做实验是找个串口调试工具(我用的是sscom32)是必须的,可以帮助你测试你的通信线,调试你的程序,尽量不要直接与设备进行通信,通信不上不好分析原因。

3、我认为200手册上的例子程序非常好,基本的处理方法和编程方法都涉及到了,可以根据你的需要做修改,当然首先要充分地理解他。

4、遇到不太容易理解的,或有问题的,多和别人交流一下,从中可以得到不同的思路。

提前给西门子和坛子里的专家们拜年了!

1.自由口通信基本概念(1楼——5楼)

quote:

以下是引用LaoHuai在2010-12-24 08:29:48的发言:

quote:

以下是引用happy Julia在2010-12-23 21:58:54的发言:

以前很少用自由口通信,但项目里要用呀,正在学习,就接到邀请了。

请教各位大侠:S7-200自由口能支持的最高速率是多少呀,我希望通信能快点。还有它的数据位、停止位是几位呀,我好确定能和什么样的设备通信呀。

最高波特率是115200BPS,但需要1.2或者以上版本的CPU。

数据位可以是7位或8位

停止位是固定的1位。

quote:

以下是引用300小小生在2010-12-23 13:52:59的发言:

300也可以实现与上位机自由通讯的,S7-200 自由口通讯是基于RS485 通讯基础的半双工通讯,因此,发送和接收指令不能同时执行。这点有点不好,在300里可以422通讯,但最好是PLC发送不要连续发送,而接收倒没事。我有次在调试的时候发现上位机发了任务后,PLC设备要过好长一段时间才去执行,后来请教了老师傅,老师傅说把发送端加个间隔时间就好了

以下是引用鼠老爹在2010-12-31 15:59:24的发言:

不管是什么通讯,传送的都是二进制代码。ASCII码与二进制协议的区别在于代码所表示内容的方式不同。

如果使用ASCII代码,则数据不能直接用于数学运算,而必须转换成普通的二进制代码。这样会加重程序负担。但是ASCII代码用于通讯有一个好处,起始字符与结束字符比较容易确定和判别,它们一般不会出现在数据区。而用二进制代码通讯,数据无需转换即可直接使用(高低位字节可能需要交换),PLC的负担较小。但是起始字符和结束字符经常会与数据重复。因此,用二进制代码通讯,通常是靠字符数和定时器来确定接收终点,主从站之间的步调协调非常重要。

以下是引用Am_Programer在2010-12-27 15:48:59的发言:

西门子S7-200系列PLC支持自由口通信协议。所谓自由口协议是指通过用户程序控制CPU主机的通信端口的操作模式来进行通信。用这种自由口模式可以用自定义的通信协议连接多种智能设备。自由口模式支持ASCII和二进制协议。

在自由口模式下,主机处于RUN方式时,用户可以用相关的通信指令所编写的程序控制通信口的操作。当主机处于STOP方式时,自由口通信被终止,通信口自动切换到正常的PPI协议操作。

自由口通信指令包括:XMT,自由口发送指令;RCV,自由口接受指令。用特殊标志寄存器SMB30(端口0)和SMB130(端口1)的各个位设置自由口模式,并配置自由口通信参数,如波特率、奇偶效验和数据位。

发送指令(XMT)和发送中断:发送指令允许S7-200的通信口上发送最多255个字节,发送中断通知程序发送完成。

接受字符中断:接受字符中断通知程序通信口上接受到了一个字符,应用程序就可以根据所用的协议对该字符进行相关的操作。

接受指令(RCV):接受指令从通信口接收到整条信息,当接收完成后产生中断通知应用程序。需要在SM存储器中定义条件来控制接收指令开始和停止接受信息。接受指令可以根据特定的字符或时间间隔来启动和停止接受信息。接受指令可以实现多数通信协议。

自由口通信功能的用途:

1. 通过RS-232或RS-485串口连接多种智能仪表或RTU,根据智能仪表或RTU 定义的通信协议编写用户程序与智能仪表或RTU通信。

2. 使用USS协议与西门子MicroMaster系列变频器通信,STEP7-Micro/WIN提供USS协议库,S7-200 CPU是主站,变频器是从站。

3. 创建用户程序来模拟另外一种网络上的从站器件。例如S7-200的用户程序模仿一个Modbus从站。STEP7-Micro/WIN提供Modbus协议库。

4. 采用自定义通信协议与PC通信。PC上的应用软件可以采用此方法方便的访问S7-200的数据。这是第三方软件访问S7-200PLC比较简便,廉价的方法。

对于自由口通讯,西门子的很多资料都做了比较详细的介绍,其中还包含了大量的例子程序。由于通讯的不可见性,很多人还是不能很好的掌握,我建议大家:1、理解什么是通讯、什么是串口、什么是232、什么是485?没有过硬的硬件知识是不可能做出通讯的,你连线都不知道怎么接,怎么调试你的程序?

2、仔细阅读西门子关于通讯的资料,不需要多只需要精,因为各种版本的资料基本是一样的,关键就是SMB30、SMB86、87、88、89、SMW90、92、SMB94自己控制通讯过程需要SMB2,把这些弄明白了,才有可能做出通讯程序

3、使用PC的通讯软件协助调试,有了PC的通讯软件可以看见通讯过程中的数据,能够更方便的调试程序

4、理解各种通讯协议。大家要注意串口通讯和协议是2码事,不论是PPI、MODBUS还是USS它们都有自己的协议规范,根据规范来写你就可以实现这种通讯。只不过PPI是不公开通讯协议的,没有办法写而已!

最后建议大家自己做通讯,起码会做!至于用不用自己做就要根据你的实际情况了,西门子提供的库也是很方便的!

以下是引用yanxiao在2010-12-24 13:50:10的发言:

我看过不少问S7200通讯问题的贴子,觉得很多问题并不是S7200的,而是串行通讯的共性问题,也就是对串行通讯本身概念的认识问题。下面我来谈谈在我的记忆中关于串行通讯的一些认识。

1、串行通讯只有一个传输通道,每个时刻只能表达一种状态。不管什么介质,不管是什么信号,我们用1表示一种状态,用0表示另一种状态。

2、只用1和0两种状态,是不能表达更多信息的。好在有一个物理量,对每个系统来讲是统一的,那就是时间。我们现在很容易做到不同系统之间的定时误差控制在PPM数量级。1和0在时间上进行有序的组合,就可表达近乎无限的信息。

3、任何一个信号,如果不赋给它一些特点的意义,实际上没什么用。两个系统要通过信号交换信息,必须对信号有一个共同的约定,这就是我们通常所说的协议。

4、最基本的协议是物理层面的(那个OSI的七层协议模型,第一层就是物理层协议)。RS232、RS48

5、RS422,这些是物理层面的一些协议。

5、我们现在要谈的是异步串行通讯。异步,发达方和接收方之间,没有额外的通道来传送信息何时传送与接收。每个信息单元的起止时间,发送方编在信息中,由接收方自已解码并同步。

6、好。现在来讲一下传送一个字节的过程。在没有传送信息时,传输线处于空闲状态。规定:空闲状态为1。发送方(TX)准备发送,驱动传输线让它由1变为0,并持一位的时间长度,我们把这一位叫做起始位。接收方(RX),检测到传输线由1变0,意味着可能有信息要传了,RX就持续检测,以验证这个0是不是持续了规定的一位时间长度,若是个合法的起始位,就按约定的定时方式,把后续的传输线状态,接收为1个字节。TX在发完起始

位后,就发字节中的第一个位 (bit),并依次把字节中的所有位发完,每bit均持续相同的一位时长。然后再发校验位(如果约定发/收方都采用的话)、停止位。

7、停止位,这个要说一下。我们知道起始位是0,而这个停止位,规定是1,和传输线的空闲状态1是相同的。停止位规定的时长比较乱,有1位停止位(也就持续时间占1个位长)、1.5位、和2位停止位,其它时长的停止位好象没见过。停止位的作用,其一是作为一字节单元的成员,给接收方定时用的,也就是下一个字节,在停止位之后才开始。另一个作用,可供检查字节传送的完整性。因为停止位是规定为1状态的,若在停止位的时间里测到了非1状态,表示这个字节传送有问题,有可能被接收方丢弃,传送失败。

8、若收发双方的停止位不相同,怎么办?这个在论坛上经常有人问。好,我们来分析一下。若TX是2个停止位,RX要求是1个停止位,很好,TX多发的一个停止位,会被RX看作是空闲状态(也可认为是字符间隔),没有任何问题。若反过来,TX是1个停止位,RX要求是2个停止位,有问题吗?一般问题是很大的,但也有可能可以正常通讯。这要看TX是怎么发字节的。有些系统,硬件上,发送电路比较简单,没有缓冲机构,一个字节必须完整发送后,才准备下一个字节的数据,而这个准备需要花一些时间的,这就给传送的时序上,停止位之后,有了空闲时间,相当于停止位得到了延长。所以我曾经发过一个贴子说,

S7200的发送改为单字节发送,每个字节之间有意插入一些延时,人为造成空闲时间,以充当停止位,但这个方法说归说,我并没有试过。可惜的是,现在的系统,硬件都做得很完美了,包括S7200,TX是有缓冲的,在一个字节还未发完前就可以接受下一个要发送的字节,硬件上保证一个字节发完后可以立即启动下一个字节发送,前后两字节间除了停止位,没有额外的间隙,这种情况下,接收方就要命了,RX认为还在收停止位时,下一个字节的起始位就来了,没办法完整接收,通讯就失败了。

9、波特率。两边设为一致就可以了。波特率不一致,铁定不能通讯。但允许有少量的误差。停止位实际上还用来调节这个误差的。比如1个停止位,RX并不死板要求停止位是完整的1个位时长,实际只要停止位超过0.5个位长就算是合格了。波特率,就是每秒最快能传送的位数,包括了起始位、停止位这些辅助位。实际每秒能传送的最快字节数,要看这些辅助位的多少。比如一个11位结构的字节单元:1起始位+8字节位+1校验位+1停止位,字节最快传送速率为band/11。好象还有一个概念,叫比特率,也就是有效的位传送速率,比特率=8* (band/11),也就是比特率比波特率要小的。

10、RS232的TX和RX是两根独立的线,收/发可以同时进行,所以叫作全双工异步串行通讯。按我们日常两人交谈的经验,总是A说B听,当B要说时,A就停下来听B说。如果A、B同时说,这是吵架,要达到相互交流就难了。同样,通讯若同时收发,一般人会白白死掉很多脑细胞而写出的程序通讯效果还是很差。所以,即使RS232能双向同时,一般使用时也是收、发不同时的。

11、RS485。RS232不错了,但局限性大大的。RS485收发同线,允许多少

RS485并联使用,电气采用差分传送信号,可以抗干扰。S7200就属于RS485。RS485设备同一时间只能发或再改,收发是分时的,所以叫做准双向。尽管

S7200中可以同时缓冲8个NETR和NETW,实际在RS485层面,还是一个一个分时完成的(由系统程序根据PPI协议协调)。RCV和XMT

完全由用户程序控制,你就不能同时让两个都执行,否则就是哄抢资源而被

S7200当成错误处理。

12、RS422,介于RS232和 RS485。RS422和RS232一样收、发线独立,但电气上采用和RS485一样的差分信号。所以RS422能多机通讯,比RS232传得远,但比 RS485浪费硬件资源。RS422只要软件上采用准双向的规则,通过发收线合并,可以简化为RS485,和RS485设备通讯。但RS485却不能复杂化成RS422使用。

以下是引用yanxiao在2010-12-31 16:00:57的发言:

再谈一个于关通讯效率:

这里的通讯效率问题,针对主站。从站,一般根据主站的请求,及时发回应答就行了,不存在效率问题。

当主站要同多个从站通讯时,就有一个效率问题。以modbus-rtu为例。

1、定时轮询。这恐怕是最原始的方法,也是效率最低下的。比如1秒钟轮询一个站,如果3个从站,要3秒才轮到1次。

2、高效的轮询应该根据协议的定时来调整,尽量挤掉不必要的延时。modbus-rtu,3.5个字节传送时间作为帧间隔,但是从站的回应时间没有标准规定,要先问清楚。一般的仪表,回应时间都是很短的,几十ms内都会有回应,你可以把回应超时设在100ms。当然仪表能提供这个超时参数是最好了。

当主站发完请求帧后,立即进入接收状态,随时准备接收从站的回应。但若到达超时时间还未收到,则放弃继续接收,认为从站无响应,进入下一从站的通讯。

3、如果3个从站只有1个在线上,按理说是通讯速度是最快的,但如果不采取一些策略,则通讯速率会变成最慢的。轮询一个离线的从站,通讯要等到超时才结束,这肯定比在线的从站回应要慢得多,因此大部分时间浪费在离线的从站上了。策略是为每一个从站配置1个在线状态标记位,当从站有成功回应的,标记位=1,表示在线,若该从站连续N次(2次)没有回应或出错,置标记位=0,表示离线。

对于在线的从站,按正常顺序轮询,而离线的从站,则每隔一定时间或每隔一定的轮询周期,发一个请求给它,若有回应且正确,则置标记位为1,认为该从站已回到在线状态,若没有回应或出错,则继续保持离线状态。这样,可以把花在离线从站的通讯时间,控制在一个合理的范围。

以下是引用鼠老爹在2011-01-01 23:46:42的发言:

yanxiao的方案很在理,我做PC与PLC通讯所采用的策略基本如此。当时并不在乎效率,而是为了监视PLC的状态。因为下位机的开启是随机的。

在PLC与第三方仪表的通讯中,我还没有这样做过。在我的理念中,只有实时性要求不是很高的场合,与第三方仪表之间才会采用通讯的方式交换数据。因为第三方仪表通常只能作为从站,等待PLC的数据请求,实时性无法得到保障。因此,我认为PLC在通讯上的效率已经无所谓了。

就像现在正在做的一个项目,PC连着数台PLC,每台PLC要轮询16台仪表的32个数据,波特率只能是2400(其它波特率不太容易匹配),每台PLC还要同时处理16个模拟量,下位机分布面积很大。考虑通讯的可靠性,PLC每2秒钟问一个仪表。这样走一圈就需要半分钟。选择通讯是因为这些数据本身的变化速率很慢,且不需要控制,只要监视记录就行了,无需考虑实时性。用户甚至提出每5分钟读一次数据。考虑到PC的屏幕上等待5分钟跳一次数据对操作者实在是一种折磨,还是把轮询的周期定在1分钟(因为想偷懒,暂时还不想进一步缩短周期)。定时也没有什么精度要求,直接用SM0.4的上升沿来触发。

在这种情况下,不在乎下位机是否在线对通讯效率的影响,而是在乎下位机状态是否能在监视终端的PC上显示出来,避免无效数据被压入数据库。

yanxiao为大家提供了一种逻辑方法,若用户有此类要求,不妨一试。

以下是引用一粒尘在2010-12-29 15:57:27的发言:

下面是我从MICRO/WIN帮助文件里改的一段自由口通信程序,实现接收到后(结束字为H0A),再发回去。

1、补充了发送完成中断启动接收服务程序

2、增加了模式开关切换通信口的模式,当开关切换由RUN切换到TERM时,为PPI从属模式;当开关由TERM切换到RUN时,P0口为自由口模式。

3、上一条有局限性,在用软件启动和停止PLC时,P0口初始化为自由口,不论PLC模式开关是在TERM还是RUN位置

程序如下

ORGANIZATION_BLOCK 主程序:OB1

TITLE=程序注释

BEGIN

Network 1 // 主程序

LD SM0.1 // 首次扫描时,

MOVB 16#09, SMB30 // 初始化自由端口:

// - 选择9600波特

// - 选择8个数据位

// - 选择无校验

MOVB 16#B0, SMB87

// - RCV被启用

// - 检测到信息字符结束

// - 将空闲行条件检测为

// 信息开始条件。

MOVB 16#0A, SMB89 符)。

MOVW +5, SMW90

MOVB 100, SMB94

ATCH INT0, 23

ATCH INT2, 9

ENI

RCV VB100, 0 区的接收服务

Network 2

LD SM0.7

// 初始化RCV信息控制字节: // 将信息字符结束设为hex OA(换行 // 将空闲行超时设为5毫秒。 // 将最大字符数设为100。 // 将中断附加在接收完成事件上。// 将中断2附加在传送完成事件上。 // 启用用户中断 // 为端口0在VB100位置启用带缓冲 //PLC上模式开关状态: //"RUN"时,SM0.7=1

//"TERM"时,SM0.7=0

EU

O SM0.1

S SM30.0, 1

R SM30.1, 1 //[SM30.1 SM30.0]=[0 1]为P0口为自由口通信

RCV VB100, 0 //切换到自由口后,先开接收服务

LD SM0.7

ED

R SM30.0, 2 //[SM30.1 SM30.0]=[0 0]为P0口为PPI从属模式

END_ORGANIZATION_BLOCK

INTERRUPT_BLOCK INT_0:INT0

TITLE=中断程序注释

BEGIN

Network 1 // 中断0

// 接收完成中断例行程序

LDB= SMB86 16#20 // 如果接收状态显示接收结束字符,

MOVB 10 SMB34 // 则附加一个10毫秒计时器,

ATCH INT_1 10 // 触发传送

CRETI // 并返回。

NOT

RCV VB100 0 // 如果因任何其他原因接收完成,

// 则开始新的接收。

END_INTERRUPT_BLOCK

INTERRUPT_BLOCK INT_1:INT1

TITLE=中断程序注释

BEGIN

Network 1 // 中断1

// 10毫秒计时器中断

LD SM0.0

DTCH 10 // 分离计时器中断

XMT VB100, 0

Network 2 // 网络标题

END_INTERRUPT_BLOCK

INTERRUPT_BLOCK INT_2:INT2

TITLE=中断程序注释

BEGIN // 将信息传送端口0中的用户

Network 1 // 网络标题

LD SM0.0

RCV VB100, 0 //准备接收

END_INTERRUPT_BLOCK

以下是引用LaoHuai在2010-12-27 23:04:36的发言:

quote:

以下是引用happy Julia在2010-12-27 21:30:45的发言:

在这里真是受益非浅呀。

可还有许多不明白的,发送指令XMT很容易啦,可是接收指令RCV怎么那么多起始和结束条件。看的我都晕了,各位大侠能给我简单讲讲吗,大概是什么意思?我应该选择什么样的起始和结束条件呀?

条件多,给你选择的就多。再看几遍就能明白了。

如果觉得RCV麻烦,那就用字符中断方式接收数据,只要连接一个中断就可以了,但要一个一个收。

这个问题说起来和理解起来确实挺让人头疼的,但个人认为这是个非常好的问题,如果能把这部分理解清楚了,对于S7-200自由口的应用应该有很大的帮助。这里大概讲一下自己的理解,其他的大侠们可以补充和更正:

以接收结束消息方式为例,通信伙伴的数据是一帧一帧发送的,比如通信伙伴每隔 100ms 发送一帧 01 02 03 04 05 给S7-200,S7-200接收这些数据,那么我们有几种方法可以正确接收到这些数据:

1、指定空闲线时间(可以理解为两帧数据之间的间隔)为50ms(小于发送间隔时间100ms),则当发送完第一帧 01 02 03 04 05 后,启动空闲时间检测,超过50ms即认为一帧数据结束,准备接收下一帧数据。这可以看做是“字符间定时器”结束消息方式。

2、指定接收结束字符为05,则当接收到 01 02 03 04 05 后,即收到结束字符05后,认为一帧数据结束,再接收到的 01 02 03 04 05 认为是下一帧数据,依此类推。这可以看做是“结束字符检测”结束消息方式。

3、指定接收数据长度为5,则收到 01 02 03 04 05 (5个字符)后,即认为一帧数据结束,再接收到的 01 02 03 04 05 认为是下一帧数据,依此类推。这可以看做是“最大字符计数”结束消息方式。

4、其他条件还包括“消息定时器”、“奇偶效验错误”、“用户终止”等结束消息的方式,或者这些条件的组合作为结束消息的方式。

那么在应用中选择哪种结束消息的方式,要具体情况具体分析。这话说起来很空洞,但确实如此,因为自由口通信本身就决定了,不同的通信对象间的数据帧格式(或协议)是设备厂家自由定义的,这就要求事先充分理解通信协议,并在此基础上进行选择。

另外一方面,如果能灵活掌握这部分内容,还可以解决一些实际问题。比如大家都知道数据要接收到接收缓冲区,而接收缓冲区的大小是有限制的(255个字节),那么怎么能够接收到大于255个字节的数据呢(缓冲区溢出后前面的数据被覆盖)?可以考虑设置“最大字符计数”为结束消息方式,将数据分为多个部分依次进行接收。

以上理解没有考虑s7-200的具体应用细节,详细的技术细节可以参考手册说明,仅供参考。

quote:

以下是引用一粒尘在2010-12-30 10:48:22的发言:

quote:

以下是引用半瓶醋在2010-12-29 21:39:10的发言:以接收结束消息方式为例,通信伙伴的数据是一帧一帧发送的,比如通信伙伴每隔 100ms 发送一

帧 01 02 03 04 05 给S7-200,S7-200接收这些数据,那么我们有几种方法可以正确接收到这些数据:

1、指定空闲线时间(可以理解为两帧数据之间的间隔)为50ms(小于发送间隔时间100ms),则当发送完第一帧 01 02 03 04 05 后,启动空闲时间检

测,超过50ms即认为一帧数据结束,准备接收下一帧数据。这可以看做是“字符间定时器”结束消息方式。

请教,这种空闲线时间结束,也能触发接收完成中断吗?SMB87该设置成多少呢?

1.“每接收一个字符会产生一次中断”;

2.“每接收一个结束字符会产生一次中断”。

两个指的不是同一个中断,1是指中断号8、25,2是指中断号23、24

1、“字符中断”指的是SMB2每接收一个字符即产生一次中断。

2、“结束字符中断”指的是接收缓冲区出现指定的结束字符时产生一次中断。

串口通讯协议都是由数个或更多的字符(字节)组成一帧,每个字符都有各自特定的意义。

对 S7-200来说,接收到的每个字符都要从SMB2中过一遍。因此对于简单的通讯协议,可以利用SMB2的字符接收中断逐个读取字节,并排列成一个信息帧。

但是这样的做法有个缺陷,即SMB2不断地发出中断请求;如果信息帧较长,处理一次所占用的资源较多。一旦出现中断排队,不仅影响其它的程序运行,还有可能影响通讯的准确率。而采用RCV指令的结束字符中断,可以等待通讯的信息帧全部接收完毕(数据保存在接受缓冲区内)再一次性处理这些数据。quote:

以下是引用LaoHuai在2010-12-24 11:42:19的发言:

我来发几个SMB2的例子(特别适合初学者):

SMB2为自由口接收字符的暂放区,从端口0或端口1接收的每个字符都放在这里。

SMB2只能存放一个字节字符,而对方发送的一帧可能是很多字符,所以在接收到下个字符之前,应该在中断里将接收到的字符移走。

每接收一个字符会产生一次中断,端口0产生中断事件8,端口1产生中断事件25。

例1:通讯方法(用串口调试软件)控制PLC的输出:

PLC写入如下程序:比如向PLC发1时,Q0.0亮,发2,那么Q0.1亮,发255,那么从Q0.0到Q0.7都亮,发送0,则都不亮。

LD SM0.1

MOVB 9, SMB30

ATCH INT_0, 8。

ENI

INT_0:

LD SM0.0

MOVB SMB2, QB0

用串口调试软件向PLC发1时,Q0.0亮,发2,那么Q0.1亮,发255,那么从Q0.0到Q0.7都亮,发送0,则都不亮,你可以试试。

串口调试软件设置:9600波特率,数据位8,停止位1,无奇偶校验。

例2:如果有2个PLC,那么将两个通讯口(PORT0)3 3接,8 8接。如果只有一个PLC,那么用串口调试软件当主站也可以。

主站程序:向从站发送4个字节的数据。

网络1:

LD SM0.1

MOVB 9, SMB30

MOVB 4, VB0

MOVB 1, VB1

MOVB 2, VB2

MOVB 3, VB3

MOVB 4, VB4

网络2:

LD SM0.5

EU

XMT VB0, 0 //

从站程序1:

MAIN:OB1

LD SM0.1

MOVB 9, SMB30

ATCH INT0, 8

ENI

INT_0:INT0

LD SM0.0

每秒发送一次

MOVB SMB2, VB10

ATCH INT1, 8

INT_1:INT1

LD SM0.0

MOVB SMB2, VB11

ATCH INT2, 8

INT_2:INT2

LD SM0.0

MOVB SMB2, VB12

ATCH INT3, 8

INT_3:INT3

LD SM0.0

MOVB SMB2, VB13

ATCH INT0, 8

如果主从站同时启动,或者从站启动比主站启动早,

VB11=1,VB12=2,VB13=3,VB14=4.

如果主站先发送,那么VB11就不一定是1了,可能是2或3或4。从站程序2:那么

MAIN:OB1

LD SM0.1

MOVB 0, VB10

MOVB 9, SMB30

MOVD &VB10, VD80

ATCH INT_0:INT0, 8

ENI

INT_0:INT0

Network 1

LD SM0.0

INCB MB10

MOVB SMB2, *VD80

INCD VD80

Network 2

LDB= MB10, 4

MOVB 0, MB10

-D +4, VD80

这个例子只是比上个例子少了3个中断而已。从站程序3:

MAIN:OB1

LD SM0.1

MOVB 9, SMB30

ATCH INT0, 8

ENI

INT_0:INT0

Network 1

LDB<> SMB2, 1

CRETI

Network 2

LD SM0.0

MOVB SMB2, VB10

ATCH INT1, 8

INT_1:INT1

LD SM0.0

MOVB SMB2, VB11

ATCH INT2, 8

INT_2:INT2

LD SM0.0

MOVB SMB2, VB12

ATCH INT3, 8

INT_3:INT3

LD SM0.0

MOVB SMB2, VB13

ATCH INT0, 8

如果1是起始字符,那么在中断0里加个判断,就不会发生接收数据错位的问题。

以下是引用LaoHuai在2010-12-23 11:45:24的发言:

我觉得做自由口通讯时容易出现的几个问题:

1 0009 端口0中同时执行XMT/RCV

000B 端口1中同时执行XMT/RCV

经常有人问,程序里只发送(XMT),怎么会出现同时执行XMT/RCV呢?

其实这个有4种可能:

发送没结束,又执行发送

接收没结束,又执行接收

发送没结束,又执行接收

接收没结束,又执行发送

有3种解决方法:

a 用沿来执行。

b 在中断程序里来执行。

c XMT用 SM4.5/ SM4.6来执行,RCV根据SMB86的条件来执行。

2 发送结束可以(应该)立即执行接收,但接收结束不能立即发送,应该延时发送。

3 用字符中断方式接收数据时,中断程序应该足够短,否则会丢数据,中断程序执行的时间应该小于传送一个字节数据所需的的时间。

以下是引用鼠老爹在2010-12-31 12:53:40的发言:

手册上给出的一些自由口通讯示例,S7-200多以从站的面目出现。因此在逻辑上,PLC等待网络上的数据请求,再发送应答数据;发送完毕后再次启动接收。如果PLC作为主站请求第三方仪表的数据,且使用的是自定义通讯协议在编程的时候会遇到一些看起来很奇怪的现象。以下是我在编通讯程序时遇到的问题和解决方法:

1、刚开始,按照一般的程序逻辑设置使用XMT和RCV指令。对仪表的轮询都很正常,没有异常情况发生。自以为程序走通了。

2、偶然切断了个别从站(在现场这种情况是很普遍的),发现整个通讯全部歇菜了。重启PLC,头几台仪表的通讯正常,但是到了被切断的从站又OVER了。

3、检查PLC的状态信息,看不出异常。监控RS485总线,发现走过了空站号后PLC的XMT发送不出信息。

4、于是用VB写了一个从站的模拟程序与PLC通讯。从监控上看出,从站有应答,RCV正常处理接受信息后,XMT的发送没问题。而从站没有应答,RCV始终在等待,XMT便无法发送信息。

5、因此PLC端必须考虑终止接收。反复使用了几种方法,最终选用了定时关闭接受功能的方法。

6、在程序的初始化中配置通讯口和接收控制参数,然后将SM87.7(SM187.7)复位。

7、XMT执行后将SM87.7(SM187.7)置位,启动接收以及一个定时器。

8、无论有否应答,都由定时器去处理信息并关闭RCV功能,等待下一个通讯。

9、 RCV指令在主程序中由SM0.0使能。这点很重要。因为SM87.7(SM187.7)被修改后,必须执行一次RCV指令才能启停接收功能,所以RCV 作为“指令”始终被执行不会影响整个程序的逻辑关系,且程序看上去也简洁,其它地方只要操作SM87.7(SM187.7)即可。

另外,在和一些集成了RS485端口的仪表做通讯时,发现波特率的匹配上会有些问题。主要原因还是对主频进行分频后时钟脉冲引起的误差。这点上西门子的PLC适应性比较强,而合信的PLC适应性差一些。

有网友问到“PLC能否同时与不同波特率的对象通讯”的问题,窃以为可以解决。SMB30(SMB130)随时可以赋值,也就是说用户可以即时修改自由口的配置。按此逻辑,只要在XMT和RCV使能之前定义SMB30(SMB130)就可以了。这一点与VB对COMM口的配置是一样的;如果程序中没有操作 COMM配置的指令,VB就按控件特性栏中的配置执行;如果程序中有配置指令,就按程序的配置指令执行。

以下是引用困惑迷茫求助在2011-01-04 09:51:24的发言:我曾经使用过自由口通信,与36个仪表同时通讯,正常情况下通讯很好,可是只要其中一个仪表出现通讯中断后,整个通讯就全部崩溃,无法执行,请问那位高手能指点下,为什么会出现该问题

与多个设备进行通信时这时常见的问题,主要是因为在程序上缺少对错误时的考虑,也就是只考虑了在正常情况下怎么去进行轮询,而忽略了当伙伴没有响应或响应数据不对时的处理。错误处理的机制和方法在很大程度上影响着通信的质量和效率,而我们往往不注意这方面,高级的开发者一般习惯先考虑错误处理:)。错误处理的方法在于应用者的需求,对于简单的应用可以对错误进行相

对简单的处理,比如在规定的时间内,某个伙伴没有响应时直接跳过对这个站的请求。

这里大家也不妨分享一下自己在错误处理方面经常所采用的方法。

以下是引用LaoHuai在2011-01-11 13:42:41的发言:

PLC做主站的时候,不管PLC连接的是单从站还是多从站,主站程序都应该考虑到从站会发生故障,从站故障有两种,一种是有故障,但不影响和主站通讯,另一种是有故障,不能和

主站通讯,例如从站掉电,通讯线故障或者从站本身故障导致的不能和主站通讯。

对于后者,主站在发送后,从站是不会回复数据的,主站不能等,而应该结束RCV接收状态,然后发送,那么为什么和如何结束RCV接收状态呢?

一为什么要结束RCV接收状态呢?

发送指令XMT将数据发送出去就完事,而接收RCV不一样,一次完整成功的RCV过程需要以下步骤:

1 使能位:SM87.7=1/SM187.7=1,执行RCV的时候会检查该位

2 执行RCV

3 等待消息起始条件

4 接收信息

5 等待消息结束条件

6 退出接收状态

RCV指令启动后并不一定就接收消息,如果消息起始条件没有达到,那就一直处于等待接收的状态;

如果消息始终没有开始或者结束,通信口就一直处于接收状态。这时如果尝试执行XMT指令,就不会发送任何消息。

所以要结束接收RCV接收状态后才能执行XMT。

二:如何结束RCV接收状态?

手册上给出6种结束条件:

1.结束字符检测

2.字符间计时器

3.信息计时器

4.最大字符计数

5.校验错误

6.用户终止

方法1:前4种条件在从站发生通讯故障后就失效了,必须要配合用户终止

一般执行XMT后,在发送完成中断里执行RCV,同时启动定时中断或者启动定时器或者执行开始间隔时间BITIM,计时时间到复位使能位SM87.7/SM187.7,同时执行RCV,这样结束RCV指令,比如定时中断里发送:

LD SM0.0

R SM87.7, 1

RCV VB0, 0

S SM87.7, 1

LD SM0.0

DTCH 10

LD SM0.0

XMT VB100, 0

方法2:设置:SMB87=16#9C, SMW90/SMW190=0,SMW92/SMW192=x

执行RCV指令x毫秒后自动结束接收状态。

如果用的是字符中断方式接收信息,那么将中断分离后即可发送

DTCH 8

XMT VB100, 0

很多人说某个从站故障后,整个通讯就断了,那么问题可能就出在这里。

以下是引用happy Julia在2011-01-14 09:46:14的发言:

看来用过自由口通信的高手真多呀,各位大侠能不能分享一下在实际工程项目中都遇到了哪些问题,都是怎么解决的呀,也好让我们这些初次使用的以后少走弯路,遇到问题也知道如何处理了。先谢谢了。

顶,支持175楼,如果大家分享的实际问题越多,我们才会收获更大呀。

这里说一下我曾经遇到的问题:

1.刚做自由口编程时,一下载下去,编程软件就无法和CPU通信了,后来打到停止状态,CPU才恢复PPI,可以正常监控,下载了。

2.还有一次自由口用RCV接收,接收到的数据总是一部分,不全,反复检查做实验,才发现原来是结束的定时器时间设短了,导致数据没有接收完,RCV就结束了,增大了时间,一切就OK了。

以下是引用大个笨熊在2011-01-20 14:10:36的发言:

用结束字符作为结束条件的时候,如果与设备的通信断了,CPU就会停滞在接受状态,之后的发送也不成功了,通讯也彻底断了。

后来别人教我在发送前面用复位SMB87.7结束发送就好了。

西门子PLC的以太网通讯及OPC通讯介绍

西門子PLC的以太網通訊及OPC通訊介紹 1.以太網通訊 CAL有很多地方用到以太網通訊,L2,焊機與PLC間通訊等,表檢的成像原理為:在金屬板帶表面沒有缺陷時,反射的光在明視場下很強,而在暗視場的散射光很弱;如有缺陷,則明視場的光強減弱,而暗視場的光強增加。根據這個原理,通過檢測攝像頭裡光強的變化,可檢測出材料表面上的一些物理缺陷。CAL 僅僅用到了它的檢測破孔這一個功能。 下面再來看西門子的以太網通訊,使用以太網通訊處理器可能的連接方式: 我們可以看到不同的通訊方式在PLC裏面需要調用不同的功能塊。 像S7-Connection方式連接的,需要調用SFB12/FB12等來讀取發送數據息,而TCP等連接的,需要FC5等來讀取發送數據。 下面簡單介紹下每種連接特點: Send/receive: iso 連接:ISO傳輸服務通過組態連接提供SEND/REVEICE interface服務在以太網上傳輸數據,此時服務使用的是ISO協議。此通訊速度較快,可是不能實現網絡路由,只能用於局域網通訊。 Send/receive: iso-On-TCP 連接:突破了局域網的限制,可以路由到公網上去;數據重發功能和基於第2層的CRC校驗保證了數據傳輸的完整性和可靠性。 Send/receive: TCP 連接:TCP/IP提供面向連接的數據通訊,數據並不會被打包因而並沒有數據包確認位,在這TCP服務提供了統一的sccket接口到每一個終

端,因而數據塊可以整體發送,這裡區別於iso-On-TCP 連接。 Send/receive: UDP連接:UDP提供簡單數據傳輸,無需確認,與TCP同屬第4層協議。與TCP相比,UDP屬於無連接的協議,數據報文無需確認。 S7通信:S7協議是西門子S7家族的標準通信協議,使用S7應用接口的通信不依賴特定的總線系統(Ethernet,PROFIBUS,MPI)。接口位於ISO-OSI參考模型的第7層,下面圖模型各層的通信方式。 那麼根據表檢的通訊協議規定: Transmission mode:TCP protocol (not S7), PLC will always be the client , Gauge will always be the server. Byte order: use PLC Byte Order ( not x86 byte order ). 我們建立通訊就需選擇send/receive中的TCP連接。 因此,在PLC中做如下配置: 1.打開硬件配置->點擊網絡組態:

西门子S7-1200与S7-300-PLC的以太网TCP-及ISO-on-TCP通信

1.概述 1.1 S7-1200 的PROFINET 通信口 S7-1200 CPU 本体上集成了一个PROFINET 通信口,支持以太网和基于TCP/IP 的通信标准。使用这个通信口可以实现S7-1200 CPU 与编程设备的通信,与hmi触摸屏的通信,以及与其它CPU 之间的通信。这个PROFINET 物理接口是支持10/100Mb/s的RJ45口,支持电缆交叉自适应,因此一个标准的或是交叉的以太网线都可以用于这个接口。 1.2 S7-1200支持的协议和最大的连接资源 S7-1200 CPU 的PROFINET 通信口支持以下通信协议及服务 ? TCP ? ISO on TCP ( RCF 1006 ) ? S7 通信(服务器端) 通信口所支持的最大通信连接数 S7-1200 CPU PROFINET 通信口所支持的最大通信连接数如下: ? 3个连接用于HMI (触摸屏) 与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可以同时支持以上15个通信连接,这些连接数是固定不变的,不能自定义。TCP(Transport Connection Protocol) TCP是由RFC 793描述的标准协议,可以在通信对象间建立稳定、安全的服务连接。如果数据用TCP协议来传输,传输的形式是数据流,没有传输长度及信息帧的起始、结束信息。在以数据流的方式传输时接收方不知道一条信息的结束和下一条信息的开始。因此,发送方必须确定信息的结构让接收方能够识别。在多数情况下TCP应用了IP (Internet protocol) ,也就是“TCP/IP 协议”,它位于ISO-OSI 参考模型的第四层。 协议的特点: ? 与硬件绑定的高效通信协议 ? 适合传输中等到大量的数据(<=8192 bytes) ? 为大多数设备应用提供 –错误恢复 –流控制 –可靠性 ? 一个基于连接的协议 ? 可以灵活的与支持TCP协议的第三方设备通信 ? 具有路由兼容性 ? 只可使用静态数据长度 ? 有确认机制

西门子以太网通讯设置

西门子以太网通讯 一、功能: S7-200做客户机(主站), S7-300做服务器(服务器) 二、硬件配置: 1.CP243-1 2.CPU224 3.CPU314 4.CP343-1 三、设置步骤: 第一步打开S7-200编程软件MicroWIN,在工具栏中选择以太网向导

第二步读取CP243-1【以太网模块】。注意:PC与S7-200连接正常才能读取到 第三步选择以太网模块

第四步输入【 CP243-1 】的IP地址 192.168.0.50 注意 IP设置与S7-300侧要在同一个网段 第五步配置连接数【最多连接8路】以太网模块要占用地址,建议放在最后插槽连接数:根据实际的连接数配置

第六步 1.选择客户机连接【s7-200为客户机】 2.【03.02】----03:单边通信 02: S7-300CPU模块的插槽号 【10:00】 ----1:固定 0:连接号 00:s7-200CPU模块的位置 3. 输入CP343-1的IP地址【在S7-300的硬件组态中设置】 4. 单击“数据传输”,进入配置窗口。 注意:连接号一定要记住,在编程的时候会应用到

第七步 1.选择向服务器读取数据 2.选择读取数据的大小【最大212个字节】 3.数据的对应关系。【把S7-300“DB10.DBB0开始的10个字节”的数据读取到本地“VB0开始的10个字节”中】 4.配置完后点击【新转输】 注意:传输号要记住,在编程中要应用到

第八步 1. 选择向服务器写入数据 2. 选择写入数据的大小【最大212个字节】 3. 数据的对应关系。【把本地“VB10开始的10个字节”的数据写入到S7-300“DB10.DBB10开始的10个字节”中】 4.配置完后点击确认 注意:传输号要记住,在编程中要应用到

Siemens S CP 以太网模块通讯设置

S7 200 CP243-1以太网模块通讯设置 一、条件与准备 1.带有STEP 7 Micro/WIN32(版本SP1以上)软件的编程设备;本例编程软件版本 为STEP 7 Micro/WIN SP3; 2.一根PC/PPI 电缆、一根以太网直连电缆或交叉电缆; 3.一个CPU22X,符合以下类型要求: CPU 222 REL. 或以上; CPU 224 REL. 或以上; CPU 226 REL. 或以上; CPU 226XM REL. 或以上; 本例为CPU224 REL ; 4.一个CP243-1以太网通讯模块,订货号为6GK7 243-1EX01-0XE0,为新型以太 网通讯模块(相当于之前的CP 243-1 IT :6GK7 243-1GX00-0XE0)。 二、通讯设置 1.启动STEP 7 Micro/WIN SP3编程组态软件 方法一:开始-所有程序-Simatic-STEP 7-MicroWIN STEP 7-MicroWIN,如下图所示: 方法二:双击桌面快捷方式“STEP 7-MicroWIN”图标,如下图所示: STEP 7-MicroWIN 程序启动后,如下图所示: 2.设置通讯方式 用PC/PPI 电缆连接编程设备的USB口及CPU224的COM串口,点击左侧View 视图框内的Set PG/PC Interface图标,如下图所示:

选择PC/PPI cable(PPI),点击Properties,进入属性设置窗口,如下两图所示: 注意Local Connection选项卡里的编程设备接口的设置选择(USB或COM),本例为USB。点击OK按钮确定,回到图5Set PG/PC Interface窗口,点击OK按钮确定,弹出Warning窗口,点击“确定”按钮,完成通讯方式设置。 3.配置CP243-1通讯模块 由于所用的CP243-1以太网通讯模块,订货号为6GK7 243-1EX01-0XE0,是Internet 通讯模块,因此,必须用Internet wizard向导对CP243-1进行配置。 点击左侧Tools图框内的Internet wizard图标,启动Internet wizard配置向导,如下图所示: 或者在项目树视图里选择Wizard-Internet,双击Internet图标,进入Internet wizard配置向导。 Internet wizard配置向导启动后,如下图所示: 点击Next按钮,进入CP243-1以太网模块槽位设置窗口,如下图所示: 可以手动设置,也可以在与CPU建立在线通讯链接的状态下,点击Read Modules 按钮,Internet wizard配置向导能够自动读取联机的CP243-1以太网模块槽位信息,点击Next按钮,进入IP设置窗口,如下图所示: 点击Next按钮进入模块命令字节和通讯链接数量设置窗口,如下图所示: Internet wizard配置向导会自动分配输出地址QB字节给CP243-1模块的命令字节,建议使用默认值,即可无需手动设置,但注意Internet wizard配置向导完成CP243-1模块的配置,同时将CP243-1模块的组态信息下载至CP243-1模块,重新上电生效后,该已分配给CP243-1模块的命令字节QB字节将被占用,即CP243-1模块以后的DO

XBTG与西门子PLC的以太网通讯

触摸屏与PLC的通讯2006-11-13 说明: 本文档描述的内容基于Vijeo designer 在线帮助,归纳了和相应PLC的常用接线方式和接线图,但并不是Vijeo designer的所有通讯方式,所以当本文档的内容没有满足您的需求时,可以参考Vijeo designer的在线帮助以找到更多的通讯方式和更详细的描述。 一.XBTGT 11xx 于 PC机的通讯 (一).与Schneider PLC (二).与 Siemens PLC (三).与 Mitsubish PLC (四).与 OMRON PLC (五).与 Rockwell AB PLC 二.XBTGT 5.7吋以上屏与PLC的通讯 (一).与Schneider PLC (二).与 Siemens PLC (三).与 Mitsubish PLC (四).与 OMRON PLC (五).与 Rockwell AB PLC 三.XBTG于PLC的通讯 (一).与Schneider PLC (二).与 Siemens PLC (三).与 Mitsubish PLC (四).与 OMRON PLC (五).与 Rockwell AB PLC 四.其它相关电缆 1. XBTGT 触摸屏系统恢复串口电缆

一.XBTGT11xx与PLC的通讯 (一).Schneider PLC PLC类型通讯协议通讯电缆需增加部件 Modbus XBTZ9780 或自制电缆图1.1.1 无 Twido Modbus TCP/IP 以太网电缆无 Unitelway XBTZ9780 或自制电缆图 1.1.1 无 Micro Premium Modbus TCP/IP 以太网电缆无图1.1.1 自制电缆接线图

S7400-TCPIP概述本驱动支持西门子的S7系列PLC的以太网TCP协议

S7400-TCP/IP 概述 本驱动支持西门子的S7系列PLC的以太网TCP协议,可以与S7-400PLC 通讯,而且上位机中不需要安装和设置西门子的网络软件包SIMATIC NET和STEP7等软件,不需要Set PG/PC Interface 的支持。 硬件连接与配置 S7-400PLC与组态王通过以太网的方式通讯,通讯之前需要进行如下设置: ?确认计算机中安装有以太网卡,并与PLC 连接到同一网络中。 ?通过Step7编程软件为通讯模块(CP443-1)设定IP地址和子网掩码,并下传到PLC中,如IP地址(172.16.2.72)、子网掩码(255.255.255.0)。 ?为计算机设定IP地址和子网掩码,如IP地址(172.16.2.1)、子网掩码(255.255.255.0)。 ?使用ping 命令,保证能ping 到PLC 站。 组态王设置 1、定义组态王设备 组态王定义设备时请选择:PLC\西门子\S7-400系列\TCP/IP 或者: PLC\西门子\S7-300系列(Profibus)\TCP/IP 2、设备地址 设备地址格式:PLC的IP地址:CPU槽号,如:172.16.2.72:3 说明: PLC的IP地址:即为通过Step7 编程软件为通讯模块(CP443-1)设定的IP地址,详细请查看如何设置PLC的IP地址和子网掩码 CPU槽号:即PLC的CPU模块在机架中的槽号,如下图CPU 414-2DP 的槽号为3。

3、组态王数据词典-IO变量定义1)、组态王中寄存器列表 2)、寄存器特殊说明:

?组态王中定义的寄存器的通道范围是指该寄存器支持的最大范围,实际范围由PLC中的程序确定,如果组态王中定义的寄存器通道范围超出了PLC的实际范围,则在运行时组态王信息窗口会提示(超出范围的)寄存器读失败。 ?组态王中定义的DB寄存器序号、数据类型必须与PLC中定义的保持一致,否则运行系统读上来的数据有可能是错误的。比如,PLC中DB块的定义为: DB1.0(INT),DB1.2(UINT), DB1.4(REAL),DB1.8(BYTE),则在组态王中定义变量时寄存器序号和数据类型对应为DB1.0(SHORT),DB1.2(USHORT), DB1.4(FLOAT),DB1.8(BYTE)。 ?对于BIT数据类型,I Q M寄存器的定义方式为xx.yy, xx为对应字节的通道,yy为其中位的通道,范围0-7;DB寄存器的定义方式为xx.yy.zz,xx为DB 块号,yy为对应块中地址序号, zz为其中位的通道号,范围0-7。 3)、寄存器使用举例:

西门子以太网(S7协议)通讯

西门子以太网(S7协议)通讯 一、概述 西门子支持多种协议,包括DP协议,FMS协议,S7协议,当使用力控通过以太网S7协议访问设 备时,需要安装西门子SIMATIC NET5.0的相应软件。 二、硬件配置 安装网卡 1、硬件安装:请参照西门子说明书,注意地址设置。 2、板卡软件设置:打开PG/PC界面,(“开始”菜单或“控制面板”中),点击INSTALL按钮,弹 出Install/Remove Interface对话框,在Selection的选项中,选择相应的板卡,点击Install 安装。安装完成后,可在控制面板的系统项中检查是否有冲突。 三、通讯配置 运行SIMATIC NET PB soft s7中的COML S7,生成新的.TXT文件 1、在network type中选择TCP/IP 2、在name栏中,键入一个S7 连接名,此名代表一个PLC站点,比如testtcp。 3、在VFD栏中,键入REQ(或VFD)

4、在Remote Addr键入需要访问的PLC的IP地址,比如202.168.0.1。 5、Local TSAP键入1.00(缺省) 6、Remote TSAP为四位16进制数字,中间以“.”隔开。第二位数字表示远程站点的类型:2-OS, 1-PG,0-PS;第三位数字表示PLC的CPU的RACK号,第四位数字表示CPU的SLOT号,一般为:02.02。如下图: 7、在File菜单中,选择 Generate Binary DB As 生成二进制数据库。见下图:

四、网卡的配置 重新进入PG/PC界面。选择相应的网卡为S7ONLINE (STEP 7) -→TCP/IP-→******方式。如下图: 点击Properties弹出Propeities界面: 在SAPI S7 (Protocol)页中,点击Search,查找并选择在COML S7中生成的相应的 *.ldb文件。 图形如下:

S7-1200基本以太网通信怎么使用

S7-1200基本以太网通信使用指南 目录 1.概述 (3) 2.两种协议的特点 (3) 2.1传输控制协议: TCP (3) 2.2基于TCP的ISO传输服务的协议: ISO-on-TCP (3) 3.传输数据长度与协议的应用 (4) 3.1对于TCP协议 (4) 3.2对于ISO on TCP协议 (4) 4.通信连接的参数 (5) 4.1连接描述数据块 (5) 4.2 IP地址 (8) 4.3端口号的分配 (9) 4.4 TSAP结构 (9) 5.回读连接描述参数功能 (11) 5.1更改连接描述中的参数值 (11) 5.2回读各个连接参数的功能 (12) 6.开放式用户通信的指令 (12) 6.1连接建立 (13) 6.2连接参数分配 (13) 6.3启动连接参数分配 (15) 6.4创建和分配连接参数 (16) 6.5删除连接 (17) 6.6 TSEND_C (18) 6.7 TRCV_C (19) 6.8 TCON (20) 6.9 TDISCON (21) 6.10 TSEND (21) 6.11 TRCV (22) 7.S7-1200以太网通信连接数 (22)

1.概述 S7-1200 CPU具有一个集成的以太网接口,支持面向连接的以太网传输层通信协议。协议会在数据传输开始之前建立到通信伙伴的逻辑连接。数据传输完成后,这些协议会在必要时终止连接。面向连接的协议尤其适用于注重可靠性的数据传输。一条物理线路上可以存在多个逻辑连接(8个)。 开放式用户通信支持以下连接类型: ·TCP ·ISO-on-TCP 对于不支持 ISO-on-TCP连接的通信伙伴,应使用 TCP连接。对于诸如第三方设备或PC这些类型的通信伙伴,请在分配连接参数时,为伙伴端点输入“未指定”。 2.两种协议的特点 2.1传输控制协议: TCP TCP是由 RFC 793描述的一种标准协议:传输控制协议。TCP的主要用途是在过程之间提供可靠、安全的连接服务。该协议有以下特点: ·由于它与硬件紧密相关,因此它是一种高效的通信协议; ·它适合用于中等大小或较大的数据量(最多 8K字节); ·它为应用带来了更多的便利,比如错误恢复,流控制,可靠性,这些是由传输的报文头进行确定的; ·一种面向连接的协议; ·非常灵活地用于只支持 TCP的第三方系统; ·有路由功能; ·应用固定长度数据的传输; ·发送的数据报文会被确认; ·使用端口号对应用程序寻址; ·大多数用户应用协议(例如 TELNET和 FTP)都使用 TCP。 2.2基于TCP的ISO传输服务的协议: ISO-on-TCP ISO on TCP是一种能够将 ISO应用移植到 TCP/IP网络的机制。该协议有以下特点:·与硬件关系紧密的高效通信协议; ·适合用于中等大小或较大的数据量(最多 8K字节); ·与 TCP相比,它的消息提供了数据结束标识符并且它是面向消息的;

西门子以太网通讯模块调用

西门子S7300/400以太网连接程序数据交换方法 一、对于343-1的专门以太网连接模块做通讯的项目由于模块支持较多通讯协议,故推荐使 用使用通讯功能块FC5/FC50 和FC6/FC60 编程 ? TCP 连接 ? ISO-on-TCP 连接 (RFC 1006) ? ISO 连接 ? UDP 连接 ? FDL 连接 通讯功能块FC5 “AG_SEND”和FC6 “AG_RECV”的特点 ? FC5 和 FC6 是异步通讯功能块。 ? FC5 和 FC6 的运行需要几个 OB1 周期。 ? FC5 由输入参数 "ACT" 使能。 ?通讯任务结束由“DONE”或“ERROR”指示。 ? AG_LSEND 和 AG_LRECV 可以通过一个连接同时通讯。 ?可以在 SIMATIC_NET_CP 库"CP 300 > Blocks" 里找到通讯功能块 FC5 "AG_SEND" 和 FC6 "AG_RECV"。 首先在STEP7中的NETCONFIG中进行网络配置,设置好IP后,点需要配置连接的PLC,按 添加一个新的网络连接:在选择好伙伴PLC后添加IS0-on-TCP connection协议 然后再对选择好后的协议进行配置,注意下图中标注的地方按默认就可以

再在程序中调用FC5/FC6块,注意在引脚ID和LADDR处填入上面标识处的参数 如果FC5和FC6的块在原程序中已经被占用,新调入的AG_SEND和AG_RECEIVE需重新命名,其中需填入的参数为: ACT—激活该块工作直到ACT信号消失,BOOL变量 ID—网络配置后主机与伙伴机之间的网络地址,特别注意发射、接收块的ID,主机与伙伴机的ID需相同 LADDR—网络配置后生成的特殊标识,WORD变量 SEND/RECV—指针型位变量,表示从该位开始以后的数据数量,以BYTE为单位 LEN—所传送数据长度,10进制数,以BYTE为单位 DONE/NDR—数据发送/接收成功标志位 ERROR—块运行错误标识,显示的是16进制数,根据代码可以查询故障原因 STATUS—状态标识字,表示块运行状态

西门子以太网通讯设置

西门子以太网通讯一、功能: S7-200做客户机(主站),S7-300做服务器(服务器) 二、硬件配置: 1.CP243-1 2.CPU224 3.CPU314 4.CP343-1 三、设置步骤: 第一步打开S7-200编程软件MicroWIN,在工具栏中选择以太网向导

第二步读取CP243-1【以太网模块】。注意:PC与S7-200连接正常才能读取到

第三步选择以太网模块 第四步输入【CP243-1 】的IP地址192.168.0.50 注意IP设置与S7-300侧要在同一个网段

第五步配置连接数【最多连接8路】以太网模块要占用地址,建议放在最后插槽连接数:根据实际的连接数配置 第六步

1.选择客户机连接【s7-200为客户机】 2.【03.02】----03:单边通信02: S7-300CPU模块的插槽号【10:00】----1:固定0:连接号00:s7-200CPU模块的位置 3. 输入CP343-1的IP地址【在S7-300的硬件组态中设置】 4. 单击“数据传输”,进入配置窗口。 注意:连接号一定要记住,在编程的时候会应用到

第七步 1.选择向服务器读取数据 2.选择读取数据的大小【最大212个字节】 3.数据的对应关系。【把S7-300“DB10.DBB0开始的10个字节”的数据读取到本地“VB0开始的10个字节”中】 4.配置完后点击【新转输】 注意:传输号要记住,在编程中要应用到 第八步 1. 选择向服务器写入数据 2. 选择写入数据的大小【最大212个字节】 3. 数据的对应关系。【把本地“VB10开始的10个字节”的数据写入到S7-300“DB10.DBB10开始的10个字节”中】 4.配置完后点击确认 注意:传输号要记住,在编程中要应用到

西门子S7-200以太网通讯解决方案

西门子S7-200以太网通讯解决方案 BCNet-S7PPI用于西门子S7-200以太网编程下载、数据监控,同时支持S7-200 SMART、亿维、合信等PLC。 BCNet-S7PPI直通型:BCNet扩展的DSUB9针母口,可以连西门子触摸屏(西门子文本TD200/TD400、TP/OP)、多主站电缆、通讯板卡; BCNet-S7PPI桥接型:BCNet扩展的DSUB9针母口,可以连非西门子触摸屏,如昆仑通态、威纶、台达、步科等。 功能: 1、支持多主站通讯,不占用通讯口,扩展口可以连触摸屏或其他主站。 2、波特率自适应。 3、自动查询主站地址,显示地址列表。 4、直接安装在PLC的PPI通讯口上,无需外接电源。 5、支持西门子S7以太网通讯驱动,包括MicroWIN、WinCC以及SIMATIC NET等。 6、用户可以按照BCNetS7协议采用高级语言编程(如VB、VC、C#等),实现与S7-200的数据通讯,方便开发生产管理系统。 7、免费提供BCNetS7 OPC服务器。 8、BCNetS7 DX功能,通过简单的配置即可实现在两个PLC之间交换数据。 9、集成ModbusTCP服务器,支持FC1、FC2、FC3、FC4、FC5、FC6、FC16,Modbus 数据区自动映射至S7-200数据区。 10、支持24个以太网TCP/IP连接,允许24台PC同时采集PLC数据。 11、与R-Net 3G/4G系列配合,可以实现设备的远程维护和数据监控。 典型应用:网口编程下载、上位监控、设备联网。BCNet扩展口不占用S7-200的通讯口,可以连西门子触摸屏或非西门子触摸屏。 应用(1):支持西门子以太网驱动,MicroWIN连S7-200时,与连CP243-1类似,S7-200

SIMOTION 工业以太网通信入门要点

1.SIMOTION工业以太网网络介质 西门子工业以太网网络通常使用的物理传输介质为屏蔽双绞线(FC TP)、工业屏蔽双绞线(ITP)和光纤。 1.1 屏蔽双绞线(Fast Connection Twist Pair) FC TP快速连接双绞线用于将DTE快速连接到工业以太网上,配合西门子FC TP RJ45接头使用,连接方式如图1所示: 图1:FC TP电缆与TP RJ45接头 将双绞线按照TP RJ45接头标示的颜色插入连接孔中,快捷、方便地将DTE设备连接到工业以太网上。使用FC双绞线从DTE到交换机最长通信距离为100米(DTE到DTE)。也可以使用普通RJ45接头,为了保证数据传输的可靠性,在无干扰情况下最长通信距离为5米。 RJ-45连接有两种连接方式,交叉连接(如图2所示)和直通连接(如图3所示)。交叉连接用于网卡之间的连接或集线器之间的连接;直通线用于网卡与集线器之间或网卡与交换机之间的连接。Siemens交换机由于采用了自适应技术,可以自动检测线序,故通过交换机可以选择任意一种电缆进行连接。 图2 交叉线连接

图3 直通线连接 SIMOTION 带有RJ45接头,建议使用西门子FC TP和FC TP RJ45接头。 1.2 工业屏蔽双绞线(Industrial Twisted Pair) 屏蔽双绞线如图4所示,它有白/蓝和白/橙两对双绞屏蔽线。外部包有屏蔽层和绝缘层,用于连接有ITP 端口的以太网设备。通过ITP电缆连接的两个设备的最远距离为100米。 图4 ITP电缆结构图 连接ITP电缆的连接头有两种,即9 针或15 针的Sub-D 接头,如图所示5、6:

Siemens S7 200 CP243-1以太网模块通讯设置

S7200C P243-1以太网模块通讯设置 一、条件与准备 1.带有STEP7Micro/WIN32(版本以上)软件的编程设备;本例编程软件版本 为STEP7Micro/; 2.一根PC/PPI电缆、一根以太网直连电缆或交叉电缆; 3.一个CPU22X,符合以下类型要求: 或以上; 或以上; 或以上; 或以上; 本例为; 4.一个CP243-1以太网通讯模块,订货号为6GK7243-1EX01-0XE0,为新型 以太网通讯模块(相当于之前的CP243-1IT:6GK7243-1GX00-0XE0)。 二、通讯设置 1.启动STEP7Micro/编程组态软件 方法一:开始-所有程序,如下图所示: 方法二:双击桌面快捷方式“”图标,如下图所示: STEP7-MicroWIN程序启动后,如下图所示: 2.设置通讯方式 用PC/PPI电缆连接编程设备的USB口及CPU224的COM串口,点击左侧View视图框内的SetPG/PCInterface图标,如下图所示: 选择PC/PPIcable(PPI),点击Properties,进入属性设置窗口,如下两图所示:

注意LocalConnection选项卡里的编程设备接口的设置选择(USB或COM),本例为USB。点击OK按钮确定,回到图5SetPG/PCInterface窗口,点击OK 按钮确定,弹出Warning窗口,点击“确定”按钮,完成通讯方式设置。 3.配置CP243-1通讯模块 由于所用的CP243-1以太网通讯模块,订货号为6GK7243-1EX01-0XE0,是Internet通讯模块,因此,必须用Internetwizard向导对CP243-1进行配置。 点击左侧Tools图框内的Internetwizard图标,启动Internetwizard配置向导,如下图所示: 或者在项目树视图里选择Wizard-Internet,双击Internet图标,进入Internetwizard配置向导。 Internetwizard配置向导启动后,如下图所示: 点击Next按钮,进入CP243-1以太网模块槽位设置窗口,如下图所示: 可以手动设置,也可以在与CPU建立在线通讯链接的状态下,点击ReadModules按钮,Internetwizard配置向导能够自动读取联机的CP243-1以太网模块槽位信息,点击Next按钮,进入IP设置窗口,如下图所示:点击Next按钮进入模块命令字节和通讯链接数量设置窗口,如下图所示:Internetwizard配置向导会自动分配输出地址QB字节给CP243-1模块的命令字节,建议使用默认值,即可无需手动设置,但注意Internetwizard配置向导完成CP243-1模块的配置,同时将CP243-1模块的组态信息下载至CP243-1模块,重新上电生效后,该已分配给CP243-1模块的命令字节QB字节将被占用,即CP243-1模块以后的DO地址将从CP243-1模块的命令字节QB字节的下一字节起用(此地址根据计算CP243-1前面的I/O所占用的Q地址字节来决定。如

S7200SMART通讯问题—以太网设置

一:TCP 协议通讯 (一)S7 200 SMART之间的TCP通讯 TCP是一个因特网核心协议。在通过以太网通信的主机上运行的应用程序之间,TCP 提供了可靠、有序并能够进行错误校验的消息发送功能。TCP 能保证接收和发送的所有字节内容和顺序完全相同。TCP 协议在主动设备(发起连接的设备)和被动设备(接受连接的设备)之间创建连接。一旦连接建立,任一方均可发起数据传送。 TCP协议是一种"流"协议。这意味着消息中不存在结束标志。所有接收到的消息均被认为是数据流的一部分。 S7 200 SMART与之间的TCP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。 图1.开放式用户通讯库 开放式用户通信库需要使用 50 个字节的 V 存储器。 开放式的用户通讯连接资源包括8个主动连接和8个被动连接。 只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。 所需条件: 1、软件版本:STEP 7-Micro/WIN SMART V2.2 2、SMART CPU固件版本:V2.2 3、通讯硬件:TP电缆(以太网电缆) 所完成的通讯任务: 将作为客户端的PLC(IP地址为192.168.0.101)中VB0-VB3的数据传送到作为服务器端的PLC(IP地址为192.168.0.102)的VB2000-VB2003中。

S7-200 SMART 客户端编程 1、设置本机IP地址 在客户端设置IP地址为192.168.0.101 图2.设置IP地址 2、建立TCP连接 调用TCP_CONNECT指令建立TCP连接。设置连接伙伴地址为192.168.0.102,远端端口为2001,本地端口为5000,连接标识ID为1。利用SM0.0使能Active,设置为主动连接。 图3.调用TCP_CONNECT指令

SiemensSCP以太网模块通讯设置图文稿

S i e m e n s S C P以太网模 块通讯设置 文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

S7 200 CP243-1以太网模块通讯设置 一、条件与准备 1.带有STEP 7 Micro/WIN32(版本 3.2 SP1以上)软件的编程设备;本 例编程软件版本为STEP 7 Micro/WIN V4.0 SP3; 2.一根PC/PPI 电缆、一根以太网直连电缆或交叉电缆; 3.一个CPU22X,符合以下类型要求: CPU 222 REL. 1.10 或以上; CPU 224 REL. 1.10 或以上; CPU 226 REL. 1.00 或以上; CPU 226XM REL. 1.00 或以上; 本例为CPU224 REL 02.01; 4.一个CP243-1以太网通讯模块,订货号为 6GK7 243-1EX01-0XE0,为 新型以太网通讯模块(相当于之前的CP 243-1 IT :6GK7 243-1GX00-0XE0)。 二、通讯设置 1.启动STEP 7 Micro/WIN V4.0 SP3编程组态软件 方法一:开始-所有程序-Simatic-STEP 7-MicroWIN V4.0- STEP 7-MicroWIN,如下图所示: 方法二:双击桌面快捷方式“V4.0 STEP 7-MicroWIN”图标,如下图所示: STEP 7-MicroWIN 程序启动后,如下图所示: 2.设置通讯方式

用PC/PPI 电缆连接编程设备的USB口及CPU224的COM串口,点击左侧View视图框内的Set PG/PC Interface图标,如下图所示:选择PC/PPI cable(PPI),点击Properties,进入属性设置窗口,如下两图所示: 注意Local Connection选项卡里的编程设备接口的设置选择(USB或COM),本例为USB。点击OK按钮确定,回到图5Set PG/PC Interface 窗口,点击OK按钮确定,弹出Warning窗口,点击“确定”按钮,完成通讯方式设置。 3.配置CP243-1通讯模块 由于所用的CP243-1以太网通讯模块,订货号为 6GK7 243-1EX01- 0XE0,是 Internet 通讯模块,因此,必须用Internet wizard向导对CP243-1进行 配置。 点击左侧Tools图框内的Internet wizard图标,启动Internet wizard配置向导,如下图所示: 或者在项目树视图里选择Wizard-Internet,双击Internet图标,进入Internet wizard配置向导。 Internet wizard配置向导启动后,如下图所示: 点击Next按钮,进入CP243-1以太网模块槽位设置窗口,如下图所示: 可以手动设置,也可以在与CPU建立在线通讯链接的状态下,点击Read Modules按钮,Internet wizard配置向导能够自动读取联机的

西门子PLC与PLC之间是通过以太网互连

前西门子S7-300/400系列的PLC的通讯方式开始大量使用工业以太网通讯,MP277/3 77、xP177B系列触摸屏也集成了以太网接口,这带来一个好处,所有的接口都统一,在网络通讯时采用都以太网接口,所有的设备组成一个局域网,包括上位监控计算机、编程设备、PLC、触摸屏都能很方便地互相访问,需要扩展多一个设备也很方便,只需要加一个交换机就能扩展出多个接口。因为有这些好处,所以采用以太网通讯越来越流行,下面说一说以太网通讯的其中一个应用,PLC与PLC之间通过以太网互连。 一、S7-300/400之间互连 1、采用PLC与PLC通过以太网访问,需要增加以太网模块,如CP343-1,CP443-1的模块,或者采用带有PN接口的PLC,如CPU315-2DP/PN的PLC。 2、采用两块CP343-1互连,先在同一个项目里做好两套PLC的硬件组态,分配好IP地址,打开NetPro,选择其中一个PLC,双击连接列表上的空白行,添加一个 S7 conection。选择连接的另一个PLC,记住连接的ID号。通讯双方的其中一个站为Cl ient端,激活“Establish an active connection”的选项(默认是激活的)。这样NetPro 的配置就完成了,编译、下载完成 3、打开其中两套PLC的OB1,调用FB12(BSEND)块发送数据,FB13(BRCV)块接收数据,1#PLC的发送对应2#PLC的接收,1#PLC的接收对应2#PLC的发送。 4、调用FB12的时候几个参数的含意,a、REQ,发送开始,上升沿触发发送工作;b、I D,连接ID号,这个ID号是在NetPro组态时生成的ID号;c、R_ID,连接号,相同连接号的FB块互相对应发送/接收数据,这个是由用户编程时定义的,例如1#PLC的FB12的R_ID是DW#16#2,则2#PLC的FB13的R_ID也是DW#16#2,这样才能保证正常接收发送;d、DONE,发送完成,如果REQ端是一个不停的脉冲,正常情况下DONE 端也应该也是一个不停的脉冲反馈;e、SD_1,发送的开始地址,以P# x.x byte xxx

西门子采用Get-Put向导完成PLC之间Get-Put以太网通讯实例分析

西门子采用Get/Put向导完成PLC之间Get/Put以太网通讯实例分析 工艺要求:近千米的距离非均匀分布N多分站,每个分站就地控制一台电机正反转。控制室需要监控联网的所有分站设备。 用CN之间PPI联网,软件自带的PPI向导组态很是方便,整个网络基于RS485接口传输。现在SMART自带的DB9口不支持PPI联网通讯,支持以太网口的GET/PUT通讯,下来一起完成GET/PUT通讯联机过程。 2台SR30,一台做主机(192.168.2.200),一台做从机(192.168.2.201)。 主机中程序编写如下: 打开向导 1. 进入向导 2. 点击添加,操作项目树下添加一个名称,与默认名称共2个分别组态成PUT/GET 3. 双击可以修改名称以及添加注释 4. 完成后自动出现组态的数量,上图为2个 2个操作——Put、Get的具体组态步骤: 双击组态Put界面,相当于将主站VB0映射到分站QB0(写一个字节的数据) 主机检测到自己I0.0上升沿,将255 MOV到VB0(即就是VB0的8个位都为1),而组态的联机Put指令将主站VB0映射到了分站QB0,那么此时分机(192.168.2.201)Q0.0~Q0.7整个QB0全部都有输出;同理,主机检测到自己I0.0下降沿,将0 MOV到VB0(即就是VB0的8个位都为0),此时分机(192.168.2.201)Q0.0~Q0.7整个QB0全部没有输出。简单点说,就是用主机I0.0点控制从机QB0一个字节的输出;用从机I0.0点控制主机QB0一个字节的输出。 到底是不是这样子?下载程序后看看运行情况。 将分控程序下载进分站PLC,如上图将2台PLC网口用网线连接起来,红色按键按下锁定(接于主机I0.0位),此时检测到主机I0.0上升沿,分机PLC的Q0.0~Q0.7全部输出(上

KepServer 与西门子PLC通信配置方法

KepServer软件与西门子PLC通信配置方法 (串口或以太网) 一、PLC采用自由口通讯配置方法 1. KepServer配置 (a). 在KepServerEx中新建一个空白工程,添加1个通道,在“Device driver”中选择【Siemens S7-200】; 说明:如下图,【Siemens S7 MPI:指PLC300】、【Siemens S7-200:指PLC200】、【Siemens TCP/IP Ethernet:PLC200和PLC300均可】。 然后设置与PLC通讯的电脑串口,其它基本采用默认即可,根据需要可调整设置;

(b) 添加一个设备,在“Device Model”选择【S7-200】; 在设置“Device ID”时一定要注意,这个值对应于PLC程序里“通讯”->“远程ID”;如果不对应,将无法通讯;

(c). 添加tsg标签,注意IO地址的格式与以太网方式有点区别,其数据类型必须要在“Data type”中设置才行,同样在上位机配置OPC驱动时也要注意IO点的数据类型;

(d). 配置好后,可以用KepServerEx自带的quick client来调试与PLC通讯是否正常,配置是否正确; 2. iFix组态上位机OPC驱动配置 (a). 打开OPC Tool配置工具,新建空白工程文件,添加opc server、group、Item,注意所有 的Enable均要打勾; 注意:可以用添加多个IO项的方式快速设置;

(b). 配置完成后,点击1:Start按钮,然后点击2:Statistics来进行状态监视,检查通讯配 置是否正常。 二、PLC采用以太网通信 1. KepServer配置 (a). 与自由口配置类似,新建空白工程,添加1个通道,注意在“Device driver”中选择【Siemens

西门子与上位机通讯大全

西门子与上位机通讯大全 1.CP5611与S7的MPI通讯: A.WinCC,这个不用讲了,驱动内置,直接支持. B.iFix,iFix自己的IO Driver中没有MPI驱动,可以安装S7A for iFix驱动.虽然不是GE-Intellution公司出品的,但是不收费,而且很好用. C.Intouch,Intouch的IO Server中没有MPI驱动,应该安装OPC Server. 方案甲,西门子SimaticNet.需要Profibus SoftNet-S7授权. 6GK17045CW633AA0RMB7845.50 5CW63中的63代表版本号V6.3,现在最新的该是5CW64了,因为好多人对订货号 很晕点,所以提一下.以下相同,不再赘述了. 方案乙,采用KEP Ware公司的OPC Server,其中有MPI的驱动.就不要用Intouch 推荐的ATS公司的MPI DDE Server了,简直是个垃圾.用了KEP就你知道什么叫 全球第一的OPC Server了.费用?费用自己去查去... 其他厂家的没有内置MPI驱动的监控软件也类似.比如AB RSView等. D.Citect,Wizcon,力控,组态王,紫金桥等,驱动内置,直接支持.其实这些软件很多都是用Prodave写的底层库驱动. Tips: A.CP5512和CP5611一样,区别仅仅在于CP5512用于笔记本做现场调试,一般很少实际长时间用于工程现场而已. B.MPI方式组网,站点数理论值最大只能是32,但是CP5611最多只能支持8个MPI 连接.每台电脑仅支持1块CP5611卡. C.如果电脑要通过MPI连接的PLC数量多于8,而小于31,可以换用CP5613卡. D.CP5611最常用的速率是187.5K.在跟某些机型连接时,可以达到12M. 某些机型是那些呢?是那些MPI/DP口,如400全系列的X1口,31X-2PN的X1口, 318-2DP的X1口,319-3PN的X1口. 当然了,19.2K的速度也是支持的,但是买了CP5611而用19.2K的话,人家会认 为我们脑子有问题,这样还不如买跟PC Adtaper,还能省些银子. E.用CP5611时,电脑可以有多台,每个CPU能跟多少台电脑进行通讯,取决于该机型的具体型号,S7-300参数可以在Step7中的硬件\CPU\通讯中有连接资源 的设置.S7-400的应该在硬件\CPU\存储器中有通讯资源的设置. 2.CP5611与S7的Profibus DP通讯: A.WinCC,一般是在DP链路上走S7协议,驱动内置,直接支持.可连接8个PLC B.iFix,iFix自己的IO Driver中没有DP驱动,应该安装OPC Server. 方案西门子SimaticNet.需要Profibus SoftNet-DP授权. 6GK17045DW633AA0RMB5868.50(V6.3) 这个KEP也不支持,目前看来仅可以使用SimaticNet. 注意,当这样做时,计算机算个2类DP主站,CP5611可以支持多于8个的PLC. 走DP协议最多可以支持60个PLC做DP从站.

相关文档
最新文档