常用的OPC UA客户端:
- OpcUaHelper.Tool-v2.1.2
- InstallDataFEEDOpcUaClient1.43.0
常用的OPC DA客户端:
- opc-client.exe
常用的OPC UA客户端:
常用的OPC DA客户端:
步骤1:右击“我的电脑”进行属性设置
1)、设置“我的电脑”默认属性
2)、设置“我的电脑” COM 安全机制之访问权限 -“编辑限制”
步骤 4:选择用户:
1 | Administrator |
步骤 5:设置以上 9 个用户访问权限为:
本地访问:允许
远程访问:允许
3)、设置“我的电脑” COM 安全机制之访问权限 -“编辑默认值”
同 设置“我的电脑” COM 安全机制之访问权限 -“编辑限制”步骤 1 到步骤 5
4)、设置“我的电脑” COM 安全机制之启动和激活权限 -“编辑限制”
增加用户:
1 | Administrator |
配置每个用户权限为:
5)、设置“我的电脑” COM 安全机制之启动和激活权限 -“编辑限制”
增加用户:
1 | Administrator |
配置每个用户权限为:
2、配置 OpcEnum
1)、选择“ DCOM 配置”
2)、选择“ OpcEnum”
注:若此处未找到 OpcEnum 插件,需安装一个 OPC Core Components Redistributable (x64) ,
可以自行百度查找安装,并注意需安装对应操作系统的安装包。
3)、右击配置 OpcEnum 属性之常规为无
4)、配置 OpcEnum 属性之“安全”
5)、对“配置权限”之“自定义”进行“编辑”
增加用户:
1 | Administrator |
配置每个用户名权限为:
6)、配置 OpcEnum 属性之“标识”
注:若此处交互式运用为灰色不能选择,按以下步骤进行操作。
①、在 C 盘中找 OpcEnum.exe 的安装位置
②、把安装位置拉到运行中: OpcEnum.exe 安装位置+空格+ //regserver 回车确定
3、配置 opc server
1)、选择 OPC Server 组件服务名称,本例 OPC Server 为 KEP Server
2)、配置 KEP Server 属性之“常规”为“无”
3)、配置 KEP Server 属性之“安全”
4)、对“配置权限”之“自定义”进行“编辑”
增加用户:
1 | Administrator |
配置每个用户名权限为:
1、进入安全策略程序
控制面板 >管理工具 >本地安全策略
2、配置安全策略之安全
网络访问:本地账户的共享和安全模式设置为“经典”
3、配置安全策略之匿名用户
网络访问:将 Everyong 权限应用于匿名用户设置为“已启用
1、进行防火墙“例外” (允许程序通过 Windows 防火墙通讯)
控制面板 >所有控制面板项 >Windows 防火墙 >允许的程序
2、添加 DCOM 端口
控制面板 >所有控制面板项 >Windows 防火墙 >高级设置
出站规则同入站规则设置
3、添加例外程序 OpcEnum
OpcEnum 路径程序在 C:\Windows\System32\OpcEnum.exe
4、添加例外程序 OPC Serve(本例为 KEP SERVE)
KEP SERVE 的路径程序在 C:\Program Files (x86)\KEPServerEx\servermain.exe
5、添加 MMC 控制台程序
6、打开文件和共享
最后确保下列所有项都在防火墙例外程序中
一 客户端 DCOM 配置
1、配置“我的电脑”
所有配置与服务端配置“我的电脑”相同
一 客户端防火墙配置
1、添加 DCOM 端口
所有配置与服务端配置“我的电脑”相同
项目场景
某行业DCS控制系统通过西门子WinCC系统实现,为了实现智能集控功能,需要从WinCC OA采集产线数据。
技术问题
频繁出现OPC DA Client采集连接断开问题,导致工业互联网平台数据断流,检查DCOM等配置后无果,无法直接排除原因。
分析过程
客户端 190.182.183.15 Administrator/Apef123456
服务端 190.182.57.71/72 Administrator/Apef123456!
1、客户端与服务端登录的用户名与密码不一致,新增了一个用户OpcUser/Apef123456
2、客户端可以ping通服务端IP、服务端不能ping通客户端IP
——————–服务端与客户端测试——————————————
3、190.182.183.15服务器仅远程服务端(190.182.57.71)时,190.182.183.15服务器上的客户端才能正常访问服务端(190.182.57.71)
的OPC服务
4、190.182.183.15服务器仅远程服务端(190.182.57.72)时,190.182.183.15服务器上的客户端才能正常访问服务端(190.182.57.72)
的OPC服务
——————–服务端与服务端测试——————————————
5、190.182.183.15服务器远程服务端(190.182.57.71/72)
时,两服务端的客户端都能正常访问各自的OPC服务,一旦190.182.183.15服务器断开其中一个远程,未断开远程的客户端不能访问已断开远程的OPC服务
初步分析结果
比较明显断流与远程桌面存在关系。
问题深入探究
咨询西门子业内专家后,转发提供URL资料。
1 | https://support.industry.siemens.com/cs/mdm/109792613?c=133562653835&dl=zh&t=1&s=RDP&lc=en-DE |
下面是上述URL链接的内容。
远程访问和远程桌面协议 (RDP)
有关远程访问的最新操作说明,请参见以下常见问题解答:
有关远程组态的详细信息,另请参见 WinCC 信息系统的“组态 > 多用户系统 > 远程组态”部分。
以下方案已经过测试:
也可以在允许方案中通过 OPC 进行通信。
有关“RealVNC”使用方面信息,请访问 Internet 上的客户支持页面:
请注意“RealVNC”不支持键盘锁。仅在使用远程桌面协议连接时,键盘锁才有效。
仅当 WinCC 服务器或单用户系统运行在 WinCC ServiceMode 模式时,才允许使用远程桌面协议 (RDP)。
遵循下列限制:
注意中断远程桌面连接后数据丢失当远程桌面连接中断(例如,由于从运行远程桌面客户端的计算机上拆下网络电缆)时,归档和 OPC 服务器等将不再从数据管理器接收值。该状态将维持到连接恢复或大约 35 秒的超时时间到时。 | |
---|---|
可利用“远程桌面”客户端通过控制台会话来访问 WinCC 系统。
只有同一用户通过控制台接管或初次登录,才可实现通过“远程桌面协议”访问。
所有“远程桌面”用户都必须是目标 PC 上“SIMATIC HMI”用户组的成员。
要启动控制台会话,打开“运行”(Run) 对话框,例如使用 <Windows 按钮 + R>。
输入以下命令:
输入计算机名称或 IP 地址作为服务器。
有关附加参数的详细信息,输入以下命令:
仅使用 UNC 路径远程移植 WinCC 项目。
发布该项目的项目路径或文件夹。
在 WinCC 项目移植器中,将此 UNC 路径作为项目目录。
解决方法:
源网址:https://www.cnblogs.com/tqianly/p/3749357.html
关于OPC通讯做的比较多了。但是OPC的DCOM配置一直没认真去查资料,专心去整。这可能是因为我在测试程序的时候都是把服务器跟客户端在同一台电脑上运行,这样就不要配置DCOM。现在来记录一下下个人在网上查找的资料吧。
http://blog.csdn.net/jinzhili/article/details/970233
http://www.cnblogs.com/johnpher/archive/2012/10/27/2742207.html
我首先是根据第一个博客提供的方法配置了一下,然后用OPC客户端连接的时候,没有成功。提示
“ 对 COM 组件的调用返回了错误 HRESULT E_FAIL。 ”
然后我又按照第二个博客的办法配置了一下,OPC客户端就可以连的上远程的OPC服务器了。所以只能说我这次成功了,但不知道我有没有多余的配置。
下面来说说我做的吧。
(1)服务器的配置
a)安装 NWLink IPX/SPX/NetBIOS Compatible Transport Protocol 协议
在“网络连接”里面找到你用的那个网络端口,比如说我用的是无线上网,选择“无线网络连接”,右击“属性”。
在以上页面中点击“安装” —— “协议”——找到那个协议安装。(我的那个协议已经装过了,所以在列表中可以看到)。
b)关闭防火墙跟杀毒软件。在服务器机跟客户端机都需要。
c) 运行dcomcnfg
在如下图的“我的电脑”的属性页中配置:
在以下的选项卡里面设置:
在“COM安全”选项添加Administrator、ANONYMOUS、LOGON Guest、everyone、Eason(这个是我电脑的登陆名,这里也设置了)
然后每一个都把权限给勾上。
d)在OPC服务器上,还要回到“组件服务”界面,打开”DCOM配置”,找到注册的OPC服务器的名称选项,打开它的属性。
(注:有时做好dcom配置后,需要重新启动电脑才起作用。所以为了安全起见,建议最好重新启动一下电脑,再做下一步)。
e)本地安全策略配置**
**
1、OPC服务器和OPCClient服务器都要设置:打开“控制面版”——“管理工具”——打开“本地安全策略” 安全选项——”网络访问:本地帐户的共享和安全模式”——属性
注:如果不配置这个,那么在连接OPC服务器的时候,就会出现拒绝访问的现象。
(2)客户端的配置
**
**客户端按照以上服务器的
a)、b)、c)、e)配置,然后就可以连接的上了。
附一些可能的配置方法:
一、在装有某OPC SERVER的机器上。DCOM配置如下
\1. 运行服务器上的dcomcnfg程序,进行DCOM配置。
\2. 进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾,将默认身份级别改为“无”。
\3. 进入DCOM的总体默认安全机制页面,确认默认访问权限和默认启动权限中的默认值无EveryOne,
如果不去掉EveryOne,应用服务器不能正常启动。
4.在常规页面中,双击你的应用服务器,打开你的应用服务器DCOM属性设置。
5.将常规页面中的身份验证级别改为“无”。
6.位置页面中选上“在这台计算机上运行应用程序”。
7.将安全性页面设置中,均选择“使用自定义访问权限”,编辑每一个权限,将EveryOne加入用户列表中。
8.身份标识页面中,选择“交互式用户”。
注意NT的GUEST用户不能禁用。
二、在客户端机器上DCOM配置如下:
1后点”开始”->”运行”,输入”dcomcnfg”,然后回车,启动dcom配 置。
2. 常规页面中,双击你的应用服务器,打开你的应用服务器DCOM属性设置。
3. 将常规页面中的身份验证级别改为“无”。
4. 身份标识页面中,选择“交互式用户”。
5. 位置页面中,选择“在这台计算机上运行应用程序”。
进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾,将默认身份级别改为“无”。
两端配置好后,客户端机器就可以访问远方机器的OPCSERVER了
随 Windows 11提供的是.NET Framework 4.8,该环境可以运行任何 .NET Framework 4.x 应用。
而.NET Framework 3.5 支持为 .NET Framework 2.0 到 3.5 生成的应用,需要自行安装。
当Win11的应用软件需要.net framework3.5的运行环境时,就会提示“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(
包括.NET 2.0和3.0)。
在线安装耗时很长,下面是离线安装.NET Framework 3.5的方法:
1、下载离线安装包,Win 10安装net 3.5的方法都是先下载net 3.5的cab包,然后用dsim命令来安装。
2、关掉所有[杀毒软件]及电脑管理管家等如360安全卫士
3、将下载的安装包放到c盘windows目录下(根据需要放置)
4、用命令行安装:
以管理员身份打开cmd,输入以下命令:
1 | dism.exe /online /enable-feature /featurename:netfx3 /Source:C:\Windows\sxs |
等待进度到100%,显示操作成功完成:
1 | 在Win11上离线安装 .NET Framework 3.5的方法 |
C:\ProgramData\ssh
C:\ProgramData\ssh\sshd_config
%programdata%\ssh\sshd_config
sshd_config
1 | Port 22 |
GIT
配置 authorized_keys
C:/Users/Administrator/.ssh/authorized_keys
ssh-keygen需要配置为ISA
1 | ssh-keygen -t rsa -m PEM |
序号 | 事项 |
---|---|
1 | 安装chromium-browser ,命令sudo apt-get install chromium-browser -y |
2 | 禁用ChromeBrower数据收集功能 1.打开 Chromium 浏览器。 2.点击右上角的菜单按钮,选择“设置”。 3.在“隐私和安全”部分,找到“帮助改进 Chrome 的功能和性能”选项并关闭 |
3 | 配置ChromeBrower开机自启动和全屏(/home/ubuntu/.config/autostart ) |
4 | 配置WiFi连接 |
5 | 桌面禁用锁屏和黑屏配置 |
6 | 配置Ubuntu时区 sudo timedatectl set-timezone Asia/Shanghai sudo cat /etc/timezone |
7 | Chrome disable browser metricschmod -R 000 /root/snap/chromium/common/chromium/BrowserMetrics d--------- 2 root root 16K 6月 12 22:00 BrowserMetrics |
lsb_release -a
1 | No LSB modules are available. |
192.168.0.148
序号 | 账号 | 密码 |
---|---|---|
1 | ubuntu | ubuntu |
2 | root | As12345678 |
chrome安装(root安装)
1 | sudo snap install chromium |
浏览器字体安装
1 | sudo apt update && sudo apt upgrade -y |
这种方法适合需要自定义启动参数的场景:
1 | mkdir -p ~/.config/autostart |
1 | [Desktop Entry] |
--start-maximized
:启动时最大化窗口。--kiosk
:全屏模式。"http://www.example.com"
:替换为你希望打开的网页地址。"http://192.168.0.190/hmi/dsfq"
1 | cp /etc/systemd/network/10-eth0.network /etc/systemd/network/10-eth0.network.bak |
/etc/systemd/network/10-eth0.network
1 | [Match] |
/etc/systemd/network/20-wlan0.network
1 | [Match] |
序号 | 方式 |
---|---|
1 | 你用命令nmtui 然后选择第二个 |
2 | (如果没有这个nmtui命令)root目录下有一个wifi开头的脚本,执行这个脚本连接WIFI |
/root/wifi-connect.sh
1 | /root/wifi-connect.sh |
在 Ubuntu 20.04 中,可以通过命令行禁用锁屏和黑屏功能。以下是具体步骤:
禁用屏幕保护程序和锁屏:
打开终端(Terminal)。
输入以下命令来禁用屏幕保护程序和锁屏功能:
1 | sudo gsettings set org.gnome.desktop.screensaver lock-enabled false |
禁用电源管理中的屏幕关闭:
1 | sudo gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' |
黑屏通常是由于屏幕保护程序或电源管理设置导致的。通过上述命令禁用了屏幕保护程序和电源管理中的屏幕关闭后,黑屏问题应该会得到解决。
你可以通过以下命令查看当前的设置是否生效:
1 | gsettings get org.gnome.desktop.screensaver lock-enabled |
如果返回值为 false
或 'nothing'
,说明设置已经生效。
false
和 'nothing'
改为 true
或默认值。通过以上步骤,你应该可以在 Ubuntu 20.04 中通过命令行禁用锁屏和黑屏功能。
chromium/BrowserMetrics
/root/snap/chromium/common/chromium/BrowserMetrics 这个文件夹是什么东西,容量太大了
1 | sudo find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 20 |
chromium/BrowserMetrics
—>解决办法
完全卸载snap安装的Chromium 应用,使用谷歌官方网站下载的浏览器。
1 | sudo snap remove --purge chromium |
禁用更新
1 | sudo refresh chromium --unhold |
1 | sudo snap refresh chromium |
1 | 1.移除snap对chromium的自动更新。 |
1 | 1.移除snap对chromium的自动更新。 |
1 | # sudo snap set system refresh.metered=hold |
1 | #!/bin/sh |
https://blog.csdn.net/qq_45911550/article/details/111399277
如上图,选择镜像,不过这个时候笔记本的屏幕也是在使用中,可以将笔记本设置为合上盖子仍然运行就可以了。
1 | sudo cat /etc/systemd/logind.conf |
– | – |
---|---|
配置时区 | sudo timedatectl set-timezone Asia/Shanghai && sudo cat /etc/timezone |
1 | sudo timedatectl set-timezone Asia/Shanghai |
编辑/etc/security/limits.conf
文件,添加或修改相应的行来增加限制。例如:
1 | * soft nproc 65535 |
确保内核启用了 IP 转发功能。可以通过以下命令启用:
1 | sudo sysctl -w net.ipv4.ip_forward=1 |
为了使设置永久生效,可以编辑 /etc/sysctl.conf
文件,添加以下内容:
1 | net.ipv4.ip_forward = 1 |
然后运行以下命令应用配置:
1 | sudo sysctl -p |
sudo vim /etc/sudoers
1 | user ALL=(ALL:ALL) NOPASSWD: ALL |
查看网络节点的tcp连接状态,如果发现系统存在大量的TIME_WAIT状态的连接,通过调整内核参数解决:
然后执行以下命令让参数生效:sudo /sbin/sysctl -p
linux下ulimit参数调整
sudo vim /etc/security/limits.conf
1 | * soft nproc 65535 |
1 | ulimit -SHn 65536 |
/etc/sysctl.conf
文件sudo vim /etc/sysctl.conf
1 | fs.file-max = 1048576 |
sudo vim /etc/systemd/system.conf
1 | DefaultLimitNOFILE=1048576 |
sudo vim /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service
1 | [Service] |
系统全局允许分配的最大文件句柄数:
2 millions system-wide
1 | sudo sysctl -w fs.file-max=2097152 |
1 | sudo sysctl -w net.core.somaxconn=32768 |
1 | sudo sysctl -w net.ipv4.ip_local_port_range='1000 65535' |
1 | sudo sysctl -w net.core.rmem_default=262144 |
1 | sudo sysctl -w net.nf_conntrack_max=1000000 |
解决办法:
vim /etc/sysctl.conf
sudo vim /etc/sysctl.conf
1 | fs.file-max = 1048576 |
sudo sysctl -p
/etc/timezome
的內容1 | sudo cat /etc/timezone |
1 | sudo timedatectl set-timezone Asia/Shanghai |
timedatectl
命令顯示當前的系統時區。1 | timedatectl |
輸出畫面
1 | Local time: Fri 2021-01-07 22:45:47 UTC |
1 | let isProcessing = false; |
angularjs 能不能实现一个组件,放到所有的按钮上面,控制ng-click防重复提交策略
在 AngularJS 中,可以通过创建一个自定义指令来实现一个通用的防重复点击组件,这个指令可以附加到任何按钮上,以控制 ng-click
的防重复提交策略。
以下是一个完整的示例:
1 | // 增加按钮防重复点击组件 |
在 HTML 中,将 prevent-repeated-click
指令附加到按钮上,并可选地指定 click-delay
属性来设置按钮禁用的时间(以毫秒为单位)。
1 |
|
在控制器中定义按钮的点击处理函数。
1 | app.controller('myCtrl', function ($scope) { |
preventRepeatedClick
**:restrict: 'A'
**:指定该指令为属性类型。scope
**:定义指令的隔离作用域,ngClick
用于绑定按钮的点击事件,clickDelay
用于设置按钮禁用的时间。link
函数:在指令的链接函数中,监听按钮的点击事件。isProcessing
**:标记按钮是否正在处理事件。delay
**:从 click-delay
属性获取按钮禁用的时间,如果没有指定则使用默认值 2000 毫秒。isProcessing
为 true
,阻止事件的默认行为并返回,防止重复点击。否则,将isProcessing
设置为 true
并禁用按钮。ng-click
**:调用绑定的 ngClick
函数。$timeout
在指定的延迟时间后将 isProcessing
设置为 false
并启用按钮。prevent-repeated-click
指令,并可选地使用 click-delay
属性来指定按钮禁用的时间。ng-click
到按钮的点击处理函数。buttonClick
,在其中执行相关的业务逻辑。通过这种方式,你可以将 prevent-repeated-click
指令附加到任何按钮上,以实现防重复点击的功能,而无需在每个按钮的控制器中重复编写相同的逻辑。
AngularJS 的双向数据绑定来实现。以下是一个示例:
ng-disabled
指令来绑定按钮的禁用状态。1 | <div ng-app="myApp"> |
1 | var app = angular.module('myApp', []); |
在这个示例中,我们使用了 ng-disabled
指令来绑定按钮的禁用状态到 $scope.isDisabled
变量。当点击按钮时,buttonClick
函数会被调用,它会切换 $scope.isDisabled
的值,从而改变按钮的禁用状态。
$scope.isDisabled
为 false
,按钮是启用状态。buttonClick
函数将 $scope.isDisabled
设置为 true
,按钮变为禁用状态。buttonClick
函数将 $scope.isDisabled
设置为 false
,按钮恢复启用状态。