西门子电源模块6ES75325HD000AB0西门子CPU模块代理商
AQ 4:模拟量输出模块,AQ 4x U/I ST, 35mm模块,不含前连接器
AQ 4:模拟量输出模块,AQ 4x U/I ST, 35mm模块,不含前连接器
AQ 4:模拟量输出模块,AQ 4x U/I ST, 35mm模块,不含前连接器
6ES75325HD000AB0 6ES75325HD000AB0
6ES75325HD000AB0
当有些通讯协议中报文长度固定的情况下PLC接收每段报文所需的时间都是一样的,这样我们就可以根据报文的长度算出来接收报文所需的时间,然后PLC就可以从接收到个字符开始计时,计时达到设定时间就算一段报文接收完成。
这里我们打个比方,如果是通讯速率是9600bps,每个字符10个位(1个起始位、1个停止位、8个数据位、无效验位)那么我们接收一个字符就需要(1000/9600)*10≈1.04ms。如果每个报文6个字符那么PLC接收这段报文就需要6*1.04 = 6.24ms,这时我们就可以在PLC中设定从开始接收报文起6.24ms后停止接收报文,然后从新进入等待接收报文的状态。
2 报文长度不固定
图2-1
在有的协议中报文的长度是不固定的,那这种情况下我们应该如何判断一段报文起始和停止呢?其实这个也是比较简单的当报文中字符的数量是不固定的时候,我们可以通过字符与字符之间的时间间隔来进行判断,通常情况是3.5个字符时间。那么在9600bps的通讯速率,每个字符10个位的情况下就是3.5*1.04 = 3.64ms的时间中如果PLC没有接收到数据,就认为一段报文已经接收完成,下面再接收到的数据就算一段新报文的开始。
这里可能有的朋友会有疑问,如果两段报文的间隔小于3.5个字符时长那不就出问题了么?其实有这种担心的朋友主要是对485通讯收发数据的方式不够了解。由于485通讯是半双工通讯方式,所以一般都是A站点接收一个B站点发送的报文,然后给B站点发送一个报文,B站点接收到A站点发送的数据后再返给A站点一个报文。如图 2-2
图 2-2
西门子PLC6ES7511-1UL03-0AB0
西门子PLC6ES7515-2UN03-0AB0
西门子PLC模块6ES7511-1AL03-0AB0
西门子PLC模块6ES7513-1AM03-0AB0
西门子PLC模块6ES7515-2AN03-0AB0
西门子PLC模块6ES7516-3AP03-0AB0
西门子PLC模块6ES7510-1DK03-0AB0
西门子PLC模块6ES7512-1DM03-0AB0
西门子PLC模块6ES7510-1SK03-0AB0
西门子PLC模块6ES7512-1SM03-0AB0
因此当PLC接收到一个报文后不是立刻接收下一个报文,而是先发送一个报文出去,由于发送一组报文的时间肯定大于3.5个字符时长,所以不会存在被接收的两个报文之间的时长小于3.5个字符长度的情况。
西门子电源模块6ES75325HD000AB0西门子CPU模块代理商西门子电源模块6ES75325HD000AB0西门子CPU模块代理商西门子电源模块6ES75325HD000AB0西门子CPU模块代理商西门子交换机代理商西门子电机代理商西门子电缆代理商变频器代理商