使用手册 - Simple:从使用到开发:修订间差异
无编辑摘要 |
|||
| 第92行: | 第92行: | ||
=== 2.6 保存 === | === 2.6 保存 === | ||
此步骤为最关键的一步,建议经常进行保存,点击保存项目,新建文件进行保存,建议命名格式为:日期-时间,也请不要覆盖之前的项目文件,保证出问题后方便回滚。记得每次修改,都在最新的工程文件基础上修改。 | 此步骤为最关键的一步,建议经常进行保存,点击保存项目,新建文件进行保存,建议命名格式为:日期-时间,也请不要覆盖之前的项目文件,保证出问题后方便回滚。记得每次修改,都在最新的工程文件基础上修改。 | ||
== 3.如何开发simple插件 == | |||
==== 3.1 定义场景中的一台车 ==== | |||
定义场景中的一台车,意味着需要定义场景和车,场景包括站点和路径,车包括本项目的小车。 | |||
首先在simple工程下创建xxxCar.cs,在此文件中会定义该场景内的车辆。创建车辆类,继承抽象类。如下图所示,创建了FG2305014项目的车体,继承自clumsyCar。Creat中定义了创建车辆时的基本信息,以下代码表示创建了名为“赛力斯潜伏式牵引”、ip地址为“127.0.0.1”、速度为1000的车辆。通过覆写draw方法,可以改变车体在simple界面中的形状。 | |||
[[文件:2e5f3fc590e779129098f772a24f728.png|无框|600x600像素]] | |||
在创建完车体后,还需要定义其在站点、路径上的动作。首先需要定义站点、路径上的字段,分别创建SiteFields和TrackFields类,类中的对象为站点、路径上的字段,字段可以通过coder机制(路径编译机制)下发到车体,使车辆执行对应的动作。 | |||
[[文件:9e3d59399bb843163bff85a58539fec.png|无|缩略图|600x600像素]] | |||
定义完字段,需要使用TemplateTrackCoderSettings和TemplateSiteCoderSettings进行路径编译,为路径编译的Attribute,Attribute的定义可以查看微软官方文档。下图为几个例子。 | |||
[[文件:0c5eb0d30b46820ea2a7f6e39a451a4.png|无|缩略图|600x600像素]] | |||
priority代表优先级,优先级越高,执行顺序越靠前。templateString为下发脚本的内容,agv.GO()代表执行Go方法,此方法需要在clumy工程下的AGV.cs中写好。useVerb为触发条件,track.reverseDst == dst.id表示在路径上有reverseDst字段,且值为目标点的id,此时会下发agv.Go(***)的脚本,Go中的参数分别为起始点坐标和id、终点的坐标和id、路径的id和速度、转弯类型(自旋或平滑转弯)、是否倒退,blockVerb = true代表不执行比此条优先级更低的动作。整条TemplateSiteCoderSettings的意思为:在路径上有reverseDst字段,且值为目标点的id,此时会下发让车辆倒走的脚本,且为最后一个动作。 | |||
2023年10月19日 (四) 14:59的版本
1.认识simple
1.1 认识Simple根目录
下图是某项目的Simple根目录,其中SimpleComposer.exe为Simple的应用程序,simple.json为配置文件,根目录下的各种.dll库文件为依赖项,如本项目中用到AbstractChainDeliveryMission类,就引用自MDCSToolBox.dll中。其余json文件,如1510.json为Simple的工程文件。plugins文件夹下存储了工程师开发的当前场景的插件。

下图为错误示范,由于开发项目时引用不规范,导致编译出很多无用的dll库文件,且直接放在Simple根目录下,有时会导致Simple启动时报错。

1.2 认识simple.json文件
下图为simple.json文件中的内容,autoload代表了自动加载此工程文件,ip及port为simple监听的ip及端口。

1.3 加载simple插件
打开Simple文件夹,在Plugin里面会有工程师提供的当前场景的插件(默认名称AMRScene.dll),根据车型以及业务场景的不同,工程师会编写对应的插件,如果插件有更新,替换Simple/Plugins目录内AMRScene.dll即可。AMRScene.pdb为调试所用,可以简单的理解为,当程序异常或报错时,可以在控制台看到异常的程序在哪一行。
2.如何使用Simple
2.1 simple主界面
如下图,为simple主界面,界面中的各个元素的功能如标注中所示。
2.2 创建小车
如下图,点击车辆-添加,可以选择添加的小车类型,本地模拟可以添加模拟车,实际生产中需添加本项目车型。
添加车辆后,若为本地模拟,只需要设置速度,将速度填写在speed字段中;若为实际车辆,还需要填写ip地址,填写在address字段中。
2.3 创建站点和路径
如下图所示,点击场景-添加,即可添加站点和路径,首先添加站点,添加路径时需要将站点连接起来。
2.4 添加/修改站点、路径字段
如下图所示,选中站点或路径时,可以看到添加的字段。字段需要根据程序中所写的内容进行添加。点击添加字段,输入 字段名:字段值 即可添加字段。

simple中内置了很多字段,如下表
| 字段类型 | 字段名称 | 字段含义 | 举例 |
|---|---|---|---|
| 站点 | mustFree | 必空点 | 给某个点设置mustFree:[1,2,3],代表此站点被锁时,id为1、2、3的站点不允许被其它点锁定 |
| 站点 | codeArrive | 到达此点动作 | codeArrive:agv.Put();代表到达此点后执行Put动作 |
| 站点 | codeLeave | 离开此点动作 | codeLeave:agv.Put();代表离开此点时执行Put动作 |
| 站点 | codeQueue | 队列动作 | codeQueue:agv.Put();代表在此点发生路径切换时执行Put动作 |
| 站点 | routing | 必经点 | 参考使用手册-routing字段使用 |
| 路径 | speed | 该路径速度 | speed:1000,代表在此段路径上车辆速度切换为1000 |
| 路径 | direction | 该路径方向 | direction:1代表此段路径为单行道且只能正向,2代表反向,0不限制方向 |
2.4 移动车辆
在创建好站点、路径,添加好车辆之后,可以控制小车移动,如果使用模拟车,需要先选中模拟车,右键点击站点,模拟车就会移动到该站点,如果使用真实小车,小车会出现在定位的位置上。点击初始化,模拟车需要双击“去某地”,然后左键点击想去的站点,真实车辆直接使用右键单击想去的站点,就会生成路径并执行。


2.5 使用进程
工程师会针对业务场景设计进程,如自动充电、链式搬运等,点击进程-添加即可添加对应的进程,添加进程后需启动进程,并且可以点击下方的按钮,会有对应的动作。
2.6 保存
此步骤为最关键的一步,建议经常进行保存,点击保存项目,新建文件进行保存,建议命名格式为:日期-时间,也请不要覆盖之前的项目文件,保证出问题后方便回滚。记得每次修改,都在最新的工程文件基础上修改。
3.如何开发simple插件
3.1 定义场景中的一台车
定义场景中的一台车,意味着需要定义场景和车,场景包括站点和路径,车包括本项目的小车。
首先在simple工程下创建xxxCar.cs,在此文件中会定义该场景内的车辆。创建车辆类,继承抽象类。如下图所示,创建了FG2305014项目的车体,继承自clumsyCar。Creat中定义了创建车辆时的基本信息,以下代码表示创建了名为“赛力斯潜伏式牵引”、ip地址为“127.0.0.1”、速度为1000的车辆。通过覆写draw方法,可以改变车体在simple界面中的形状。
在创建完车体后,还需要定义其在站点、路径上的动作。首先需要定义站点、路径上的字段,分别创建SiteFields和TrackFields类,类中的对象为站点、路径上的字段,字段可以通过coder机制(路径编译机制)下发到车体,使车辆执行对应的动作。

定义完字段,需要使用TemplateTrackCoderSettings和TemplateSiteCoderSettings进行路径编译,为路径编译的Attribute,Attribute的定义可以查看微软官方文档。下图为几个例子。

priority代表优先级,优先级越高,执行顺序越靠前。templateString为下发脚本的内容,agv.GO()代表执行Go方法,此方法需要在clumy工程下的AGV.cs中写好。useVerb为触发条件,track.reverseDst == dst.id表示在路径上有reverseDst字段,且值为目标点的id,此时会下发agv.Go(***)的脚本,Go中的参数分别为起始点坐标和id、终点的坐标和id、路径的id和速度、转弯类型(自旋或平滑转弯)、是否倒退,blockVerb = true代表不执行比此条优先级更低的动作。整条TemplateSiteCoderSettings的意思为:在路径上有reverseDst字段,且值为目标点的id,此时会下发让车辆倒走的脚本,且为最后一个动作。