浔之漫智控技术(上海)有限公司总部
主营西门子模块 , PLC模块 , 变频器模块 , 触摸屏模块
6ES72142BD230XB8|西门子PLC一级代理商

6ES72142BD230XB8|西门子PLC一级代理商

6ES72142BD230XB8|西门子PLC一级代理商

6ES72142BD230XB8|西门子PLC一级代理商6ES72142BD230XB8|西门子PLC一级代理商

交换机,PLC模块,CPU,模块,触摸屏

变频器,电源,CPU供应,通讯电缆,DP电缆,低压断路器

西门子PLC,供应商,西门子,模块

西门子,供应商,模块,CPU,PLC模块

在开始具体讲解PLC如何接收数据之前,我们首先要向大家介绍报文这个概念,所谓报文就是一段完整的信息,图 1-1所示为报文的一种格式。


1.png 

图 1-1


       在通讯的过程中无论是发送还是接收都是一个报文一个报文为单位的进行的,发送之所以简单就是因为我们只要将准备在发送缓冲区的数据一次性的全部发送出去就好,一次发送一个报文,而接收就不同了,我们要判断一个报文的起始与结束,还要判断接收到的这个报文是否在传输的过程中因为干扰等原因产生错误。2、单个报文的判断方法 如何判断一段报文的起始与结束呢?我们常用的有两种方法。

通过给报文设定固定的起始字符和结束字符,只要接收到起始字符既是一段报文的开始,只要收到结束字符既是一段报文的结束。

第二通过空闲时间判断,超过空闲时间没有接收到数据,我们就认为是一段报文已经结束,之后接收的数据就算新的报文。

那么本文我们还是先给大家讲解如何通过起始字符和结束字符来接收数据。

3、通过首尾字符判断在编写程序之前我们首先要明确我们使用的特殊位寄存器的状态,下面我们逐个按要求进行设置,这里要注意我们统一使用S7-200CPU的端口0。


SMB30 = 2#00001001=16#9


2.png 

图3-1

1)        自由口模式。第0、1位

2)        通讯速率9600bps。第2、3、4位

3)        每个字符的数据位是8位。第5位

4)        不选用奇偶效验。第6、7位


SMB87 = 2#11100000 =16#E0


3.png 

图3-2

1)        不使用中断条件作为检测信息的开始。第1位。

2)        不使用空闲时间方式检测报文的开始结束。第2、3、4位。

3)        使用结束字符检测报文的结束。第5位。

4)        使用起始字符检测报文的开始。第6位。

5)        允许信息接收功能。第7位。

注:第0位为无效位不使用。


SMB88 =16# AA


用16进制AA作为报文的起始字符,只要PLC接收到字符AA说明一段报文的开始。


SMB89 = 16#BB


用16进制BB作为报文的结束字符,只要PLC接收到字符BB说明报文接收完毕停止接收。


SMB94 = 255


SMB94定义接收缓冲区大小,此处定义为大255字节。(注:接收缓冲区是用来存放接收到的数据的区域,大255字节,大家可以根据通讯情况自由定义。)


4、程序编写

开始程序编写之前让我们首先了解一下接收指令的使用。

4.png 

图4-1

RCV接收指令有两个管脚,TBL和PORT。


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


TBL:定义接收缓冲区的起始地址,如果TBL中写VB100,同时接收的数据是两个字节,则VB100中的数值为2,同时VB101和VB102用来存放接收到的数据。


下面我们来看程序的具体写法。

5.png 

图4-2


5、接收测试

       程序我们就编写完成了,主要是对特殊位寄存的设定,另外增加一个接收指令用于接收数据就好,下面我们用PLC接收几组发自电脑的数据,来具体了解通过起始、结束字符判断报文的方式来接收数据的使用方法。


1)   接收测试1


       首先我们使用串口调试软件发送一段报文16进制的 aa 11 22 ff 23 bb一共6个字节。根据我们上面的讲解,此段报文中aa是报文的起始字符,表示报文的开始bb是报文的结束字符,表示该段报文的结束,起始字符和结束字符之间是要发送给PLC的数据内容,当然现在我们发送的数据是没有任何含义的,如图 5-1所示。

62617xoooz5auglhtlulh.png 

图 5-1

6ES72142BD230XB8|西门子PLC一级代理商                           6ES72142BD230XB8|西门子PLC一级代理商

发布时间:2023-11-04
展开全文
优质商家推荐 拨打电话