前几天一个做非标自动化的朋友打电话过来,语气挺急。他接手的一台调试机上,CODESYS 的仿真设备环境一登录就弹账号密码框,他翻遍手机备忘录也找不回当初设的那一串字符,程序卡在这一步下不去,后面的联调全停。这类事我这些年碰过不止一次——它本身不难,麻烦的是它拦在你要干活的那一瞬间,而你根本不知道该从哪儿下手。
我先把结论摆在这:CODESYS 里大家口头说的"仿真设备环境",其实是两类完全不同的东西,登录机制差得很远。一类是 IDE 自己带的内置仿真,另一类是跑在 Windows 上、以独立进程存在的软 PLC(典型代表就是 Control Win V3 系列)。前者几乎不会向你索要账号密码,后者才是"忘记账号和密码"的高发地带。搞清楚你正在登哪一个,问题就已经解决一半。
下面我按"先分清对象 → 再看谁在拦你 → 分路径恢复 → 排掉非密码类故障 → 建立预防习惯"的顺序,把这套流程完整走一遍。整套操作都建立在一个前提上:这套仿真环境装在你自己的调试机上,属于你或你所在团队的项目。如果它是公司统一管控的设备,正确做法是找 IT 或设备管理员走内部流程,而不是自己硬掰。
1. 先分清你手里的是哪一类仿真环境
1.1 集成仿真:严格来说不存在"账号密码"这件事
在 CODESYS 菜单里点Online → Simulation Mode(中文界面叫"在线 → 仿真模式"),再执行 Login,此时程序是跑在 IDE 自己的进程里的,和你电脑上装没装软 PLC 完全无关。这个模式下没有设备用户管理,也就没有账号密码的概念。
很多人搞混的点在于:他确实点了仿真模式,也 Login 成功了,但后来某次打开了"设备"下拉框,选到了本机那台 Control Win V3 上,于是弹窗出现了。判断标准很简单:登录窗口左上角的设备名是CODESYS Control Win V3或CODESYS Control Win V3 x64,那就是软 PLC,不是集成仿真;如果设备名显示成Simulation或直接没有设备名,那才是纯集成仿真。
所以,如果你看到弹窗却确信自己点的是仿真模式,第一件事不是去回忆密码,而是回到Communication Settings(通信设置)里看一眼当前选中的网关下面挂着几个设备。
1.2 软 PLC 仿真(Control Win V3 系列):密码藏在这儿
Control Win V3 系列在 Windows 上是以一个常驻进程的形式存在的,任务栏右下角会有一个小图标。它本质上是一台"装在你电脑里的 PLC",所以它继承了一套和真实控制器一样的**设备用户管理(Device User Management)**机制。
这套机制里常见几个概念,容易让人犯迷糊:
- 设备用户 / 用户组:
Owner、Administrator、Developer、Service、WebUser这类名字,权限各有不同。程序下载、强制变量、改配置分别需要不同权限。 - 网关(Gateway):IDE 和运行时之间的中介,默认端口 1217。它本身在部分版本里也可以单独设凭据。
- Web 管理界面:软 PLC 自带 WebServer,默认监听 8080 端口,浏览器打开就能看到一套和 IDE 里独立的用户管理入口。
关键点:IDE 里那套"用户与组"、Web 界面里那套用户、以及某些版本里网关自己的认证,是三套东西,密码不互通。你记得的密码可能是 Web 界面的,但你此刻卡在 IDE 下载这一步,登的是设备用户。
1.3 一张对照表快速定位
| 对比项 | IDE 内置仿真 | 软 PLC 仿真(Control Win V3 系列) |
|---|---|---|
| 运行位置 | IDE 进程内 | 独立 Windows 服务 / 进程 |
| 是否需要账号密码 | 基本不需要 | 通常需要 |
| 设备名显示 | Simulation | CODESYS Control Win V3等 |
| 数据落盘位置 | 无独立落盘 | 运行目录 + ProgramData |
| 忘记密码的影响 | 几乎没有 | 无法下载、无法联机、无法强制变量 |
| 恢复难度 | 低(多为配置问题) | 中(需要重置运行时) |
把这张表对照一遍,你基本就能确定自己站在哪一边了。
2. 登录框弹出的那一刻,到底是谁在拦你
2.1 三层身份,别把锅扣错了
我在现场排查这类问题时,习惯先问一句:"你确定弹的是哪个登录框?"因为实际存在至少三层可能的认证:
- 设备用户管理认证——最常见,登录软 PLC 时弹的框,标题里通常带 Device 或 Users。
- Web 界面认证——你在浏览器里打开 8080 端口时弹的,跟下载程序无关。
- 项目加密 / 工程保护——这是 IDE 打开工程时弹的,跟设备一点关系没有。
有一次同事一口咬定"设备密码丢了",我过去一看,是工程文件被别人加了工程保护密码,跟设备用户管理八竿子打不着。先把弹窗来源认准,能省下大半天时间。
2.2 用户管理数据落在磁盘的哪个角落
软 PLC 运行时的配置有两处主要位置,值得先记住:
- 程序安装目录,通常在
C:\Program Files (x86)\CODESYS\下面以运行时名称命名的文件夹里。 - 运行时数据目录,通常在
%ProgramData%\CODESYS\CODESYSControlWinV3\(或对应 x64 版本目录)下,核心配置文件叫CODESYSControl.cfg。
CODESYSControl.cfg是典型的 INI 风格配置文件,每个组件一个节:
[ComponentName] Key=Value用户管理相关的持久化数据也在这一带。具体文件名不同 SP 版本会有差异,一般是带User、UserMgr、Users字样的配置文件或数据文件。你要做的是先整体备份这个目录,再去定位——备份这一步千万别省,删错了文件会导致运行时起不来,那时候要处理的问题就比"忘记密码"大得多。
2.3 为什么"我明明没设过密码"也会被拦
这是问得最多的问题。真实原因通常有这么几种:
- 项目里随应用一起下发了用户管理配置。很多模板工程、别人给的例程里,设备用户管理是激活状态并带着一组用户定义,你一下载,密码就跟着进去了。
- 运行时版本升级后默认策略变了。较新的 SP 版本对用户管理更严格,装完就启用,不再默认放行。
- 有人改过而你不知道。调试机上多人轮流用,上一个人为了安全改了密码没留记录,这是最现实的场景。
- Windows 账户名被套用了。部分集成方式下,运行时会尝试用当前 Windows 账户做映射,导致"看起来没设过密码却进不去"。
搞清这四条,你就不会陷在"我明明记得没设密码"的死循环里,而是直接进入恢复流程。
3. 软 PLC 仿真环境忘记密码:从轻到重的四条恢复路径
3.1 第一步永远是先试出厂默认凭据
别急着删东西。出厂默认凭据因版本和厂商而异:有的版本初始密码为空,有的版本把用户名本身当默认密码,还有一些 OEM 定制版本会在文档里给出固定的初始账号。
值得挨个试的组合大致是这几类:
- 用户名
Owner,密码留空; - 用户名
Owner,密码同用户名; - 用户名
Administrator,密码同用户名或留空; - 用户名
WebUser/Service,配合留空密码。
试之前先看一眼你装的运行时版本号,去对应的版本说明里确认初始凭据策略,比盲试十次都快。另外注意一次尝试失败后不要连续猛点,有些版本会记录失败次数并短暂锁定。
3.2 第二步:在托盘里把运行时退回出厂状态
任务栏右下角那个软 PLC 图标,右键展开是有一套管理菜单的。这里能做的最有价值的一件事,是先停止运行时,再让它以干净状态重新启动。有些情况下运行时的用户管理数据只是处于异常状态(比如上一次没正常退出导致的锁文件残留),重启一次就恢复正常登录了。
操作顺序建议是这样的:
- 右键托盘图标,选择停止 PLC / Stop PLC。
- 确认进程确实退出了(任务管理器里看不到对应进程)。
- 重新启动运行时。
- 回 IDE 里刷新网关设备列表,再尝试登录。
我在现场用这一招解决过好几次"密码明明是对的却登不上"的问题——本质上是运行时状态不干净,不是密码错了。所以这一步别跳过。
3.3 第三步:清理用户管理数据文件
如果重启无效,且你能确认这套环境完全属于自己,就可以考虑重置用户管理数据。操作前把整个%ProgramData%\CODESYS\下对应的运行时目录完整复制一份出来,这是底线。
流程是:
1. 停止软 PLC 运行时(托盘图标 → Stop PLC) 2. 备份 %ProgramData%\CODESYS\CODESYSControlWinV3\ 整个目录 3. 在该目录及程序安装目录中,定位用户管理相关的数据/配置文件 4. 将定位到的用户管理文件移出(不要直接删除,移到备份目录里) 5. 重启运行时 6. 观察是否回到出厂默认用户状态这里要强调一句:不同版本的用户管理文件命名和存放位置不一样,我没有办法给你一个"删这个文件名就完事"的通用答案。你需要做的是先在目录里按User关键字搜索,看清单个文件的用途,再决定动不动它。盲目删除整目录里不认识的文件,大概率会让运行时起不来。
还有一个更稳妥的替代思路:如果 IDE 里能看到设备的"用户与组"配置页(一般在设备树里选中设备后右侧的编辑器里,不同 SP 版本位置略有差别,但名字里基本都带 User),并且当前还能以某种方式连上设备,那么直接在里面把用户列表重新下发一次,比在磁盘上动刀干净得多。
3.4 第四步:修复安装或重装运行时
前面几步都不见效,就只剩重装这条路。修复安装(Repair)优先于彻底卸载,因为修复会保留大部分配置,只重建程序文件;彻底卸载才会连配置一起清掉。
顺序是:
- 控制面板里找到 CODESYS Control Win V3 对应的条目,先执行"修复"。
- 修复后重启系统,再试登录。
- 仍不行,再执行卸载,手动清掉
%ProgramData%\CODESYS\下对应目录(已备份的前提下),然后重新安装。 - 重装完成后,第一件事是立刻设置一组新密码并记录下来。
这套下来,仿真环境一定会回到可登录状态,代价是之前设备里下载的应用和部分配置会丢,需要重新下载工程。所以重装之前,务必确认工程源文件还在手边。
3.5 恢复之后的复验流程
重新能登录之后,别急着关掉窗口去干活。我习惯做三步复验:
- 用新账号登录一次,确认权限足够下载工程;
- 完整下载一次应用并进入运行状态,确认没有别的坑;
- 顺手把网关下的设备列表刷新一遍,确认没有异常设备残留。
这三步花不了五分钟,但能避免你在真正开始调试时才发现"能登录但没权限"的尴尬。
4. 内置仿真登录不上:八成不是密码问题
4.1 网关没起来 / 网关被防火墙拦
集成仿真虽然不跑在独立设备上,但它依然要通过 CODESYS Gateway 和 IDE 通信。网关服务没起来,表现就是"登录转圈、超时、或者干脆弹一个看不懂的认证框"。
排查顺序:
- 看系统服务里 CODESYS Gateway 相关服务是不是处于运行状态;
- 看托盘里是不是有网关图标,没图标多半是没起来;
- 检查 Windows 防火墙有没有把网关的通信端口拦掉,默认端口是 1217;
- 公司电脑上装了安全软件的话,同样要放行。
**这一层是纯环境问题,和密码没有半点关系。**很多新手在这里折腾一整天,最后发现只是网关服务被禁用了。
4.2 仿真模式没勾选,登录的其实是真设备
这是新手最容易踩的坑:Online 菜单里的 Simulation Mode 是个开关,不是一次性动作。你以为自己开了仿真,其实它早就被上一次操作关掉了,此时你 Login 的目标就是通信设置里选中的那台设备。
判断方法很直观:把Communication Settings打开,看当前激活的设备路径。如果路径指向的是本机 IP 上的软 PLC,那就说明你根本没进仿真模式。重新勾选 Simulation Mode,再 Login,弹窗会立刻消失。
4.3 端口占用与残留进程
仿真反复开关之后,偶尔会出现端口被占或者进程残留的情况,表现是"登录时好时坏"。处理办法很土但有效:
- 关掉 IDE,全部退出;
- 任务管理器里把残留的 CODESYS 相关进程全部结束;
- 重新打开 IDE,等网关图标稳定出现后再登录。
另外,如果你同时开着两个版本的 CODESYS,网关端口冲突是常见现象。同一时间只开一个版本,能规避掉一大批玄学问题。
5. 让"忘记密码"不再发生:环境台账与交接习惯
5.1 给每套仿真环境建一张"环境卡片"
这是我从一位老工程师那儿学来的习惯,成本极低,收益极高。做法就是给每套调试环境建一个纯文本小卡片,内容固定几栏:
| 栏目 | 填写内容 |
|---|---|
| 环境名称 | 例如 调试机A-非标线体 |
| 运行时类型与版本 | Control Win V3 x64, SP 版本号 |
| 设备用户名 | 例如 Owner / 自建账号 |
| 初始密码 | 记录在这里(放在受控位置) |
| 修改日期 | 每次改密码都更新 |
| 网关端口 | 默认 1217,改动则记录 |
| Web 管理端口 | 默认 8080,改动则记录 |
| 备注 | 该环境跑的是哪个项目、哪一版 |
卡片放在哪儿很讲究:不要塞在工程文件里,也不要随手丢在桌面。团队里常见的做法是放在一个受控的共享位置,或者配合密码管理工具保存。重点不是藏得多严,而是保证下一个人接手时能找到。
5.2 项目与设备配置的备份策略
密码可以忘,但配置不该丢。我的做法是在每次环境定型后,导出两样东西:
- 工程归档文件(Project Archive),把整个工程连带依赖一起打包,换台机器也能还原;
- 运行时配置目录的备份,也就是前面提到的
%ProgramData%\CODESYS\下对应目录。
这两份备份放在不同位置,一份在版本管理里,一份在本地盘。真到了要重装的那天,你只需要恢复配置、重新下载工程,十分钟就能回到工作状态,而不用从零重新搭一遍设备树和通信设置。
5.3 团队交接时的三分钟检查
团队里多人共用调试机,是密码丢失的头号原因。我建议交接时固定走一遍这三分钟:
- 双方当面登录一次仿真环境,确认账号密码交接清楚;
- 打开"环境卡片"核对版本、端口、账号是否和实际一致;
- 确认工程归档和配置备份都是最新的。
听起来像形式主义,但我见过太多"上一个人调完就走、下一个人卡在登录框"的场面。三分钟换一整天,这笔账很划算。
再补一个我自己踩过的坑:改完设备密码之后,只改了 IDE 里的用户管理,忘了 Web 界面里那套是独立的。结果过两天从浏览器进去又登不上,白白浪费一上午。改密码这件事,一次就把三处(设备用户、Web 用户、必要时网关)都过一遍,别留半拉子工程。
另外一个经验是,尽量别用"临时密码"这个概念。现场经常有人说"我先随便设一个,回头改",然后就没有回头了。要么当场记录,要么干脆别改。密码这件事上,"临时"是最大的谎言。