s7200自由口通信.docx
- 文档编号:561586
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:34
- 大小:956.06KB
s7200自由口通信.docx
《s7200自由口通信.docx》由会员分享,可在线阅读,更多相关《s7200自由口通信.docx(34页珍藏版)》请在冰豆网上搜索。
s7200自由口通信
S7-200自由口通信
关键字
要点初始化RS485例程发送发送完成接收接收完成 起始条件完毕条件字符中断
S7-200自由口通信简介
S7-200CPU的通信口可以设置为自由口模式。
选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制。
一般用于和第三方串行通信设备进展通信。
自由口模式可以灵活应用。
Micro/WIN的两个指令库〔USS和ModbusRTU〕就是使用自由口模式编程实现的。
在进展自由口通信程序调试时,可以使用PC/PPI电缆〔设置到自由口通信模式〕连接PC和CPU,在PC上运行串口调试软件〔或者Windows的HyperTerminal-超级终端〕调试自由口程序。
USB/PPI电缆和CP卡不支持自由口调试。
1 自由口通信根本概念
1.1 自由口通信概述
1.2 自由口通信要点
1.3 发送和接收指令
1.4 字符接收中断
2 自由口通信使用指南
2.1 通讯口初始化
2.2 发送数据
2.3 接收数据
2.4 自由口通信例程
3 RS485网络
3.1 通信口引脚定义
3.2 RS-485网络的硬件组成
3.3 通信有关须知事项〔硬件〕
4 扩展阅读
4.1 扩展阅读
5 相关词汇
5.1 相关词汇
自由口通信根本概念
1.1自由口通信概述
S7-200PLC的通讯口支持RS485接口标准。
采用正负两根信号线作为传输线路。
工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。
数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。
传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。
字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。
字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。
字符传输时间取决于波特率。
数据发送可以是连续的也可以是断续的。
所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。
而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。
示例:
用PLC连续的发送两个字符〔16#55和16#EE〕(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如如下图1.:
图1.两个字符〔16#55和16#EE〕的波形图
示例说明:
16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。
如下列图,当数据线上没有字符发送时总线处于空闲状态〔高电平〕,当PLC发送第一个字符16#55时,先发送该字符帧的起始位〔低电平〕,再发送它的8个数据位,依次从数据位的最低位开始发送〔分别为1、0、1、0、1、0、1、0〕,接着发送校验位〔高电平或低电平或无〕和停止位〔高电平〕。
因为本例中PLC连续的发送两个字符,所以第一个字符帧的停止位完毕后便立即发送下一个字符帧的起始位,之间数据线没有空闲状态。
假设PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。
字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于11/9600*1000=1.145ms.
自由口通信协议是什么?
顾名思义,没有什么标准的自由口协议。
用户可以自己规定协议。
一个通信对象需要字符〔字节〕传送格式有两个停止位,S7-200是否支持?
字符格式是由最根底的硬件〔芯片〕决定的;S7-200使用的芯片不支持上述格式。
S7-200是否支持《S7-200系统手册》上列明的通信波特率以外的其他特殊通信速率?
通信速率是由最根底的硬件〔芯片〕决定的;S7-200使用的芯片不支持没有列明在手册上的通信速率。
1.2自由口通信要点
应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。
用户程序通过特殊存储器SMB30〔对端口0〕、SMB130〔对端口1〕控制通信口的工作模式。
CPU通信口工作在自由口模式时,通信口就不支持其他通信协议〔比如PPI〕,此通信口不能再与编程软件Micro/WIN通信。
CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。
通信口的工作模式,是可以在运行过程中由用户程序重复定义的。
如果调试时需要在自由口模式与PPI模式之间切换,可以使用SM0.7的状态决定通信口的模式;而SM0.7的状态反映的是CPU运行状态开关的位置〔在RUN时SM0.7="1",在STOP时SM0.7="0"〕自由口通信的核心指令是发送〔XMT〕和接收〔RCV〕指令。
在自由口通信常用的中断有"接收指令完毕中断"、"发送指令完毕中断",以与通信端口缓冲区接收中断。
与网络读写指令〔NetR/NetW〕类似,用户程序不能直接控制通信芯片而必须通过操作系统。
用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。
XMT和RCV指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。
如果接收的消息中包括了起始或完毕字符,如此它们也算数据字节。
调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。
XMT和RCV指令与NetW/NetR指令不同的是,它们与网络上通信对象的"地址"无关,而仅对本地的通信端口操作。
如果网络上有多个设备,消息中必然包含地址信息;这些包含地址信息的消息才是XMT和RCV指令的处理对象。
由于S7-200的通信端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。
1.3发送和接收指令
XMT〔发送〕指令的使用比拟简单。
RCV〔接收〕指令所需要的控制稍多一些。
RCV指令的根本工作过程为:
∙1.在逻辑条件满足时,启动〔一次〕RCV指令,进入接收等待状态
∙2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态
∙3.如果满足了设置的消息完毕条件,如此完毕消息,然后退出接收状态
所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者完毕,通信口就一直处于接收状态。
这时如果尝试执行XMT指令,就不会发送任何消息。
所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。
在《S7-200系统手册》中关于XMT和RCV指令的使用有一个例子。
这个例子非常经典,强烈建议学习自由口通信时先做通这个例子。
S7-200CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。
通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。
每接收到一个字符,就会产生一次中断。
对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。
实现这个功能可能使用间接寻址比拟好。
对于高通信速率来说,字符中断承受方式需要中断程序的执行速度足够快。
一般情况下,使用完毕字符作为RCV指令的完毕条件比拟可靠。
如果通信对象的消息帧中以一个不定的字符〔字节〕完毕〔如校验码等〕,就应当规定消息或字符超时作为完毕RCV指令的条件。
但是往往通信对象未必具有严格的协议规定、工作也未必可靠,这就可能造成RCV指令不能正常完毕。
这种情况下可以使用字符接收中断功能。
1.4字符接收中断
S7-200CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。
通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。
每接收到一个字符,就会产生一次中断。
对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。
实现这个功能可能使用间接寻址比拟好。
对于高通信速率来说,字符中断承受方式需要中断程序的执行速度足够快。
一般情况下,使用完毕字符作为RCV指令的完毕条件比拟可靠。
如果通信对象的消息帧中以一个不定的字符〔字节〕完毕〔如校验码等〕,就应当规定消息或字符超时作为完毕RCV指令的条件。
但是往往通信对象未必具有严格的协议规定、工作也未必可靠,这就可能造成RCV指令不能正常完毕。
这种情况下可以使用字符接收中断功能。
自由口通信使用指南
2.1通讯口初始化
SMB30〔对于端口0〕和SMB130(对于端口1)被用于选择波特率和校验类型。
SMB30和SMB130可读可写。
见表1.
示例:
定义端口0为自由口模式,9600波特率,8位数据位,偶校验,程序如如下图2.:
2.2发送数据:
发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。
使用边沿触发。
发送缓冲区格式:
第一个字节为字符个数,其后为发送的信息字符。
示例:
如果PLC连续发送2个字符16#55和16#EE,程序如如下图3.:
示例说明:
PLC通过数据块写入数据。
XMT指令中TBL缓冲区首地址VB200写入发送字符的个数,VB201和VB202分别写入发送字符。
通讯口波形图如图1.
判断发送完成的方法
方法一:
发送完成中断。
通过连接中断服务程序到发送完毕事件上,在发送完缓冲区中的最后一个字符时,如此会产生一个中断。
对通讯口0为中断事件9,对通讯口1为中断事件26。
连接中断程序到中断事件示例如如下图4.:
方法二:
发送空闲位。
当port0发送空闲时,SM4.5=1。
当port1发送空闲时,SM4.6=1.
示例:
如果PLC断续的发送2个字符16#55和16#EE.
方法一:
利用发送完成中断,在主程序中建立中断事件,执行XMT发送16#55,发送完成后,进入发送完成中断程序中,执行XMT发送16#EE。
波形图如图5.
方法二:
利用发送空闲位。
当执行XMT发送完16#55后,利用SM4.5/4.6的上升沿〔确保发送的字符帧发送完成〕,往XMT的TBL缓冲区写入新字符16#EE,并再次触发发送。
波形图如图6.
两种方法均断续发送字符,即两个字符之间有空闲状态。
注意:
由于SM4.5/4.6的使用受程序扫描周期的影响,编程中推荐使用发送完成中断。
Break断点
Break状态:
持续以当前波特率传输16位数据,且一直维持"0"状态。
产生方式:
把字符数设置为0并执行XMT指令,可以产生一个Break状态。
Break用途:
可以作为接收的起始条件。
示例:
通过XMT指令发送一个Break断点。
偶校验,8个数据位,9.6K。
程序如如下图7.:
Break状态的波形图如如下图8.
如果通过接收方为上位机或者S7-200PLC,那么它们接收到的字符为16#00.
那么通过发送一个Break断点接收到的16#00与发送一个字符帧16#00有什么不同呢?
Break状态是传输16位数据一直为0。
而发送一个字符16#00〔帧格式为1个起始位,8个数据位,偶校验和停止位〕如此传输11位该字符帧。
如如下图9.
2.3接收数据
接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。
使用边沿触发或第一个扫描周期触发。
接收缓冲区格式:
第一个字节表示接收的字符个数,其后为接收的信息字符。
RCV使能会将TBL缓冲区中的字符个数清零。
示例:
如果发送方给PLC发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- s7200 自由 通信