251118-NTP-Ubuntu时间同步(chrony)

Ubuntu 20.04 客户端指向内网 NTP 服务器

执行脚本

1
2
3
4
5
6
7
8
sudo vim /etc/chrony/chrony.conf
server 192.168.0.100 iburst
sudo systemctl restart chrony
# 强制一步到位
sudo chronyc -a makestep

# 查看是否已指向 192.168.0.100 且出现 * 号
chronyc sources -v

在 Ubuntu 20.04 上,若要让系统只通过内网 IP 地址与内部 NTP 服务器同步时间,最简、最稳的做法是:
① 停用/禁用自带 timesyncd → ② 安装 chrony → ③ 在配置文件里只写内网 server 地址 → ④ 重启服务并验证。
下面给出完整命令,复制即可用(假设内网 NTP-Server IP 为 192.168.0.100)。


  1. 停用 timesyncd(防止冲突)

1
2
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

  1. 安装并启用 chrony(推荐,轻量、抗网络抖动)

1
2
3
sudo apt update
sudo apt install -y chrony
sudo systemctl enable --now chrony

  1. 指定内网服务器

1
sudo vim /etc/chrony/chrony.conf

清空原有 server 行,只保留(或新增):

1
server 192.168.0.100 iburst

保存后执行:

1
sudo systemctl restart chrony

  1. 立即强制同步 & 验证

1
2
3
4
5
# 强制一步到位
sudo chronyc -a makestep

# 查看是否已指向 192.168.0.100 且出现 * 号
chronyc sources -v

输出示例:

1
^* 192.168.0.100   3   6   377   45   +2us[  +2us] +/-  3ms

看到 ^*只通过内网


  1. 防火墙(可选)

如果本机启用了 UFW,需放行 UDP 123:

1
sudo ufw allow out 123/udp

  1. 客户端批量脚本(任意 Ubuntu 20.04)

1
2
3
4
5
6
7
8
#!/bin/bash
srv=192.168.0.100
sudo systemctl stop systemd-timesyncd && sudo systemctl disable systemd-timesyncd
sudo apt update && sudo apt install -y chrony
echo "server $srv iburst" | sudo tee /etc/chrony/chrony.conf
sudo systemctl enable --now chrony
sudo chronyc -a makestep
chronyc sources -v

保存为 set-ntp.shchmod +x set-ntp.sh && ./set-ntp.sh 即可。

至此,Ubuntu 20.04 将通过内网地址 192.168.0.100 完成时间同步,不再访问外部 NTP 源

251118-NTP-Ubuntu时间同步(systemd-timesyncd和chrony区别)

systemd-timesyncd和chrony区别

一句话先给结论:
systemd-timesyncd 是“够用就好”的轻量级 SNTP 客户端;chrony 是功能完整、速度快、适应性强的现代 NTP 实现。

下面把差异拆开说清(信息取自 2025-09 以后多篇对比

维度 systemd-timesyncd chrony
协议 SNTP(Simple NTP) 完整 NTP
角色 只能当 客户端 可当 客户端 + 服务器
资源占用 极低(systemd 内置)
配置难度 几乎零(改 1 行即可) 简单(默认配置已合理)
同步速度 慢,一次性跳变 快,几十秒内收敛
网络适应性 一般,掉线后无补偿 优秀,支持离线漂移修正、间歇性网络、VPN、移动环境
精度 够用(ms 级) 高(µs~ms 级,视网络)
高级功能 ❌ 无 ✅ 多源选举、温度补偿、硬件时间戳、本地 stratum、ACL、速率限制等
适用场景 桌面、容器、轻量客户端 生产服务器、虚拟机、云实例、笔记本、离线机房

举例:

  • 笔记本频繁休眠/唤醒 → chrony 能在联网后 3~5 秒完成同步,timesyncd 可能要等下一次周期或手动重启服务
  • 内网需要自建 NTP 服务器 → timesyncd 做不到;chrony 加一行 allow 192.168.0.0/24

因此,“客户端-only + 极简配置” 选 systemd-timesyncd;
其余所有场景(尤其云、虚拟化、不稳定网络、服务器角色)直接上chrony

251118-NTP(systemd-timesyncd)配置内网时间同步

systemd-timesyncd 这个服务,怎么同步内网服务

Ubuntu 20.04 默认就用 systemd-timesyncd 做时间同步,无需安装任何包,只要改两行配置即可让它只走内网 NTP
下面给出最小步骤(假设内网 NTP 服务器 IP 为 192.168.0.100),复制就能用。


  1. 确认服务已启用

1
systemctl status systemd-timesyncd

若看到 Active: inactive (dead),先启动它:

1
2
sudo systemctl unmask systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd

  1. 指定内网服务器

编辑配置文件

1
sudo vim /etc/systemd/timesyncd.conf

[Time] 段改成:

1
2
3
[Time]
NTP=192.168.0.100
FallbackNTP=

FallbackNTP= 留空,防止断网时去连外网)

保存后执行:

1
sudo systemctl restart systemd-timesyncd

  1. 立即触发同步 & 验证

1
2
sudo systemctl restart systemd-timesyncd   # 重启即触发
timedatectl timesync-status # 看是否已指向 192.168.0.100

输出示例:

1
2
3
4
Server: 192.168.0.100 (192.168.0.100)
Poll interval: 32s
Leap: normal
...

看到 Server: 行就是只走内网


  1. 常用排障

  • 时间差太大(>1000s)同步失败:

    1
    2
    sudo timedatectl set-time "2025-11-28 12:00:00"   # 先手动拉到 1s 内
    sudo systemctl restart systemd-timesyncd
  • 防火墙:本机需放行出站 UDP 123

    1
    sudo ufw allow out 123/udp

【方案一】增加定时调度器,定时重启时间同步(系统定时任务crontab)

sudo systemctl restart systemd-timesyncd # 重启即触发

1
2
3
4
5
crontab -e

# 每小时的 0 分、45 分各跑一次,相当于 45 min 间隔
0,45 * * * * /bin/systemctl restart systemd-timesyncd

【方案二】增加定时调度器【替代方案】干脆让 systemd 自己定时(更简洁):

1
2
3
4
5
6
7
8
9
10
# /etc/systemd/system/refresh-timesyncd.timer
[Unit]
Description=Refresh systemd-timesyncd every 45 min

[Timer]
OnBootSec=5min
OnUnitActiveSec=45min

[Install]
WantedBy=timers.target
1
2
3
4
# /etc/systemd/system/refresh-timesyncd.service
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart systemd-timesyncd

然后

1
2
sudo systemctl daemon-reload
sudo systemctl enable --now refresh-timesyncd.timer

即可实现“每 45 分钟重启一次 timesyncd”,无需再写 crontab。


  1. 一键脚本(客户端批量)
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
srv=192.168.0.100
sudo tee /etc/systemd/timesyncd.conf <<EOF
[Time]
NTP=$srv
FallbackNTP=
EOF
sudo systemctl unmask systemd-timesyncd
sudo systemctl enable --now systemd-timesyncd
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status

保存为 set-timesyncd.shchmod +x set-timesyncd.sh && ./set-timesyncd.sh 即可。

至此,systemd-timesyncd通过内网地址完成时间同步,无需额外安装 chrony 或 ntp 包

251126-Wincc连接PLC并读取变量相关操作

Wincc 连接PLC并读取变量相关操作

设置PG/PC接口

PC选择进入控制面板。

请添加图片描述
找到STEP 7,然后下面的接口分配选择TCPIP.Auto。

在这里插入图片描述

Wincc操作

返回Wincc项目,在主菜单界面选择变量管理,右键打开。

在这里插入图片描述

右键变量管理,添加新的连接项。这里以1500PLC为例。

在这里插入图片描述

添加完后右键新增的通道,点击新建连接。

在这里插入图片描述

此时会出现一个NewConnection1,右键它选择连接参数。

在这里插入图片描述

按照实际情况填写IP地址和参数即可。

在这里插入图片描述

此时需要激活项目。

在这里插入图片描述

如果连接处握手符号有一个小绿勾,则代表与PLC连接上。

在这里插入图片描述

右键选择【AS符号】-【从AS中读取】即可读取PLC中变量。

在这里插入图片描述

左边是数据块,右边是变量。勾选即代表此变量会放入到Wincc的变量表中

在这里插入图片描述

选择完毕后点击返回即可。

在这里插入图片描述

如果什么都不选就会显示所有变量。

在这里插入图片描述

此时可以看到所有变量,然后可以全选添加进变量表。

在这里插入图片描述

当然我们选中的变量后续在界面下方的变量里。

在这里插入图片描述

251126-wincc安装教程

WinCC 8.1最新保姆级安装教程

https://blog.csdn.net/limanovember/article/details/149509164

20、 现在回到之前的WinCC 8.1文件夹,找到【Crack】文件夹,右键点击【打开】

图片

21、在打开的文件夹中,找到【CCLicenseService和谐补丁】程序,右键点击选择【复制】

图片

22、打开以下路径:C:\Program Files (x86)\Common Files\Siemens\Bin,然后在空白处右键点击选择【粘贴】选项

图片

23、如果系统提示需要管理员权限,点击【继续】允许操作

图片

24、找到刚才粘贴的【CCLicenseService和谐补丁】程序,右键选择【以管理员身份运行】(这一步对于软件正常运行至关重要!)

图片

25、在弹出的界面中,点击【执行补丁】按钮(这将为WinCC注册必要的组件)

图片

26、补丁执行完成后,点击【确定】,然后点击右上角的【关闭按钮】退出

图片

27、再次回到Crack文件夹,找到【Sim_EKB_Install…】程序,右键选择【以管理员身份运行】

图片

28、在打开的程序界面中,依次展开左侧的【WinCC】、【WinCC v8.1(2024)】、【WinCC v8.1 Basis】,然后勾选所有【短名称】,最后点击【安装长密钥】

图片

29、等待安装长密钥完成,界面会显示操作状态

图片

30、接下来点击【Interface v8.1】选项,勾选全部【短名称】,然后点击【安装长密钥】(确保每个组件都能正常工作)

图片

31、继续点击【All】选项

图片

32、点击【WinCC v8.1(2024)】,找到并勾选【4630】短名称,然后点击【安装长密钥】

图片

33、所有设置完成后,点击右上角的【关闭按钮】退出程序

图片

34、现在重启你的电脑(这一步很重要!),重启完成后回到桌面,找到【SIMATIC WINCC 8.1软件图标】,右键点击选择【打开】

图片

35、如果前面的步骤都正确执行,WinCC软件应该能够成功启动,运行界面如下图所示:

图片

251126-西门子wincc 读取变量地址 如何通过tcp协议

西门子wincc 读取变量地址 如何通过tcp协议

WinCC 本身并不提供“裸 TCP”方式去直接读写 PLC 变量,它只通过 3 类“带应用层协议”的通道与 CPU 打交道,这 3 条通道全部跑在 TCP
之上,因此只要 PLC 的以太网口没被禁用,就可以“用 TCP 读地址”,区别只是你在 WinCC 里选哪条通道、填什么地址。下面把 3 种场景一次说清:

1. S7 Protocol Suite(端口 102,原生 S7 协议)

  • 适用:S7-300/400/1200/1500
  • PLC 侧要求:
    – 硬件组态 → “允许在线访问”必须打钩;
    – 如果只想“读”,可以不勾“允许 PUT/GET”;WinCC 用的是周期读服务,不走 PUT/GET。
  • WinCC 侧步骤:
    1. 变量管理器 → 右键“添加新的驱动程序” → 选“SIMATIC S7 Protocol Suite.chn”;
    2. 在“TCP/IP”单元下建“新连接”,填入 PLC 的 IP 地址(如 192.168.0.1),端口固定 102;
    3. 在连接下建变量,地址直接写绝对地址,如 DB100,DW20、M50.0、IW256;符号名读不到。
  • 特点:速度最快,支持位、字节、字、双字、浮点;1200/1500 的优化块必须关掉“优化的块访问”。

2. Modbus TCP(端口 502,需要 PLC 做 Modbus 服务器)

  • 适用:
    – 200 SMART、S7-1200/1500(需调用 MB_SERVER 指令),或第三方仪表。

  • PLC 侧:
    – 在程序里插入 MB_SERVER,指定寄存器映射(例如 %MW1000 对应 40001)。

  • WinCC 侧:

    1. 变量管理器 → 添加驱动“Modbus TCP/IP.chn”;

    2. 建连接,IP 填 PLC 地址,端口 502,Slave ID 255;

    3. 建变量,地址用 Modbus 格式:。

  • 特点:跨品牌通用,但只能访问连续寄存器区,位变量要按字读回后再位屏蔽。

3. OPC UA / OPC Classic(端口 4840 或 4862,走 TCP)

  • 适用:S7-1200/1500 自带 OPC UA 服务器;WinCC 也可以当 OPC Client。

  • PLC 侧:
    – 激活“OPC UA 服务器”并建证书,把需要访问的变量拖进“OPC UA 元素”。

  • WinCC 侧:

    1. 变量管理器 → 添加“OPC UA WinCC Channel”;

    2. 新建连接,URL 写 opc.tcp://PLC_IP:4840;

    3. 浏览名称空间,直接把符号变量拖进来即可,无需记绝对地址。

  • 特点:能读符号名、结构体、数组,安全性高,适合多客户端同时访问。

快速选型建议

  • 手里是纯西门子方案,追求极简配置——直接用“S7 Protocol Suite.chn”,端口 102,地址写绝对地址即可。
  • PLC 是 200 SMART,或者需要第三方一起读——用 Modbus TCP,端口 502,PLC 里先做 MB_SERVER。
  • 想读符号名、结构体,或者以后上云——用 OPC UA,端口 4840。

只要记住:WinCC 必须通过上述 3 种“应用层协议”之一才能解析变量,裸 TCP 套接字方式在 WinCC 端是不开放的。

251011-Ubuntu升级SSH-Ubuntu20/22/24通过deb软件包方式升级openssh到9.9的方法

SSH 版本仓库

https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/

Ubuntu20/22/24通过deb软件包方式升级openssh到9.9的方法。

OpenSSH9.9:

https://down.tag.gg/Openssh/deb/

1、备份原来ssh配置文件:

cp -rp /etc/ssh /etc/ssh-bak

2、安装新版本:

sudo dpkg -i openssh-.deb
sudo dpkg -i ssh_
.deb
sudo dpkg -i openssh-*.udeb

3、安装成功后执行如下命令查看版本。

ssh -V

4、检测ssh配置文件是否异常

sshd -t

若没任何提示,则表示正常,若有提示,请根据报错处理。

chmod -v 600 /etc/ssh/ssh_host_*_key

若检测提示“UsePrivilegeSeparation”相关报错,则执行如下命令在检测。

sudo sed -i ‘/UsePrivilegeSeparation/s/^/#/‘ /etc/ssh/sshd_config

5、能正常检测到新版本后可以尝试重启ssh服务。

service ssh restart

重启后可以重新打开一个ssh终端看能否登录(当前登录的终端不要关闭),如果新开一个终端能登录,则基本上没有问题了。若业务和服务器允许重启,可以重启下服务器看是否能正常登录。

升级前必看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
升级前必看:

1、升级有风险,请务必先做好数据备份或者快照,以免更新有异常导致系统无法启动等问题,建议在测试环境通过后再到生产环境中部署。
2、若有配置密钥登录,升级后密钥可能会失效,届时需要重新配置。
3、不支持Ubuntu 16系统。在Ubuntu 18/20/22系统测试通过。

下载:
https://down.tag.gg/Openssh/deb/


支持Debian 12系统,其他Debian没测试。

不支持Ubuntu 16。在Ubuntu 180/20/22/24系统测试通过。OpenSSL版本是: OpenSSL 3.0.15

重要::::升级有风险,升级前做好快照备份,以免系统异常无法启动。

1、重要:备份原来ssh配置文件:

cp -rp /etc/ssh /etc/ssh-bak

2、安装新版本:安装后执行命令 ssh -V 查看新的版本。

sudo dpkg -i openssh-*.deb
sudo dpkg -i ssh_*.deb
sudo dpkg -i openssh-*.udeb

3、设置ssh配置文件权限:(此步骤一般可跳过,提示权限问题时在考虑执行)

chmod -v 600 /etc/ssh/ssh_host_*_key

4、检测ssh配置文件是否正确,执行命令后没任何显示则表示配置正常。如果有报错则需要先根据报错解决问题。

sshd -t

5、上面命令没任何提示则表示正确。执行如下命令重启ssh。

service ssh restart

6、查看已安装的版本

ssh -v

251011-Windows黑屏-Windows系统黑屏-window-系统-用各种屏幕连接,都无法显示(屏幕不亮,主机正常运行的原因及解决方法-探究屏幕不亮但主机正常运行的原因)

以下是可能导致Windows系统连接各种屏幕都无法显示但系统本身正常的原因及解决方法:

已解决:新接上显示器需要在开机前接好再启动机器

1
2
遇到黑屏肯定是有的,但是问题原因这些也是千奇百怪。
如果确定主机正常运行,那就确保显示器跟连接线材是否有问题,新接上显示器需要在开机前接好再启动机器。不能启动后再中途连接,这样肯定会不显示

硬件连接问题

  • 检查连接线:确保HDMI、DisplayPort、VGA等连接线已牢固插入电脑和显示器两端的接口,检查接口是否有弯曲针脚或积尘,可尝试更换一条已知完好的线缆进行测试。
  • 确认显示器输入源:使用显示器自带的菜单按钮进入输入源选择界面,手动切换至与连接线对应的信号通道,如HDMI 1、DP IN等。
  • 检查显卡:如果使用独立显卡,需确保视频线接在显卡输出口,而不是主板接口;检查显卡是否插牢,可断电后打开机箱,取出并重新插紧显卡,同时清理金手指部分的灰尘;检查显卡辅助供电是否正常。

显卡驱动问题

  • 更新或重装驱动
    :驱动程序过旧或损坏可能导致系统无法正确识别屏幕。可进入设备管理器,找到显卡,右键选择“属性”,然后切换到“驱动程序”选项卡,点击“更新驱动程序”按钮;也可先卸载当前的显卡驱动,然后从显卡厂商的官网下载最新的驱动程序进行安装。

系统设置问题

  • 检查显示模式:按下Win+P键,调出投影面板,确保未选择“仅电脑屏幕”选项,可改为“复制”或“扩展”模式。
  • 手动检测显示器:右键点击桌面空白处,选择“显示设置”,进入系统显示配置页面,向下滚动至“多显示器”区域,点击“检测”按钮,强制Windows搜索并识别连接的显示器。
  • 调整分辨率与刷新率:部分旧款显示器或低端线缆不支持过高的分辨率或刷新率,可在“显示设置”中,找到屏幕的分辨率选项,将其手动设置为较低的分辨率与刷新率,如1280x720与60Hz,保存更改后看显示器是否点亮。

BIOS设置问题

  • 检查BIOS设置:进入BIOS界面,检查是否开启了多显示器支持,若未开启则开启该功能;还可检查BIOS中是否设置了哪个显示器作为主显示器,确保设置正确。

其他问题

  • 检查硬件兼容性:某些老旧的显示器可能无法与新型电脑主机兼容,可尝试更换硬件或调整硬件设置。
  • 重启系统或使用安全模式:当其他方法都无效时,尝试重启电脑,有时系统会在启动时自动识别所有连接的显示设备。若仍无法识别,可尝试进入安全模式,看系统是否能识别屏幕。

1.主机硬件故障:内存条松动导致屏幕不亮

主机启动后,内存条的松动可能导致屏幕不亮,这时我们需要将主机断电并重新插拔内存条,确保其正常连接。

2.显卡故障:显卡接口损坏导致屏幕不亮

显卡接口的损坏可能导致信号传输中断,导致屏幕无法正常显示。此时,我们可以更换一个新的显卡或者将显卡重新插拔一次。

3.电源故障:电源线接触不良导致屏幕不亮

电源线接触不良可能导致供电不足,进而造成屏幕不亮。此时,我们需要检查电源线是否插紧,并确保其正常供电。

4.显示器故障:显示器线松动导致屏幕不亮

显示器线松动或损坏可能导致屏幕不亮,此时我们需要重新插拔显示器线,并确保其正常连接。

5.屏幕分辨率设置问题导致屏幕不亮

主机启动后,如果屏幕分辨率设置不正确,也可能导致屏幕无法正常显示。这时,我们可以尝试进入安全模式重新设置分辨率。

6.操作系统问题导致屏幕不亮

操作系统的异常或问题也可能导致屏幕不亮。我们可以尝试重启计算机或者进行系统修复来解决这个问题。

7.驱动问题导致屏幕不亮

主机的显卡驱动异常也可能导致屏幕不亮。我们可以尝试更新或重新安装显卡驱动来解决这个问题。

8.BIOS设置问题导致屏幕不亮

BIOS设置异常也可能导致屏幕不亮,我们可以尝试恢复默认设置或者重新设置BIOS来解决这个问题。

9.主板故障导致屏幕不亮

主板故障可能导致屏幕无法正常显示,这时我们需要更换一个新的主板来修复问题。

10.CPU故障导致屏幕不亮

CPU故障也可能是导致屏幕不亮的原因之一,这种情况下我们需要更换一个新的CPU来解决问题。

11.内存问题导致屏幕不亮

内存的故障也可能导致屏幕不亮,我们可以尝试更换或重新插拔内存条来解决这个问题。

12.硬盘故障导致屏幕不亮

硬盘故障也可能是屏幕不亮的原因之一,我们可以尝试连接一个新的硬盘来解决问题。

13.软件冲突导致屏幕不亮

某些软件的冲突也可能导致屏幕不亮,我们可以尝试关闭或卸载一些可能引起冲突的软件来解决问题。

14.病毒感染导致屏幕不亮

电脑病毒的感染也可能导致屏幕不亮,此时我们需要进行病毒扫描和清除来解决问题。

15.清洁问题导致屏幕不亮

长期使用后,屏幕可能因为灰尘或污渍而不亮。我们可以用专业的屏幕清洁剂和布进行清洁,解决屏幕不亮的问题。

屏幕不亮但主机正常运行可能由于硬件故障、显示器故障、操作系统问题等多种原因所致。我们可以通过检查硬件连接、更换显卡或重启计算机等方法来解决这个问题。如果问题仍然存在,建议寻求专业人士的帮助,以确保计算机能够正常运行。