翻译原文and 原文链接:https://dzone.com/articles/from-farmers-to-programmers
下面是一个事实证明——非程序员(在本例中是农民)连接他们的设备和机器,获取数据,并设置简单的命令的故事,打破了人们认知中的程序员形象。
想象一下,在俄勒冈州的某个地方,一个农民每天都在勤勤恳恳的工作。通过远程控制拖拉机和播种机器,同时密切关注灌溉机器,每隔一小时,他都能知道他的拖拉机在地里发生了什么。这位农民购买了一种设备,既可以从田间机器接收传感器的反馈,又可以从农场远程操控各种类型的车辆。但是现在,如果他想调整机器上的进程或者是为自己的农场添加新机器,他就需要一个程序员。
但如果他没有这么一个程序员呢?如果我们能让农民在没有程序员的情况下为设备编程呢?这听起来可能有点超现实,但这是已经发生的事实。
让农民生活更惬意
Ciklum的研发工程团队必须为终端用户(农民)创建一个产品,以便为不同的硬件平台(即田间机器)轻松地编写任务。我们决定通过“拖放”概念来实现这一点——在基于web的IDE环境中连接功能块。农民可以通过web接口或移动应用程序访问所有硬件模块的数据。
在市场上,为使用IDE和通用plc(可编程逻辑控制器),几种工业自动化解决方案提供了多种可能性。然而,当需要与基于web的UI和远程信息处理功能进行灵活集成时,严重的问题就出现了。此外,工业自动化领域需要高质量的开发人员,然而,这种人才往往和农民无法挂钩。
先决条件:
1.应用程序界面必须像儿童游戏一样——小块链接到相应的功能。连接简单成一个链,让其全部都能工作。
2.UI管理田间机器的所有工作,允许农民远程控制机器,跟踪位置,收集数据,生成报告和报道意外使用或故障,等等。
3.概念证明:如果不需要大量的程序员和全周期制造,这个想法是否可行?
4.解决方案:尽可能多的操作系统、硬件和平台独立性。
我们开发团队由一名嵌入式系统架构师、三名嵌入式/数据处理工程师、一名c++开发人员和一名UI设计师组成,他们合力开发了PoC系统。
我们自己的元语言和工作流
我们自己的元语言(可视化编程语言)是基于JSON标准开发的,能够集成到三个环境中:引擎控制单元(ECU)、移动和web。这种语言还可以同时在多个ecu、车辆、移动应用程序和web应用程序上工作,允许终端用户作为单个项目的部分来控制它们。
在实践中,农民可以在没有专业开发人员的情况下,在田间对机器进行编程,也不管机器的大小、类型或制造商,使机器能够一起工作。工作流程如下:
1.终端用户打开程序界面。
2.每个机器功能都是屏幕上的一个(或多个)块。
3.用户可以拖放一些功能块,比如远程控制机器的铲子、跟踪拖拉机的位置、接收收获数据来获得必要的维护通知、操作时间等。
4.用户将块连接到程序体系结构中来管理机器的工作。
发展过程
作为概念证明,两个参考载体板与SoM在1. MX6上被使用,通过CAN总线和以太网以及树莓派相互通信。这使得通过3G调制解调器连接通过HTTP协议将数据发送到Internet服务器成为可能。用户可以从各种传感器收集数据,发送到其他板和服务器,并控制任何执行器使用数字,模拟和PWM输出。该应用程序在Windows系统、Yocto Linux、Raspbian Linux和其他基于unix的操作系统上成功运行。
PoC包含以下内容:
1.ECU应用:在系统中实现用户逻辑、处理和处理传感器数据、控制执行机构等所需的主要组件。
2.Internet Server(s):它们将最终用户连接到所有组件,如ECUs、数据和元数据存储、基于web的UI前端应用程序托管和基于web的IDE托管。
3.基于web的UI:用于系统的遥测和远程控制,与用户界面交互,根据元数据、定制的UI布局以及终端用户的任何其他视觉体验进行系统数据监控。
4.Android手机应用:用于系统的遥测和远程控制。
5.元数据可视化编辑器:基于web的IDE草案。
这意味着什么?
该PoC演示了统一开发环境的主要方法——设计、开发、测试和集成一个完整的农业和建筑机械远程信息解决方案和管理软件,以及web和移动应用程序。
统一的可视化编程语言在一个独特的IDE中组合了三个不同的环境,并使用诊断工具为农民提供反馈。该系统的界面是基于连接和配置的功能块,在没有互联网的情况下以自主模式工作。
农民比任何人都更了解这些机器。他们能够创建一个系统来控制拖拉机或播种机,以一种简单而灵活的方式,无需现场技术支持。