本帖最后由 CSN小助理 于 2026-10-15 15:25 编辑
问题描述: 本模型旨在通过 FlexScript 动态控制自动导引车(AGV)的行驶速度,即在同一 AGV 网络中运行两台 AGV 并使其具有不同的速度表现,以模拟不同Load Type负载状态或不同AGV Type类型的搬运设备。具体实现思路为:先在 AGV Network 属性中按 Load Type 或 AGV Type 预配置多组速度配置文件,再在 Process Flow 中创建 AGV 后通过 FlexScript 代码将目标 AGV 指定到对应的速度配置上;其中上方 AGV 保持默认配置作为对照,下方 AGV 通过代码修改其 AGVType 或 loadType,使其行驶速度与上方 AGV 形成差异。
解决方法: 【1】通过修改 LoadType 切换速度 LoadType 的本质是在同一张 AGV Type 速度表里,按列区分不同负载状态下的速度。AGV Network 在行驶时会根据当前 loadType 查表取值,因此只要在行驶任务启动前把 loadType改到目标列,AGV 就会按目标列的速度行驶。 首先需要配置速度表。在 AGV Network 属性的 AGV Types 标签页中,为不同 Load Type(Empty、Loaded、LoadType3)分别设置直线速度、加速度等参数。在配置完速度表后,需要修改Initialize Travel“初始化行进”触发器中的默认代码以适配需求。在Initialize Travel 触发器中输入 - agv.loadType = te.LoadType;
复制代码它会将 Task Executor 上的 LoadType值,同步到AGV 网络中实际使用的 agv.loadType 属性上。随后,需要在PF的自定义逻辑活动中把 AGV 的 LoadType 改成目标值:上方AGV对应Empty状态,下方AGV对应LoadType3状态。这样经过代码设置的 AGV 会默认使用索引 1(Empty)和索引3(LoadType3)的速度配置。 - token.resource.LoadType = 1; // 设为 Empty 对应的编号
- token.resource.LoadType = 3; // 设为 LoadType3 对应的编号
复制代码【2】通过修改 AGVType 切换速度 AGVType 是切换到完全不同的 AGV 类别,每个类别有独立的速度表和参数。 首先新建 AGV Type。在 AGV Network 属性的 AGV Types 标签页中,点绿色加号新建第二个 AGV Type,命名为 AGVType2,并为其配置独立的速度参数。随后,通过代码设置 agvType。与 LoadType 不同,AGVType 没有直接的属性赋值方法,需要将 AGV 对象强制转换为树节点后,从而访问对应的子节点并设置其值。其中 2 为新建 AGV Type2 在列表中的索引(DefaultAGV 为 1)。该设置将在下一个行驶任务启动时生效。 - AGV(token.resource).as(treenode).subnodes["agvType"].value = 1; //上方AGV类型
- AGV(token.resource).as(treenode).subnodes["agvType"].value = 2; //下方AGV类型
复制代码
|