智能制造

新一代控制技术

背景介绍:我需要在飞腾E2000Q核心的汉为开发板上运行linux操作系统,且操作系统通过U盘启动。本文章解决的问题是如何制作U盘。使用的工具包括:1、一台x86架构的Linux台式机。2、一个128G的U盘。

构建内核、设备树、根目录

方法来源:Phytium嵌入式软件/Phytium-Linux-buildroot

系统要求

Buildroot被设计为在x86 Linux系统上运行,我们只支持在ubuntu20.04、ubuntu22.04、debian11这三种x86主机上运行phytium-linux-buildroot,不支持其他系统。 Buildroot需要主机系统上安装以下依赖包:

1
2
3
4
$$ sudo apt update
$$ sudo apt install debianutils sed make binutils build-essential gcc
\g++ bash patch gzip bzip2 perl tar cpio unzip rsync file bc wget git
\debootstrap qemu-user-static binfmt-support debian-archive-keyring

对于debian11系统,需要设置PATH环境变量:PATH=$PATH:/usr/sbin

下载phytium-linux-buildroot

1
$ git clone https://gitee.com/phytium_embedded/phytium-linux-buildroot.git

默认配置文件和扩展配置文件

为飞腾CPU平台构建的文件系统的配置文件位于configs目录。
其中,以defconfig结尾的为默认配置文件,以config结尾的为扩展配置文件。
defconfig可以和config文件进行组合,用以扩展特定的功能,但要注意不能随意组合。
defconfig
在phytium-linux-buildroot根目录下执行$ make list-defconfigs,返回configs目录中的defconfig配置文件。

1
2
$$ cd xxx/phytium-linux-buildroot
$$ make list-defconfigs

其中以phytium开头的为飞腾相关的defconfig配置文件,包含:

  • phytium_debian_defconfig
  • Build for debian systemphytium_defconfig
  • Build for busybox minimal systemphytium_initrd_defconfig
  • Build for initrdphytium_ubuntu_defconfig
  • Build for ubuntu system

编译默认配置的文件系统

(1)加载defconfig

1
$ make phytium_xxx_defconfig

其中phytium_xxx_defconfig为以下文件系统之一:
phytium_ubuntu_defconfig
phytium_debian_defconfig
phytium_defconfig
(2)编译
$ make
(3)镜像的输出位置
生成的根文件系统、内核、img 镜像位于output/images目录。
img 镜像
目前buildroot支持编译img 镜像(disk.img),生成的img 镜像位于output/images目录。img 镜像包含了根文件系统、内核、设备树和GRUB。 使用img 镜像安装系统,不需要像之前那样将存储设备手动分区再拷贝文件,只需要将disk.img文件写入存储设备即可。

制作启动U盘

以下是详细的步骤,教你如何格式化U盘并重新构建两个分区。假设U盘设备名为 /dev/sdb。

步骤1:识别U盘

首先,使用 lsblk 或 fdisk -l 命令识别U盘的设备名:

lsblk
或者
sudo fdisk -l

假设你的U盘设备名是 /dev/sdb。

步骤2:使用 fdisk 分区

  1. 启动 fdisk
    sudo fdisk /dev/sdb

  2. 删除现有分区:
    在 fdisk 命令行中,输入以下命令删除所有现有分区:

  • 输入 d 并回车,选择要删除的分区号,重复此步骤直到所有分区都删除。
  • 输入 p 查看当前分区表,确保所有分区都删除。
  1. 创建新的GPT分区表:
    g

  2. 创建第一个分区(EFI系统分区):

  • 输入 n 创建新分区,选择分区号 1,设置起始扇区和大小(例如 +512M)。
  • 输入 t 修改分区类型,选择分区号 1,输入 1 设置为 EFI System。
  1. 创建第二个分区(根文件系统分区):
  • 输入 n 创建新分区,选择分区号 2,使用默认起始扇区和默认结束扇区。
  1. 查看分区表:
    p

  2. 写入分区表并退出:
    w

步骤3:格式化新分区

  1. 格式化EFI系统分区为 vfat** 文件系统**:
    1
    sudo mkfs.vfat /dev/sdb1
  2. 格式化根文件系统分区为 ext4** 文件系统**:
    1
    sudo mkfs.ext4 /dev/sdb2

步骤4:拷贝文件到分区

  1. 挂载分区:
    1
    sudo mount /dev/sdb1 /mnt
  2. 拷贝内核、设备树和GRUB到EFI分区:
    1
    2
    3
    4
    5
    sudo cp /path/to/Image /mnt
    sudo cp /path/to/e2000q-come-board.dtb /mnt
    sudo cp -r /path/to/EFI/ /mnt
    sync
    sudo umount /dev/sdb1
  3. 挂载根分区:
    1
    sudo mount /dev/sdb2 /mnt
  4. 拷贝并解压根文件系统到根分区:
    1
    2
    3
    4
    5
    6
    sudo cp /path/to/rootfs.tar /mnt
    cd /mnt
    sudo tar xvf rootfs.tar
    sync
    cd ~
    sudo umount /dev/sdb2

步骤5:设置U-Boot环境变量

确保U-Boot配置正确以引导新的根文件系统:

1
2
3
4
setenv bootargs 'console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/sdb2 rootdelay=5 rw;'
setenv boot_usb 'usb stop; usb start; fatload usb 0:1 0x90000000 e2000q-hanwei-board.dtb; fatload usb 0:1 0x90100000 Image; booti 0x90100000 - 0x90000000;'
setenv bootcmd 'run boot_usb'
saveenv

标题(Title)

How to tell the difference between a model and a digital twin
从对数字孪生和模型的概念区分展开对数字孪生的讨论

摘要(Abstract)

本文主要讨论了“数字孪生”(Digital Twin)与“模型”(Model)的区别及其应用。

背景(Background)

数字孪生是一个热门概念,市场上多样且模糊的定义和解释的危险在于,可能导致人们将其视为炒作,一旦炒作和随之而来的反弹结束,最终的兴趣和使用水平(即“生产力高原”)可能远低于该技术的最大潜力。

阅读全文 »

标题(Title)

Safety Helmet Detection Based on YOLOv5
用YOLOv5检测安全帽,是一个具体场景的应用
2021 IEEE International Conference on Power Electronics, Computer Applications (ICPECA)

摘要(Abstract)

安全帽是工人最基本的保护装备,对工人生命安全有重大意义。然而,由于缺乏安全意识,安全帽往往未被佩戴。本文提出了一种基于YOLOv5的安全帽检测方法,并对6045张收集的数据集进行了标注。使用不同参数的YOLOv5模型进行训练和测试,实验结果显示YOLOv5s的平均检测速度达到110帧每秒,完全满足实时检测要求。使用可训练目标检测器的预训练权重,YOLOv5x的mAP达到94.7%,证明了基于YOLOv5的安全帽检测方法的有效性。

阅读全文 »

标题(Title)

Humanoid Locomotion as Next Token Prediction
借鉴自然语言处理的方法,训练人形机器人

摘要(Abstract)

本论文提出了一种将类人机器人控制问题转化为下一个令牌预测问题的方法,类似于自然语言处理中的下一个单词预测。这一方法通过自回归地预测传感器和运动轨迹,训练了一个因果transformer模型。

阅读全文 »

标题(Title)

LLM4PLC Harnessing Large Language Models for Verifiable Programming of PLCs in Industrial Control Systems
利用大模型为PLC自动生成代码,PLC用于工业控制。
arXiv:2401.05443v1 [cs.SE] 8 Jan 2024

摘要(Abstract)

大语言模型在自动化生成代码方面已经起到重要作用,但是其应用在自动控制领域仍然面临挑战。类似用于PLC的代码面对如下挑战。

  1. 训练样本少
  2. 对代码的可靠性要求极高,这些代码会直接作用于物理世界,稍有偏差就可能造成重大损失。(仿真是解决问题的一个思路,如果PLC自动生成代码,然后先在仿真环境跑通,再部署到产线上,这应该是这个方向的进一步创新。而且仿真的结果可以直接反馈给LLM,方便其进一步迭代,这将比本文描述的方案更为高效。)
    本文提出了LLM4PLC,用于自动化生成PLC代码,为了解决上述的问题,引入了grammar checkers, compilers and SMV verifiers确保生成代码的可靠性。对大模型进行微调和针对性的提示词工程。
    最后本文生成的代码在MFTB平台上进行了测试,证明了该方法对PLC代码有较大提升。
阅读全文 »

标题(Title)

A Cyber-Physical Systems architecture for Industry 4.0-based manufacturing systems
本文研究工业4.0背景下制造系统的信息物理系统架构
Article in Manufacturing Letters · December 2014

摘要(Abstract)

本文主要讨论了如何通过部署网络物理系统(CPS)来实现工业4.0,工业4.0的核心在于通过网络物理系统(CPS)将物理世界和计算空间紧密结合,以实现更高效、更协作和更具弹性的制造系统。CPS利用传感器、大数据和先进的分析方法,实时监控和管理制造过程中的各个方面。在这一早期发展阶段,迫切需要对CPS进行明确定义。本文提出了一个统一的五级架构,作为CPS实施的指导方针。

阅读全文 »

标题(Title)

YOLOv10: Real-Time End-to-End Object Detection
目标检测经典模型,YOLO系列,还没用过,试一次。
23 May 2024

摘要(Abstract)

YOLOs在实施目标检测的应用方向占据主导地位,其很好的平衡了计算效率和准确率。然而YOLO依然存在问题,YOLO算法依赖于非极大值抑制(NMS)进行后处理,这对端到端部署和推理延迟产生负面影响。此外,YOLO的各个组件设计缺乏全面检查,导致计算冗余和模型能力受限。为了解决上述问题,本文提出一致双重分配策略(Consistent Dual Assignments)和整体效率-准确性驱动的模型设计策略。大量实验验证本策略达到了state-of-the-art的效率以及表现。

阅读全文 »

标题(Title)

Virtual PLC in Industrial Edge Platform: Performance Evaluation of Supervision and Control Communication
本文探讨了虚拟PLC在工业边缘平台的性能,这个性能关注的主要是监督和控制通信。
IEEE TRANSACTIONS ON INSTRUMENTATION AND MEASUREMENT, VOL. 73, 2024

摘要(Abstract)

边缘计算可以减少延时,PLC设备和边缘计算结合可以更好的实现自动控制。为了追求更高的可扩展性和可维护性,容器化的虚拟PLC成为一种方案。但vPLC的短板就在于其通信延时可能增加。本文就在研究vPLC在机器对机器(M2M)场景中与其他机器、控制器、监督系统和数据采集系统交换数据时的性能。结果指出,vPLC可以同样达到3ms的延时,但是由于其IP栈的实现,可能会出现50ms的随机延时。

阅读全文 »
0%