数据的发送已经和大家讲完了,相信看过的朋友都会觉得,从PLC发送数据好像没多么复杂的,只要把通讯端口设置成自由口模式,然后确定好发送缓冲区,最后用发送指令将发送缓冲区的数据发送出去,只要接线正确,电脑就能接到PLC发送的数据。那么如果我们从电脑向PLC发送数据呢? 总体上来说对于S7-200PLC接收别的设备发送的数据是比较繁琐的一件事情,既然又是一个比较繁琐的知识点,我们就继续来一点一点的把它分拆。 首先我们必须要搞清楚S7-200PLC对数据的接收是有一定规则的,不是随便给PLC发个数据PLC都可以读到的,那么在了解S7-200PLC接收数据的具体操作方法之前,本文我们还是先熟悉一下S7-200中控制通讯端口接收数据的特殊位寄存器,对于控制通讯口接收数据的特殊位寄存器分别是SMB86~SMB94用于控制通讯端口0,和SMB186~SMB194用于控制通讯端口1,由于端口0和端口1本质上没有任何区别,这里为了方便就统一使用端口0来向大家讲解。 另外需要注意的是大家并不需要对下面这些特殊位寄存器死记硬背,只要浏览一遍,留个印象即可,对有些不理解的参数也不必纠结,因为后续的文章我将会通过实例的配合讲解这些特殊位寄存器的使用。 1 SMB86 SMB86是一个只读字节,也就是说我们只能读取该字节中每一位的状态,不能给该字节写入数据。该字节反映的是通讯中的状态,下面我们一起来看看SMB86每一位的含义。 图1-1 0位:1 = 接收信息终止,奇偶效验错误。 1位:1 = 接收信息终止,超出最大字符数。 2位:1 = 接收信息终止,超时。 3位:永远等于0,无含义。 4位:永远等于0,无含义。 5位:1 = 收到结束字符。 6位:1 = 接收信息终止,输入参数错误或无起始或结束条件。 7位:1 = 通过用户的禁止命令终止接收信息 2 SMB87 SMB87是用来控制信息的接收方式的字节,我们可以通过改变SMB87中的数据来设定信息的接收方式,下面我们来看看SMB87中每一位的含义。 图2-1 0位:永远为0,不设定任何参数。 1位:0 = 忽略中断条件 1 = 用中断条件作为信息检测的开始 2位:0 = 忽略SMW92或SMW192 1 = 当SMW92或者SMW192中的定时时间超出时终止接收 3位:0 = 定时器是内部字符定时器 1 = 定时器是信息定时器 4位:0 = 忽略SMW90或SMW190 1 = 使用SMW90或者SMW190检测空闲状态 5位:0 = 忽略SMB89或者SMB189 1 = 使用SMB89或者SMB189的值检测结束信息 6位:0 = 忽略SMB88或者SMB188 1 = 使用SMB88或者SMB188的值检测起始信息 7位:0 = 禁止接收信息功能 1 = 允许接收信息功能 3 SMB88 SMB88中存放的是信息字符的开始,也就是说存放的一段报文的起始标志,在通过首字符和结束字符方式接收信息时用SMB88中的内容判断一段报文的开始。 4 SMB89 SMB89中存放的是信息字符的结束,也就是说存放的一段报文的结束标志,在通过首字符和结束字符方式接收信息时用SMB89中的内容判断一段报文的结束。 5 SMW90 空闲行时间间隔用毫秒给出。在空闲行时间结束后接收的第一个字符是新信息的开始。 6 SMW92 字符间或信息间,定时器超时值(用毫秒表示)。如果超过时间,就停止接收信息。 7 SMB94 SMB94是接收字符的最大数(1到255字节) |