<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on My Blog</title><link>https://blog.youtao.website/posts/</link><description>Recent content in Posts on My Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 15 Jul 2026 02:09:00 +0000</lastBuildDate><atom:link href="https://blog.youtao.website/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>frp (Fast Reverse Proxy) Setup Guide</title><link>https://blog.youtao.website/posts/frp_turotial/</link><pubDate>Wed, 15 Jul 2026 02:09:00 +0000</pubDate><guid>https://blog.youtao.website/posts/frp_turotial/</guid><description>&lt;h1 id="写在前面">写在前面&lt;/h1>
&lt;p>我了解到FRP是因为我自己整了一个NAS，用这个NAS来同步公司电脑的文件到家里的NAS，这样在家里的电脑上访问公司文件就可以非常方便，在PDD总共花了不到1K。但是飞牛NAS官方免费提供的带宽只有3M，这个带宽对于同步一些文本文件还是足够的，当然飞牛官方也是可以购买更大的带宽的。我自己就喜欢DIY的，所以想怎么可以通过别的办法得到更大的带宽，然后在网上找了非常多的方法。了解到FRP这个内网穿透工具，将家里NAS的服务端口暴露到公网中去，需要一台有固定公网IP的服务器，刚好阿里云有针对学生的300元优惠券，我用这个优惠券买了一台服务器，这台服务器的系统我选择了Ubuntu24，带宽是共享200M，对我来说足够了。在服务器部署frps服务端，到飞牛NAS上部署一个frpc客户端，这样在公司的电脑上安装飞牛的官方同步软件可以将我指定的文件目录同步至我家的NAS中，在家里同一个局域网访问NAS中的文件非常快。当然这个FRP不仅仅用于NAS上，我自己使用到的场景还有远程控制，Windows自带的远程控制在局域网下非常好用，把这个远程控制的端口3389暴露到公网上我在家也可以远程控制公司的电脑了，延迟也不是很大，非常方便。&lt;/p>
&lt;h2 id="一在服务器上安装frps服务端">一、在服务器上安装frps服务端&lt;/h2>
&lt;h3 id="1-下载并安装-frps">1. 下载并安装 frps&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo apt install -y wget tar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="下载-frp">下载 &lt;a href="https://github.com/fatedier/frp">FRP&lt;/a>：&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cd /tmp
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wget https://github.com/fatedier/frp/releases/download/v0.70.0/frp_0.70.0_linux_amd64.tar.gz
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="解压">解压：&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>tar -xzf frp_0.70.0_linux_amd64.tar.gz
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd frp_0.70.0_linux_amd64
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>ARM64 服务器需要将下载文件名中的 linux_amd64 改成 linux_arm64。官方同时提供 AMD64 和 ARM64 的 Linux 安装包，此外也有windows_amd64版本的，可以在官方github仓库查看。&lt;/p>
&lt;h3 id="2-创建配置目录">2. 创建配置目录&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo mkdir -p /etc/frp
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="创建配置文件">创建配置文件：&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo nano /etc/frp/frps.toml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="写入">写入&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># FRP 服务端配置&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># frpc连接frps的端口&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bindPort &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">7000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Token认证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 使用Token认证&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>auth.method &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;token&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># frpc客户端必须填写完全相同的Token，设置一个复杂点的&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>auth.token &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;helloworld@1234&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dashboard管理页面&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ============================================================&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 监听所有网络接口，允许通过公网IP访问&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>webServer.addr &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;0.0.0.0&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dashboard访问端口&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>webServer.port &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">7500&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dashboard登录用户名&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>webServer.user &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;frpadmin&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Dashboard登录密码&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 请务必修改成复杂密码&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>webServer.password &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;frpadmin@Pwd&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>保存并退出。&lt;/p></description></item><item><title>使用Logadd2在codesys中打印日志</title><link>https://blog.youtao.website/posts/2026-07-10-logadd2tutorial/</link><pubDate>Fri, 10 Jul 2026 07:06:07 +0000</pubDate><guid>https://blog.youtao.website/posts/2026-07-10-logadd2tutorial/</guid><description>&lt;h1 id="如何在codesys中记录日志">如何在codesys中记录日志&lt;/h1>
&lt;blockquote>
&lt;p>前提：确保在Library Manager中已经添加了&lt;strong>CmpLog&lt;/strong>和&lt;strong>Component Manager&lt;/strong>这两个系统库。&lt;br>
在 CODESYS 中，你需要先创建一个功能块（Function Block），然后再在这个功能块下右键添加对应的方法（Method）。&lt;/p>&lt;/blockquote>
&lt;h2 id="一为了可以在主程序中可以调用不必每次写完整的方法我将完整的-fb_systemlogger-拆分为主功能块和方法两部分">&lt;code>一、为了可以在主程序中可以调用，不必每次写完整的方法，我将完整的 FB_SystemLogger 拆分为主功能块和方法两部分。&lt;/code>&lt;/h2>
&lt;h3 id="1-主功能块fb_systemlogger">1. 主功能块：FB_SystemLogger&lt;/h3>
&lt;p>在工程左侧的 POUs 树中，右键添加一个 POU，类型选择 Function Block，语言选择 ST，命名为 &lt;code>FB_SystemLogger&lt;/code>。&lt;/p>
&lt;h4 id="变量声明区-declaration">变量声明区 (Declaration)&lt;/h4>
&lt;pre tabindex="0">&lt;code class="language-Structured" data-lang="Structured">FUNCTION_BLOCK FB_SystemLogger
VAR_INPUT
// 允许外部传入自定义的组件名称，默认值为 &amp;#39;DefaultApp&amp;#39;
sComponentName : STRING(80) := &amp;#39;DefaultApp&amp;#39;;
END_VAR
VAR
udiCmpId : UDINT;
bInit : BOOL := FALSE;
END_VAR
&lt;/code>&lt;/pre>&lt;h4 id="代码实现区-implementation">代码实现区 (Implementation)&lt;/h4>
&lt;p>这里负责在功能块第一次被调用时，向系统注册组件名称并获取 ID。&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-Structured" data-lang="Structured">// 初始化：注册自定义组件名称（每个实例只执行一次）
IF NOT bInit THEN
Component_Manager.CMAddComponent2(sComponentName, 16#00000001, ADR(udiCmpId), 0);
bInit := TRUE;
END_IF
&lt;/code>&lt;/pre>&lt;h3 id="2方法一loginfo-记录常规信息">2.方法一：&lt;code>LogInfo&lt;/code> (记录常规信息)&lt;/h3>
&lt;p>右键点击你刚建好的 &lt;code>FB_SystemLogger&lt;/code>，选择 Add Object -&amp;gt; Method，命名为 &lt;code>LogInfo&lt;/code>，返回类型写 BOOL。&lt;/p></description></item><item><title>FRP内网穿透</title><link>https://blog.youtao.website/posts/frp/</link><pubDate>Sun, 05 Jul 2026 08:17:21 +0000</pubDate><guid>https://blog.youtao.website/posts/frp/</guid><description>&lt;h2 id="frpfast-reverse-proxy">FRP——fast reverse proxy&lt;/h2></description></item><item><title>Hello World - 我的第一篇博客</title><link>https://blog.youtao.website/posts/hello-world/</link><pubDate>Sun, 05 Jul 2026 14:30:38 +0800</pubDate><guid>https://blog.youtao.website/posts/hello-world/</guid><description>&lt;p>欢迎来到我的博客！&lt;/p>
&lt;p>这是使用 &lt;a href="https://gohugo.io/">Hugo&lt;/a> 和 &lt;a href="https://adityatelange.github.io/hugo-PaperMod/">PaperMod&lt;/a> 主题搭建的第一篇文章。&lt;/p>
&lt;h2 id="关于这个博客">关于这个博客&lt;/h2>
&lt;p>这个博客将用于记录：&lt;/p>
&lt;ul>
&lt;li>技术学习笔记&lt;/li>
&lt;li>项目经验分享&lt;/li>
&lt;li>日常思考与感悟&lt;/li>
&lt;/ul>
&lt;h2 id="hugo-是什么">Hugo 是什么&lt;/h2>
&lt;p>Hugo 是一个用 Go 语言编写的静态网站生成器，以速度快著称。&lt;/p>
&lt;h2 id="papermod-主题">PaperMod 主题&lt;/h2>
&lt;p>PaperMod 是一个简洁、响应式的 Hugo 主题，具有以下特点：&lt;/p>
&lt;ul>
&lt;li>简洁的界面设计&lt;/li>
&lt;li>暗色/亮色模式自动切换&lt;/li>
&lt;li>优秀的阅读体验&lt;/li>
&lt;li>快速加载&lt;/li>
&lt;/ul>
&lt;p>感谢所有为开源项目做出贡献的人们！&lt;/p></description></item></channel></rss>