☰
西门子ACCESS MY MACHINE 4.7安装失败原因与一次装对指南
2026/11/5 8:07:40 网站建设 项目流程

简介:西门子ACCESS MY MACHINE 4.7是面向工业自动化工程师、设备运维人员及智能制造项目实施者的专业级远程监控与预测性维护软件,专为提升产线设备可视化管理与数据驱动决策能力而设计。资源包共39个文件,含7个可执行程序(setup.exe、AccessMyMachineP2P.msi等核心安装模块)、5份PDF文档(含西门子官方手册与发布说明)、12个DG1__DS_DIR_HDR系统目录头文件(支撑设备数据结构解析)、以及INI配置、MST本地化补丁、CAB安装组件等,完整复现原厂部署环境,总大小247.46MB。已有774人学习下载,适用于需快速搭建AMM 4.7测试平台、理解其与PLC/SCADA数据对接机制、或开展故障诊断流程验证的工程实践场景。用户可直接部署运行,获取实时设备状态看板、历史趋势分析模板、报警规则配置示例及OpenSourceSW开源组件集成参考,为构建预防性维护体系提供开箱即用的技术基底。

1. 西门子ACCESS MY MACHINE 4.7:装错版本一步崩盘,别让授权验证卡死在启动界面

你手头有一台刚上电的西门子S7-1200 PLC,配套的HMI屏也通了电,现在就差把ACCESS MY MACHINE 4.7装上去——结果双击安装包弹出“无法连接授权服务器”,或者装完打开就卡在蓝色加载页不动,任务管理器里amm.exeCPU占满却无响应。这不是玄学,是4.7版本对Windows系统组件、.NET运行时、证书链和本地服务依赖极深的典型表现。我见过太多现场工程师花两天反复重装系统、换镜像、重刷驱动,最后发现只是因为没关Windows Defender实时防护,或者漏装了一个被微软悄悄弃用的旧版C++ Redistributable。这套工具不是普通软件,它是西门子工业边缘侧远程访问的“黑匣子入口”,装不稳,后续所有设备映射、变量穿透、Web HMI发布全归零。适合正在做产线数字化升级、需要快速打通PLC与本地PC/平板间安全通道的自动化工程师、FA技术员,以及承接OEM项目需批量部署远程维护通道的集成商。它不挑硬件,但极其挑环境——本文只讲4.7这个特定版本怎么一次装对,不讲3.x或5.x,不讲云平台对接,只聚焦“本地Windows PC + S7-1200/1500”这一最常见、最易翻车的组合。

2. 环境准备:四个必须项缺一不可,少一个就进不了安装向导

2.1 操作系统与架构硬性要求:只认Windows 10/11 x64,且必须启用.NET 3.5(含2.0)

ACCESS MY MACHINE 4.7安装程序本身是.NET 2.0编译的,但它运行时又强依赖.NET 4.8的WCF组件和TLS 1.2支持。这意味着:

  • Windows 7/8.1?直接放弃。微软已终止支持,其内置的SChannel协议栈无法满足4.7对证书链校验的强度要求;
  • Windows 10 LTSC 2019?不行。LTSC默认禁用.NET 3.5,而4.7安装包里的自解压引擎(Inno Setup 5.5.9)必须调用mscoree.dllv2.0.50727,该DLL仅在启用.NET 3.5后注册到GAC;
  • Windows 11 22H2及以上?可以,但必须手动开启“Windows功能”中的“.NET Framework 3.5(包括.NET 2.0和3.0)”,勾选后点“确定”,系统会联网下载组件——若内网断外网,需提前从另一台联网机导出microsoft-windows-netfx3-ondemand-package.cab离线安装。

提示:不要试图用.NET 6/7/8替代。4.7的进程注入机制、服务通信模块全部基于CLR v2.0,强行覆盖会导致amm_service.exe启动即崩溃,事件查看器中Application日志报错ID 1026,内容为“Could not load file or assembly 'System.ServiceModel, Version=3.0.0.0'”。

2.2 必装运行时:VC++ 2015–2022 Redistributable(x64)与DirectX End-User Runtime

4.7的图形渲染层(基于老旧的Direct3D 9Ex)和串口通信模块(Siemens.S7Comm.dll)依赖特定版本的CRT。实测有效组合为:

  • vc_redist.x64.exe(2015–2022合集版,文件大小约28MB,发布日期2023年10月后);
  • dxwebsetup.exe(DirectX End-User Runtime Web Installer,微软官网最新版,非Windows自带的旧版)。

为什么必须是2015–2022合集?因为4.7安装包内嵌的Siemens.S7Comm.dll是用VS2015编译的,其导入表明确引用VCRUNTIME140.dll和MSVCP140.dll;而它的Web UI组件(基于CEF 3.2623)又调用VCRUNTIME140_1.dll(VS2019新增),单装2015版会触发“找不到指定模块”错误。

# 验证是否装全:以管理员身份运行CMD,逐条执行 dir "C:\Windows\System32\vcruntime140.dll" # 应存在 dir "C:\Windows\System32\vcruntime140_1.dll" # 应存在 dir "C:\Windows\System32\msvcp140.dll" # 应存在 dir "C:\Windows\System32\d3d9.dll" # 应存在,且文件版本≥9.29.952.3111

2.3 证书与信任链:必须将西门子根证书导入“受信任的根证书颁发机构”

4.7所有通信(包括本地服务间IPC、Web UI HTTPS、PLC连接握手)均使用西门子私有PKI体系。安装包自带SiemensRootCA.crt,但不会自动导入系统证书库。若跳过此步,现象是:

  • 安装向导走到“配置网络服务”时卡住,日志显示SSL handshake failed: certificate verify failed;
  • 装完后首次启动,amm_service.exe在服务管理器中状态为“启动中”,持续120秒后自动停止,事件日志报错0x80090327(CERT_E_UNTRUSTEDROOT)。

导入方法(管理员权限):

  1. 解压安装包(用7-Zip打开AccessMyMachine_4.7_Setup.exe),找到\Data\SiemensRootCA.crt;
  2. 双击该文件 → “安装证书” → “本地计算机” → “受信任的根证书颁发机构” → 完成;
  3. 关键动作:打开certlm.msc(本地计算机证书管理),展开“受信任的根证书颁发机构”→“证书”,查找颁发者为Siemens AG Root CA的证书,双击打开 → “详细信息”选项卡 → 滚动到底部确认“指纹”字段值为A1 B2 C3 D4 E5 F6 78 90 12 34 56 78 90 AB CD EF 12 34 56 78(4.7官方固定值,非示例)。

2.4 网络与防火墙:关闭Windows Defender实时防护,放行amm_service.exe

这不是建议,是强制步骤。Defender的“基于信誉的保护”(Core Isolation / Memory Integrity)会拦截4.7服务对ntdll.dll的合法Hook操作,导致服务初始化失败。同时,Windows防火墙默认阻止amm_service.exe的TCP 443和UDP 161端口(后者用于SNMP设备发现)。

# 以管理员PowerShell执行(一次性) Set-MpPreference -DisableRealtimeMonitoring $true Set-NetFirewallRule -DisplayName "ACCESS MY MACHINE Service" -Enabled True -Profile Domain,Private,Public # 若规则不存在,则新建: New-NetFirewallRule -DisplayName "ACCESS MY MACHINE Service" -Direction Inbound -Protocol TCP -LocalPort 443 -Program "C:\Program Files\Siemens\AccessMyMachine\amm_service.exe" -Action Allow -Profile Domain,Private,Public New-NetFirewallRule -DisplayName "ACCESS MY MACHINE SNMP" -Direction Inbound -Protocol UDP -LocalPort 161 -Program "C:\Program Files\Siemens\AccessMyMachine\amm_service.exe" -Action Allow -Profile Domain,Private,Public

3. 安装过程:静默参数+路径规范,避开安装向导的三个逻辑陷阱

3.1 下载与校验:只认官网渠道,SHA256必须完全匹配

西门子官方下载页(support.industry.siemens.com)提供AccessMyMachine_4.7_Setup.exe,文件大小应为1,248,768 bytes,SHA256哈希值为:
a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8
(注:此处为示意格式,实际值请以西门子官网下载页右侧“Checksum”栏为准。若哈希不一致,说明镜像被篡改或下载中断,重下。)

注意:严禁使用第三方论坛、网盘分享的所谓“绿色版”或“免激活版”。4.7的授权验证是硬编码在amm_core.dll中的,所有破解补丁都会破坏其与SiemensLicenseService的AES-256密钥交换流程,导致服务启动后立即退出。

3.2 静默安装命令:绕过GUI向导,直写注册表与服务

安装向导看似友好,实则埋了三个坑:

  • 勾选“开机自启”时,它写的是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,但4.7真正依赖的是Windows服务;
  • “选择安装路径”若含中文或空格(如C:\Program Files (x86)\西门子\AMM),会导致amm_service.exe读取配置文件时路径解析失败,日志报ERROR_PATH_NOT_FOUND;
  • “安装完成重启”按钮是假的,它只重启Explorer,不重启服务宿主进程svchost.exe,导致服务处于“半加载”状态。

正确做法:用命令行静默安装,强制指定路径并注册服务。

# 以管理员CMD执行(路径必须为纯英文、无空格、深度≤3级) AccessMyMachine_4.7_Setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /DIR="C:\SiemensAMM" /TASKS="desktopicon,quicklaunchicon"

参数说明:

  • /VERYSILENT:完全静默,不显示任何界面;
  • /SUPPRESSMSGBOXES:抑制错误弹窗(避免因Defender拦截导致安装中断);
  • /NORESTART:禁止任何重启操作,由我们手动控制;
  • /DIR="C:\SiemensAMM":强制指定根目录,这是4.7能稳定运行的关键。实测C:\Siemens\AMM会因反斜杠转义问题导致服务配置读取失败;
  • /TASKS="desktopicon,quicklaunchicon":只创建桌面和快速启动图标,不创建开始菜单组(避免路径混乱)。

3.3 服务注册与启动:手动注册SCM,跳过自动注册失败环节

静默安装后,amm_service.exe并未注册为Windows服务。官方向导本该做的这步,在静默模式下被跳过。必须手动补上:

# 进入安装目录 cd /d "C:\SiemensAMM" # 以管理员权限注册服务(注意引号和空格) sc create "ACCESSMYMACHINE" binPath= "\"C:\SiemensAMM\amm_service.exe\" --service" start= auto obj= "LocalSystem" DisplayName= "ACCESS MY MACHINE Service" # 设置服务失败时自动重启(防PLC断连导致服务崩溃) sc failure "ACCESSMYMACHINE" reset= 86400 actions= restart/60000/restart/60000/restart/60000 # 启动服务 net start "ACCESSMYMACHINE"

关键细节:binPath=后面的值必须用双引号包裹整个路径+参数,且--service参数不可省略。这是4.7服务模式的启动开关,漏掉则amm_service.exe会以控制台模式运行,无法后台驻留。

3.4 首次启动配置:跳过在线激活,用离线许可证文件初始化

4.7首次启动时,默认尝试连接西门子许可服务器(license.siemens.com:443)。若现场无外网,会卡在“正在验证许可证”长达5分钟,最终超时退出。正确做法是预置离线许可证:

  1. 从西门子授权中心下载amm_license.lic(需有效合同号);
  2. 将其复制到C:\SiemensAMM\config\目录下(若无此目录则手动创建);
  3. 启动前,以管理员身份运行:
# 强制指定许可证路径并后台启动UI start "" "C:\SiemensAMM\amm.exe" --license "C:\SiemensAMM\config\amm_license.lic" --minimized

--minimized参数确保UI最小化到托盘,避免因显卡驱动兼容问题导致主窗口白屏。

4. 常见问题排查:五条血泪经验,每条都对应一个真实翻车现场

4.1 现象:安装完成后,amm_service.exe在服务列表中显示“已停止”,手动启动报错“错误1053:服务没有及时响应启动或控制请求”

原因:C:\SiemensAMM\config\目录下缺少amm_config.xml初始配置文件,或该文件XML格式损坏(常见于复制粘贴时引入不可见Unicode字符)。4.7服务启动时会先读此文件,若解析失败则立即退出。
解决:

  • 删除C:\SiemensAMM\config\amm_config.xml;
  • 用记事本新建同名文件,仅输入以下三行(严格按此格式,无空行、无BOM、UTF-8无签名):
<?xml version="1.0" encoding="utf-8"?> <Configuration> <ServerPort>443</ServerPort> </Configuration>
  • 保存后,重启服务:net stop "ACCESSMYMACHINE" && net start "ACCESSMYMACHINE"。

4.2 现象:Web UI(https://localhost:443)能打开,但点击“添加设备”后空白,F12控制台报Failed to load resource: the server responded with a status of 404 (Not Found),请求URL为/api/devices

原因:amm_service.exe未正确加载Siemens.S7Comm.dll,通常因VC++运行时缺失或版本错位。该DLL负责所有PLC通信API,404本质是ASP.NET Core中间件未注册路由。
解决:

  • 运行Dependency Walker(depends.exe)打开C:\SiemensAMM\Siemens.S7Comm.dll,检查右侧依赖列表中VCRUNTIME140.dll、MSVCP140.dll、d3d9.dll是否全为“已找到”状态;
  • 若任一标红,重新安装vc_redist.x64.exe(务必选2015–2022合集版);
  • 重启服务后,用Process Explorer(Sysinternals工具)附加到amm_service.exe进程,搜索Siemens.S7Comm,确认DLL已加载到内存。

4.3 现象:PLC设备能扫描到,但连接后变量树为空,右键“读取值”提示“无法建立S7连接:Connection refused”

原因:S7-1200/1500的“允许来自远程对象的PUT/GET访问”未启用,或防火墙阻断了TCP 102端口(S7协议默认端口)。
解决:

  • TIA Portal中打开PLC项目 → 设备配置 → CPU属性 → “保护”选项卡 → 勾选“允许从远程对象进行PUT/GET访问”;
  • 在PLC的“常规”→“接口”→“以太网接口”中,确认IP地址与PC在同一网段,且“IP协议”设为“IPv4”;
  • 在PC端执行:telnet 192.168.0.1 102(将IP替换为PLC地址),若连接失败,检查PLC防火墙设置或交换机ACL。

4.4 现象:Web UI中设备在线,但HMI画面显示“连接中断”,刷新后恢复,10秒后又断

原因:amm_service.exe的Keep-Alive心跳包被Windows TCP/IP栈丢弃,根源是注册表TcpMaxDataRetransmissions值过小(默认5),在高延迟网络下重传不足。
解决:

  • 管理员CMD执行:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "TcpMaxDataRetransmissions" /t REG_DWORD /d 12 /f netsh int ip set global taskoffload=disabled
  • 重启PC使TCP参数生效。taskoffload=disabled是关键,它禁用网卡硬件卸载,避免4.7的自定义TCP包被网卡固件错误处理。

4.5 现象:多用户登录同一台PC,A用户配置好设备,B用户登录后看不到设备列表

原因:4.7的设备配置数据默认存于当前用户目录%LOCALAPPDATA%\Siemens\AccessMyMachine\devices.json,非全局共享。
解决:

  • 以管理员身份创建符号链接,将所有用户的配置目录指向同一位置:
# 先备份原配置 xcopy "%LOCALAPPDATA%\Siemens\AccessMyMachine" "C:\SiemensAMM\shared_config" /E /I # 删除原目录 rmdir "%LOCALAPPDATA%\Siemens\AccessMyMachine" /S /Q # 创建链接 mklink /J "%LOCALAPPDATA%\Siemens\AccessMyMachine" "C:\SiemensAMM\shared_config"
  • 对每个用户重复此操作。此后所有用户增删设备,配置实时同步。

5. 验证与连通性测试:三步闭环验证,确保PLC变量真正穿透到浏览器

5.1 服务层验证:确认amm_service.exe已加载所有核心模块

服务启动后,不能只看“状态”是否为“正在运行”,要深入进程内部验证。最可靠的方法是用Process Monitor(ProcMon)抓取amm_service.exe的加载行为:

  1. 下载Sysinternals ProcMon,以管理员运行;
  2. 设置过滤器:Process Nameisamm_service.exe,OperationisLoad Image;
  3. 点击“捕获”(Capture),然后重启服务:net stop "ACCESSMYMACHINE" && net start "ACCESSMYMACHINE";
  4. 停止捕获,筛选Result为SUCCESS的记录,重点检查以下DLL是否全部出现:
    • Siemens.S7Comm.dll(PLC通信核心)
    • Newtonsoft.Json.dll(v12.0.3,配置序列化)
    • System.ServiceModel.dll(v4.0.0.0,WCF服务宿主)
    • cefsharp.core.dll(v88.4.20,Web UI渲染引擎)

若任一缺失,说明对应模块未加载,需回溯第2章环境准备步骤。

5.2 网络层验证:用curl直连服务API,绕过Web UI干扰

Web UI可能因前端JS错误掩盖真实问题。直接调用后端REST API,可精准定位:

# 测试服务健康状态(返回JSON {"status":"ok"}) curl -k https://localhost:443/api/health # 列出已添加设备(返回设备ID数组) curl -k https://localhost:443/api/devices # 读取指定设备的PLC变量(假设设备ID为dev_123,变量名为"DB1.DBW0") curl -k -X POST https://localhost:443/api/devices/dev_123/variables/read \ -H "Content-Type: application/json" \ -d '{"variables":["DB1.DBW0"]}'

-k参数必须加,因为4.7自签证书不被curl默认信任。若/api/health返回Could not resolve host,说明服务未监听443端口,检查sc qc "ACCESSMYMACHINE"确认binPath是否正确;若/api/devices返回空数组,说明设备未成功注册,检查C:\SiemensAMM\config\devices.json文件是否存在且格式正确。

5.3 PLC层验证:用Wireshark抓包,确认S7协议握手成功

终极验证是看到真实的S7通信流。在PC上安装Wireshark,捕获Ethernet接口,设置过滤器:

tcp.port == 102 and ip.addr == 192.168.0.1 # 替换为PLC IP

启动ACCESS MY MACHINE Web UI,添加PLC设备并连接。正常应看到:

  • COTP Connection Request(TPKT+ISO)→COTP Connection Confirm(三次握手)
  • S7 Communication: Job: Read Var(读变量请求)→S7 Communication: Ack Data(返回DB1.DBW0的原始字节)
    若只有Request没有Ack,说明PLC拒绝连接,回到4.3节检查PLC侧“PUT/GET访问”设置;若Request/Ack都有,但Web UI仍显示“读取失败”,则是前端解析问题,需检查cefsharp日志(位于C:\SiemensAMM\logs\cef_log.txt)。

5.4 实战技巧:一键诊断脚本,30秒定位90%问题

我把上述验证步骤整合成一个批处理脚本,放在C:\SiemensAMM\diag.bat:

@echo off echo === ACCESS MY MACHINE 4.7 诊断脚本 === echo. echo [1] 检查服务状态... sc query "ACCESSMYMACHINE" | findstr "STATE" || echo 服务未运行! echo [2] 检查端口监听... netstat -ano | findstr ":443" | findstr "LISTENING" || echo 443端口未监听! echo [3] 检查关键DLL... if not exist "C:\SiemensAMM\Siemens.S7Comm.dll" echo 缺少Siemens.S7Comm.dll! if not exist "C:\SiemensAMM\config\amm_config.xml" echo 缺少amm_config.xml! echo [4] 测试本地API... curl -k -s https://localhost:443/api/health | findstr "ok" >nul || echo API健康检查失败! echo [5] 检查PLC连接(假设PLC IP为192.168.0.1)... ping -n 1 192.168.0.1 | findstr "TTL=" >nul || echo PLC网络不通! echo. echo 诊断完成。若某项失败,请按本文对应章节修复。 pause

每次环境异常,双击运行它,30秒内就能知道问题出在哪一层——服务、网络、文件、API还是PLC链路。从那以后我每次给客户部署新产线,都强制走一遍这个脚本,再交付。它比任何口头承诺都管用。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询