
设备到客户现场后最让我头疼的事不是程序逻辑出Bug而是客户那边上到领导、下到操作员人手一个USB线谁都能连上PLC在线改两下改完还一脸无辜地说“我就看了看”。程序被误改、参数被覆盖、甚至整段工艺逻辑被人调整之后找不到原始版本这种返工成本太高了。汇川AM系列作为Codesys内核的中型PLC后台安全管理与用户权限这块功能其实很成熟但很多工程师只把它当成“设个密码防下载”用得很浅没有把它的真正价值发挥出来。这篇文章我根据自己的实际项目经验把汇川AM系列含AM400、AM600系列编程环境InoProShop的后台安全管理和用户权限设置的完整思路、具体配置步骤、以及我在现场踩过的坑一次性讲清楚。无论你是设备厂家的调试工程师、做OEM设备交付的电气设计还是要给客户提供上位机访问接口的项目负责人这篇内容都能帮你少走弯路。1. 汇川AM系列后台安全管理到底管的是什么1.1 先搞清楚“后台”的范围很多人一听“后台安全管理”第一反应是“给PLC设个密码”。这个理解太笼统因为AM系列的安全管理实际上覆盖了三个完全不同的层面第一层是工程文件保护。InoProShop工程文件.amsproj之类本身可以被加密别人拿到你的工程文档没有密码就打不开源码不会泄露。这是静态层面的防护。第二层是PLC在线访问管理。PLC程序下载到控制器之后任何人拿InoProShop通过网线连上PLC都需要过用户认证这一关。没有登录或者权限不足的人无法在线监视、强制变量、下载程序甚至看不到POU内部代码。这是动态运行时的防护也是后台安全管理的核心。第三层是数据通信访问控制。AM系列做MODBUS TCP Server、做OPC UA、或者通过上位机直连时外部节点能不能读写数据、能读写哪些数据也需要纳入安全考虑。我见过不少工程师把这三件事混在一起只设了一个下载密码就觉得万事大吉。结果客户确实没法下载了但上位机、HMI、触摸屏那条链路完全裸奔或者操作员通过在线监视窗口强制了一个内部变量整个设备停摆。真正的后台安全管理应该把这三个层面都管起来。1.2 为什么AM系列的管理方式和老式PLC不一样汇川AM系列用的是Codesys内核编程软件是InoProShop。这套系统的用户管理的设计思路和以前那种“一个密码管全部”的老式PLC完全不同。Codesys体系下的用户权限管理是按“角色 权限集合”来组织的权限粒度精细到了每一个动作能不能下载、能不能启动、能不能强制变量、能不能修改程序、甚至能不能访问某一个具体的功能块。这种设计天然适合设备和整线项目。交付给终端客户后操作员只需要“监视”权限看看当前状态、看报警维护人员可以有“操作”权限能强制、能启停你们厂家自己保留“下载和修改”权限用来升级程序。一套权限体系覆盖全角色不需要整天改密码也不需要因为有人现在要改工艺就把全套密码交出来。1.3 一套权限体系其实要管三个入口AM系列一个比较容易被忽略的地方是用户认证的入口不只有InoProShop这一个。实际上有三类入口都需要纳入权限设计第一是编程软件入口。也就是刚才说的InoProShop在线联机最核心的入口。第二是Web可视化入口。AM系列本身支持WebVisu如果你的工程里启用了Web可视化别人通过浏览器访问PLC的IP地址就能看到画面那这个入口必须有对应的认证不能裸奔。第三是外部通信入口。Modbus TCP Server、OPC UA Server之类的通信配置不会自动继承PLC的用户管理需要单独做访问控制。这一点后文详述。所以我们做安全方案时第一步不是急着勾权限而是先盘点这台设备对外暴露了哪些访问入口每个入口对应谁在用想清楚了后面的配置才有意义。2. 用户角色与权限项的核心解析2.1 用户管理的三层结构用户、角色、权限InoProShopAM系列里的用户管理核心结构很好理解你先定义几个角色把权限打成包分配给角色然后再建用户把用户放进角色里。一个人可以属于多个角色权限效果是叠加的。实际项目中我习惯建三个角色管理员拥有全部权限包括在线下载、启动停止、强制变量、修改工程配置。这个角色只给厂家自己的调试人员用。工程师可以联机监视、强制变量、在线修改参数、启动停止但不能下载新程序。这个角色给到客户的设备工程师或维护主管。操作员只允许联机监视和在规定监控列表里看变量不能强制、不能写入、不能下载。这个角色给现场操作班组。这套划分最核心的思路就是“最小够用”每一个人拥有完成自己工作所必需的最少权限。操作员不需要强制变量就坚决不给客户需要日常调整PID参数的话工程师角色就包括在线写值但下载仍然锁死。这样既不耽误生产又最大程度保护程序完整性。2.2 权限项的取舍看这几个关键开关具体在用户权限配置界面会看到一堆勾选项这里重点说几个和现场安全直接相关的下载权限。如果勾掉这个角色在任何情况下都无法下载程序到PLC包括应用、库、参数配置全都不能写。这是设备交付后需要锁死的核心权限。启动/停止权限。如果给操作员这个权限操作员在联机调试窗口就能直接点停止整个设备就停了。一般来说操作员不应该有这个权限运行时启停应该是上位机或者旋钮开关来做而不是通过编程软件。写权限在线写值。这个权限是在线修改和强制变量的总开关。没有它在线监视窗口里只能看不能改。给客户的维护人员开这个权限时要慎重因为写值意味着可能绕过你在触摸屏上做的所有安全限制。可访问性。这个权限控制的是用户能否看到你的POU内部实现。如果把它关掉客户在线登录后只能看到工程结构、变量声明、PLC配置但看不到梯形图/结构化文本代码的具体内容。对设备厂家来说这是保护源代码的最后一道防线。调试权限。包含断点、单步、暂停任务等。这个权限要么不给客户要么只给工程师。实际项目中我一般不推荐给客户开放调试权限——客户一旦用了断点在线调试状态下PLC扫描会暂停设备直接停机容易引发安全事故。2.3 密码策略与用户密码管理AM系列用户管理中每个用户都有自己的密码。InoProShop的密码存在系统用户库中密码复杂度默认不强要求但我强烈建议你的项目交付规范里规定所有PLC用户密码至少12位以上包含字母、数字、特殊字符。这里有个非常关键却常常被忽视的问题密码管理要纳入设备交付档案。我见过太多项目PLC里的管理员账号密码是几年前的临时密码当事人离职后没人知道结果设备出问题需要厂家远程指导时客户干瞪眼只能全套初始化重来工艺参数全部丢失。更危险的是有些人图方便给现场所有PLC统一用同一个密码一旦泄露整个产线等于裸奔。设备发货前项目负责人必须将管理员密码存到公司设备档案库中注明日期和设置人并设置定期更换提醒。3. 实操在InoProShop中配置用户权限的完整流程3.1 第一步在工程属性中启用用户管理打开InoProShop加载AM系列工程后在左侧工程树中找到“工程”节点右键打开属性界面。找到“用户管理”选项卡勾选“启用用户管理”。这一步做完工程左下角联机区域会出现一个登录窗口。此时你可以开始配置用户和角色了。注意启用用户管理这个动作本身不需要PLC在线它只是修改了工程文件属性。但真正生效需要重新编译并下载到PLC。3.2 第二步创建角色并分配权限进入用户管理界面先切到“角色管理”标签页点击“新建角色”依次创建管理员、工程师、操作员三个角色。创建后右侧会列出权限配置表把系统支持的权限项以复选框列出来按前面说的方法分别勾选。这里我建议项目里做一个权限分配矩阵直接贴在工程说明文件里。下面这张表可以参考权限项管理员工程师客户操作员联机读取允许允许允许联机写入允许允许禁止强制变量允许允许禁止启动/停止允许允许禁止下载应用允许禁止禁止下载配置允许禁止禁止调试模式允许禁止禁止修改密码允许允许仅本人允许仅本人权限表和实际界面里的名字可能有些出入但核心开关就这几个。表格里的分配思路是“客户的工程师可以在线调值但不能动程序操作员只监不控”。如果客户连调值的需求都没有那工程师这一列的写权限和强制权限也可以关掉具体看项目交付约定。3.3 第三步创建用户并分配角色切到“用户管理”标签页新建用户输入用户名和密码然后把用户挂到对应角色下。一个用户可以被分配多个角色但要小心多角色会取权限并集。比如某人既是操作员又是工程师那他的权限就是两者叠加操作员身份里“不能强制”的限制就失效了。实际使用时一人一角色最清晰。另外AM系列支持在工程登录界面直接显示用户名列表但默认是通过手工输入用户名和密码登录不推荐用下拉列表选用户的方式——用户列表形同虚设任何人都能猜到有哪些账号。登录窗口设置中有“自动选择上次登录用户”之类的选项建议关闭避免上一人退出后账号还停留在输入框里。3.4 第四步设置POU级访问权限这是AM系列/Codesys比较有特色的一层防护可以针对某个具体的功能块FB或程序PRG单独设置访问权限。在工程树中选中你要保护的功能块右键属性里找到访问权限配置可以把某个FB设置为“仅特定角色可见/可编辑”。比如你把工艺核心的“张力算法”封装成一个FB只允许管理员角色读取普通工程师登录后连这个FB的存在都看不到。这相当于在变量监视层面之上再加了一道逻辑隔离。实际使用中对客户开放联机监视权限时把核心工艺FB全部设成管理员专属能有效防止技术泄密。注意用户是否能查看某个POU除了受POU级权限控制还受前面说的用户权限项里“可访问性”影响两者是叠加的关系配置的时候要一起检查。3.5 第五步编译下载并验证所有用户和角色配置完成后重新编译工程然后登录管理员账号将工程下载到PLC。下载完成后把PLC重新上电一次然后用不同账号分别测试一遍用操作员账号登录看能不能在线连、能不能看到内部变量表、能不能强制值用工程师账号测试能不能下载理论上应该被拒绝最后切回管理员账号正常操作。这一步务必在出厂前做完整。我吃过亏——现场拿着操作员账号想连PLC看看状态发现权限配置没生效再回头重新编译下载设备正在产线上跑不能随便停弄得非常被动。权限验证不是“顺手测一下”而是出厂检验流程里的一环必须有书面检查记录。3.6 补充OPC UA、WebVisu、外部通信的访问控制AM系列支持OPC UA Server如果项目里开启了外部上位机系统比如MES、SCADA会通过OPC UA来访问PLC数据。OPC UA的账户体系和PLC用户管理是两套系统需要另外配置。比如在OPC UA配置界面里开启匿名访问禁用、添加客户端认证设置可访问的地址空间范围。这里的原则是“最小开放”MES只需要读哪些数据就只开放哪些节点不要图省事把整个PLC地址空间全暴露出去。WebVisu类似。如果启用了Web可视化一定要在WebVisu设置里强制登录并把默认账户密码改掉绝不能让浏览器访问到登录页却绕过认证。我在测试时遇到过WebVisu设置里勾了“无认证”选项结果手机浏览器输IP直接就看到设备画面这是一个非常危险的安全漏洞。MODBUS TCP Server同理。AM系列做Modbus Server时功能码05、06、0F、10都是写操作外部任何客户端连上都能写。AM的Modbus Server本身不带高级权限认证所以软件层唯一的控制手段就是通信映射表——你暴露哪些寄存器给外部写。设备交付时光靠Modbus这一层是没法区分“谁在写”的只能靠网络隔离、防火墙限制IP访问、或者在上位机侧加权限认证。这块很多人没意识到以为写了Server功能就万事大吉实际很多设备被误写都是从这里进来的。4. 常见问题与排查技巧实录4.1 客户反映“工程师账号无法下载”但我们需要远程协助这个问题很典型客户自己买的设备想更新程序但发现工程里只分配了工程师角色没有下载权限。有时候是客户忘了找你们要管理员权限有时候是现场另一批设备工程师换人了原来的管理员账号密码没交接。排查思路是先确认是“没有权限”还是“密码不对”。密码不对登录时会直接提示用户名密码错误权限不足登录成功但右键下载菜单是灰的或点击下载后弹“权限不足”提示。两者在系统日志里都有记录。如果是权限确实不足要么通过管理员账号添加新用户要么在安全策略上做一个“临时权限”角色只给客户开放一次性的下载权限用完后立即删除用户或改密。不推荐直接把管理员密码交给客户后续账号不好管理。4.2 忘记管理员密码PLC还能恢复吗如果你把PLC里的密码忘了而且工程文件里也没有留存备份InoProShop和AM系列的机制是保护数据优先的不会提供一套“绕过认证”的官方后门。能做的就是重置PLC——把控制器的用户管理区清空恢复出厂状态。这块操作在手册里有描述一般是通过InoProShop的“PLC复位/恢复出厂设置”功能或者拨码来实现。但代价非常大程序有可能被清除或者至少用户库被清掉而程序还在你必须重新登录并下载工程才能恢复完整控制。如果PLC里还存了掉电保持变量比如工艺配方、累计产量这些数据也可能丢失对产线来说就是一个生产事故。所以密码备份的重要性不管怎么强调都不过分。我的习惯是每个项目建一个独立的“设备信息-密码”记录文件里面包括PLC的IP、MAC、工程名、版本号、所有用户账号和密码、设置日期这个文件和工程归档放在一起作为项目交付资料的一部分。4.3 切换工程后用户列表丢失AM系列工程用InoProShop打开时如果提示“当前用户库与工程不匹配”或“未找到用户列表”通常是你用不同版本的InoProShop软件打开同一个工程。Codesys内核的软件不同版本之间用户管理信息不保证兼容尤其大版本升级后用户库文件可能无法识别。排查时先确认本机装了几个InoProShop版本是不是打开了旧版本工程再用原版本导出用户库文件在新版本里重新导入或者干脆重新创建用户和角色并重新下装。这里有个实际经验工程备份时把用户库文件一般在工程配置目录里的UserManagement相关文件一起复制出来命名成“用户库-版本-日期.bak”单独存一份能省掉很多麻烦。4.4 权限设置生效了但HMI触摸屏显示异常有两次客户反馈AM系列和触摸屏之间的通讯变得“时有时无”最后查出来都是权限设置惹的祸。一次是触摸屏程序里用的HMI账号在AM的用户管理里被改成了只能监视模式而屏上的操作需要写权限所以一操作就被拒绝。另一次是工程里启用了“登录状态下才允许外部通信”的选项触摸屏一直没有登录PLC导致通信数据被PLC侧过滤。排查这类问题去PLC的诊断缓存区看登录日志最直观——被拒绝的写请求、通信异常记录都会留下线索。同时在InoProShop里用上位机模拟一遍触摸屏的读写操作看是哪个权限点卡住了然后单独给HMI通道加一个专用账号权限和触摸屏功能严格匹配不要图省事让HMI用管理员账号登录。HMI用管理员权限非常危险一旦HMI被误操作或者通信被中间人篡改等同于把PLC后台拱手让人。4.5 安全提示不要为了省事在同一个账号下搞“万能权限”最后说一个我见到最多的习惯性问题。不少工程师为了方便现场调试自己用的一个账号开放了所有权限同时这个账号密码写得特别简单比如“admin123”。设备交付后也不改结果客户内部任何人知道这个密码都能用你的账号对PLC为所欲为。更危险的做法是把“下载”权限和“联机操作”权限都放在同一个账号下自己平时联机运行也用这个号一旦现场误操作点了一个“下载”按钮整个程序就被覆盖了。我做项目时自己的调试账号是分两个的一个是全权限的管理员账号只在明确需要下载程序时使用另一个是日常联机调试账号权限只有读写变量和启停没有下载权限。这样就算日常操作失误也不会把程序冲掉。这个习惯建议每个做汇川项目的人都养成成本极低收益极高。4.6 权限设置要写入随机器文件很多时候权限配置是项目结束前最后一刻才补上的这会导致配置不严谨、测试不充分。我的建议是把用户权限设计挪到项目阶段去机器工艺调试完成后、出厂前最后一周专门留出半天做权限配置、联机测试、账号交接。把权限矩阵、账号信息表、PLC登录注意事项写进随机器文件发给客户设备部并抄送客户IT负责人。不要等设备都到客户现场了才补权限现场的每一个操作都可能有产线风险你根本没法从容测试。写在最后的一点体会使用AM系列做设备交付这几年最大的感受是后台安全管理和用户权限不是“限制客户”的手段反而是让项目交付更顺畅的保障。适当的权限隔离让操作员放心看数据、让维护工程师安心调参数、让厂家自己安心做版本迭代每个角色的使用范围清晰明确出问题也能准确定位责任边界。客户一开始可能觉得“多了一道登录多了一步操作”但设备长期运行后都会认可这套机制的价值。再分享一个小技巧AM系列的权限配置不是“一劳永逸”的设备运行中如果需要临时给客户开放更高权限比如配合他们做改造验证用完后记得在InoProShop的用户管理里删除这个临时账号同时更新项目归档里的权限矩阵表。安全管理的本质就是闭环配置、测试、交接、回收每个环节都做到位设备生命周期内的风险才会真正可控。