问题描述: 我目前使用的是 Visual Components 4.10 Premium 版本,并搭配 Siemens S7 连接插件,用于通过物理 S7-1200 G2 PLC 进行虚拟调试。

遇到的问题是:通过sig_TEST.Value = x在 Python 脚本中设置 IntegerSignal 的值时,执行正确且打印结果确认了该值,但运行仿真期间 Connected Variables 中的“Simulation variable”列并未更新。该值仅在仿真停止并重新启动后才会出现在 Connected Variables 中。

解决Visual Components S7插件仿真时Python变量不更新问题

观察到的行为:

  • OnRun执行正确,所有打印语句均出现在输出面板中

  • sig_TEST.Value = 99执行,print(sig_TEST.Value)返回 99

  • 连接变量“仿真变量”列在整个仿真期间保持为 0

  • 仿真重启后:值 99 正确显示在连接变量中,并传输到 PLC

  • 通过“预设值”手动写入可立即生效

最小复现脚本:

from vcScript import *

app = getApplication()
comp = getComponent()

sig_test = comp.findBehaviour(“TEST”)
print("Signal found: " + str(sig_test.Value))

def OnRun():
    print(“OnRun started”)
    delay(3.0)
    sig_test.Value = 99
    print("Value set to: " + str(sig_test.Value))
    while True:
       delay(1.0)

预期:在仿真运行期间,连接变量更新为 99 并传输至 PLC。

尝试 sig_test.signal(99)

这个方法有效。谢谢!