随着多智能体的研究在领域内的火热,越来越多的用户开始关注多个智能体的互联该如何实现,也有已经在使用我们设备的用户对设备通信的具体操作有一些问题,那么小编在本文中将介绍一下QUARC实现设备通信的Stream模块。
首先Stream模块的位置在simulink模块库中Simulink Library Browser\QUARC Targets\Communications\Basic目录下,分为Stream Server和Stream Client。
现在,我们找到这两个模块:
右击模块点击Help就可以看到每个端口的功能和其输入输出值所代表的含义,一般而言我们只需要关注snd和rcv这两个端口,snd是发送数据的端口,rcv是接收数据的端口,我们通过snd发送数据到远程主机,通过rcv获得来自远程主机的信息。而state、err等端口是表示通信状态,有需求的话可以组合起来表示系统运行情况。大多数情况下,我们将Stream Server视为发送端,Stream Client视为接收端,但两个模块都有发送和接收端口,可见其能并不局限于发送或接收中的一种,Stream Server也可以接收信息,Stream Client也可以发送信息,这需要考虑具体的应用场景。
一个配置是在两个模块中有明显区别的一项,在使用局域网通信的时候,它们都需要填写一个IP地址和通信通道,格式为tcpip://192.168.X.X:18XXX(X为自定义数),tcpip://192.168.X.X为IP地址,:18XXX为通信通道(软件默认设置,通信通道为18001~18999)。其中Stream Server中的URI upon which to listen所要填写的IP地址为运行该模块所在程序的主机的IP地址,也就是发送端的IP地址。比如,一台PC的IP地址是192.168.2.6,如果要从这台PC发送信息,那么就要就要填写tcpip://192.168.2.6:18001,这就表示从IP为192.168.2.6的主机的18001通道向外发送信息。可以看到这里只输入了发送方的IP地址,并没有指定谁去接收这一指令。而Stream Client中的URI of host to which to connect中填写的是你期望接收信息的主机的IP,比如一台IP为192.168.2.7的主机想要接收之前提到的那台PC发出的信息,就需要在URI of host to which to connect下同样填写tcpip://192.168.2.6:18001,表示的是接收来自IP为192.168.2.6的主机的18001通道的信息。
如下是实际的演示从192.168.2.6主机向192.168.2.7主机发送一个正弦波,同时192.168.2.7的主机发送回一个方波给192.168.2.6主机的例子: