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