the desired address is beyond limit for this PLC

在尝试通过Java连接西门子S7-1200 PLC时遇到错误:Desired address is beyond limit for this PLC。问题源于数据块的'优化的块访问'设置,当该选项被勾选时,只能使用符号地址,而代码使用了绝对地址。解决方案是取消数据块的'优化的块访问'设置,重新下载到PLC后即可正常访问。如果问题依旧,可能是程序中变量设置与PLC数据块变量不匹配。

问题描述:

通过 Java连接西门子PLC(S7-1200)学习中,出现错误:the desired address is beyond limit for this PLC

下面是测试代码

        S7Connector connector = S7ConnectorFactory
                .buildTCPConnector()
                .withHost("192.168.0.195")
                .withPort(102)
                .withTimeout(10000)
                .withRack(0) //optional
                .withSlot(1) //optional
                .build();

        S7Serializer s7Serializer = S7SerializerFactory.buildSerializer(connector);
        byte[] bs = connector.read(DaveArea.DB, 3, 1, 0);
        connector.close();
        System.out.println(Arrays.toString(bs));

数据块设置

原因:

PLC模拟器正常运行,博图软件也可以正常监控修改,正常情况下,应该可以访问。由于代码访问的是DB,所以从DB的创建和设置查找原因。

在数据块的属性中,有“优化的块访问”,如果勾选就只能用符号地址访问块中的变量,不能使用绝对地址,这种访问方式可以提高存储器的利用率。如果不勾选,才能用绝对地址访问数据块中的变量,数据块才会显示“偏移量”。

而程序中采用的就是绝对地址加偏移量的形式来访问PLC,导致获取过程报错。所以创建数据块完成后,在相应的数据块右击进入属性,取消勾选“优化的块访问”,重新下载到PLC就可以访问了

 

如果经过上述操作后,故障仍存在。有可能是程序要访问的变量与数据块中的变量设置不匹配,合适plc的数据块变量设置以及程序设置的变量类型

<think>好的,我现在需要帮助用户解决Abaqus中出现的“The desired vendor daemon is down”错误。首先,我要理解这个错误的原因。根据提供的引用,错误代码是-97,121,这可能与FlexNet许可服务有关。通常,这类错误是因为许可服务器没有正确运行,或者客户端无法连接到服务器。 用户已经提供了三个引用,其中两个是关于Abaqus的,另一个是关于HFSS的,但问题类似。我需要综合这些信息,给出具体的解决步骤。首先,我需要检查许可服务的状态,确保lmgrd和ABAQUSLM服务正在运行。然后,检查环境变量和许可路径是否正确设置,特别是许可证文件路径是否有误。如果路径中有错误的主机名或端口,可能导致连接问题。 接下来,用户可能需要重新读取许可证,使用lmreread命令,或者重启许可服务。防火墙设置也是一个常见的问题,需要确保相关端口没有被阻止。此外,检查系统的主机名是否与许可证文件中的一致,避免使用localhost而应该使用实际的主机名。 如果这些步骤都无效,可能需要重新配置许可证文件或重新安装许可服务。最后,确保软件版本与许可证兼容,避免版本不匹配的问题。需要一步步引导用户检查每个可能的原因,并提供明确的解决步骤,同时提醒备份重要数据。</think>### Abaqus "desired vendor daemon is down" 错误解决方案 该错误通常与FlexNet许可证服务运行异常有关,以下是分步排查和解决方法: --- #### **步骤1:检查许可证服务状态** 1. 以管理员身份运行命令提示符 2. 执行命令: ```bash lmgrd -z -c "你的许可证文件路径\license_file.dat" ``` 如果显示`lmgrd is already running`,说明服务已启动但存在配置问题[^1][^2] --- #### **步骤2:验证许可证配置** 1. 检查环境变量设置: ```bash set ABAQUSLM_LICENSE_FILE set LM_LICENSE_FILE ``` 应指向有效的许可证服务器地址,格式为:`端口号@主机名`(如:27800@localhost) 2. 确认许可证文件中包含有效的`SERVER`行: ``` SERVER localhost 主机ID 27800 DAEMON ABAQUSLM path_to_ABAQUSLM.exe ``` --- #### **步骤3:关键操作流程** 1. **重启服务**: ```bash abaqus licensing stop abaqus licensing start ``` 2. **强制重读许可证**: ```bash lmutil lmrereread -c "许可证文件路径" ``` 3. **日志检查**: 查看`lmgrd.log`日志文件,定位具体错误代码: ```log TIMESTAMP lmgrd: EXITING DUE TO SIGNAL 38 ``` --- #### **步骤4:特殊场景处理** - **主机名不匹配**:将许可证文件中所有`localhost`替换为实际计算机名 - **端口冲突**:检查27800端口是否被占用: ```bash netstat -ano | findstr :27800 ``` - **防火墙设置**:允许`lmgrd.exe`和`ABAQUSLM.exe`通过防火墙 --- #### **补充说明** - 使用ABAQUS 2022时需注意:新版本要求许可证文件必须包含`VENDOR ABAQUSLM`声明 - Windows系统建议使用`ABAQUSLM_activate.exe`重新激活服务 - 若使用虚拟机,需关闭虚拟网卡兼容模式 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值