首页
Search
1
FydeOS - 适合国内用户使用的Chrome OS系统
36 阅读
2
欣小逸食用指北
23 阅读
3
整合包食用说明
20 阅读
4
北理图集(4.28-5.16)
19 阅读
5
给Markdown编辑器加了一个Mermaid支持(
18 阅读
默认分类
笔记
工作总结
论文阅读笔记
登录
Search
标签搜索
日常
代码
欣小逸
bot
FydeOS
Electron
sqlite3
自动控制原理
笔记
拾雨
累计撰写
17
篇文章
累计收到
22
条评论
首页
栏目
默认分类
笔记
工作总结
论文阅读笔记
页面
搜索到
17
篇与
的结果
2024-03-31
自动控制原理第三章笔记
第三章 时域分析法典型控制过程及性能指标典型控制信号单位阶跃信号$ L[1(t)] = \frac1s $单位斜坡信号$ L[t \times 1(t)] = \frac{1}{s^2} $单位脉冲信号$ L[\delta(t)] = 1 $正弦信号$ L[Asin\omega_0t] = \frac{A\omega_0}{s^2 + \omega^2} $单位抛物线信号$ L[\frac{Rt^2}{2} \times 1(t)] = \frac{R}{s^3} $性能指标(以阶跃响应为例)延迟时间 $ t_d $ :响应上升到 $ y(\infty) $ 的 50% 时所需时间。上升时间 $ t_r $ :响应上升到稳态值 $ y(t_r) $ 时所需时间。峰值时间 $ t_p $ :响应超过稳态值到达第一个峰值(极大值)时所需时间。超调量 $ \sigma \% $ :$ \frac{y(t_p)-y(\infty)}{y(\infty)} \times 100\%$。调节时间 $ t_s $ :达到稳态过程的时间,即进入5%或者2%误差带所需时间。震荡次数 $ N $ :到达稳态时间之前穿过稳态值次数的一半对于单调上升的单位阶跃响应来说,由于其没有震荡和超调量,因此一般用 $ t_s $ 表示调节的快速性, $ t_r $ 定义为由稳态值的10%上升至90%所用时间。一阶系统的时域分析数学模型一阶系统的闭环传递函数为:$$ \Phi(s) = \frac{Y(s)}{R(s)} = \frac{1}{Ts+1} $$其中 $ T $ 称为时间常数一阶系统单位阶跃响应输入 $ R(s) = \frac1s $输出 $ Y(s) = \frac{1}{s(Ts+1)} $取反变换得 $ y(t) = 1-e^{-t/T} $稳态值为1,呈单调上升, $ t=0 $ 时斜率为 $ 1/T $$ t_s=3T $ 对应5%误差带, $ t_s=4T $ 对应2%误差带因为最终数值 $ y(\infty) = 1 $ ,因此不存在稳态误差一阶系统单位斜坡响应输入 $ R(s) = \frac{1}{s^2} $输出 $ Y(s) = \frac{1}{s^2(Ts+1)} $反变换得 $ y(t) = t-T+T\cdot e^{-t/T} $稳态值为 $ t-T $ ,稳态误差为 $ T $稳态输出与输入的斜率相等,但是存在着 $ T $ 的滞后一阶系统单位脉冲响应输入 $ R(s) = 1 $输出 $ Y(s) = \frac{1}{Ts+1} $反变换得 $ y(t) = \frac1Te^{-t/T} $呈单调递减且最终趋于0改善一阶系统性能一阶系统的性能取决于时间常数 $ T $ 的影响,因此可以改变闭环传递函数从而对时间常数进行调整,有引入常值负反馈和前向通道串联放大两种方式常值负反馈即由单位负反馈变为常值 $ \alpha $ 的负反馈,对于 $ G(s)=\frac{1}{Ts+1} $ 调整后传递函数为$$ \Phi(s) = \frac{\frac{1}{Ts+1}}{1+\frac{\alpha}{Ts+1}} = \frac{\frac{1}{1+\alpha}}{\frac{T}{1+\alpha}s+1} $$可见 $ \alpha $ 越大,新的传递函数的时间常数越小前向通道串联放大对于单位负反馈系统的开环传递函数 $ G(s) =\frac{k}{s} $ 其时间常数为 $ \frac{1}{k} $ ,若在其之前加入一个放大环节,即新的开环传递函数为 $ \frac{\alpha k}{s} $ ,其时间常数为 $ \frac{1}{\alpha k} $二阶系统的时域分析二阶系统的数学模型$$ \Phi(s) = \frac{\theta_c(s)}{\theta_r(s)} = \frac{k}{Js^2+Fs+k} $$其特征方程为$$ Js^2+Fs+k=0 $$引入参量 $ \omega_n^2 = \frac{k}{J} $ , $ 2\zeta\omega_n = \frac{F}{J} $其中 $ \omega_n $ 称为无阻尼自然频率或固有频率, $ \zeta $ 为无量纲的阻尼系数,又称为阻尼比(实际阻尼系数/临界阻尼系数)二阶系统的特征根分析由上述参量代换后,二阶系统的特征方程可以化为$$ s^2+2\zeta\omega_ns+\omega_n^2 = 0 $$特征方程的根为$$ s_{1,2} = -\zeta\omega_n \pm \omega_n\sqrt{\zeta^2-1} $$随着 $ \zeta $ 取值的不同,特征根的位置不同$ 0<\zeta<1 $ 时,系统有负实部的共轭复根,此时为欠阻尼状态$$ s_{1,2} = -\zeta\omega_n \pm j\omega_n\sqrt{1-\zeta^2} $$$ \zeta=1 $ 时,系统有一对相等的负实根,此时为临界阻尼状态$$ s_{1,2} = -\zeta\omega_n $$$ \zeta>1 $ 时,系统有两个不相等的负实根,此时为过阻尼状态$$ s_{1,2} = -\zeta\omega_n \pm j\omega_n\sqrt{1-\zeta^2} $$$ \zeta = 0 $ 时,系统有两个纯虚根,此时为无阻尼状态$$ s_{1,2} = \pm j\omega_n\sqrt{1-\zeta^2} $$二阶系统的单位阶跃响应二阶系统的单位阶跃响应取决于其阻尼系数的大小,当阻尼系数 $ \zeta\geq1 $ 时,响应为无超调的单调上升曲线,当阻尼系数 $ 0<\zeta<1 $ 时,系统会发生震荡, $ \omega_d = \omega_n\sqrt{1-\zeta^2} $ 称为震荡角频率,当 $ \zeta=0 $ 时处于无阻尼状态,系统进行等幅振荡,角频率为 $ \omega_n $ 在欠阻尼系统中,对于一定的阻尼比 $ \zeta $ , $ \omega_n $ 越大,则调节时间 $ t_s $ 越小,速度越快,但系统响应的平稳性会越差最佳阻尼比 $ \zeta=0.707(\frac{\sqrt{2}}{2}) $欠阻尼二阶系统单位阶跃响应的性能指标上升时间 $ t_r $$ t_r = \frac{\pi-\theta}{\omega_d} $其中 $ \theta $ 为弧度峰值时间 $ t_p $$ t_p = \frac{\pi}{\omega_d} $超调量 $ \sigma $$ \sigma\% = e^{\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}} \times 100\% $调节时间 $ t_s $$ t_s = \frac{4}{\zeta\omega_n} (\Delta = 2\%)$$ t_s = \frac{3}{\zeta\omega_n} (\Delta = 5\%)$震荡次数 $ N $$ N = \frac{t_s}{\omega_d} $
2024年03月31日
9 阅读
0 评论
0 点赞
2024-03-09
给Markdown编辑器加了一个Mermaid支持(
MermaidMermaid 是一个基于JavaScript的图表工具,可以将Markdown语法的内容渲染成流程图等 然而之前我的博客的编辑器是不支持这个的,所以昨天折腾了一番加入了这个功能(graph TD; A-->B; A-->C; B-->D; C-->D;例如上面的代码可以被渲染成下面的流图 graph TD; A-->B; A-->C; B-->D; C-->D; 加入首先需要在页面中引入JS文件,可以通过Script标签的形式(<script type="module"> import mermaid from 'https://npm.elemecdn.com/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); </script>这里我使用的是国内的CDN,加载速度会快一些,当然也可以用JsDeliver的CDNhttps://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs引入后会将页面中class=mermaid的元素内容自动渲染成流图,目前已知标签内必须是纯文本,不能有<br/>等,换行标记\n可以有 sequenceDiagram Alice->>Bob: Hello Bob, how are you ? Bob->>Alice: Fine, thank you. And you? create participant Carl Alice->>Carl: Hi Carl create actor D as Donald Carl->>D: Hi
2024年03月09日
18 阅读
0 评论
0 点赞
2023-11-01
A way to solve error in packing electron app with sqlite3
你现在看到的是本文章的英文版本,中文版本请前往 Electron应用打包Sqlite3报错的解决方案Recently I build a Electron program with database.I finally chose the Sqlite3 module to connect with my database. It worked well in dev mode. When I prepared to pack and publich it throwed the error below:ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html 1:0 Module parse failed: Unexpected token (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders <!doctype html> after installing pnpm i npm bluebird mock-aws-s3 aws-sdk nock --save-optionaland aws-sdk,mock-aws-s3,nock were not founda script .cs could not run(not C#, a powershell script)Ways to solveFor the first issue, it showes that HTML's loader was not found when webpack tried to pack program. So you should edit the config of webpack. Add the rules in the config's module->rules: { test: /\.html$/, use: { loader: 'html-loader', }, }This attach the HTML files with html-loader, which can properly handle the file.For the next issue, it is also lack of a loader for Sqlite3 to pack. I found for a while and got the solution in a Github issue #1700 :Install sqlite3-loader和node-loadernpm install sqlite3-loader node-loaderSamely update the config of webpack: { test: /sqlite3-binding\.js$/, use: [ 'sqlite3-loader' ], }, { test: /\.node$/, use: 'node-loader', },Repack and successTipsWhen finding the solution, someone said add this to webpack config:externals: { sqlite3: 'sqlite3' }I tried and it could pack, but will exclude the sqlite3 module and when running the packed program it cannot found it. So the program cannot run properly.
2023年11月01日
7 阅读
0 评论
0 点赞
2023-08-27
Electron应用打包Sqlite3报错的解决方案
You are watching the Chinese version of this passage, to English version, please check A way to solve error in packing electron app with sqlite3最近拿Electron写了一个GUI,然后用到了数据库数据库模块搜寻一番后用了Sqlite3这个模块,于是开始了长达四个小时的网络搜寻(在dev下程序可以正常运行,但是一到打包的时候就开始报错错误内容如下:(找的别的但是是这些个)ERROR in ./node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html 1:0 Module parse failed: Unexpected token (1:0) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders <!doctype html> after installing pnpm i npm bluebird mock-aws-s3 aws-sdk nock --save-optional以及aws-sdk,mock-aws-s3,nock这三个库缺失以及一个脚本无法运行的问题,是.cs的脚本(一开始还以为是C#的代码)问题解决方案对于第一个问题,是webpack在打包过程中缺失了对HTML的loader,因此在webpack的config里的module->rules加入以下规则: { test: /\.html$/, use: { loader: 'html-loader', }, }即可消除这条错误对于后面四个,其实也是对sqlite3缺乏一个loader来进行打包,在网上找了巨久(终于在Github的一个issue里找到了解决方案 #1700 :安装 sqlite3-loader和node-loadernpm install sqlite3-loader node-loader同样更新webpack配置文件,在刚刚的rules里加上: { test: /sqlite3-binding\.js$/, use: [ 'sqlite3-loader' ], }, { test: /\.node$/, use: 'node-loader', },重新打包即可解决问题提示之前有看到说在config里加上externals: { sqlite3: 'sqlite3' }的,我试过了,能打包,就是运行之后会报错找不到模块sqlite3而已(
2023年08月27日
6 阅读
0 评论
0 点赞
2022-05-27
教学格式
回复中可以使用的特殊文本这些会被自动替换成对应的内容例:[name]早上好啊([name]会被自动替换成发送消息的人)[qq]——qq号[name]——昵称[r]——1-100之间的随机数[@qq]会变成at发送消息的人[hg]好感度回复,在回复中使用[hg]隔开,当好感度低于一定值时回复[hg]前面的内容,否则回复后面的内容(例如把回复内容设置为1[hg]2,则好感度低时回复1,高时回复2)分群教学(群主或群管理可以使用)格式分群教学[split]触发词[split]回复示例 {copy showText="点我复制" copyText="分群教学[split]小逸[split]我在!"/}分群教学[split]小逸[split]我在!小逸会告诉你这条消息的ID,请记住它,查询或者删除时需要使用,后期对接web端可以直接在网页上查看(咕咕咕)!{callout color="#ef4d4d"}注意:分群教学需要审核通过后才会启用,审核周期不定(咕咕咕),可以发送我的词库查看各个词库的状态{/callout}全局教学(仅小逸管理员可用)格式教学[split]触发词[split]回复
2022年05月27日
7 阅读
0 评论
0 点赞
1
2
3
4