分享

精通RS485通讯系列教程(图文并茂)

 昵称833562 2016-02-29


一、通讯基础知识

1.1什么是通讯

要搞清楚RS485通讯我们要先搞明白什么是通讯,通讯就是两个设备之间0、1代码的传递,0-低电平1-高电平。

举例:A设备向B设备传递数据,首先A设备和B设备之间必须通过电缆连接(硬件连接)。如果A设备要向B设备发送101010这样一串代码,那么A设备就要在他的通讯端口产生如下图所示的高低电平的组合,通过电缆这个介质B设备的通讯端口就会接收到A设备发出高低电平的组合,同时就会将接收到的高低电平组合翻译成101010,这就完成了A设备向B设备数据的传递,B设备向A设备数据传递也是同样的道理。

与通讯有个的概念。

全双工与半双工】全双工是通讯端口在发送数据的同时可以接收数据。而半双工指的是同一时刻通讯端口要么只能发送数据,要么只能接收数据。举例:全双工-打电话时双方都可以说。半双工:对讲机-同一时刻只能一个人说另一个人听。

通讯速率】通讯速率也叫通讯波特率是1S内通讯端口发送01代码(或者说是高低电平)的数量。举例:我们说通讯速率是9.6kbps,就表示通讯端口每秒发送9600个bit的数据,也就是每秒可以产生9600个高低电平(注意:是高低电平总共加起来9600个)。

主从通讯】是在一个通讯网络中一个站点是主站,其他站点作为从站。主站和从站之间可以直接进行数据的传递,但是从站与从站之间不能直接进行数据的传递。如果需要从站之间交换数据也必须要通过主站进行转发。如下图所示

1.2、485通讯定义

明白了通讯的基本概念后再理解485通讯就相对容易了,下面我们从通讯介质通讯方式通讯类型物理层四个方面来介绍485通讯。

通讯介质:屏蔽双绞线,也就是我们通常用的带有屏蔽层的两心电缆如下图所示。

通讯方式:半双工

通讯类型:主从通讯

物理层:9针接口,需要注意的是通常情况下485通讯的9针接口,只需要将两芯电缆接 到3号脚和8号脚上,3是信号“﹢”,8是信号“-”。如下图

1.3通讯协议

问:你这个通讯用的是什么协议?

答:我这个是485协议、我这个是232协议”!!

这就是典型的把通讯协议和通讯物理层搞混了,举例:还是打电话,电话是物理层,通话的人之间说的语言就是协议。同一个物理层可以传输不同的协议,就像电话两边的人既可以说中文也可以说英语。中文是一种协议,英文是另一种协议。485就好比是电话是物理层,在485这个物理层可以传输modbus协议,也可以传送Profibus协议,这就是通讯协议和物理层之间的关系。

二、数据的发送

说到通讯大家都觉得很难,觉得学起来没有头绪。其实所有学习通讯的人,刚开始的时候也是这样的感觉,资料找了一大堆都是理论,看来看去总感觉无从下手,最后终于搞懂后才发现,其实学不懂的主要原因并不应该用难来形容,而是这个东西它太复杂了,想要一次全部看懂消化是不太可能的事情,只有分步骤将这个复杂的知识一点点的进行拆分,循序渐进的进行理解,才能最终将这个复杂的知识掌握。

这里为了好理解咱们先动手做,在做的过程中逐步的理解理论。

2.1实验工具

实例中所用到的学习工具,看完后大家可以找到这些东西自己亲手做一遍。相信当你从电脑上看到PLC发出的数据时你会由衷的露出喜悦的笑容,不信试试··········

工具①、S7-200CPU 1个(型号无所谓,最好有两个通讯口)


工具②、串口调试软件(可以从网上任意下载一个使用,不一定是下图所示)

工具③、Usb转485转换接头1个(RS232转RS485接头也可)

4. 工具④、9针接头公头1个

工具⑤、两芯电缆

2.2、实验流程

实验目的:从PLC向电脑发送一个字节的数据。

实验操作:用S7-200PLC向电脑发送一个字节的数据,通过串口调试软件接收。现在的电脑一般没有RS485通讯接口,要使用Usb转485转换接头才能保障电脑可以接收到来自PLC的数据,接线是要注意9针头的3针脚接Usb转485接头的信号“+”,8针脚接Usb转485接头的信号“-”

2.3自由口模式

这里先介绍一下S7-200的自由口模式,S7-200的默认通讯方式是PPI通讯,不能自由的收发数据,想自由收发数据就必须将S7-200的通讯接口设置为自由口模式。控制S7-200自由口的是特殊位寄存器SMB30和SMB130。其中SMB30是控制CPU通讯口0的,SMB130是控制通讯口1的,如果只有一个通讯端口就只能使用SMB30这个特殊位寄存器了。下面我们来看看SMB30这8个位,分别表示什么含义。如下图所示。

①、0 -1位: 协议选择

mm:00 = 点到点接口协议(PPI/从站模式)

01 = 自由口协议

10 = PPI/主站模式

11 = 保留(缺省是PPI/从站模式)

②、2-4位:自由口波特率设置

bbb:000= 38400bps

001 = 19200bps

010 = 9600bps

011 = 4800bps

100 = 2400bps

101 = 1200bps

110 = 115200bps

111 = 57600bps

③、5位:每个字符的数据位

d:0 = 8位/字符。1 = 7位/字符

④、6-7位:效验选择

pp:00 = 不效验

01 = 偶效验

10 = 不效验

11 = 奇效验

理论补充】在通讯的过程中每次发送与接收的最小单位是字符而不是位,1个字符包括1个起始位表示字符的开始,1个停止位表示字符的结束,一个奇偶效验位用于验证字符错对,和8个或者7个数据位用于传递信息。奇偶效验位可有可无,数据位通常情况下是8个位也就是1个字节,因此一个字符包含奇偶效验位通常是11个位,不包含奇偶效验位则是10个位。

如果我们在S7-200CPU的通讯端口0使用自由口模式,通讯速率为9600bps传输的字符不要奇偶效验位,那么就必须将SMB30中的数据配置成00001001换算成16进制就是16#9

2.4程序编写

在编写程序之前,先要掌握S7-200发送指令的使用。

XMT发送指令有两个管脚,TBL和PORT。

PORT】通讯端口编号,如果用0端口则写0,如果用1端口则写1.

TBL】定义发送缓冲区的起始地址缓冲区的大小注意是起始地址和缓冲区的大小两个参数)。

举例:如果TBL中写VB100并且VB100中存放1,那么发送缓冲区是VB101,发送数据时将VB101中的数据发送出去。如果VB100中存放2,那么发送缓冲区为VB101和VB102,发送数据时将VB101、VB102两个字节的数据发送出去。

程序如下图所示

上图所示的程序是一个最简单的发送程序,先用SMB30将通讯口0定义为自由口,通讯速率9600bps,然后定义VB101为发送缓冲区(因为VB100中存放的是1)。通过SM0.5将VB101中的16进制的CC以1秒钟为单位发送给电脑。最后在电脑端将会以1秒为单位接收到PLC发送的字符CC。如下图所示

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多