简单聊一聊通讯吧 点击:248 | 回复:4



起个名字吧刘

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:21
  • 历史总积分:71
  • 注册:2018年4月12日
发表于:2021-07-30 13:48:47
楼主

    把精力全部放在眼下,不去深究为什么,这是对新产品快速上手使用非常有效的方法。原因很简单,你说啥就是啥,我照做。但难免有小伙伴们按捺不住好奇心,总想知道个为什么。在这里跟大家分享一下对串口通讯理解,希望可以解答到新手的一些疑惑,当然说的不对的地方还请各位指教。


    我们以波特率:9600,数据位:8 ,检验位:奇,停止位:1,发送数据98来简单说明一下发送过程。


    98二进制形式是0110 0010,发送时遵循地位先发送高位后发送。先是发送一个起始位0,发送一段时间;发送一个数据位0,发送一段时间;发送一个数据位1,发送一段时间。。。。直到8个数据全部发送完成。发送奇偶校验位0,发送一段时间。最后是停止位保持高电平1一段时间。


    接下来我们对这个过程对号入座


    线路电平由高变低表示通讯开始,即起始位为0。发送完成保持高电平一定时间表示本次通讯结束,所以停止位是高电平。奇校验定义:数据和校验位1的个数,我们的数据0110 0010有3个1属于奇数,3+0=奇数,所以校验位为0。现在就剩波特率了,没错波特率就是过程中的“一段时间”,9600表示发送过程中每一位的持续时间是1/9600秒。


    最后我们用停止位引出通讯的终极问题,设备是怎样判别0和1的呢??


    停止位设置成0.5的小伙伴们有没有使用过呢?吃过半个馒头,半个位相信还是有好多没用过的。我们换个思路,我们知道PLC有扫描周期、有定时器、有定时中断等等,那么你有没有想过这些时间是来自哪里呢?问你几点了,只要看看表就知道了,一样的道理通讯设备里有表,这个表的分辨率远远高于通讯1/9600秒这个计时。一个位的持续时间是1/9600秒,通讯设备把这个时间再分成很多份,我们假设分成10份,即每一份的时间是1/96000秒。设备每1/96000秒检查一下通讯即1/9600秒可以检查10次在这10次检查中如果有3次是低电平那么设备就认为是低电平,高电平同理(这里的次数我是随便说的)。这样做有个天大的好处,解决了时间不同步,错位的现象。要知道绝对的同步几乎是不可能的,我发送的是第一个位,结果你收到了说是第二个这不就乱套了吗。0.5个位也不知道说明白了没有(疯狂提示看表看表看表)


顺便说一下rs232把-15到-3v认为是高电平,3到15认为是低电平。





呼哈呼哈

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 41回
  • 年度积分:0
  • 历史总积分:144
  • 注册:2013年7月27日
发表于:2021-07-30 14:57:34
1楼

学习了

雷某人

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 24回
  • 年度积分:214
  • 历史总积分:273
  • 注册:2019年8月20日
发表于:2021-08-02 13:07:18
2楼

理解深入简出,通透,深刻!

工控十年新生

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 26回
  • 年度积分:25
  • 历史总积分:25
  • 注册:2016年12月08日
发表于:2021-09-06 17:43:59
3楼

我就是对通讯一直不太明白,感谢。

勿忘初心gh

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:234
  • 历史总积分:294
  • 注册:2020年1月30日
发表于:2021-09-07 17:35:50
4楼

懂了


相关主题

官方公众号

智造工程师