Marco Nie - Development https://blog.niekun.net/category/dev/ zh-CN Thu, 17 Jul 2025 13:57:00 +0800 Thu, 17 Jul 2025 13:57:00 +0800 DeepWiki-open 生成项目 wiki https://blog.niekun.net/archives/DeepWiki-open-wiki-1.html https://blog.niekun.net/archives/DeepWiki-open-wiki-1.html Thu, 17 Jul 2025 13:57:00 +0800 admin DeepWiki-open可以为任何GitHub、GitLab或BitBucket代码仓库自动创建美观、交互式的Wiki,也可以提交本地仓库给它。试用了下发现效果还不错,可以作为项目开发指南。

GitHub 主页:https://github.com/AsyncFuncAI/deepwiki-open

使用方法很简单,clone 仓库代码,配置环境变量,启动前端和后端服务即可。

下载

git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open

配置

需要提前准备 openai 和 google ai 的 api key。

Google AI api:https://makersuite.google.com/app/apikey
openai api:https://platform.openai.com/api-keys

根目录新建 .env 文件,配置环境变量:

GOOGLE_API_KEY=XXXXXXXXXXXXXXXXXXX
OPENAI_API_KEY=XXXXXXXXXXXXXXXXXXX
OPENROUTER_API_KEY=XXXXXXXXXXXXXXX

OPENROUTER_API_KEY 是可选项,其他两个是必须项。

注意,我测试发现免费帐户的 openai api 在生成少数几个 wiki 后就会报错超出最大请求次数 error。而且项目必须使用 OpenAI-Compatible Embedding Models,解决方法是给 openai 充值或者使用 Alibaba Qwen 的 openai 兼容 api。

alibaba qwen api:https://bailian.console.alibabacloud.com/?tab=app#/api-key

如果使用其他 OpenAI-Compatible Embedding Models 需要将环境变量的 OPENAI_API_KEY 改为此第三方的 api key,然后在环境变量指定 OPENAI_BASE_URL:

OPENAI_BASE_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1  #示例中是 alibaba cloud 的 base url 地址

然后修改 api/config/embedder.json 为:

{
  "embedder": {
    "client_class": "OpenAIClient",
    "initialize_kwargs": {
      "api_key": "${OPENAI_API_KEY}",
      "base_url": "${OPENAI_BASE_URL}"
    },
    "batch_size": 10,
    "model_kwargs": {
      "model": "text-embedding-v3",
      "dimensions": 512,
      "encoding_format": "float"
    }
  },
  "embedder_ollama": {
    "client_class": "OllamaClient",
    "model_kwargs": {
      "model": "nomic-embed-text"
    }
  },
  "retriever": {
    "top_k": 20
  },
  "text_splitter": {
    "split_by": "word",
    "chunk_size": 350,
    "chunk_overlap": 100
  }
}

使用

安装环境并启动后端,提前建立一个虚拟环境:

python -m venv .venv
.venv\Scripts\activate

pip install -r api/requirements.txt
python -m api.main

安装环境并启动前端:

npm install
npm run dev

然后打开浏览器访问:http://localhost:3000,即可按照提示操作。

]]>
0 https://blog.niekun.net/archives/DeepWiki-open-wiki-1.html#comments https://blog.niekun.net/feed/category/dev/archives/DeepWiki-open-wiki-1.html
建立本地 Web 服务器 https://blog.niekun.net/archives/3024.html https://blog.niekun.net/archives/3024.html Thu, 24 Apr 2025 09:04:00 +0800 admin 建立一个本地 Web 服务器来快速查看本地网站(HTML, CSS, JavaScript 文件)有几种非常快速的方法,通常只需要一行命令。这里介绍几种最常用的:

1. 使用 Python 内置的 HTTP 服务器 (通常最快,无需额外安装)

如果你的电脑上安装了 Python 3 (现在大多数操作系统都自带或容易安装),这是最快的方法之一,因为它不需要安装任何额外的库。

  • 步骤:

    1. 打开你的终端或命令提示符 (Terminal / Command Prompt / PowerShell)。
    2. 使用 cd 命令导航到你的网站文件所在的根目录(也就是包含 index.html 文件的那个文件夹)。
    3. 运行以下命令:

      python -m http.server
      • 如果你使用的是较旧的 Python 2 版本 (尽量避免使用),命令是:

        python -m SimpleHTTPServer
    4. 终端会显示类似 Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ... 的信息。
    5. 打开你的网页浏览器,访问 http://localhost:8000 或者 http://127.0.0.1:8000
    6. 如果你的根目录下没有 index.html,它会列出目录中的文件。
    7. 要停止服务器,回到终端按 Ctrl + C
  • 优点: 极快启动,通常无需安装额外软件。
  • 指定端口: 如果 8000 端口被占用,你可以指定其他端口:

    python -m http.server 8080

2. 使用 Node.js 的 http-serverlive-server (功能更强,需要 Node.js)

如果你安装了 Node.js 和 npm (Node Package Manager),可以使用一些非常方便的包。

  • a) http-server (基础服务器)

    1. 首次安装 (全局安装,只需一次):

      npm install -g http-server
    2. 启动服务器:

      • 在终端中,cd 到你的网站根目录。
      • 运行:

        http-server
    3. 终端会显示可用的访问地址,通常是 http://127.0.0.1:8080
    4. 在浏览器中打开该地址。
    5. Ctrl + C 停止。
  • b) live-server (带自动刷新功能)
    live-server 会在你修改并保存文件后自动刷新浏览器,非常适合开发调试。

    1. 首次安装 (全局安装,只需一次):

      npm install -g live-server
    2. 启动服务器:

      • 在终端中,cd 到你的网站根目录。
      • 运行:

        live-server
    3. 它通常会自动在你的默认浏览器中打开网站 (http://127.0.0.1:8080 或类似地址)。当你修改并保存 HTML/CSS/JS 文件时,浏览器会自动刷新。
    4. Ctrl + C 停止。
  • 优点: 功能更强(特别是 live-server 的自动刷新),Node.js 在 Web 开发中很常用。
  • 缺点: 需要先安装 Node.js 和对应的 npm 包。

3. 使用 VS Code 扩展 "Live Server" (集成在编辑器中,非常方便)

如果你使用 Visual Studio Code 编辑器,这是最方便的方法之一。

  • 步骤:

    1. 打开 VS Code。
    2. 转到扩展视图 (Extensions view, 图标通常在左侧边栏)。
    3. 搜索 "Live Server" (作者通常是 Ritwick Dey)。
    4. 点击 "Install" 安装。
    5. 安装完成后,打开你的网站项目文件夹。
    6. 在你的 index.html 文件上右键单击,选择 "Open with Live Server"。
    7. 或者,点击 VS Code 底部状态栏右下角的 "Go Live" 按钮。
    8. 服务器会启动,并在浏览器中自动打开页面,同样支持自动刷新。
    9. 要停止,可以再次点击状态栏的端口号按钮 (显示为 "Port: 5500" 或类似)。
  • 优点: 无需命令行操作,与编辑器紧密集成,带自动刷新。
  • 缺点: 需要使用 VS Code 编辑器。

4. 使用 PHP 内置服务器 (如果已安装 PHP)

如果你的系统碰巧安装了 PHP (通常用于后端开发,但也可用于快速启动静态服务器)。

  • 步骤:

    1. 打开终端或命令提示符。
    2. cd 到你的网站根目录。
    3. 运行:

      php -S localhost:8000
      • 你可以将 8000 替换为其他端口号。
    4. 在浏览器中访问 http://localhost:8000
    5. Ctrl + C 停止。
  • 优点: 如果已安装 PHP,则命令简单。
  • 缺点: 不如 Python 那么普遍预装,也不如 Node.js 工具或 VS Code 扩展功能丰富(如自动刷新)。

哪个最快?

  • 如果你有 Python: python -m http.server 通常是最快的,因为它很可能已经安装好了。
  • 如果你用 VS Code: 安装并使用 "Live Server" 扩展几乎是最方便、启动最快的方式(点击按钮即可)。
  • 如果你常用 Node.js: live-serverhttp-server 也非常快,并且 live-server 提供了非常有用的自动刷新功能。

选择哪种取决于你电脑上已有的环境和你个人的偏好。对于纯粹的“快速启动一个能看本地网页的服务器”,Python 的内置服务器通常拔得头筹。

]]>
0 https://blog.niekun.net/archives/3024.html#comments https://blog.niekun.net/feed/category/dev/archives/3024.html
honkit 使用教程及部署github page https://blog.niekun.net/archives/3021.html https://blog.niekun.net/archives/3021.html Fri, 17 Jan 2025 17:14:00 +0800 admin 1. 什么是 Honkit?

Honkit 是一个现代化的静态书籍生成工具,它是基于旧版 GitBook 开发的,支持 Markdown 文件的编写和多种输出格式,如 HTML 和 PDF。

2. 初始化 Honkit 项目

2.1 创建 Honkit 项目

  1. 创建项目目录

    mkdir my-honkit-project
    cd my-honkit-project
  2. 初始化 Honkit 项目

    npx honkit init

    这会生成以下两个文件:

    • README.md:书籍的主页面。
    • SUMMARY.md:目录结构的定义。
  3. 安装 Honkit

    npm install honkit --save-dev

3. 本地构建书籍

3.1 运行开发服务器

在项目目录中运行以下命令启动本地预览:

npx honkit serve

默认情况下,书籍会在 http://localhost:4000 上运行。

3.2 生成静态文件

当书籍准备好后,运行以下命令生成静态 HTML 文件:

npx honkit build

生成的文件会存储在 _book 目录中。


4. 生成 PDF 文件

Honkit 支持将书籍生成 PDF 文件,但需要预先安装 Calibre 电子书管理软件。

4.1 安装 Calibre

  1. 下载 Calibre

  2. 确保 Calibre 路径正确

    • 检查环境变量

      • 通常,Calibre 安装会自动将路径添加到系统的环境变量 PATH 中。
      • 如果未自动添加,手动将 Calibre 的安装目录路径添加到 PATH 环境变量中。
    • 例如,Windows 系统下,路径可能为:

      C:\Program Files\Calibre2
    • Linux 和 macOS 用户可通过以下命令验证:

      which ebook-convert

      如果返回路径为空,说明需要手动添加。

  3. 重新打开终端
    添加路径后,确保关闭并重新打开终端。

4.2 生成 PDF

运行以下命令生成 PDF 文件:

npx honkit pdf . output.pdf
  • . 表示当前目录。
  • output.pdf 是生成的 PDF 文件名。

5. 部署到 GitHub Pages

5.1 创建 GitHub 仓库

  1. 前往 GitHub 创建一个新仓库(例如 my-honkit-book)。
  2. 将本地项目与远程仓库关联:

    git init
    git remote add origin https://github.com/<username>/my-honkit-book.git
    git add .
    git commit -m "Initial commit"
    git branch -M main
    git push -u origin main

5.2 配置 GitHub Actions 自动部署

  1. 创建 GitHub Actions 配置文件
    在项目的根目录下创建 .github/workflows/deploy.yml 文件,内容如下:

    name: Deploy Honkit to GitHub Pages
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout Code
          uses: actions/checkout@v3
    
        - name: Setup Node.js
          uses: actions/setup-node@v3
          with:
            node-version: '18'
    
        - name: Install Dependencies
          run: npm install
    
        - name: Build Honkit
          run: npx honkit build
    
        - name: Deploy to GitHub Pages
          uses: peaceiris/actions-gh-pages@v3
          with:
            github_token: ${{ secrets.GITHUB_TOKEN }}
            publish_dir: ./_book
  2. 提交配置文件
    提交并推送配置文件到 GitHub:

    git add .github/workflows/deploy.yml
    git commit -m "Add GitHub Actions for deployment"
    git push origin main
  3. 启用 GitHub Pages

    • 进入仓库的 Settings > Pages
    • Source 下选择 gh-pages 分支(如果没有需要手动新建此分支),点击保存。

6. 绑定自定义域名

6.1 配置 GitHub Pages

  1. 进入仓库的 Settings > Pages
  2. Custom domain 中输入您的自定义域名(例如 www.example.com)。
  3. 点击 Save。GitHub 会自动生成一个 CNAME 文件。

6.2 配置 DNS 记录

登录您的域名注册商控制台,添加以下 DNS 记录:

  • 绑定子域名(例如 www.example.com):
    添加 CNAME 记录

    www  CNAME  <username>.github.io
注意:将 <username> 替换为您的 GitHub 用户名。

6.3 启用 HTTPS

  1. 返回 GitHub 仓库的 Settings > Pages
  2. 勾选 Enforce HTTPS,以启用 HTTPS 访问。

自定义域名每次推送后消失的解决方法

当每次推送代码后,自定义域名设置消失,通常是由于 CNAME 文件被覆盖或删除。GitHub Pages 需要根目录的 CNAME 文件来保存自定义域名信息。如果该文件丢失或被覆盖,GitHub 就无法识别您的自定义域名。


解决方法

手动将 CNAME 文件添加到源码目录

  1. 创建 CNAME 文件
    在项目根目录(如 main 分支)下创建一个 CNAME 文件,并在文件中输入您的自定义域名,例如:

    www.example.com
  2. 提交更改
    提交并推送 CNAME 文件到远程仓库:

    git add CNAME
    git commit -m "Add CNAME file"
    git push origin main
  3. 验证
    每次部署后,CNAME 文件会自动被包含在 gh-pages 分支中,不会被覆盖。

验证步骤

  1. 检查 CNAME 文件

    • 进入 GitHub 仓库的 gh-pages 分支,确认根目录下有 CNAME 文件。
    • 文件内容应为您的自定义域名,例如:

      www.example.com
  2. 检查 GitHub Pages 设置

    • 转到 Settings > Pages
    • 确认自定义域名已正确显示,并启用 HTTPS
  3. 测试访问
    使用您的自定义域名访问页面,确认是否能够正确加载。

7. 常见问题及解决方法

问题 1:npx honkit pdf 报错 Command failed: ebook-convert not found

原因
Calibre 未正确安装,或 ebook-convert 工具未添加到系统的 PATH 环境变量中。

解决方法

  1. 确保 Calibre 已安装,并重新确认安装路径:

    • Windows 默认路径:C:\Program Files\Calibre2
    • macOS/Linux 使用 which ebook-convert 检查路径。
  2. 手动将 Calibre 的安装路径添加到系统环境变量中:

    • Windows

      • 打开“环境变量”设置,找到 PATH
      • 添加 C:\Program Files\Calibre2
    • Linux/macOS

      • 编辑 ~/.bashrc~/.zshrc 文件,添加以下内容:

        export PATH="/path/to/calibre:$PATH"

        替换 /path/to/calibre 为 Calibre 的实际路径。

      • 保存后运行 source ~/.bashrcsource ~/.zshrc 使更改生效。
  3. 重新运行 npx honkit pdf

问题 2:GitHub Actions 部署失败,提示 Permission denied

原因
GitHub Actions 无法向 gh-pages 分支推送更改,通常是因为缺少权限。

解决方法

  1. 确保 GitHub 仓库的 Settings > Actions > General 中已启用 Read and write permissions

    • 打开 Workflow permissions,选择 Read and write permissions
    • 勾选 Allow GitHub Actions to create and approve pull requests
  2. 确认 GitHub Actions 配置文件中使用的是 github_token

    with:
      github_token: ${{ secrets.GITHUB_TOKEN }}

问题 3:GitHub Pages 部署成功,但自定义域名未生效

原因
DNS 记录配置错误或未生效。

解决方法

  1. 登录域名管理平台,检查 DNS 配置:

    • 确认 A 记录或 CNAME 记录配置正确。
    • 等待 DNS 记录生效(可能需要 5-48 小时)。
  2. 检查仓库根目录下是否有 CNAME 文件,内容是否正确(应与自定义域名一致)。
  3. 验证 DNS 配置是否正确:

  4. 启用 HTTPS:

    • 进入 Settings > Pages,勾选 Enforce HTTPS

问题 4:生成的书籍内容显示错乱或样式缺失

原因

  • Markdown 文件中格式不正确。
  • SUMMARY.md 的目录结构未正确链接。

解决方法

  1. 确认 Markdown 文件的格式是否符合规范。
  2. 检查 SUMMARY.md 中的链接是否与文件路径一致:

    * [章节标题](path/to/file.md)
  3. 清理并重新构建书籍:

    npx honkit build

问题 5:自定义 PDF 样式未生效

原因
未指定自定义样式文件或样式文件路径错误。

解决方法

  1. 创建一个 CSS 样式文件(如 custom.css),自定义 PDF 的排版样式。
  2. 使用以下命令生成 PDF 并指定样式文件:

    npx honkit pdf --css custom.css . output.pdf

    8. 支持与反馈

如果您遇到未列出的问题或有其他疑问,请参考以下支持途径:

完成这些步骤后,您可以成功使用 Honkit 创建、部署和管理文档,解决常见问题,并生成符合您需求的 HTML 和 PDF 文档!

]]>
0 https://blog.niekun.net/archives/3021.html#comments https://blog.niekun.net/feed/category/dev/archives/3021.html
使用虚拟环境 env 开发 python https://blog.niekun.net/archives/env-python.html https://blog.niekun.net/archives/env-python.html Mon, 01 Jul 2024 10:17:13 +0800 admin 使用虚拟环境进行Python开发有助于隔离项目的依赖,避免不同项目之间的库版本冲突。以下是如何创建和使用虚拟环境的详细步骤。

Python 3.3 及以上版本自带 venv 模块,可以直接使用。

使用 venv 创建虚拟环境

创建虚拟环境

在你的项目目录下,运行以下命令来创建一个虚拟环境,这将在项目目录下创建一个名为 myenv 的文件夹,其中包含虚拟环境的所有文件:

python -m venv myenv

激活虚拟环境

Windows:

myenv\Scripts\activate

macOS 和 Linux:

source myenv/bin/activate

安装依赖

在虚拟环境中,你可以使用 pip 来安装项目所需的库:

pip install requests

安装的库将只会影响当前虚拟环境,而不会影响系统的 Python 环境或其他项目。

冻结依赖

为了确保你的项目依赖可以在其他环境中重现,你可以使用以下命令将当前环境的依赖写入 requirements.txt 文件:

pip freeze > requirements.txt

requirements.txt 文件将包含所有当前环境中的安装包及其版本信息。

使用 requirements.txt 安装依赖

在新的环境中,你可以使用 requirements.txt 文件来安装所需的所有依赖:

pip install -r requirements.txt

退出虚拟环境

当你完成工作时,可以通过以下命令退出虚拟环境:

deactivate

使用虚拟环境进行Python开发可以有效地隔离项目依赖,避免版本冲突。通过创建和激活虚拟环境、安装依赖、冻结依赖并在新环境中重新安装依赖,可以确保你的项目在不同环境中具有一致的运行表现。

]]>
0 https://blog.niekun.net/archives/env-python.html#comments https://blog.niekun.net/feed/category/dev/archives/env-python.html
codesys enum 枚举数据类型单元的使用 https://blog.niekun.net/archives/codesys-enum.html https://blog.niekun.net/archives/codesys-enum.html Thu, 07 Mar 2024 08:21:07 +0800 admin enum 类型的 dut 可以定义一组属性及其值,调用的时候可以方便的通过写其属性名称得到属性的值,也可以获取到属性本身的名称。

下面举一个例子说明:

{attribute 'qualified_only'}            // 必须先写类型名称再写属性名称 (例如 eColor.Red)
// {attribute 'strict'}                 //取消 'strict' 以允许转换 UDINT 数据类型
{attribute 'to_string'}                 // 运行字符串转换 (例如 TO_STRING(eColor.Red) = 'Red')
TYPE eColor :
(
    Red         := 16#FFFF0000,
    Green       := 16#FF00FF00,
    Blue        := 16#FF0000FF
    Yellow      := 16#FFFFFF00,
) UDINT;                                // 声明 UDINT 作为 int 整形类型
END_TYPE

// 定义一些变量
    ColorVar1   : eColor;
    ColorVar2   : eColor;
    ColorName   : STRING;
    ColorValue  : UDINT;

    ColorVar1 := eColor.Green;            // ColorVar1 = 16#FF00FF00
    ColorName := TO_STRING(ColorVar1);    // ColorName = 'Green';
    ColorValue := TO_UDINT(ColorVar1);    // ColorValue = 16#FF00FF00

    ColorVar2 := 16#FF00FF00;             // ColorVar2.Green
    ColorName := TO_STRING(ColorVar2);    // ColorName = 'Green';
    ColorValue := TO_UDINT(ColorVar2);    // ColorValue = 16#FF00FF00

    ColorVar1 := ColorVar2 OR eColor.Red; // 按位相与得到 Yellow=16#FFFFFF00
    ColorName := TO_STRING(ColorVar1);    // ColorName = 'Yellow';
    ColorValue := TO_UDINT(ColorVar1);    // ColorValue = 16#FFFFFF00

以上示例列举了常用的 enum 类型可进行的数据交互方式。

eColor.Green 可以获取enum类型属性的值,并可以赋值给其他对应 enum 实例
TO_STRING(ColorVar1) 可以转换获取 enum 实例当前值对应属性名称字符串

]]>
0 https://blog.niekun.net/archives/codesys-enum.html#comments https://blog.niekun.net/feed/category/dev/archives/codesys-enum.html
codesys 常见编译及下载时报错解决方法 https://blog.niekun.net/archives/codesys.html https://blog.niekun.net/archives/codesys.html Wed, 06 Mar 2024 16:35:00 +0800 admin No source code available for this object

下载时出现此报警,原因是 task 任务中对 gou 的排序有问题,放在前面的 pou 中使用了后面 pou 才设定好的数据,需要重新排列 task 任务序列:
image.png

SMC_FB_CALLED_FROM_WRONG_TASK

mc_power mc_jog 等控制轴的功能块,一运行就报错 SMC_FB_CALLED_FROM_WRONG_TASK,可能是不同的 pou 放在了多个 task 任务中,循环中内部有了冲突,将所有的 pou 放在同一个 task 中就可以解决问题。

]]>
0 https://blog.niekun.net/archives/codesys.html#comments https://blog.niekun.net/feed/category/dev/archives/codesys.html
RTE runtime添加 ethercat master 的步骤 https://blog.niekun.net/archives/ethercat.html https://blog.niekun.net/archives/ethercat.html Fri, 23 Feb 2024 15:41:00 +0800 admin codesys 配置 rte runtime 添加 ethercat 组件的方法。

主要步骤为:

  • 安装 RTE runtime
  • 安装适配网卡驱动
  • 添加 ethercat master 设备

安装 RTE runtime

首先需要配置工控机啊 BIOS 设置,将一些超线程,电源管理等选项关掉:

  • 关闭超线程:
    image.png
  • 关闭BIOS 中激活的所有节能选项

    • Intel Speed Step动态节能技术
    • EIST智能降频
    • C-States省电模式
    • PowerNow动态调整CPU的工作频率和电压
    • Hibernation休眠
    • MWAIT
  • 停用可能导致系统管理中断的所有内容

    • BIOS self tests BIOS自检
    • USB Legacy Device Support 传统USB设备支持

    image.png

然后就可以安装 RTE,官网下载需要的 runtime 安装包,注意区分 x86 还是 x64 设备。我下载的是 **CODESYS Control RTE SL (×86Windows 实时)。

官网下载地址:http://store.codesys.cn/codesys/store/index.html

在工控机上解压并安装需要的 RTE runtime,基本都是直接下一步即可,期间注意选择带不带 softmotion:
image.png

Control RTE 文件路径:C:\Program Files\CODESYS\CODESYS Control RTE3
Control RTE 安装路径:C:\ProgramData\CODESYS\CODESYSControlRTEV3

网卡驱动

支持的网卡:
Systems with Windows and CODESYS Control RTE (Real-time SoftPLC):

  • Realtek® 8139 (CmpRTL81x9Mpd)
  • Realtek RTL8139 and compatible Ethernet-Controller, as well 8100/8110
  • Realtek 8169 (CmpRTL8169Mpd)
  • Realtek 8169/810, RTL8111B / RTL8111D
  • Intel® EtherExpressPro1000 (CmpEt1000Drv) --- All gigabit adapters from Intel
  • Intel EtherExpress PRO/100 (CmpEt100Drv) --- All 100 Mbit adapters from Intel

一般情况下 intel 的千兆网卡都可以安装 CmpEt1000Drv 驱动。

首先进入设备管理器,选择需要更新 codesys 驱动的网卡,右键选择更新驱动:
image.png

选择从本地查找驱动程序:
image.png

选择从磁盘安装,从 RTE 文件路径找到对应的驱动目录并安装:
image.png
image.png

右键选择 plc configuration:
image.png

在 components manager 中在最后一个空行中填入安装的驱动名称,这里我填的是 CmpEt1000Drv:
image.png

确定并重启 plc 即可完成网卡驱动的安装及配置。

添加 ethercat master

在codesys 开发项目中进行以下操作。

  • 建立一个支持 softmotion 的设备
  • 添加 ethercat master softmotion 主站 (会自动添加 ethercat_task 任务 不可删除)
  • 扫描并连接到控制器
  • 配置 ethercat master 网卡,RTE 版 runtime 需要选择适配 codesys 的网卡
    image.png
    image.png
  • 下载程序到控制器,如果上面没有在 components manager 中添加网卡组件的话,这里下载会报错
  • 退出登录 扫描从站并添加
    image.png
    image.png
  • 如果设备描述文件没有在系统内置库中 需要手动导入描述文件然后才能扫描识别
    image.png
    image.png
    image.png
  • 给扫描到的从站添加 cia402 轴
    image.png
  • 配置电子齿轮比
    image.png

以上就是 RTE runtime 版添加 ethercat master 主站的简单方法。

参考链接:

Control RTE SL and profinet connections

]]>
0 https://blog.niekun.net/archives/ethercat.html#comments https://blog.niekun.net/feed/category/dev/archives/ethercat.html
Siemens 系统计算精度设置影响程序运行问题 https://blog.niekun.net/archives/2858.html https://blog.niekun.net/archives/2858.html Wed, 18 Oct 2023 17:13:10 +0800 admin 最近的工作中遇到使用带刀具的轨迹运动中,由于轨迹是通过1000多个离散点构成的,每个点之间距离很短,由于 sinumerik one 系统默认的线性计算精度是每毫米 1000 各单位,导致刀具轨迹报错提示可能有碰撞危险。通过提高系统计算精度可以解决此问题。

相关系统变量:

  • 通用机床数据 10200 线性位置的计算精度
  • 通用机床数据 10210 角位置的计算精度

sinumerik one 及 840D sl 系统以上参数默认值为 1000,828D 系统默认值为 1000000。

]]>
0 https://blog.niekun.net/archives/2858.html#comments https://blog.niekun.net/feed/category/dev/archives/2858.html
codesys 使用占位符定义界面变量显示格式 https://blog.niekun.net/archives/2857.html https://blog.niekun.net/archives/2857.html Fri, 22 Sep 2023 10:33:00 +0800 admin 在编程中我们会使用各种类型的变量进行逻辑运算,不同类型其默认数据精度取值不一样,比如浮点型变量文本占位符为 %f 默认小数位数 6 位,但实际只想显示 3 位小数,此时就需要将界面变量的占位符进行设置以满足需求。

int 整型

语法:

% <标记> <最小显示数字个数> <类型>
  • 标记:定义数据显示模式,可选项:- 当定义最小显示数字个数时 居左显示,+ 显示数据正负号,0 当定义最小显示数字个数时空缺位显示 0
  • 最小显示数字个数:定义最少占据几个数字空间,默认数据位数不够时留空
  • 类型:显示数据类型,如:d十进制, b二进制, o八进制, x十六进制

示例:

%-5d:最小显示位数5位,且居左对齐显示,例如数据值为123时:`123  `
%+d:显示数据正负号,例如数据值为123时:`+123`
%05d:最小显示位数5位,且空缺位显示0,例如数据值为234时:`00234`

%08b:显示8位数的二进制模式,例如数据值为255时:`11111111`
%04x:显示4位数的十六进制模式,例如数据值为15时:`000f`

float 浮点型

语法:

% <标记> <最小显示数字个数> . <精度> f
  • 标记:定义数据显示模式,可选项:- 当定义最小显示数字个数时 居左显示,+ 显示数据正负号,0 当定义最小显示数字个数时空缺位显示 0
  • 最小显示数字个数:定义最少占据几个数字空间,包括小数位,默认数据位数不够时留空,不定义时默认为 %1.6f
  • 精度:小数位的显示精度

示例:

%-12.9f:显示12位数字 9位小数,且居左显示
%+6.3f:显示6位数字3位小数,且显示正负号标记
%06.3f:显示6位数字3位小数,且空缺位补0显示

时间类型

语法:

%t[ <text> <time in unit> <text> ]

示例:

// 定义一个时间变量并给其赋值
ltTimeSpan : LTIME := LTIME#1D2H3M4S5MS6US7NS;

在一个 label 中定义:
text variable 设置:PLC_PRG.ltTimeSpan
text 占位符设置:Time span: %t[d] d
输出结果:Time span: 1 d

可用的占位符:%t[d] 天,%t[dd] 两位数字的天,%t[H] 小时,%t[HH] 两位数字小时,%t[m]分钟,%t[mm] 两位数分钟,%t[s] 秒,%t[ss] 两位数秒。

也可以组合起来使用:

TEXT 占位符设置:%t[Value: dd-HH:mm:ss:ms:us:ns]
输出结果:Value: 01-02:03:04:005:006:007

如果不定义 label 的 text variable 属性,则会输出系统当前时间。

日期类型

语法:

%t[ <date and time unit> ]

和时间类型类似的用法,下面举例说明:

//定义一个 date 类型变量
dateBy : DATE := DATE#2021-02-12;

在一个 label 中定义:
text variable 设置:PLC_PRG.dateBy
text 占位符设置:Date: %t[yyyy-MM-dd dddd]
输出结果:Date: 2/12/2021 Friday

可用占位符:%t[yyyy] 年,%t[yy] 两位数年,%t[y]一位数年,%t[MMMM] 英文月份,%t[MMM]英文简写月份,%t[MM]月份,%t[ddddd] 一周的第几天,%t[dddd]英文周几,%t[dd]一个月的第几天,%t[jjj]一年中的第几天,

如果不定义 label 的 text variable 属性,则会输出系统当前日期。

字符

语法:

%s

参考链接

Placeholders with Format Definition

]]>
0 https://blog.niekun.net/archives/2857.html#comments https://blog.niekun.net/feed/category/dev/archives/2857.html
codesys 定义重启可保持型变量 https://blog.niekun.net/archives/2840.html https://blog.niekun.net/archives/2840.html Fri, 18 Aug 2023 14:09:00 +0800 admin 无论是在 gvl 或者 pou 中都可以定义变量,默认情况下这些变量在系统重启后数据都会丢失。某些情况下我们希望变量值可以保持,系统重启后原数据也不丢失。可以在变量定义块中通过关键词 RETAINPERSISTENT 来实现。

注意 PERSISTENT 类型变量必须定义在单独的 Persistent Variables 类型 object 才能生效。而不是通常的 GVL object。

RETAIN

RETAIN 可以在热重启后保持数据:

In a POU:

VAR RETAIN
 iRem1 : INT;
END_VAR

*******************

In a GVL:

VAR_GLOBAL RETAIN
 gvarRem1 : INT;
END_VAR

以下情况下 RETAIN 数据会被重置:

  • the command Reset origin
  • the command Reset cold (as opposed to persistent variables)
  • a repeated program download

PERSISTENT

首先需要新建 Persistent Variables 类型 object 会放在 task 子目录下:
2023-08-24T00:59:33.png

然后会自动创建 VAR_GLOBAL PERSISTENT RETAIN 类型全局变量文件。

PERSISTENT 可以在热重启和冷重启后保持数据:

VAR_GLOBAL PERSISTENT
 iVarPers1 : DINT;
 bVarPers : BOOL;
 PLC_PRG.PERS: INT;
END_VAR

以下情况下 PERSISTENT 数据会被重置:

  • the command Reset origin

从 CODESYS V3.3.0.1 开始声明一个 VAR_GLOBAL PERSISTENT 等效于 VAR_GLOBAL PERSISTENT RETAIN or VAR_GLOBAL RETAIN PERSISTENT

以下是各种变量定义模式下数据保持情况:

after online commandVARVAR RETAINVAR PERSISTENT
Reset warm xx
Cold reset x
Reset origin
Download x
Online Changexxx

参考链接

Remanent Variables - RETAIN, PERSISTENT
REMANENT VARIABLES: RETAIN VS PERSISTENT RETAIN

]]>
0 https://blog.niekun.net/archives/2840.html#comments https://blog.niekun.net/feed/category/dev/archives/2840.html