You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rockwell Arena遇SIMAN错误17035咨询及VBA代码优化建议

关于Arena SIMAN错误17035的解析与VBA代码优化建议

错误17035的具体含义

咱们先抓错误信息里的核心内容:Event number 0 is invalid: must be positive——这就是问题根源:你的VBA代码触发了一个编号为0的SIMAN事件,但Arena的SIMAN内核要求所有事件编号必须是大于0的整数。

结合错误场景(仿真启动0.0时刻,实体2进入VBA模块时触发),大概率是两种情况:

  • 你的代码里调用了Arena的事件调度API(比如CreateEvent这类方法),但传入的事件编号参数是0,违反了规则;
  • 代码逻辑失误,不小心修改了实体的内置事件相关属性,导致生成了无效的事件ID。

VBA代码优化建议

1. 优先修复事件编号问题

  • 先排查代码中所有涉及SIMAN事件调度的语句:如果用了Siman.Event、CreateEvent等方法,检查传入的事件编号参数,必须是1、2这类正整数,绝对不能用0;
  • 如果没主动调度事件,那要检查是否误触了相关API,或者在给实体属性赋值时不小心覆盖了系统内置的事件字段——别碰那些你没自定义的实体属性!

2. 优化Excel数据读取的稳健性

读取Excel时最容易踩坑,给你几个实用的优化点:

  • 先检查文件/工作表是否存在,避免因路径或表名错误导致隐性崩溃:
    Dim xlApp As Object, xlWB As Object, xlWS As Object
    
    ' 复用已打开的Excel实例,没打开就新建
    On Error Resume Next
    Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then Set xlApp = CreateObject("Excel.Application")
    On Error GoTo 0
    
    ' 检查工作簿
    Set xlWB = xlApp.Workbooks.Open("你的Excel文件绝对路径")
    If xlWB Is Nothing Then
        MsgBox "Excel文件找不到或打不开!", vbCritical
        Exit Sub
    End If
    
    ' 检查工作表
    Set xlWS = xlWB.Worksheets("目标工作表名")
    If xlWS Is Nothing Then
        MsgBox "指定的工作表不存在!", vbCritical
        xlWB.Close False
        xlApp.Quit
        Exit Sub
    End If
    
  • 处理空值与数据类型:读取单元格时明确取值,避免默认属性的坑,同时给空值设默认值:
    Dim attrVal As Variant
    ' 假设读取第2行第1列的数据
    attrVal = xlWS.Cells(2, 1).Value
    ' 空值处理,根据仿真需求设默认值
    If IsEmpty(attrVal) Then attrVal = 0
    ' 赋值给自定义实体属性
    Entity.SetAttribute "你的自定义属性名", attrVal
    

3. 给VBA加错误捕获

别让错误直接抛给SIMAN内核,自己加个错误捕获,能精准定位问题:

Sub Arena_VBA_Module()
    On Error GoTo ErrHandler
    
    ' 你的核心代码:读取Excel、赋值实体属性等操作
    
    Exit Sub
ErrHandler:
    MsgBox "VBA运行出错:" & Err.Description & ",错误编号:" & Err.Number, vbCritical
    ' 这里可以加清理操作,比如关闭Excel
    If Not xlWB Is Nothing Then xlWB.Close False
    If Not xlApp Is Nothing Then xlApp.Quit
End Sub

4. 实体属性赋值的注意事项

  • 只给你提前在Arena里定义好的自定义属性赋值,别碰系统内置属性(尤其是和事件、调度相关的);
  • 确保数据类型匹配:比如数值型属性别传字符串,避免类型不匹配的隐性错误。

内容的提问来源于stack exchange,提问作者Paloma Auladell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:37:02