中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

串口通信

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 串口通信 → 浏览主题: 通讯基础详解
发表新帖 回复该主题
回帖:7个,阅读:214 [上一页] [1] [下一页]
* 帖子主题:

通讯基础详解

分享到
1816
1530694073
文章数:634
年度积分:1816
历史总积分:1816
注册时间:2019/3/11
发站内信
发表于:2019/8/3 7:55:09
#0楼
对于通讯这一块,这篇文章讲的很透彻,特此转发分享。
通讯都要有这么几个共同点。
1,都要有一个或多个通信端口。
2,相同的通信协议。
3, 相同的波特率。

PLC的通信原理就和我们人类的对话是一样的,都是你问我答,或我问你答。只不过我们用的是汉语对话,而PLC用的是PLC和设备能听懂的语言进行对话的。那么PLC是怎么说话的?说的又是什么呢?。
就是PLC正在和外部设备进行对话,它对话的方式就是,控制通讯端口的输出电压。当想要说1时它就输出一个高电压+5V,当想要说0时它就输出一个低电压0V。这样它就能够说出无数的0和1。

这就是PLC说话的方式,并且只能说0和1,但这对于PLC通信来说已经够了,因为我们的通信设备也都只认识0和1。好了,有了共同的语言它们就可以进行交流了。
PLC和变频器的1对1的通信示意图,PLC通过通信端口把输出电压变化8次,就能输出8个0或1,分别是10110101。因为变频器的通信端口和PLC的通信端口是连接在一起的,所以当PLC的通信端口电压变化时,变频器的通信端口就能检测到电压的变化。它就能知道PLC给它发送的是0还是1,这样PLC让电压变化8次以后,变频器就能收到和PLC发生的一样的10110101这一组数据。

那么变频器怎么知道它接收的这一组数据,代表的是什么意思呢?
数据通信的格式,这是外国人在发明通讯时就规定好的,我们必须按这个格式发送数据。这个格式就是“帧”,我们进行通信时最少要发送一个“帧”。不能发送半“帧”,那样通信就会失败。

1“帧”等于12个0或1,也就是说PLC通信端口的高低电压要变化12次,才能完成1“帧”。(注:也有11次或10次为1帧的,原理一样,这里只讲12次为1帧的)。下面我们看一下这一“帧”是怎么组成的。

A,如图5 帧的第一位叫起始位,顾名思义,就是告诉设备我要开始发送数据了,注意这一位必须是0,也就是通信端口要输出低电压。

B, 帧的第二位至第九位叫数据位,这就我们要传送的数据,共8个位。也就是说通信端口的高低电压要变化8次。也就是说可以传送二进制0000 0000--1111 1111之间的任何一个数,用十进制表示就是0--255之间的任何一个数。我们以前讲过8个位等于1个字节,也就是说1“帧”最多只能传送1个字节数据。

C, 帧的第十位叫奇偶校验位,这一位可以是0,也可以是1。这一位的作用是对前面的8个数据位中是1的位,做一个简单的奇偶数的校验。比如8个数据位要传送的是01001101这个数据,这个数据里面是1的位共有4个,那么4就是一个偶数,我们的奇偶校验位,这一位就是0,通讯端口就要输出低电压。如果8个数据位要传送的是11001101这个数据,这个数据里面是1的位共有5个,那么5就是一个奇数,我们的奇偶校验位,这一位就是1,通讯端口就要输出高电压。有了这个奇偶校验位,当我们在传送数据时,如果因为各种原因的干扰而破坏了真正的数据时,接收端的设备就可以通过查询“帧”中的奇偶校验位,来判断接收的数据正确与否。

D, 帧的第十一位和十二位叫停止位,就是告诉设备数据发送完成了,注意这两位必须是1,也就是通信端口要输出两次高电压。

E, 空闲位,它不算在“帧”中,只要不发送数据了,也就是停止位以后都是空闲位,空闲位都是1,也就是通信端口一直输出高电压。直到有起始位。

这就是数据通信最小的基本单位“帧”的组成和作用。总结一下,当PLC要发送数据时,通讯端口首先输出低电压,也就是起始位为0。然后再根据要传送的数据使端口输出高低电压共8次,也就是数据位。然后再计算出奇偶校验位,输出相应的电压。接着就输出停止位,这样1“帧”的通讯就完成了。

在做PLC通信时,这几个通信参数如果弄不明白或设置错误,通信就会失败。这几个参数包括:
1,通信协议。
2,波特率。
3,通信端口。
4,主站和从站地址。
5,奇偶校验。
6,数据位。
7,停止位。
1,通信协议,协议两个字还用解释吗?不就是两个人商量好的一个东西吗。通信协议说白了就是一种语言,一种通信双方都能听的懂得语言,就好比我们和别人讲话时,我们用汉语别人也要用汉语,双方才能听的懂,如果我们用汉语别人用英语,那么谁也听不懂对方说的是什么,通信也就无法进行。就像当女孩子对你说“我爱你”时,按照协议你也要回一句“我爱你”。但你要是回一句“我操你”,那你注定是要失败的。我们人类常用的语言有汉语,英语,日语等,而PLC常用的通信协议有MODBUS RTU,PPI,MPI等,通信协议和我们用的语言只是叫法不一样,但它们的原理和本质都是一样的。以后我还会对PLC通信协议中最常用的MODBUS RTU这个通信协议进行专门讲解。到时如果你能学明白MODBUS RTU这个通信协议,那么PLC通信的其他通信协议,不用我讲你也就能掌握了。
2,波特率,波特率的意思,就好比我们说话的频率,嘴慢的一秒说1个字,嘴快的一秒可以说3个字,并且这个快慢我们还能自己调节。那么PLC的波特率的意思就是,一秒钟可以往外发送多少个0或1,结合我们上一节讲的,就是PLC通信端口的高低电压一秒钟可以变化多少次,并且这个一秒钟变化的次数也可以调节。是不是和我们说话的意思是一样的。波特率的单位是:bit/s。我们常用的波特率9600bit/s,19200bit/s等。
举例:9600bit/s指的就是PLC一秒钟可以以往外发送9600个0或1,也就是PLC的通信端口的高低电压一秒钟可以变化9600次。我们上一节讲过,PLC通信时必须按“帧”发送数据,1“帧”=12位,也就是1“帧”=12个0或1(不明白的请看上一节)。所以波特率为9600bit/s时,一秒钟就可以发送800帧的数据(9600除以12=800)。
3,通信端口,指的就是我们的数据要从哪里发送出去。就像我们说话需要用嘴,PLC通信就用通信端口,两个设备的通信连接线就接在通信端口上。PLC常用的通信端口有RS232,RS485,RS422等。以后还会单独讲这几个通信端口。
4,主站和从站的地址,指的就是通信双方要有各自的名字,也可以叫地址,这个地址不能乱写,并且不能相同,它的书写格式和地址范围,都在上面讲的通信协议中有明确的规定,我们只要按照通信协议里面规定的格式书写就没有问题。
一台PLC和一台变频器通信时,双方需要各自设定的通信参数列表。下面做一下说明。
通信协议(MODBUS RTU):双方设置必须相同,不能一个说英语,另一个讲日语。
波特率(9600bit/s):双方设置必须相同,不能一个说的快,另一个说的慢。
通信端口(RS485):双方通信端口必须相同,不能一个用嘴说,另一个递眼神。
奇偶校验(偶校验):双方设置必须相同。
数据位(8位):双方设置必须相同。
停止位(2位):双方设置必须相同。
主站地址(2):双方设置不能相同,地址重复了,发出的信息就不知道发给谁。

我们在做数据通信时,对通信接口的正确使用是非常重要的,它直接关系到我们通信的成功与失败。通常我们把数据通信的要素分成两部分:
一是硬件部分。(大致包含:电源,PLC,通信接口,传送线缆等)
二是软件部分。(大致包含:像我们上节讲的通信协议,波特率,奇偶校验等)
而软件部分是要依附于硬件的,只要硬件部分有问题,无论软件部分设置的多么正确,通信都不会成功的。


我们平时使用最多的两种通信接口RS232和RS485。
A,先说一下RS232接口是怎么回事,通信的实质就是通信接口,不断的输出高低两种电压。那么RS232接口输出的高低电压是多少呢?高电压是+15V,低电压是-15V。也就是说RS232接口的输出电压是在+15V和-15V之间来回变化的。我们看一下RS232接口一共有9个针脚,但如果它只是用来接收和发送数据,只要接三根线就够了,一根发送线接第3针脚,一根接收线接第2针脚,一根公用信号地线接第5针脚,其他6个针脚不使用,这也是我们最常用的形式。RS232接口由于早期驱动技术的限制容易形成共模干扰,所以它的各通信参数只能做到以下的范围:
最大传输速率:20Kbit/s(有兴趣的可以根据上一节讲的,算一下这个速率能传送多少个字节)
最大传输距离:15米。也就是通信线缆的长度。
最大连接数:1发,1收。也就是只能1对1的发送接收数据。

B,再说RS485接口,它是在RS232接口基础上发展起来的新的通信接口,外形和RS232接口相同,但也可以做成别的形状。RS485接口发送和接收数据只需要两根线就够了,这两根线分别用A和B表示,一根接第3针脚(西门子),一根接接第8针脚(西门子)。这是西门子的,其他品牌可能是别的针脚,但原理都是一样的。RS485接口的输出电压范围是+12V到-7V,这就是为什么RS232接口和RS485接口不能直接接在一起的原因,因为它们两个接口电压是不同的,直接接在一起就会烧毁驱动芯片。由于RS485接口采用了新的驱动技术,消除了共模干扰。所以它的数据通信参数远远高于RS232接口,RS485接口它可以做到以下的范围:
最大传输速率:10Mbit/s
最大传输距离:1200米。(和传输速率也有关系)。
最大连接数:1发,128收。也就是可以1对多的发送接收数据。

RS23和RS485接口需要通信时的解决办法,就是在他们之间接一个转换器,我们不用了解转换器是怎么工作的,只要知道它可以把RS232接口转换成RS485接口就行了。这样的转换器有许多种:比如USB转RS485的,USB转RS232的,RS485转以太网的,RS232转RS485的等等。
博百家之长,更上一层楼
74
崇呵呵
文章数:3
年度积分:74
历史总积分:74
注册时间:2019/8/14
发站内信
发表于:2019/8/14 10:39:39
#1楼
学习了。
9952
yanli7234 版主
文章数:2778
年度积分:1150
历史总积分:9952
注册时间:2002/11/8
发站内信
2011论坛贡献奖
发表于:2019/8/14 11:26:50
#2楼
数据帧有两种机制:ASCII、二进制。
帧的识别方法不同。ASCII是依靠特殊字符、二进制是靠的空闲字符。
ASCII的效率低,只有二进制的一半不到。
国人当自强,共同努力,抵制日货。
1816
1530694073
文章数:634
年度积分:1816
历史总积分:1816
注册时间:2019/3/11
发站内信
发表于:2019/8/14 13:10:55
#3楼
回复 #2楼 yanli7234
受教了,设备的485通讯用的1769-ASCII
博百家之长,更上一层楼
9952
yanli7234 版主
文章数:2778
年度积分:1150
历史总积分:9952
注册时间:2002/11/8
发站内信
2011论坛贡献奖
发表于:2019/8/14 14:30:40
#4楼
回复 #3楼 1530694073
ASCII通信协议。
modbus-RTU、modbus-ASCII都是485通信协议,但RTU流行很广,是485通信协议中占有率超过80%的老大,那个ASCII就基本上没啥人用。效率低。
国人当自强,共同努力,抵制日货。
1816
1530694073
文章数:634
年度积分:1816
历史总积分:1816
注册时间:2019/3/11
发站内信
发表于:2019/8/14 14:36:32
#5楼
回复 #4楼 yanli7234
我这AB家基本不用Modbus,只是有台设备需要通讯采用的,老外写的程序天马星空的
博百家之长,更上一层楼
9952
yanli7234 版主
文章数:2778
年度积分:1150
历史总积分:9952
注册时间:2002/11/8
发站内信
2011论坛贡献奖
发表于:2019/8/14 14:48:52
#6楼
以下是引用15306940732019/8/14 14:36:32的发言:
我这AB家基本不用Modbus,只是有台设备需要通讯采用的,老外写的程序天马星空的
AB家不是喜欢CAN的吗?
国人当自强,共同努力,抵制日货。
1495
357146545
文章数:121
年度积分:387
历史总积分:1495
注册时间:2017/5/4
发站内信
发表于:2019/8/16 11:04:42
#7楼
谢谢,学习中
此帖发自论坛APP
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2019 Gkong.com, All Rights Reserved

171.6