低代码编程
我们先来看一下效果视频
重新设计与定义低代码编程
在上一版低代码编程的基础以及大家的反馈下,我们重新优化设计了最新版本。在现在版本中,我们希望可以让大部分用户都可以用上并且取代事件以及脚本,用户可以单独使用这个工具在短时间内完成项目,也可以锻炼用户的思维逻辑能力。
低代码编程简述(和前一版本类似)
低代码编程应用于项目中,可以通过低代码编程实现以下功能:
代替脚本的使用,化难为简。
具有逻辑顺序性。
简单易上手,对使用者的门槛降低。
可以实时查看信号的流动性。
熟悉的用户可以打包复合功能块,给一般用户导入使用。
低代码编程可以随项目启动自动运行或人为控制运行
新建项目
编写
右键鼠标显示功能块,点击对应的功能块即可。
运行/停止
现在运行只需要添加功能块便可以运行,当想要暂停某个功能块时,可以关闭功能块的触发信号、或者禁用功能块。
功能块
右键跳出功能集合点击对应的功能集合会跳出列表下的功能块。
功能块的连接与切断
连接功能块时只需从输出引脚拉出线放到输入引脚即可,功能块也可随意拖动。
组合功能块
组合功能块按住Shift+鼠标左键进行框选,框选完成后右击鼠标进行分组。
锁定/解锁功能块
右键功能块时会跳出锁定/解锁。
自定义功能块(导入导出组合功能块)
选中想要导出的功能块,然后点击导出即可导出到本地,点击导入即可将本地的功能块导入到项目中(功能块多的话,可以组合后打包)。
编程资源
常量
路径常量
路径名称:输入路径。
站点常量
站点名称:输入站点。
AGV常量
AGV名称:输入AGV。
布尔值常量
浮点数常量
整数常量
字符串常量
变量
定义全局变量,名称一样的变量可随意取出,值都是一样。
默认初始值:初始的值。
变量值类型:变量值类型。
事件
AGV事件
当操作AGV时,会触发一些AGV事件,可以根据这些事件来做一些逻辑处理。
AGV输入:需要进行操作的AGV(可自定义添加、也可以外部输入AGV对象)。
事件触发行为:AGV事件类型。
到达新站点
AGV到达一个新的站点时触发一次。
新站点:输出新站点的地标值。
AGV事件触发信息:当触发 到达站点事件 时,输出一次。
开始导航
当AGV开始导航时触发一次。
AGV事件触发信息:当触发 开始导航 时,输出一次。
获取下一段路线
开始任务后,会输出当前路线和上一段路线的名称。
导航新路径:导航到新的路线。
导航前一路径:现导航路线的前一路径。
AGV事件触发信息:当触发 获取下一段路线 时,输出一次。
生成规划路径
当开始生成规划路径会触发一次。
AGV事件触发信息:当触发 生成规划路径 时,输出一次。
任务路径计算完成
当生成完规划路径后会触发一次。
AGV事件触发信息:当触发 任务路径计算完成 时,输出一次。
到达目标点
到达指定目标点后,触发一次。
目标站点:导航的目标站点。
AGV事件触发信息:当触发 到达目标点 时,输出一次。
AO指令完成
当完成一次AO命令时,触发一次。
AO命令名称:当前AGV执行的动作名称。
AGV事件触发信息:当触发 AO指令完成 时,输出一次。
人工完成/取消任务
当人工进行取消任务时,触发一次。
AGV事件触发信息:当触发 人工完成/取消任务 时,输出一次。
取消任务
当任意取消任务时,触发一次。
AGV事件触发信息:当触发 取消任务 时,输出一次。
下发自定义命令
当给AGV下发命令时触发一次。
自定义命令名称:当前给AGV下发的命令名称。
自定义命令参数:当前给AGV下发的命令参数。
AGV事件触发信息:当触发 下发自定义命令 时,输出一次。
通讯单元数据接收
当通讯单元进行一些操作时,会触发一些通讯单元事件,可以根据这些事件来做一些处理。
通讯单元输入:需要进行操作的通讯单元(可自定义添加、也可以外部输入通讯单元对象)。
事件触发行为:AGV事件类型。
建立连接
当通讯单元建立连接时,触发一次操作。
触发通讯单元:输出触发的通讯单元。
通讯事件触发信息:当触发建立连接 时,输出一次。
断开连接
当通讯单元断开连接时,触发一次操作。
触发通讯单元:输出触发的通讯单元。
通讯事件触发信息:当触发 断开连接 时,输出一次。
接受到原始数据包
当接受到数据包时,便会触发一次操作。
触发通讯单元:输出触发的通讯单元。
原始报文输出:输出的原视报文。
通讯事件触发信息:当触发 接受到原视数据包 时,输出一次。
接受到通讯协议数据包
当接受到通讯协议包时,便会触发一次操作。
触发通讯单元:输出触发的通讯单元。
通讯协议报文输出:输出的通讯协议报文。
通讯事件触发信息:当触发 接受到通讯协议数据包 时,输出一次。
信号触发
当进行信号触发时,会触发当前操作
触发通讯单元:输出触发的通讯单元。
信号序号输出:当前的信号序号输出。
通讯事件触发信息:当触发 信号触发 时,输出一次。
Picture事件
当操作图元时,会触发一些图元事件,可以根据这些事件来做一些逻辑处理。
Picture输入:需要进行操作的图元(可自定义添加、也可以外部输入图元名称)。
事件触发行为:图元事件类型。
鼠标进入图元
当鼠标移动进图元时触发一次。
触发图元:输出移动进图元的类型名称。
图元事件触发信息:当触发 鼠标进入图元 时,输出一次。
鼠标按下图元
当鼠标按下图元时触发一次。
触发图元:输出按下图元的类型名称。
图元事件触发信息:当触发 鼠标按下图元 时,输出一次。
鼠标按下并释放图元
当鼠标按下并释放图元时触发一次。
触发图元:输出按下并释放图元的类型名称。
图元事件触发信息:当触发 鼠标按下并释放图元 时,输出一次。
鼠标离开图元
当鼠标离开图元时触发一次。
触发图元:输出离开图元的类型名称。
图元事件触发信息:当触发 鼠标离开图元 时,输出一次。
索引发生改变
当索引发生改变时触发一次。
触发图元:索引发生改变的类型名称。
图元事件触发信息:当触发 索引发生改变 时,输出一次。
达到最后索引
当达到最后索引时触发一次。
触发图元:达到最后索引的类型名称。
图元事件触发信息:当触发 达到最后索引 时,输出一次。
Road事件
当AGV经过某些路线时,会触发一些路线事件,可以根据这些事件来做一些逻辑处理。
Road输入:选择路线(可自定义添加、也可以外部输入Road对象)。
事件触发行为:Road事件类型。
AGV驶入路线
当有AGV驶入选定路线时触发一次。
触发AGV:输出当前驶入路线的AGV。
触发路线:输出当前的路线名称。
路线事件触发信息:当触发 AGV驶入路线 时,输出一次。
AGV驶离路线
当有AGV驶离选定路线时触发一次。
触发AGV:输出当前驶离路线的AGV。
触发路线:输出当前的路线名称。
路线事件触发信息:当触发 AGV驶离路线 时,输出一次。
Station事件
当AGV经过某些站点时,会触发一些站点事件,可以根据这些事件来做一些逻辑处理。
Station输入:选择站点(可自定义添加、也可以外部输入Station对象)。
事件触发行为:Station事件类型。
AGV即将驶入
当有AGV驶入选定路线时触发一次。
触发AGV:输出当前即将驶入站点的AGV。
触发站点:输出当前的站点名称。
路线事件触发信息:当触发 AGV即将驶入 时,输出一次。
AGV驶入站点
当有AGV驶入站点后触发一次。
触发AGV:输出驶入站点后的AGV。
触发路线:输出当前的站点名称。
路线事件触发信息:当触发 AGV驶入站点 时,输出一次。
流程控制
For循环
可循环遍历列表中的所有对象。
起始索引:开始定位到第几位。
终止索引:最终需要定位到第几位。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
项目:当前正在遍历列表中的值。
遍历结束:是否结束一次完整的遍历流程。
功能函数
触发AGV操作
触发在操作定义中的AGV操作。(顶升下降取消任务等)
使能:使能信号,通路时才能执行。
AGV输入:指定某一辆AGV。
命令字:操作定义中的操作名。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
AGV锁定
锁定Agv,使其不会被任何操作干扰,请注意锁定一定要配合解锁,否则Agv将无法继续工作
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
AGV解除锁定
解锁Agv,使其可以继续恢复工作
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
AGV下线
AGV下线并不在站点上显示,不会拥堵其他AGV。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
AGV上线
AGV上线并且可以正常运行。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
召唤AGV到目标站点
召唤指定AGV到指定站点。
启用:使能信号,通路时才能执行。
AGV输入:想要让指定哪一辆AGV过去。
站点输入:想要去的目标站点。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
改变AGV目标站点动态下一工序号
改变AGV在某个站点去的下一个工序号,不改变当前站点的下一工序号。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
站点输入:想要改变工序号的站点。
下一工序号:需要改变的下一工序号,不会实际修改站点的下一工序号,只是存储在Agv的私有对照表中,系 统关闭后丢失。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
改变站点当前工序号
改变某个站点当前的工序号。
启用:使能信号,通路时才能执行。
站点输入:想要改变工序号的站点。
当前工序号:想要改变为多少工序号。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
改变站点下一工序号
改变某个站点的下一个工序号。
启用:使能信号,通路时才能执行。
站点输入:想要改变工序号的站点。
下一工序号:想要改变为多少工序号。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
清除AGV动态下一工序号列表
清除AGV目标站点动态下一工序号中的下一工序号缓存。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
通讯单元发送数据报文
通过通讯单元发送数据报文。
使能:使能信号,通路时才能执行。
通讯单元输入:网络配置中通讯单元的名称。
待发送数据包:需要发送出去的通讯报文内容。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
从取货点取货到送货点送货
取送货任务。
启用:使能信号,通路时才能执行。
AGV选择参数输入:输入的AGV。
取货站点输入:需要取货的站点。
送货站点:需要送货的站点。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
运行到目标站点
运行到指定的站点。
启用:使能信号,通路时才能执行。
AGV输入:想要让指定哪一辆AGV过去。
站点输入:想要去的目标站点。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
运行到下一工序
运行到下一个地标工序号。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
下一工序号:站点的下一工序号。若不填,则以AGV所在的站点的下一工序号执行。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
获取AGV所在站点
获取AGV当前所在站点。
启用:使能信号,通路时才能执行。
AGV输入:AGV对象。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
站点:AGV所在站点。
获取站点上的AGV
获取站点上存在的AGV对象。
启用:使能信号,通路时才能执行。
站点输入:想要获取的站点。
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出。
AGV对象:站点上的AGV对象。
站点是否有AGV或AGV驶来
判断站点是否有AGV或者AGV驶来,来做一些逻辑处理。
启用:使能信号,通路时才能执行。
站点输入:目标站点
触发信号:脉冲信号,true-false为一次触发。
信号输出:跟随触发信号输出
结果:站点是否有AGV或AGV驶来。
根据筛选条件选取可执行任务的AGV
选取符合条件的特定AGV。
启用:使能信号,通路时才能执行。
站点输入:想要去的站点。
触发信号:脉冲信号,true-false为一次触发。
AGV条件:可选取特定AGV。
站点条件:可选取特定站点。
信号输出:跟随触发信号输出
找到的AGV: 输出符合条件的AGV对象。
逻辑
逻辑与
相当于&,将两个输入的值&后输出对应的值。
A1:第一个输入bool(根据输入数量改变)
A2:第二个输入bool(根据输入数量改变)
取反
相当于!,将两个输入的值!后输出对应的值。
A:输入值。
分频器
触发次数均分(例:当分频次数为2时,输入改变两次才触发一次输出)。
输入:输入值。
分频系数:需要分频数。
逻辑异或
相当于^,两个输入的值^后输出对应的值。
A1:第一个输入bool(根据输入数量改变)。
A2:第二个输入bool(根据输入数量改变)
运算结果字节长度:运算结果字节长度。
通路开关
两者都有输入才会输出。
输入:需要给一个bool为true的信号才能触发。
通路:脉冲信号,需要给予一个输出脉冲。
输出:输出信号。
逻辑或
相当于|,两个输入的值|后输出对应的值。。
A1:第一个输入bool(根据输入数量改变)。
A2:第二个输入bool(根据输入数量改变)。
out:输出信号。
数学
累加器
每次自动累加。
执行脉冲:脉冲信号,需要给予一个输出脉冲。
初始值:赋值从几开始。
步进值:每次自动累加几
输出值:每累加一次输出一次。
浮点加法器
两个浮点数进行加法。该浮点数可以是整数,也可以是小数
N1值:第一个浮点数
N2值:第二个浮点数
输出值:加法结果
整数加法器
两个整数进行加法。注意:必须是整数
N1值:第一个整数
N2值:第二个整数
输出值:加法结果
字符串加法器
两个字符串进行加法。
N1值:第一个字符串
N2值:第二个字符串
输出值:加法结果
比较器
两个值进行比较。两个值可以为任何,比如常量,数值等等。
N1值:第一个值
N2值:第二个值
模式 :里面是两个值比较的符号。(== != > < >= <=)
输出值:比较结果,为真或为假。
除法
除法运算。
N1值:第一个值
N2值:第二个值
输出值:加法结果
乘法
乘法运算。
N1值:第一个值
N2值:第二个值。
输出值:加法结果
)
加法
加法运算。
N1值:第一个值
N2值:第二个值。
输出值:加法结果
)
减法
减法运算。
N1值:第一个值
N2值:第二个值。
输出值:减法结果
)
浮点减法器
浮点减法运算。浮点值可为整数,可为小数。
N1值:第一个值
N2值:第二个值。
输出值:浮点减法结果
)
整数减法器
整数减法运算。必须为整数
N1值:第一个值
N2值:第二个值。
输出值:整数减法结果
)
字符串减法器
字符串减法运算。
N1值:第一个值
N2值:第二个值。
输出值:字符串减法结果
系统
列表访问器
对列表的值进行操作。
使能:打开触发,不打开不触发。
列表输入:对列表的值进行操作。
输出索引:输出列表中第几位。
触发信号:脉冲信号,true-false为一次触发。
微型控制台
可以打印查看当前值。
ln:输入值。
获取对象的属性
可以输出AGV当前各种属性值(AGV当前地标、电量等,地标当前工位号等)。
使能:打开触发,不打开不触发。
对象:输入的对象(AGV、站点等)。
属性名称:(可选择可自己输入)当前输入对象的属性。
触发信号:脉冲信号,true-false为一次触发。
输入属性值:设置当前属性。
输出属性值:输出当前属性值。
自定义脚本
逻辑复杂的项目可以使用自定义脚本进行操作,和脚本类似,但是可以和低代码编程相融。
名称:自定义脚本名称(可写可不写)。
引脚定义:属性定义。
代码:需要执行的逻辑操作代码。
命名空间:大部分已经添加,程序的命名空间。
空白块:根据引脚定义 会自动生成一些可输入输出的引脚。
列表添加器
存储多个对象进行传递。
- 详解请看图
定时器
定时输出高低脉冲(true/false)
翻转/脉冲:翻转输入脉冲
使能:打开触发,不打开不触发
间隔:脉冲触发时间
输出:结果输出
计数器
累计计数器。
ln:输入使能
复位:重置输出值
Cnt:输出计数
输出到控制台
输出到控制台。
ln:输入