查看“使用手册 - Simple:coder(路径编译器)机制详解”的源代码
←
使用手册 - Simple:coder(路径编译器)机制详解
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
== 1.概念 == 路径编译是MDCS架构中一个重要概念,它是上位调度系统与下位车端系统之间的桥梁。路径编译发生在寻路完成之后,路径编译的操作对象是由“站点、路径、站点、路径......”构成的序列,路径编译的结果是一串AGV可以执行的命令脚本,该脚本对应车端SimpleAGVInterface里面定义的接口。 == 2.机制介绍 == 我们将编译器称为“coder”,实际业务中,整个编译逻辑是由若干的coder构成的。也就是说,coder在同一个站点或者可以叠加使用。处理路径的,称为trackCoder;处理站点的,称为siteCoder。定义好某个车型的所有coder,就完成了该车型的业务层面的所有行为定义(即,在什么路径/站点上触发什么样的行为)。下面用一个具体的例子详细解释coder运行的机制。 [[文件:B3fa65c75ecd770e5882c459a9b232e.png|无框|600x600像素]] 我们将“小车从A到B”的过程称为一个“plan”。如上图所示,假设已经生成了`模拟车1`的一段plan。该plan包含6个site(站点)、5段track(路径),共11个segment。编译路径时,依据通行顺序检查所有segment。对于每一个segment,若它是站点,则检查所有的siteCoder;若它是路径,则检查所有的路径trackCoder。对于每一个被检查的coder,依次判断其是否能够触发,触发后生成AGV脚本,并判断是否继续检查剩余的coder。如下图所示,为车辆执行的脚本。 [[文件:2ff3859cb01c4c06dfdd71120a5e910.png|无框|600x600像素]] == 3.TemplateCoderSettings使用方法 == === 3.1 CoderSettings编码方法 === <code>TemplateTrackCoderSettings</code>和<code>TemplateSiteCoderSittings</code>是分别实现trackCoder和SiteCoder的[https://learn.microsoft.com/zh-cn/dotnet/csharp/advanced-topics/reflection-and-attributes/attribute-tutorial Attribute],通过在Simple工程中xxxCar.cs中小车类之前添加<code>TemplateTrackCoderSettings</code>和<code>TemplateSiteCoderSittings</code>定义站点编译器。下方DummyCar的示例,无条件地将所有路径编译为agv.Go()这一动作:<syntaxhighlight lang="c#" line="1"> class DummyCarTrackField { public int speed = -1; public bool reverse = false; public int reverseDst = -1; } [TemplateTrackCoderSettings( templateString = "agv.Go(${src.x},${src.y},${src.id},${dst.x},${dst.y},${dst.id},${track.id},${track.speed},${track.reverse || track.reverseDst == dst.id});", priority = 0, trackFields = typeof(DummyCarTrackField), useVerb = "true", blck)] [CarType("模拟车")] public class DummyCar : Car </syntaxhighlight>CoderSitting中包含以下字段: {| class="wikitable" |+ !字段 !类型 !含义 |- |templateString |string |编译后执行的命令 |- |priority |int |优先级,数值越大越先被检查 |- |siteFields |Type |定义站点字段的类的Type |- |trackFields |Type |定义路径字段的类的Type |- |planFields |Type |定义车辆字段的类的Type |- |useVerb |string |触发条件。默认为"true" |- |blockVerb |string |触发后,若blockVerb为"true",则不再检查其他优先级更低的coder;若为"false",则继续检查剩余优先级更低的coder。默认为"false" |}
返回
使用手册 - Simple:coder(路径编译器)机制详解
。
导航菜单
个人工具
中文(中国大陆)
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息