前面我们对逻辑控制层的通信协议的相关概念简单地引入了一下,根据上文所涉及的例子,我们这里在来详细的讲解一下。首先还是来回顾一下例子的基本情况。下面是一个实际应用例子——上位机与单回路控制器之间的通信协议(逻辑控制层)。
单回路控制器可用来实现对一个回路(含一个被控对象)的控制,一般由单片机和少量外加电路构成。图12.30给出了用单回路控制器控制一个容器水位的示意图。图中容器的水位是被控对象。
单回路控制器通过A/D转换器采样差压变送器反映的水位值,与事先设定的值进行比较,经过某种控制算法的运算输出一个值,该值是数字量,经D/A转换器变成电信号,再经过伺服放大器进行功率放大,作用于给水阀门。例如,当水位高于设定值时,一般情况下是将给水阀门的开度减小,以减少进水量,从而使水位降下来。这种采样和控制是按一定周期重复进行的,从而可使实际水位与设定值之差在一规定范围内。设定值可以是一个定值,也可随时间变化。
一台单回路控制器可控制一个回路。若一个被控系统中有多个回路,则可以选用相应数目的单回路控制器。为了对各个单回路控制器进行管理以及对整个系统进行优化,一般配一台PC系列机,通常称之为上位机(相应地可将单回路控制器称为下位机)。
在本例中,上位机和各单回路控制器采用RS-485总线组成主、从式通信网络。为了进行数据通信,需要制定通信协议。总的要求是:上位机可以下传设定值和单回路控制器的参数(如采样控制周期、算法选择、算法参数等,共数十种),单回路控制器在收到上位机的报文后,上传数据和参数。以下是通信协议的具体内容:
上位机发给单回路控制器的报文用两种:询问报文和设置报文。询问报文周期性的发出,设置报文在需要时才发出。被寻址的单回路控制器在收到上位机的任一报文后,要回送一个报文。回文仅一种。上位机询问报文让指定的单回路控制器上传数据和参数,其格式和含义如下:
每个字段上面的数字是该字段占用的字节数。起始符是两个特定的字符,最后一个字节是累加和,它是前面的字节不计最高位进位累加的结果。目的站地址是要寻址的单回路控制器的编号。这里的命令字段取值为01H,表示是询问报文。
上位机设置报文令指定的单回路控制器按报文中的命令和所带数据重新进行设置,其格式和含义如下:
其中,命令字段是相应命令的编码。例如,命令为02H时,表示被寻址的单回路控制器应按数据字段给出的值对设定值进行重新设置。数据字段为2个字节,是与命令相对应的数据,这里约定它采用整型数。若设定值或参数不是整型数,则组织报文时需进行转换,单回路控制器收到后再还原。
当某台单回路控制器收到上位机的任一种报文,且发现自己是被寻址对象时,回送一个报文。回文的格式和含义为:
回文的长度不是定值。这里同样约定设定值、采样值以及各个参数字段采用整型数。若原值不是整型数,则组织报文时需进行转换,上位机收到后再还原。回文中的设定值是当前单回路控制器所采用的,如果此前上位机曾经发来过设定值,则就是该值(已按它进行设置)。
在该通信协议中还规定,如果上位机在发出报文后收不到回文或收到的是不确认回文(回文的确认码为非0值)时,重发报文。最多重发两遍,还不行,以出错处理。