学习路线¶
不需要先理解编译器怎样分析图。先跑通一个程序,再一层一层加入节律、设备、分支和通信。每篇教程都是一个可以直接复制运行的完整程序,用模拟设备代替真实机器人。
| 顺序 | 教程 | 读完能回答 |
|---|---|---|
| 1 | 安装与第一个程序 | 头段、图、尾段各放什么?对象状态为什么能保留? |
| 2 | 节律的四个边界 | 一次 drive 和一个周期有什么区别?Input、Yield、Feed、Output 各在哪里? |
| 3 | 借用设备 | 机械臂怎样借给节点?两个使用者怎样排序?失败时设备在哪里? |
| 4 | 分支、条件与重试 | match、守卫和图内 if 各用于什么检查?只重试一个步骤怎么写? |
| 5 | 多层节律 | 任务层和控制层怎样嵌套?哪些对象跨段保留,哪些每段新建? |
| 6 | 失败、停止与收尾 | 一段失败怎样不影响下一段?外部怎样停止一个永不结束的循环? |
| 7 | 多设备与旁路 | 两台设备各按自己的节拍运行时,怎样交换信息? |
| 8 | 事件与信号 | 操作员或其他线程发来的指令怎样驱动任务? |
| 9 | hard 节律 | 几十毫秒的规划怎样不拖住 2 ms 的控制环? |
写每一层节律之前¶
先写出这一层的四个值:整次运行收到什么(Input)、结束时交出什么(Output)、每个周期给图什么(Yield)、图每个周期交回什么(Feed)。再标出哪些对象在本层创建、哪些从外层借来。这些说不清楚时,继续加嵌套只会让程序更难读。
验证的习惯¶
用有限的节律(迭代器、计数)和固定输入,在调用方断言结果、调用次数和保留的状态;不要把断言写进节点里。无设备的版本通过之后,再换成真实驱动。