十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Prosys OPC UA Server安装配置与实操指南:从安装到跑通全流程

Prosys OPC UA Server安装配置与实操指南:从安装到跑通全流程 搞工控、做上位机开发的应该对OPC UA这个词不陌生。不管是连PLC、采集机床数据还是给MES系统供数OPC UA几乎成了大家默认的通讯协议。早些年大家习惯用KepServerEX后来慢慢转向Prosys OPC UA Server——界面更清爽、地址空间编辑方便、自带的模拟标签也够用。但每次跟同行聊起来发现不少人在配置第一步就卡住了包括证书目录、端口映射、用户权限这些细节。这篇文章我把Prosys OPC UA Server从安装到跑通的完整过程拆开讲清楚结合我实际踩过的坑尽量让刚接触的人也能照着做就通。这篇文章适合谁一种是刚入行做上位机或边缘采集的工程师需要本地起一个OPC UA服务供测试另一种是已经在用其它模拟器想尝试Prosys做信息模型自定义的老手。无论哪种情况核心目标都一致最快速度把一个能连、能读、能写、能模拟变化的OPC UA Server跑起来并且知道出了问题去哪里排查。1. 为什么用Prosys OPC UA Server选型与前置准备1.1 几个常见OPC UA模拟服务器的横向对比先聊工具选型。这是很多人忽略但很重要的一步。OPC UA服务器的选择并不少官方有UA-.NET Standard的Reference ServerKepware有KepServerEXProsys也有Simulation Server和OPC UA Server。我用下来的感受是官方Reference Server适合拿来写代码时当测试目标但它没有图形界面配置全靠改配置文件对不熟悉UA模型开发的人来说门槛偏高。KepServerEX的强项在驱动生态上百种PLC驱动随便选但许可证费用不便宜而且地址空间配置比较传统适合大规模工业点位接入不适合快速原型验证。Prosys OPC UA Server在这中间的定位很巧妙。它用Java写的跨平台Windows和Linux都能跑自带图形化界面地址空间是树形展示可以直接拖拽式创建对象和变量内置模拟数据插件不需要真PLC就能输出连续变化的数据。最关键的是免费版已经覆盖了日常测试和教学场景的需求只有涉及到复杂权限控制和冗余部署时才需要购买企业版。我个人的建议是如果你只是验证OPC UA客户端逻辑或者给Node-RED、数据库中间层做数据源调试Prosys完全够用。等真正上产线了再根据现场PLC品牌选择Kepware或西门子自带的UA服务器思路是相通的配置文件不会白学。1.2 安装前需要准备的三个基础工具配置Prosys OPC UA Server本身不复杂但前置环境没弄好会导致各种莫名其妙的问题。我建议动手之前先把下面三样东西准备好。第一是JDK。Prosys基于Java开发虽然新版安装包内置了JRE但如果你要跑的是绿色版或者需要切换多个版本提前安装JDK 8以上版本是稳妥的。安装完记着配置环境变量JAVA_HOME在命令行输入java -version确认一下输出这一步很多人跳过了等启动脚本报错才发现路径不对。第二是OPC UA客户端测试工具。最常用的就是UaExpert免费支持Windows和Linux功能全面能看到地址空间树、能订阅数据变化、能读写节点。也有轻量级的替代方案比如Prosys自己提供的UaBrowser以及一些基于浏览器访问的UA客户端。但我一直建议用UaExpert因为它的诊断信息更详细在排错阶段帮助很大。第三是模拟PLC或PLC仿真器。如果只是想看数据跳动Prosys内置的模拟功能就够了不需要额外硬件。如果你需要模拟更真实的Modbus TCP或S7协议数据那可以准备一个PLC仿真器比如S7-PLCSIM或者Modbus Slave工具让数据源更接近现场。这三样准备好了后面所有操作都会顺畅很多。尤其是UaExpert我见过太多人卡在“Server起不来”的阶段其实不是Server的问题是客户端连接方式不对后面第4部分我会专门讲。1.3 安装Prosys OPC UA Server的细节操作下载地址我就不贴了官方渠道搜索Prosys OPC UA Server即可。下载的时候注意选对版本Windows系统选.exe安装包Linux选.deb或.tar.gzmacOS也有对应的安装包。安装过程本身没什么特别的一路Next加Finish。但有两点值得提醒第一安装路径尽量不要带中文和空格虽然最新版对路径兼容性好了很多但后续配置证书和日志路径时用纯英文路径更容易排查问题第二Windows安装时会提示是否创建桌面快捷方式和开机自启动服务我建议测试环境不要勾选开机自启动因为Prosys的图形界面方式和系统服务方式配置有细微差别测试的时候用前台方式更容易观察日志。Linux环境下安装后需要给执行脚本加权限然后用./prosygate命令启动或者用systemctl注册成服务。这里不展开Windows用户跳过即可。安装完成后双击图标看到弹出Server管理界面说明装好了。此时不要着急点“Start”先检查右下角版本号和构建日期确认不是老的测试版遇到过有同事拿三年前的版本照着新教程配置界面都对不上浪费时间。2. 快速上手从启动到理解地址空间2.1 第一次启动Server的正确姿势Prosys OPC UA Server启动其实就是一个Start按钮的事但如果没理解它启动背后做的事情遇到连不上时就会手足无措。点击Start前先看一下主界面下方的日志输出窗口。启动过程中Server会依次完成加载安全证书、绑定TCP端口、初始化地址空间、启动内部模拟引擎。每一步都有日志记录。正常启动后日志末尾会出现类似The OPC UA Server is running的信息同时状态栏变为绿色。这里有个关键细节默认端口是53530。Prosys OPC UA Server启动后监听两个端口一个是53530用于OPC UA二进制协议opc.tcp://另一个是8090用于HTTPShttps://localhost:8090可以通过浏览器访问一个基础的Web界面。这个Web界面能看到Server基本信息、证书状态也可以快速下载客户端测试工具。如果你本机只跑一个Prosys实例端口一般不会冲突。但如果之前装过旧版本或者同机运行了多个实例53530端口可能被占用。启动时日志会明确报Address already in use。解决办法有两个一是关掉旧实例二是在配置文件里改端口。改端口的方法后面第6章会专门讲这里先记住端口占用的排查思路。2.2 界面核心区域与主菜单功能Prosys OPC UA Server的主界面是典型的左右结构。左边是地址空间导航树右边是根据选中节点变化的属性面板。顶部是功能区主要用到的有三个Server Settings服务器设置、Address Space地址空间管理、Users用户管理。Server Settings里最重要的是Endpoints配置也就是客户端连接时要使用的端点URL默认是opc.tcp://localhost:53530/opcua/server。这里要重点理解一个概念如果你客户端和Server在同一台机器上用localhost没问题但如果客户端在另一台电脑上就必须把localhost换成Server的网卡IP否则无论如何都连不上。这个细节我后面会反复强调因为它是跨机连接失败第一大原因。Address Space就是OPC UA的信息模型本质是一棵树根是Objects往下是文件夹、对象、变量。Prosys默认带了Objects → Simulation → Demo等几个节点里面有一些预置的模拟变量比如Counter、Random、Sinusoid等。这些变量是理解OPC UA数据访问最直观的素材。Users管理是配置用户名密码和匿名访问的。默认情况下Server允许匿名访问Anonymous好测试。如果需要用户名密码验证你必须先在UA端点上勾选对应的安全策略并在Users里添加用户否则客户端即使填了密码也登录失败。这就是很多人一改用户配置就连不上的原因两个地方要配合着改。2.3 地址空间树的基本概念与默认节点理解地址空间树是学会所有OPC UA配置的关键。你可以把它想象成文件系统Object类似文件夹Variable类似文件Method类似可执行的程序。客户端通过遍历这棵树来找到自己需要的数据节点。Prosys默认的地址空间里ObjectsFolder下面有Server节点代表Server自身的信息包括ServerStatus、ServerName、NamespaceArray等。还有Simulation节点里面是模拟数据对象。这些默认节点是学习的好素材你可以用客户端订阅里面任意一个变量观察数据变化频率。值得多说一句Namespace。Namespace是OPC UA用来区分不同信息模型来源的机制相当于数据域的命名空间。Prosys默认有两个命名空间一个是0对应OPC UA内置定义另一个是1对应Prosys自己的模拟模型。当你创建自己的标签时建议新建一个Namespace这样可以方便地和其他模型区分也方便客户端按命名空间过滤查找。3. 核心实操自定义标签与模拟数据配置3.1 添加一个自定义变量节点光看默认节点不过瘾实际项目中总会遇到需要自定义标签的情况比如给一台设备建温度、压力、转速变量。Prosys做这件事很顺手但步骤有讲究。在地址空间导航树上右键点击Objects文件夹选择Add → Object先建一个对象节点。这里要说明为什么先建Object而不是直接建VariableOPC UA的习惯是变量必须挂在对象下面对象代表物理设备变量代表设备属性。比如建一个MotorDevice对象再在它下面建MotorTemp、MotorSpeed等变量。这样组织起来既清晰又符合设备模型规范。对象创建好后右键该对象选择Add → Variable。在弹出的属性窗口中需要设置Name、BrowseName、DataType、Value等属性。BrowseName默认和Name一致可以不改。DataType选择Float或Double都行温度一般Float够用。Value即初始值可以设置一个合理范围内的起始数值。这一步常见的坑是忽视DataAccess属性。OPC UA变量默认是DataAccess型的需要勾选AccessLevel属性比如Readable、Writable、HistoricalRead等。如果你只是把节点建出来了但AccessLevel没勾客户端读数据会返回BadAttributeIdInvalid或者干脆看不到这个节点。所以建完节点后记得在右侧属性面板确认AccessLevel里Readable是勾选状态。3.2 模拟数据源与扫描周期设置节点建好后默认值是一个死数客户端读到的值永远不变。要让它动起来需要给变量挂一个SimulationSource。Prosys支持三种方式常量、正弦波、随机数。也可以自己写脚本但一般模拟测试用这些内置的足够了。选中刚才建立的变量在右侧面板找到Simulation Source下拉选择Sinusoid正弦波或者Random。这时会出现Minimum、Maximum、UpdateRate等参数。Minimum和Maximum是模拟值的下限和上限UpdateRate是刷新周期单位毫秒。典型温度模拟可以设置Minimum20.0Maximum80.0UpdateRate1000表示每秒刷新一次温度在20到80度之间正弦波动。这里讲一下UpdateRate的选择逻辑。很多人喜欢设成100毫秒觉得数据变化得快显得高级但实际没有意义。模拟数据的频率应该匹配你客户端订阅需求如果数据要传到MES系统做分钟级统计1秒刷新足够了如果做设备启停信号模拟甚至5秒一次都行。刷新频率越高CPU占用和网络带宽消耗越大而且会淹没你排查问题时的有效信息。设置完成后可以立即在属性面板的值预览区域看到数值在跳动这一步就说明模拟源生效了。如果没跳动检查一下是否选中了正确的变量以及Simulation Source是否真的选择了非空的选项。3.3 工程文件的保存与导出配置了半天最怕软件崩溃或者电脑重启导致全部白干所以工程保存是必须养成的习惯。Prosys的工程文件是XML格式后缀是.opcua。在File菜单中选择Save就能把当前地址空间、Server配置、用户权限、模拟源设置全部保存到一个文件里。文件保存逻辑很简单但有两点值得注意第一工程文件里保存的是逻辑配置不包含证书和私钥。证书和私钥存放在独立的证书目录里Windows下在%ProgramData%\Prosys OPC UA Server\PKI。如果你要把工程迁移到另一台机器除了拷贝.opcua文件还要连同证书文件一起拷贝否则对方机器的客户端会报证书验证失败。第二Prosys支持导入导出NodeSet文件。NodeSet是OPC UA规范定义的信息模型交换格式扩展名是.xml。如果你在UaModeler或者官方建模工具里设计好了信息模型可以直接导入Prosys。反过来也可以把自己建的模型导出成NodeSet给别人用。这个功能在团队协作时非常有用不需要每个人都在图形界面里重复添加几十个变量。4. 客户端连接与通信测试4.1 用UaExpert连接本机ServerServer配置好了接下来就该验证能不能正常通信。我用得最多的是UaExpert操作流程很简单但有些小细节注意不到会走弯路。打开UaExpert后左侧Server列表空白处双击弹出Add Server对话框。这里有一个DropDown箭头点开可以看到当前局域网内自动发现的OPC UA Server列表。如果Prosys和UaExpert在同一台机器上下拉里应该能发现Local Server。选中它双击Server URL会自动填入opc.tcp://localhost:53530/opcua/server。这个自动发现很方便但要依赖mDNS广播有些网络环境禁了mDNS自动发现会失败。失败也没关系手动在Server URL里把localhost换成IP同样能连上。填写完URL不要急着点OK先展开Security Policy和Authentication设置。Security Policy建议先选NoneMessage Security Mode选None方便第一次连通。用户名密码先不填用Anonymous匿名访问。注意你的Prosys Server端也必须允许匿名访问否则这里填了也没用Server会拒绝你。默认配置下匿名是开着的所以第一次连接通常很顺。点击OK后回到主界面选中刚才添加的Server点击右下角的Connect按钮。下面的日志窗口会输出连接过程包括握手、证书交换、创建会话等。如果看到ServerConnectionStatus变成Connected说明连接成功。展开左侧地址空间树找到Objects → Simulation → Demo下的变量右键Add DataNode to Watch丢到数据监视列表就能实时看到数据变化了。4.2 跨机连接时的IP与端口排查本机连通过后很多人开始尝试从另一台电脑连接Server这时候问题才真正出现。最常见的情况是客户端填opc.tcp://服务器IP:53530/opcua/server点击连接等待几秒报超时或连接被拒绝。第一步排除网络不通。在客户端电脑上打开命令行ping 服务器IP如果ping不通先把网络打通再说。注意Windows防火墙默认会拦截外部对53530端口的访问所以即使ip能通端口也可能不通。可以在服务器电脑上用netstat -an | findstr 53530确认Server确实在监听然后在客户端上用telnet 服务器IP 53530测试端口连通性。telnet能通说明网络层没问题问题大概率出在OPC UA自身配置。第二步检查Server监听地址。Prosys默认监听的是所有网卡接口但如果你改了配置只监听了localhost外部肯定连不上。在Server Settings的Endpoints页面确认Endpoint URL中显示的是IP地址或主机名而不是localhost。更稳妥的做法是直接把Endpoint里的localhost替换成这台电脑的局域网IP然后保存、重启Server。第三步安全策略匹配。如果客户端选的Security Policy是Basic256Sha256但Server端点只启用了None连接同样会失败。第一次测试跨机连接建议客户端和服务器的安全策略都设为None排除证书因素干扰。能通了以后再逐步把安全级别调高学习证书信任的配置。4.3 使用浏览器和命令行做快速验证UaExpert功能强大但每次测试都要打开桌面客户端有点重。我平时还会用两个轻量手段快速确认Server是否活着。一个是Prosys自带的Web界面。浏览器打开https://服务器IP:8090能看到Server的状态页面。如果页面能打开说明Server进程是正常的。这个页面上还能看到当前连接的客户端数量、运行时长、版本信息等。对于远程确认服务状态来说很够用。另一个是命令行方式。如果你装过OPC UA的Python库或者dotnet工具可以用脚本快速读几个节点。比如用Python的opcua库写几行代码连接Server、读取Counter变量的值能读到数据就说明一切正常。这种方式尤其在自动化测试和边缘网关调试时好用不需要图形环境。快速验证的思路很重要一旦连接失败要能快速定位问题层级。先用浏览器确认Server进程活着然后用telnet确认端口通着再用UaExpert确认OPC UA协议层是通的最后才去查证书和权限。按这个顺序排查一小时搞不定的问题十分钟就能定位。5. 进阶玩法把OPC UA数据接入外部系统5.1 基于Node-RED实现OPC UA转MQTTProsys把数据模拟出来后总不能一直停留在“看到了”的阶段。实际项目中很常见的一个需求是从OPC UA采集数据然后转成MQTT消息发给云端或物联网平台。这里面Node-RED是最顺手的中间件。Node-RED里有一个node-red-contrib-opcua节点支持连接Server、订阅节点、读写数据。配置方式和UaExpert类似填Server URL、安全策略、认证方式。连上以后在节点里配置要读取的NodeId可以按固定周期读取也可以订阅变化。我经常用的一个流程是这样的OPC UA节点读取数据后接一个RBE节点做重复抑制只有数据变化超过死区才放行再接MQTT节点发布到指定Topic。这里有一个经验不要把OPC UA所有变量全量订阅然后发布那样MQTT的消息量会非常巨大。要用RBE滤掉不变的数据或者设置变化死区比如温度变化超过0.5度才上报。这样既减轻Server压力也减少云端存储费用还能降低网络抖动带来的噪音数据。Node-RED还有个好处是调试非常直观。每个节点都能看到输入输出数据调试窗口会实时打印消息内容。我第一次调通OPC UA转MQTT的时候就是在Node-RED里看到MQTT消息被云平台正确接收那种成就感很强而且整个过程也就半小时。5.2 把数据落到SQL Server或MySQL如果不想上云很多企业希望数据入数据库存历史。常见做法是用OPC UA订阅数据变化然后每条变化写入数据库表。这里有两种实现路径。一种是通过Node-RED的MySQL/SQL Server节点把MQTT或直接OPC UA读取到的数据插入数据库。好处是流程可视化逻辑简单。需要注意的一点是高频率写入数据库会带来性能问题。100Hz的数据订阅频率如果每条写一条日志一小时后就是36万条记录普通机械硬盘根本扛不住。所以入库前要做聚合比如每分钟取一次均值、最大值、最小值再写库。这个聚合逻辑可以放在Node-RED里加一个定时器节点或者用数据库的存储过程定时汇总。另一种是使用支持OPC UA直接写入的时序数据库比如InfluxDB的OPC UA插件还有PI System等工业实时数据库。如果只是学习测试不用上这么重的东西SQL Server或者MySQL足够。但要注意数据库字段设计要预留采集时间戳这是OPC UA数据里自带的时间信息属于现场实际时间对数据分析很有价值。我在项目里通常还会加一张原始数据表和一张统计表。原始表存最近一天的明细数据负责趋势分析统计表存聚合后的分钟、小时数据负责报表展示。这样既能保证查询速度又不丢原始数据。这个设计思路和用什么GTD无关完全是数据库的基本功但在OPC UA对接时特别适用。5.3 Qt、C#与OPC UA的常见集成方式如果你的诉求不是做中间件而是直接在自己写的软件里连接OPC UA也有两种主流路线。C#环境下首选OPCFoundation的UA-.NETStandard库它是官方开源实现功能完整支持从OPC UA转到其它协议的全部核心能力。使用方式很直接安装NuGet包创建Session调用ReadValueAsync或订阅。如果是WinForm或WPF项目建议把OPC UA操作封装成单独的服务类避免UI线程阻塞。还有一个坑是证书逻辑UA-.NETStandard默认会校验服务器证书测试的时候可以在ApplicationConfiguration里把证书校验设为Accept all省得证书信任配置搞半天。Qt环境下可以用open62541这个C语言库它同时提供C和C接口编译后作为静态库或动态库链接到Qt项目里。open62541的API设计比较底层需要自己管理内存对新手不太友好但胜在轻量、可控性强在嵌入式设备的Qt应用里很常见。如果只是Windows桌面平台的快速开发也可以选QOpcUaClient这个Qt官方扩展模块不过它的文档相对少遇到问题基本靠看源码。不管用哪种语言建议先从最简单的连接和读取一个节点开始跑通后再封装成通用类。我见过太多同事上来就想写一个SDK级的封装结果一周过去了还在处理连接异常。先把单个点到点连接跑通你就知道后面要封装哪些东西了。6. 常见问题与排查技巧实录6.1 连接失败日志分析从BadTimeout到BadSecurityChecksFailed我花了很大篇幅说协议和概念现在讲点最实用的连接失败时那些Error日志到底在说什么。第一个高频错误是BadTimeout。客户端点击连接后等了几秒日志里冒出Timeout expired。这个错误通常不是OPC UA协议问题而是网络层不通。排查方法就是我前面说的先ping再telnet。如果你发现telnet 53030端口都不通那先解决防火墙问题。Windows防火墙里要允许TCP入站53530端口或者你在安装Prosys的时候选择自动添加防火墙规则。如果装的时候跳过了可以在控制面板手动添加规则这个很多人不知道。第二个高频错误是BadSecurityChecksFailed。这个和证书有关。客户端连不上Server时如果看到这个码说明证书验证环节失败了。解决办法是在Server端的PKI目录里把客户端的证书从Rejected目录移到Trusted目录。在UaExpert第一次连接时它会弹出提示询问是否信任Server证书如果你点了TrustServer也要信任客户端证书两边都信任后才算握手完成。最省事的方式是测试时将两端的自动接受证书选项打开但生产环境千万别这么干安全漏洞非常大。第三个高频错误是BadUserAccessDenied这个在配置了用户名密码后特别容易出现。本质上是用户名密码不正确或者该用户还没有被授予访问Server的权限。Prosys在Users页面管理用户添加用户时可以指定角色比如Admin或者Operator。如果用户建好了但权限不足客户端能连上但访问不了节点报的就是这个错。解决办法是给用户勾选足够的权限。6.2 证书管理与防火墙配置注意事项证书管理是整个OPC UA配置中概念最绕、但实际处理起来最机械的部分。你需要理解两件事就够了第一OPC UA通信双方都持有一张证书第二对方是否可信由本地证书管理器决定。Prosys在Windows下把证书存放在两个位置自己的私钥和证书在%ProgramData%\Prosys OPC UA Server\PKI\own别人的证书存放在PKI\trusted和PKI\rejected下。客户端第一次连接时Server会检测到未知客户端证书自动把它放到Rejected目录里。你需要手动把这份证书剪切到Trusted目录然后重启Server客户端才能正常通信。这个过程听起来麻烦但其实已经比老版本智能多了。早期版本还要用命令行工具生成证书新版本安装时会自动生成一个自签名的本地证书有效期默认好几年。需要注意证书过期问题有次现场部署的Server因为安装时生成的证书过期了全线客户端突然连不上。排查了很久最后发现证书有效期到了重新生成证书后问题解决。所以生产环境一定要在日历上标记证书到期时间。防火墙配置方面除了放行53530和8090端口外如果你启用了证书自动发现功能还需要开放mDNS使用的5353端口。这个端口容易被忽略但mDNS不通的话UaExpert的自动发现列表就是空的。手动输入URL可以绕过这个问题但很多新手不知道会误以为Server没启动。6.3 高频问题速查表最后我把这几年遇到的高频问题做成了一个速查表按问题现象、可能原因、排查顺序排列。问题现象可能原因处理顺序UaExpert自动发现不到ServermDNS被禁用或网络隔离手动输入opc.tcp://IP:53530/opcua/server不要依赖自动发现连接超时BadTimeout防火墙未放行53530端口先ipconfig确认IP再ping、telnet最后检查Windows防火墙连接报BadSecurityChecksFailed证书不被信任将客户端证书从Rejected移到Trusted目录重启Server连接成功但看不到数据客户端误连其它Server 或 地址空间命名空间选择错误检查Endpoint URL的端口和Server名字段确认命名空间索引能读数据但值一直不变模拟源未配置选中变量配置Simulation Source为Sinsoid或Random修改配置后无法保存工程文件被锁定关闭Server或者以管理员身份运行Prosys连接时提示UserAccessDenied用户名密码或权限不足在Users页面检查用户状态确认角色和权限以上每个问题的详细定位方法在前面章节都有相关说明。如果按这张表排查还没有解决建议看Server的日志文件位置在%ProgramData%\Prosys OPC UA Server\Log目录下。日志里会有更底层的错误信息包括异常堆栈。虽然看日志需要一点点Java基础但大部分时候我们能根据关键错误关键词快速定位方向。6.4 基于实际调试经验的三个避坑心得最后分享三个我自己的实操心得都比较反直觉但都是真实踩坑换来的。第一个心得测试环境千万别把安全策略调到最高。有一段时间为了安全性我把Server配成了必选Basic256Sha256、必选证书验证。结果测试时客户端永远连不上排查了整整一天最后发现是客户端证书更新后没有重新导出到Server的Trusted目录。测试环境的安全级别应该以“能快速连通”为原则正式部署前再统一加固顺序不能反。第二个心得模拟数据源别贪多。Prosys免费版有节点数量限制如果你一次性创建了几百个模拟变量Server启动和响应都会变慢。实际问题中客户端从几百个节点里订阅数据时网络流量和CPU占用会明显升高。我在搭建测试环境时一般只建二十个以内的变量够验证逻辑就行需要多节点压力测试时再单独开一台机器跑。第三个心得工程文件和证书目录一定要定期备份。Prosys的配置都在配置文件里但证书私钥丢失后会非常麻烦。我有一次在虚拟机里重新部署环境发现忘记导出旧证书导致客户端在新环境中握手失败。后来规定所有测试用Server每周备份一次工程文件和PKI目录备份周期已经开始执行了心里踏实很多。这一点和很多软件部署是一样的备份无小事。7. 后话从模拟走向生产环境的迁移思路Prosys OPC UA Server的低门槛让它非常适合学习测试但如果是正式生产项目数据最终还是要接真实的PLC或DCS系统。转换思路其实不难Prosys里设置的点位模型与连接真实PLC时使用的地址空间模型是同一套逻辑区别仅在于数据源从模拟变成了真实采集。从模拟环境迁移到生产环境时最需要花心思的是信息模型的统一。在测试阶段我就建议把设备对象、变量命名、数据类型严格按现场点表规范来建而不是随手命名。这样到了现场只需要把数据源从模拟切换成驱动采集客户端代码几乎不用改。如果测试阶段名字乱取一气到了现场才发现模型不匹配返工成本很高。还有一个很实际的建议在学习阶段就养成用Git管理工程文件的习惯。Prosys的.opcua工程文件是XML格式适合文本对比和版本管理。每次修改配置后提交一次标注变更内容。这个习惯保持一年后回看能清晰看到自己的配置演进过程对排查“什么时候开始连不上的”这类问题帮助非常大。
返回列表