ProfControl通讯及协议
Lu
·
创建日期: 2022-05-14 12:10:04
·
2
1
0
65

 

系统通讯功能

ProfControl系统通讯主要负责两个方面的功能:

  • 控制设备
  • 与其他系统通讯
 

控制设备

控制设备包括了控制Agv、现场PLC、呼叫盒、电动门等设备的控制。


 

与其他系统通讯

ProfControl与其他系统通讯采用了两种较为主流的方式,一种为WebService、另一种为TCP/IP;较为推荐使用WebService的方式,系统自带了一个基于Restiful规范的标准API,使用者同样可以通过脚本工具编写自己的API接口.

 

控制设备-通讯模型

jpg

ProfControl系统的TCP/IP通讯将通讯抽象为了4个层,分别为:

         通讯介质 系统目前支持网络方式及串口方式,网络方式采用的是TCP/IP协议,同时支持TCP及UDP,可以作为服务器或客户端使用。

         通讯协议 系统目前集成了环野RWP协议,该协议积累了6年的使用经验,具有易编写,易调试,可定长可变长的特性,方便基于嵌入式系统或PLC           的主控对接。

         通讯命令集 命令集与通讯协议相关,主要用于确定不同的命令字对应的实际数据,例如在单字节命令字模式下 0x10 对应的是启动命令。

         通讯对象 系统规定了允许通讯的标准对象如下:              

                AGV

                工作站

                图元

                系统

                用户自定义

 

RWP协议

RWP协议是环野制定的基于流传输的一种协议,该协议具有简单易懂,方便对接的特性;在实际使用中,该协议具有稳定可靠,便于调试的特性。该协议具有以下特征:

  • 1、具有包首包尾,包首为0x55,包尾为0xAA,该特性使得接收系统易于从数据流中分离包。
  • 2、具有包长信息,便于解析包。
  • 3、具有应答位,通过设计应答方式,可以实现通讯应答或动作应答,便于区分包类型。
  • 4、具有包计数器,用于控制重发命令,当报文为重发报文时,包计数不变,当报文为新发报文时,包计数累加;该设计可以使得接收系统了解到包的性质,在一些动作命令时,避免危险的重复。例如,系统控制Agv转向90度,如果通讯出现单向传输错误,Agv回应给系统的报无法到达系统,那么系统就可能因为超时多次发送命令;这时如果Agv将接收到的命令无差别的执行,将导致旋转多次,最终甚至于可能造成事故。
  • 5、具有CRC校验,CRC校验可以较高程度保证报文的准确性,避免报文在传输或转储过程中出现的错误码流。
 

RWP协议格式

jpg

报文与数据包意义相同,是描述同一个概念。

 

  • 包头(Head)

    1个字节,一个数据包的开始标志,RWP固定为0x55。

  • 报文长度(Len)

    2个字节,整个数据包长度,包含了从包头到CRC校验的所有数据总字节数,快速计算公式:Length = 17+N,其中N为数据长度。

  • 报文长度-镜像(Len-Mirror)

    2个字节,为了防止报文长度错误,协议增加了报文长度的镜像,他是将报文长度复制一份放置于数据包中,通过取出前5个字节(包头、报文长度、报文长度镜像),可以快速判断报文长度是否正确(报文长度 = 报文长度镜像),如果不正确,需要放弃部分数据,重新检索。

  • 类型(Type)

    1个字节,ProfControl中当类型为0时,表示应答位不起作用;当类型为127(0x7F)时,表示应答位有效。所以在进行通讯应答或动作应答时,除了填写应答位,类型位也需要置位127(0x7F)。

  • 命令字(CMD)

    1个字节,用于表示数据包的作用,是数据包中非常重要的控制位。RWP-V3.0协议控制Agv的标准命令集见下文的对照表。

  • 命令字-镜像(CMD-Mirror)

    1个字节,复制命令字,用于快速判错,当命令字与命令字-镜像不同时,数据包存在错误,需要丢弃部分数据,重新检索。

  • 类型-镜像(Type-Mirror)

    1个字节,复制类型,用于快速判错,当类型与类型-镜像不同时,数据包存在错误,需要丢弃部分数据,重新检索。

  • 应答(Ack)

    1个字节,用于Agv设备应答ProfControl的控制报文,当为通讯应答时,Ack=1;当为动作应答时,Ack=2。注意,当应答时Type必须为127(0x7F)。

  • 地址(Addr)

    2个字节,当被控对象为AGV时,分为两种情况:

    当为TCPIP通讯时:
    地址始终为0,不起作用。因为TCPIP协议本身具有唯一通讯地址。
    当为串口组播时(基本淘汰):
    地址为Agv序号,因为串口不具有地址特征,一般的无线透传模块为组播(广播)形式,故调度与Agv通过地址位区分设备。

当被控对象为现场呼叫盒(或类似设备,如PLC)时,当采用RWP_CALLBOX_Common命令字时,地址位表示信号线序号,详见[呼叫盒控制]。

  • 计数(Cnt) 2个字节,计数位用于重发控制,当ProfControl发送给Agv的控制命令在超时时间内未收到通讯应答,则重发报文,但是重发的报文计数位与原报文相同;任何非重发的新报文,计数位均会累加1。
  • 数据(Data) N个字节(N可以为0,表示没有数据),根据命令字的不同,有些命令字不具有参数,有些命令字具有参数,数据用来承载参数。在RWP-V3.0中,无论命令字是否均有参数,数据位均相同(6个字节),这是为了方便不同命令字具有相同的报文长度,对于PLC解析将会更简单。
  • 包尾(Tail) 1个字节,一个数据包的结束标志,RWP固定为0xAA。
  • CRC校验(CRC16_IBM)/和校验

    2个字节,RWP协议为尾部校验兼容CRC(CRC16_IBM)或和校验。

 

RWP协议标准命令-步骤对应报文

jpg

除了上述命令外,系统支持使用者自定义步骤,详见视频[额外的自定义控制]

系统提供了Agv上传信号序号的报文解析功能,该功能可以方便Agv上传信号序号触发相关事件,信号序号与事件详见[事件系统]。比如Agv车体面板上的按钮,定义为行驶到下一工序;首先定义系统的事件触发,将Agv作为对象,某个信号序号作为触发源,触发行驶到下一工序事件函数;然后只需要开发者实现按下按钮,发送“上传信号序号”报文至系统,即可实现车体按钮触发事件。


 

Agv控制方式

ProfControl系统通过TCPIP通讯对AGV进行控制。系统支持两种控制方式:

  • 实时控制(包含预发送包) 实时控制是一种工作于网络状态较为良好情况下的控制方式,系统将在线路规划完毕后首先发送预包,Agv应当缓存预包作为自行处理停车、调速等控制,然后系统在不同地标位置将发送不同的控制命令,Agv进行解析执行。
  • 下发引导包 引导包方式适用于网络环境较为恶劣的情况。是将Agv完成线路规划后的全部路径控制命令打包下发,该方式需要Agv端具有强大的数据解析及较大的缓存空间(典型值为500Byte-4000Byte),系统在Agv运行中将只发送交通管制相关命令(启动、停车等),对于PLC实现的Agv,不推荐采用该方式,仍然应当首先优化网络传输。

 

Agv操作(AO)与步骤概念

AO是ProfControl提出的概念,指的是Agv操作,系统将Agv操作设计为集合的模式,操作内集合了实现该操作所需要的步骤。这样设计的好处是可以方便实现复合步骤的操作,如Agv在需要直角转弯时,实际动作为 停车-转向-行驶 那么只需要配置这三个步骤,在Agv侧就极大地降低了控制复杂度。


 
Agv操作(AO)

AO操作是将一系列Agv基础控制方式进行打包的一种设计理念。通过该方式,开发者只需要将Agv基本运动操作与通讯控制命令进行对接,即可实现复杂的控制逻辑。


 
Agv步骤(Step)

AO操作的内容,对应基本控制如停车、正向行驶、反向行驶(双向车)、左转等,在通讯系统中步骤将直接与控制报文挂钩,所以配置步骤,其实就是配置该步骤对应的控制命令的相关内容。


 

Agv通讯控制流程

系统将通讯控制设计为了“下发-应答”模型,该模型要求被控设备一定具有一种或两种应答,系统接收到Agv应答后才会进行下一个步骤,完成AO所有步骤后,进入下一个AO操作。

jpg

 

AO控制流程

jpg

 

  • 一旦系统产生一个新的Agv任务,将会首先计算路径,并生成预包,接着将预包发送给被控Agv;然后系统将发送速度设定、启动命令(前进或后退)或转向命令等;这些命令我们抽象为AO操作,而这些AO操作内包含了步骤。系统首先处理最先产生的AO,处理AO既是处理AO内部的步骤,步骤根据配置转换为报文下发给被控Agv,等待接收应答后,处理下一个步骤,直到本AO内所有步骤处理结束,系统处理下一个AO。

步骤控制流程

jpg

jpg

 

步骤将根据“操作配置”内的设置产生实际报文,根据操作配置不同,步骤分为两种模式

jpg

1、[通讯应答] 只有通讯应答,没有动作应答的步骤

2、[通讯应答]+[动作应答] 有通讯应答及动作应答的步骤

系统规定Agv接收到的所有报文均需要返回通讯应答,通讯应答在Agv收到报文后立刻回复,作为系统判定Agv准确接收报文的判据。通讯应答支持超时重发,使用者可以在“操作配置”内对不同的步骤进行超时时间及重发次数的设定。当系统发送报文后,等待应答时间超过超时时间,系统将重新发送报文,值得注意的是,此时发送的报文,Cnt计数位与原报文相同,不会累加;当系统发送的重发报文次数达到设置值时,系统将反馈通讯错误,此时需要人为干预。通讯应答允许多次发送给系统,系统接收到一次后即认为完成,该方式可以防止Agv向系统发送应答时由于网络问题造成的失败。

动作应答不是强制性的,该应答具有鲜明的使用条件,即需要Agv耗费时间的动作,则需要设置动作应答,比如启动停止、转向、取送货等,这些操作执行时间较长,系统需要等待操作执行完毕才可以进行下一个AO操作,所以需要配合额外一组应答。为何不使用通讯应答作为唯一应答,这是有原因的;不同的Agv动作可能具有不同的时间,有些时间较短,有些操作时间很长,比如取送货动作,可能需要5-10秒,那么如果采用单一的应答方式,超时时间势必将设置的很长,这会极大影响系统反应效率,而通讯应答的概念是接收到报文即刻响应系统,那么系统便知晓Agv已经接收到了控制命令并在执行中。所以ProfControl中为此设计了两种独立功能的应答模式。动作应答与通讯应答不同,它没有超时时间,也不会重发,它将无限期等待,这样Agv一旦完成动作,我们推荐Agv持续向系统发送动作应答,直到下一个控制命令的到来。

如何构建应答包?

    • ProfControl系统对于应答包规定如下:
    • 1)应答包与系统发送的控制包需要具有相同的命令字(CMD)、计数位(Cnt)、类型位(Type)
    • 2)应答包可以包含控制包的数据,也可以不包含
    • 3)应答包需要根据应答类型编写Ack应答位

那么什么时候需要使用动作应答,一般来说,需要执行超过1秒的动作我们就推荐使用动作应答。

 

AO操作配置

操作配置界面

jpg

 

AO指令以按钮形式添加至属性栏

如若想把某些AO指令设置成按钮放置到AGV属性栏,以方便人员手动点击控制操作,添加原生AO命令只需打开“放置于属性”功能,点击“修改步骤”按钮保存修改,并将修改后的AO文件保存,重启软件即可。如若想要放置自定义按钮以发送自定义报文数据也可实现(6.0.5.4版本及以上),如下演示自定义按钮的配置设置。

 

png

步骤1:设置自定义操作名称,也会作为自定义按钮的显示名称

 

步骤2:点击“添加自定义操作名称”按钮,将自定义操作添加至AO操作列表中

 

步骤3:鼠标点击选中操作列表中的新添加自定义操作

 

步骤4:标准命令选择为“空”

 

步骤5:自定义报文内容文本框内输入待发送的自定义报文数据,数据格式为16进制(可无需输入0x标识),字节间以空格符间隔

 

步骤6:打开“放置于属性”功能

 

步骤7:点击“添加步骤”按钮,保存所添加的指令操作

 

步骤8:点击“配置”按钮

 

步骤9:点击“保存”按钮,将修改后的AO文件进行保存

 

步骤10:保存项目文件,重启软件即可

 

png

 
 

如何在网络环境差的情况下使用

  • 预包的作用

    无线网络应当视为一个非绝对可靠的通讯介质,因为其固有的特性(漫游、波段干扰、串扰等),导致无法像有线网络一样具有高稳定性及可靠性;而Agv属于较为快速的移动装置,其具有惯性动量大(重量大、速度不低)、运行于现场设备层(还包括了可能存在的现场工作人员)等特性,所以一旦网络出现故障,导致系统无法及时控制设备,将造成无法避免的故障。

为了避免这种情况的发生,系统设计了预包机制,当系统工作于实时控制模式下,任务建立初始,系统会将规划路径中需要暂时停车(如直角转弯等)的地标信息以列表的方式发送给Agv,Agv需要处理该信息,当行驶到列表所在地标,自主执行停车,这样就避免了因为网路延迟造成的Agv行驶过冲等问题,当然,系统仍然会在该位置发送停车命令,用以起到双保险的效果。

预包除了包括预停止包,还包括可配置的预调速包、预转向包等。

预停止包

jpg

 

预调速包

jpg

 

预转向包,预岔路包

jpg

 

  • 心跳包的作用

    系统会定时向Agv发送心跳保活包,Agv可以通过检测保活包时间进行通讯评估,例如,当超过2倍保活包时间间隔未接受保活包时,Agv自动停车,以避免因为失联造成的错误。

  • 重发机制

    正如上文所述,无线网络系统是Agv系统中无法视为稳定的环节,当出现网络短暂不稳定时,系统下发的控制命令可能无法到达;这时系统将进行超时重发,超时时间及重发次数均可以在AO操作配置内进行设置。一般的,当网络情况良好,我们建议超时时间设置为500毫秒,重发次数设置为5次,当网络环境不佳时提升这两个参数。


 

如何将设备接入系统

如果采用环野MagicBox系列控制器,无需对接系统,请略过

设备对接系统主要分为两种情况

  • 1、Agv 若希望对接Agv,请在通讯配置界面选择RingWild_PLC_V3协议,并选择CMD_RingWild_PLC_V3命令集。对接请按照以下步骤实现:
  • 1)为设备编写RWP协议解包器,如果是PLC设备,请参考本课时文件夹内的PLC解析RWP范例。如果是嵌入式设备,请参考基于C#的RWP协议解析范例。
  • 2)有了报文解析器后需要编写报文组包器,同样的,如果是PLC设备,请参考文件夹中PLC组包RWP范例。如果是嵌入式设备,请参考基于C#的RWP组包器范例。
  • 3)有了解包器及组包器,接下来需要做的工作便是解析所有控制包,将解析后的控制包与Agv具体动作绑定,实现接收到控制包后可以触发Agv动作。推荐顺序是,心跳包、停车报文、启动报文(前进、后退)、左右转报文、调速报文等。
  • 4)完成了控制包的解析与具体动作的绑定,接下来是Agv反馈给系统的信息包,主要由3个,推荐顺利分别是 读到新的IC卡、Agv信息、上传信号序号。
  • 5)完成了上述工作后,可以进行Agv车体控制测试,一切正常后,Agv成功接入系统,与现场流程需求有关的任何内容均与通讯无关,只需要学习教学中心中其他篇幅即可。
  • 2、呼叫盒/PLC等设备

    若希望对接外部信号设备,请在通讯配置界面选择RingWild_PLC_V3协议,并选择CMD_RWP_IO命令集。在该命令集下,RWP协议中的地址作为信号序号使用,如此便可以通过事件系统触发事件。如果需要系统对外传输数据,则可以使用事件系统的报文发送事件。


 

Agv操作定义


  • 简单的来说,若打算快速使用本调度系统,无非分为两个工作重心:

    1、接入设备,即是本章节所述内容。

    2、学习地图建立、事件系统、全局变量、操作定义等系统内的技术点。

    完成了以上两部分工作,便可以高效准确的使用本系统