西门子S7200 自由口通信实用文档Word文档格式.docx

上传人:b****4 文档编号:15870613 上传时间:2022-11-16 格式:DOCX 页数:19 大小:32.52KB
下载 相关 举报
西门子S7200 自由口通信实用文档Word文档格式.docx_第1页
第1页 / 共19页
西门子S7200 自由口通信实用文档Word文档格式.docx_第2页
第2页 / 共19页
西门子S7200 自由口通信实用文档Word文档格式.docx_第3页
第3页 / 共19页
西门子S7200 自由口通信实用文档Word文档格式.docx_第4页
第4页 / 共19页
西门子S7200 自由口通信实用文档Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

西门子S7200 自由口通信实用文档Word文档格式.docx

《西门子S7200 自由口通信实用文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《西门子S7200 自由口通信实用文档Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

西门子S7200 自由口通信实用文档Word文档格式.docx

文档编号“A0136”——《西门子S7-200•LOGO!

•SITOP参考》

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

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

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

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

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

quote:

以下是引用BABU在2011-01-2015:

17:

08的发言:

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

)。

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

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

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

没办法,迎着上吧!

网上搜资料,看手册,越看越糊涂!

时间紧迫,还是直接上手做吧。

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

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

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

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

在串口调试工具上发一串数,在200上收,ok!

高兴坏了,没白忙活。

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

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

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

)!

然后开始在200里编写收发程序,开始时整个思路都是乱的,无从下手。

就把200手册上的例子程序整个抄上,在cpu224的两个接口间进行通信实验。

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

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

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

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

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

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

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

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

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

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

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

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

以下是引用LaoHuai在2010-12-2408:

29:

48的发言:

以下是引用happyJulia在2010-12-2321:

58:

54的发言:

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

请教各位大侠:

S7-200自由口能支持的最高速率是多少呀,我希望通信能快点。

还有它的数据位、停止位是几位呀,我好确定能和什么样的设备通信呀。

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

数据位可以是7位或8位

停止位是固定的1位。

以下是引用300小小生在2010-12-2313:

52:

59的发言:

300也可以实现与上位机自由通讯的,S7-200自由口通讯是基于RS485通讯基础的半双工通讯,因此,发送和接收指令不能同时执行。

这点有点不好,在300里可以422通讯,但最好是PLC发送不要连续发送,而接收倒没事。

我有次在调试的时候发现上位机发了任务后,PLC设备要过好长一段时间才去执行,后来请教了老师傅,老师傅说把发送端加个间隔时间就好了

以下是引用鼠老爹在2010-12-3115:

59:

24的发言:

不管是什么通讯,传送的都是二进制代码。

ASCII码与二进制协议的区别在于代码所表示内容的方式不同。

如果使用ASCII代码,则数据不能直接用于数学运算,而必须转换成普通的二进制代码。

这样会加重程序负担。

但是ASCII代码用于通讯有一个好处,起始字符与结束字符比较容易确定和判别,它们一般不会出现在数据区。

而用二进制代码通讯,数据无需转换即可直接使用(高低位字节可能需要交换),PLC的负担较小。

但是起始字符和结束字符经常会与数据重复。

因此,用二进制代码通讯,通常是靠字符数和定时器来确定接收终点,主从站之间的步调协调非常重要。

以下是引用Am_Programer在2010-12-2715:

48:

西门子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-200CPU是主站,变频器是从站。

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-2413:

50:

10的发言:

我看过不少问S7200通讯问题的贴子,觉得很多问题并不是S7200的,而是串行通讯的共性问题,也就是对串行通讯本身概念的认识问题。

下面我来谈谈在我的记忆中关于串行通讯的一些认识。

1、串行通讯只有一个传输通道,每个时刻只能表达一种状态。

不管什么介质,不管是什么信号,我们用1表示一种状态,用0表示另一种状态。

2、只用1和0两种状态,是不能表达更多信息的。

好在有一个物理量,对每个系统来讲是统一的,那就是时间。

我们现在很容易做到不同系统之间的定时误差控制在PPM数量级。

1和0在时间上进行有序的组合,就可表达近乎无限的信息。

3、任何一个信号,如果不赋给它一些特点的意义,实际上没什么用。

两个系统要通过信号交换信息,必须对信号有一个共同的约定,这就是我们通常所说的协议。

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

RS232、RS485、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状态,表示这个字节传送有问题,有可能被接收方丢弃,传送失

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1