You are on page 1of 64

 S7ProSim V5.

4 1
___________________
简介

___________________
S7ProSim 概述 2

___________________
方法 3
SIMATIC
___________________
事件 4
工程工具
S7ProSim V5.4 ___________________
类型定义 5

操作手册

07/2011
A5E03432376-02
法律资讯
法律资讯
警告提示系统
为了您的人身安全以及避免财产损失,必须注意本手册中的提示。人身安全的提示用一个警告三角表示,仅与财产
损失有关的提示不带警告三角。警告提示根据危险等级由高到低如下表示。

危险
表示如果不采取相应的小心措施,将会导致死亡或者严重的人身伤害。

警告
表示如果不采取相应的小心措施,可能导致死亡或者严重的人身伤害。

小心
带有警告三角,表示如果不采取相应的小心措施,可能导致轻微的人身伤害。

小心
不带警告三角,表示如果不采取相应的小心措施,可能导致财产损失。

注意
表示如果不注意相应的提示,可能会出现不希望的结果或状态。

当出现多个危险等级的情况下,每次总是使用最高等级的警告提示。如果在某个警告提示中带有警告可能导致人身
伤害的警告三角,则可能在该警告提示中另外还附带有可能导致财产损失的警告。

合格的专业人员
本文件所属的产品/系统只允许由符合各项工作要求的合格人员进行操作。其操作必须遵照各自附带的文件说明,特
别是其中的安全及警告提示。 由于具备相关培训及经验,合格人员可以察觉本产品/系统的风险,并避免可能的危
险。

Siemens 产品
请注意下列说明:

警告
Siemens 产品只允许用于目录和相关技术文件中规定的使用情况。如果要使用其他公司的产品和组件,必须得到
Siemens 推荐和允许。正确的运输、储存、组装、装配、安装、调试、操作和维护是产品安全、正常运行的前
提。必须保证允许的环境条件。必须注意相关文件中的提示。

商标
所有带有标记符号 ® 的都是西门子股份有限公司的注册商标。标签中的其他符号可能是一些其他商标,这是出于保
护所有者权利的 目地由第三方使用而特别标示的。

责任免除
我们已对印刷品中所述内容与硬件和软件的一致性作过检查。然而不排除存在偏差的可能性,因此我们不保证印刷
品中所述内容与硬件和软件完全一致。印刷品中的数据都按规定经过检测,必要的修正值包含在下一版本中。

Siemens AG A5E03432376-02 Copyright © Siemens AG


Industry Sector Ⓟ 06/2011 2011.
Postfach 48 48 本公司保留技术更改的权利
90026 NÜRNBERG
德国
目录

1 简介 ..................................................................................................................................................5
2 S7ProSim 概述 .................................................................................................................................7
2.1 向项目中添加 S7ProSim COM 对象 ..................................................................................... 7
2.2 通过 S7ProSim 编程 S7-PLCSIM 接口................................................................................. 8
3 方法 ................................................................................................................................................11
3.1 BeginScanNotify................................................................................................................. 13
3.2 Connect.............................................................................................................................. 14
3.3 ConnectExt......................................................................................................................... 15
3.4 Continue............................................................................................................................. 16
3.5 Disconnect ......................................................................................................................... 17
3.6 EndScanNotify ................................................................................................................... 18
3.7 ExecuteNmsScan............................................................................................................... 19
3.8 ExecuteNScans.................................................................................................................. 20
3.9 ExecuteSingleScan ............................................................................................................ 21
3.10 GetPauseState ................................................................................................................... 22
3.11 GetScanMode .................................................................................................................... 23
3.12 GetStartUpSwitch............................................................................................................... 24
3.13 GetState ............................................................................................................................. 25
3.14 HotStartWithSavedValues.................................................................................................. 26
3.15 Pause ................................................................................................................................. 27
3.16 ReadDataBlockValue ......................................................................................................... 28
3.17 ReadFlagValue .................................................................................................................. 30
3.18 ReadOutputImage .............................................................................................................. 32
3.19 ReadOutputPoint................................................................................................................ 34
3.20 SavePLC ............................................................................................................................ 36
3.21 SetScanMode..................................................................................................................... 37
3.22 SetStartUpSwitch ............................................................................................................... 38
3.23 SetState ............................................................................................................................. 39

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 3
目录

3.24 StartPLCSim .......................................................................................................................40


3.25 StartPLCSimExt ..................................................................................................................41
3.26 WriteDataBlockValue ..........................................................................................................42
3.27 WriteFlagValue....................................................................................................................44
3.28 WriteInputImage..................................................................................................................46
3.29 WriteInputPoint....................................................................................................................48
4 事件 ................................................................................................................................................ 51
4.1 ConnectionError ..................................................................................................................51
4.2 PauseStateChanged ...........................................................................................................52
4.3 PLCSimStateChanged ........................................................................................................52
4.4 ScanFinished ......................................................................................................................52
4.5 ScanModeChanged ............................................................................................................53
5 类型定义......................................................................................................................................... 55
5.1 类型定义..............................................................................................................................55
5.2 CPURunMode .....................................................................................................................55
5.3 ImageDataTypeConstants ..................................................................................................56
5.4 PauseStateConstants .........................................................................................................56
5.5 PointDataTypeConstants ....................................................................................................57
5.6 RestartSwitchPosition .........................................................................................................57
5.7 ScanModeConstants...........................................................................................................58
5.8 tagPauseState.....................................................................................................................58
5.9 ScanInfo 常量......................................................................................................................59
5.10 错误返回代码.......................................................................................................................60
索引 ................................................................................................................................................ 61

S7ProSim V5.4
4 操作手册, 07/2011, A5E03432376-02
简介 1
S7ProSim 可用于实现通过编程方式访问 S7 PLCSIM 中的仿真 PLC。 通过 S7ProSim,
您可以编写软件以执行诸如更改仿真 PLC 的钥匙操作开关位置、在单次扫描模式中运行
控制程序以及读取或写入控制器值这样的任务和许多其它任务。

目标用户群

本手册主要面向开发人员、程序员以及维护人员,并要求他们有可编程 S7 控制器方面以
及 Visual Basic(6.0 或 .NET)或 Visual C++(6.0 或 .NET)软件开发方面的知识与经
验。

本手册的适用范围

本文档介绍了 S7ProSim V5.4 SP5 及更高版本的功能和操作。

其它手册
有关更多信息,请参见 STEP 7 和 S7-PLCSIM 的在线帮助及以下手册:

● 《使用 STEP 7 进行编程》手册。 此手册提供有关设计和创建控制程序的基本信息。


要使用 STEP 7 自动化软件设计控制程序时,请使用此手册。

● 《用于 S7-300/400 系统和标准函数的系统软件》参考手册。 该手册介绍了您在开发


控制程序时需要使用的系统函数、组织块以及标准函数。

● 《使用 STEP 7,入门指南》。 本手册介绍 STEP 7 自动化软件的使用方法。 它概要


说明了组态 PLC 以及开发控制程序的步骤。

● 《S7-PLCSIM - 测试您的 S7 CPU 程序》。 本手册介绍了 S7-PLCSIM(即 S7-SPS


仿真器)的用户界面和功能。

在安装了 STEP 7 的计算机的 Windows“开始”菜单中选择菜单命令“开始 > SIMATIC > 文


档”(Start > SIMATIC > Documentation),可找到本手册以及其它手册。

附加支持

如果您有技术方面的问题,或者需要获取关于订购本产品或培训课程的信息,请联系您的
Siemens 代表。

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 5
简介

S7ProSim V5.4
6 操作手册, 07/2011, A5E03432376-02
S7ProSim 概述 2
S7ProSim 提供一个 COM 对象,用于对 S7-PLCSIM 过程仿真用户接口进行程序控制的
访问。在任何支持向 S7-PLCSIM 过程仿真中附加 COM 对象的应用程序中,您都可使用
S7ProSim。
本在线文档介绍如何向应用程序中添加 S7ProSim。 同时也解释 S7ProSim 的特性、用户
接口和函数,以及各方法和事件的软件对象定义。

2.1 向项目中添加 S7ProSim COM 对象


如果要在项目中使用 S7ProSim COM 对象,则需为该对象添加引用。 对象引用的添加过
程取决于您的编程环境。

步骤
例如,在 Microsoft Visual Basic(6.0 或 .NET)中,按照以下步骤添加 S7ProSim COM
对象引用:
1. 选择菜单命令“项目 > 引用”(Project > References) 或“项目 > 添加引用”(Project > Add
Reference)。
2. 在“引用”(References) 对话框中,选中 Siemens S7ProSim COM 对象的复选框。
(在 Visual Basic .NET 中,此选择内容位于“引用”(References) 对话框的“COM”选项
卡下。)
3. 单击“确定”(OK)。
在添加项目引用后,便可使用“对象浏览器”(Object Browser) 查看 S7ProSim COM 对
象的方法和事件。 在“对象浏览器”(Object Browser) 中,在库的下拉列表中选择
S7PROSIMLib。 S7ProSim 类别中包含可用来编程 S7-PLCSIM 接口的方法和事件。
在 Microsoft Visual Studio C++ V6.0 或者在 Microsoft Visual C++ .NET 中,按照特定编
程环境的相应步骤添加 COM 对象。
在 Microsoft Visual C# .NET 中,可以通过执行以下步骤添加对 S7ProSim COM 对象的
引用:
1. 选择“项目 > 添加引用”(Project > Add reference) 菜单命令。
2. 在“COM”选项卡中,选择组件“Siemens S7ProSim COM 对象”(Siemens S7ProSim
COM Object)。
3. 单击“确定”(OK) 确认选择。
4. 单击“确定”(OK) 关闭对话框。

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 7
S7ProSim 概述
2.2 通过 S7ProSim 编程 S7-PLCSIM 接口

2.2 通过 S7ProSim 编程 S7-PLCSIM 接口

步骤

要使用 S7ProSim 对 S7-PLCSIM 中仿真的控制器进行程序控制的操作,则需执行以下任


务:

1. 在项目中包括 Siemens S7ProSim COM 对象。

2. 向项目中添加 S7ProSim 声明。


– 示例: Visual Basic 6.0
Option Explicit
Private WithEvents S7ProSim As S7PROSIMLib.S7ProSim
...
Private Sub Form_Load()
Set S7ProSim = New S7PROSIMLIB.S7ProSim
...
End Sub
– 示例: Visual Basic .NET
Private WithEvents S7ProSim As New S7PROSIMLib.S7ProSim
– 示例: Visual C++ 6.0
// the ProSim library/tlb is in the dll
#import <S7wspsmx.dll> named_guids, no_namespace//,
raw_interfaces_only
class ProSimWrapper
{
public:
ProSimWrapper() : m_pProSim(OLESTR("S7wspsmx.S7ProSim"),
NULL, CLSCTX_INPROC_SERVER)
{}; // spartptr is automatically created in the stack
when the application
// starts
virtual ~ProSimWrapper()
{}; // no implementation, smartptr is automatically

S7ProSim V5.4
8 操作手册, 07/2011, A5E03432376-02
S7ProSim 概述
2.2 通过 S7ProSim 编程 S7-PLCSIM 接口

// released
// when the application shuts down
IS7ProSim * GetPtr()
{
return m_pProSim;
};
// Attributes
protected:
// IProSimPtr is a CComPtr (smart ptr) for the IProSim
// interface
// It is from the dll file from #import
// CoCreateInstance will be called automatically for the
ptr object
// in the constructor
// of this class
// The release of ptr is automatically called by the
destructor
// of this class
IS7ProSimPtr m_pProSim;
};
– 示例: C#
using S7PROSIMLib;
...
private S7ProSim ps;
// 创建 COM 对象连接
ps = new S7ProSim();

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 9
S7ProSim 概述
2.2 通过 S7ProSim 编程 S7-PLCSIM 接口

3. 在 Visual Basic 中,为 S7ProSim 事件编程事件处理程序。 在 Visual C++ 和 Visual


C# 中无需使用事件处理程序。 在任何事件处理程序中,都可针对您的应用程序插入
任意的自定义代码。
示例: Visual Basic 6.0
Private Sub S7ProSim_PauseStateChanged(ByVal NewState As
String)
DoEvents
...
End Sub
Private Sub S7ProSim_ScanFinished(ByVal ScanInfo As Variant)
DoEvents
...
End Sub
Private Sub S7ProSim_PLCSimStateChanged(ByVal NewState As
String)
DoEvents
...
End Sub
Private Sub S7ProSim_ConnectionError(ByVal ControlEngine As
String, ByVal error As Long)
DoEvents
MsgBox "Connection Error"
End Sub
Private Sub S7ProSim_ScanModeChanged(ByVal NewState As String)
DoEvents
...
End Sub
注意
在 Visual Basic .NET 中,无需进行“DoEvents”调用。
4. 根据访问不同 S7ProSim 方法的需要,向应用程序中添加命令按钮、文本框或其它对
象。 为各个调用 S7ProSim 方法的命令按钮处理程序编写代码,并根据应用程序需要
为各文本框设置合适的值。

S7ProSim V5.4
10 操作手册, 07/2011, A5E03432376-02
方法 3
概述
方法 说明
BeginScanNotify 对 S7ProSim 进行控制器回叫注册。 ScanFinished 和
(页 13) PLCSimStateChanged 事件将会在发生相应事件时发送。
Connect (页 14) 将 S7ProSim 连接到 S7-PLCSIM。
ConnectExt (页 15) 将 S7ProSim 与编号为 InstanceNumber 的 S7-PLCSIM 实例
连接在一起。
Continue (页 16) 继续已暂停的仿真。

Disconnect (页 17) 将 S7ProSim 从 S7-PLCSIM 中断开。


EndScanNotify (页 18) 对 S7ProSim 进行控制器回叫注册解除。 ScanFinished 和
PLCSimStateChanged 事件将不会发送。
ExecuteNmsScan 强制 S7-PLCSIM 执行指定时间 (Nms) 的扫描循环,而不等待
(页 19) 当前扫描结束。 如果启用扫描通知,则将在 S7-PLCSIM 完成
扫描时向程序发出通知。
ExecuteNScans (页 20) 强制 S7-PLCSIM 执行指定次数的扫描循环,而不等待当前扫
描结束。 如果启用扫描通知,则将在 S7-PLCSIM 完成扫描时
向程序发出通知。
ExecuteSingleScan 强制 S7-PLCSIM 执行一次扫描循环,而不等待当前扫描结
(页 21) 束。 如果启用扫描通知,则将在 S7-PLCSIM 完成扫描时向程
序发出通知。
GetPauseState (页 22) 返回 S7-PLCSIM 当前的暂停状态。
GetScanMode (页 23) 报告 S7-PLCSIM 的工作模式。
GetStartUpSwitch 获取 S7-PLCSIM 的启动设置(热启动、暖启动或冷启动)
(页 24)
GetState (页 25) 返回包含 S7-PLCSIM 当前钥匙开关位置(RUN、RUN-P 或
STOP)的字符串。
HotStartWithSavedValu 设置布尔值以指定 S7-PLCSIM 在以 HotStart 状态启动时是否
es (页 26) 应加载保存的外围 I/O 的值。 为使 S7-PLCSIM 启动并加载外
围 I/O,用户需要调用值为 TRUE 的
HotStartWithSavedValues,保存 PLC 程序 (SavePLC) 并将
S7-PLCSIM 的启动状态设置为 HotStart
(SetStartUpSwitch)。 在 S7-PLCSIM 启动时,将加载外围
I/O
Pause (页 27) 暂停仿真。

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 11
方法

方法 说明
ReadDataBlockValue 读取 S7-PLCSIM 的 DB 存储区域中某一特定的位、字节、字
(页 28) 或双字。
ReadFlagValue (页 30) 读取 S7-PLCSIM 位存储区域 (M) 中某一特定的位、字节、字
或双字。
ReadOutputImage 读取 S7-PLCSIM 外围输出(PQ 存储区域)中的元素。
(页 32)
ReadOutputPoint 读取外围输出(PQ 存储区域)中的某一特定位(布尔型)、
(页 34) 字节(字节型)、双字节字(整型)或四字节字(长型)。
SavePLC (页 36) 将当前仿真的 PLC 数据保存到文件中。 保存的数据包括程
序、硬件配置、“CPU”子窗口中显示的钥匙开关位置、程序执
行类型(连续扫描或单次扫描)、I/O 状态、时间值、符号地
址和电源设置(开或关)。

SetScanMode (页 37) 设置 S7-PLCSIM 的工作模式。


SetStartUpSwitch 设置要在 S7-PLCSIM 启动时采用的启动类型(热启动、暖启
(页 38) 动或冷启动)。
SetState (页 39) 设置 S7-PLCSIM 当前的钥匙开关位置(RUN、RUN-P 或
STOP)。
StartPLCSim (页 40) 通过指定的 PLC 仿真文件(在之前的 SavePLC 调用中保
存)启动 S7-PLCSIM。
StartPLCSimExt (页 41) 通过指定的 PLC 仿真文件(在之前调用中保存的文件)启动
S7-PLCSIM 的一个实例。
WriteDataBlockValue 向 S7-PLCSIM 的 DB 存储区域中写入某一特定的位、字节、
(页 42) 字或双字。
WriteFlagValue (页 44) 向 S7-PLCSIM 位存储区域 (M) 中写入某一特定的位、字节、
字或双字。
WriteInputImage 向 S7-PLCSIM 的外围输入(PI 存储区域)中写入元素,从
(页 46) pData 指向的数据的 StartIndex 开始。
WriteInputPoint (页 48) 向外围输入(PI 存储区域)中写入数据变量中的一个特定位
(布尔型)、字节(字节型)、双字节字(整型)或四字节字
(长型)。

S7ProSim V5.4
12 操作手册, 07/2011, A5E03432376-02
方法
3.1 BeginScanNotify

3.1 BeginScanNotify
STDMETHOD(CS7ProSim::BeginScanNotify)()

说明

对 S7ProSim 进行控制器回叫注册。 ScanFinished 和 PLCSimStateChanged 事件将会


在发生相应事件时发送。

参数

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

BeginScanNotify() As Long function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 13
方法
3.2 Connect

3.2 Connect
STDMETHOD(Connect)()

说明

将 S7ProSim 与 S7-PLCSIM 的第一个实例(实例编号为“1”)连接在一起。

参数

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_PLCISCONNECT 0x8004020E: S7-PLCSIM 已连接
ED
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

Connect() As Long function

S7ProSim V5.4
14 操作手册, 07/2011, A5E03432376-02
方法
3.3 ConnectExt

3.3 ConnectExt
STDMETHOD (ConnectExt)(/*[in]*/ long InstanceNumber)

说明

将 S7ProSim 与编号为 InstanceNumber 的 S7-PLCSIM 实例连接在一起。

参数

InstanceNumber [in]: 要连接 S7ProSim 的实例的编号

错误处理
在 ConnectionError 事件中报告错误,而不是通过函数调用的方式报告。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_PLCISCONNECT 0x8004020E: S7-PLCSIM 已连接
ED
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

Function ConnectExt() As Long

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 15
方法
3.4 Continue

3.4 Continue
STDMETHOD(CS7ProSim::Continue)()

说明

继续已暂停的仿真。

参数

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTE 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
D

Visual Basic 用法

Sub Continue()

S7ProSim V5.4
16 操作手册, 07/2011, A5E03432376-02
方法
3.5 Disconnect

3.5 Disconnect
STDMETHOD(CS7ProSim::Disconnect)()

说明

将 S7ProSim 从 S7-PLCSIM 中断开。

参数

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

Disconnect() As Long function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 17
方法
3.6 EndScanNotify

3.6 EndScanNotify
STDMETHOD(CS7ProSim::EndScanNotify)()

说明

对 S7ProSim 进行控制器回叫注册解除。 不再发送 ScanFinished 和


PLCSimStateChanged 事件。

参数

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭
PS_E_NOTREGISTERE 0x80040209: S7ProSim 未进行 S7-PLCSIM 回叫注册
D

Visual Basic 用法

Function EndScanNotify() As Long

S7ProSim V5.4
18 操作手册, 07/2011, A5E03432376-02
方法
3.7 ExecuteNmsScan

3.7 ExecuteNmsScan
STDMETHOD(CS7ProSim::ExecuteNmsScan)( long MsNumber)

说明

强制 S7-PLCSIM 执行指定时间 (Nms) 的扫描循环,而不等待当前扫描结束。 如果启用


扫描通知,则将在 S7-PLCSIM 完成扫描时向程序发出通知。 要使用此方法,S7-
PLCSIM 必须处于单次扫描模式。

参数

参数 声明 说明

MsNumber 输入 扫描循环将持续执行的时间(毫秒)。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005: 未指定的错误
PS_E_NOTSINGLESCA 0x8004020A: S7-PLCSIM 中未设置单次扫描程序执行
N
PS_E_PLCNOTRUNNIN 0x8004020E: S7-PLCSIM 未运行
G
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法
ExecuteNmsScan(MsNumber As Long) As Long function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 19
方法
3.8 ExecuteNScans

3.8 ExecuteNScans
STDMETHOD(CS7ProSim::ExecuteNScans)( long NScanNumber)

说明

强制 S7-PLCSIM 执行指定次数的扫描循环,而不等待当前扫描结束。 如果启用扫描通


知,则将在 S7-PLCSIM 完成扫描时向程序发出通知。 要使用此方法,S7-PLCSIM 必须
处于单次扫描模式。

参数

参数 声明 说明

NScanNumb 输入 要执行的扫描循环次数。
er

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005: 未指定的错误
PS_E_NOTSINGLESCA 0x8004020A: S7-PLCSIM 中并未设置单次扫描模式
N
PS_E_PLCNOTRUNNIN 0x8004020E: S7-PLCSIM 未运行
G
PS_E_NOTCONNECTE 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
D

Visual Basic 用法

ExecuteNScans(NScanNumber As Long) As Long function

S7ProSim V5.4
20 操作手册, 07/2011, A5E03432376-02
方法
3.9 ExecuteSingleScan

3.9 ExecuteSingleScan
STDMETHOD(CS7ProSim::ExecuteSingleScan)()

说明

强制 S7-PLCSIM 执行一次扫描循环,而不等待当前扫描结束。 如果启用扫描通知,则将


在 S7-PLCSIM 完成扫描时向程序发出通知。 要使用此方法,S7-PLCSIM 必须处于单次
扫描模式。

参数

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_PLCNOTRUNNING 0x8004020E: S7-PLCSIM 未运行
PS_E_NOTSINGLESCAN 0x8004020A: S7-PLCSIM 中并未设置单次扫描模式
PS_E_MODENOTPOSSIBL 0x8004020C: S7-PLCSIM 无法设置指定的工作模式
E

Visual Basic 用法

ExecuteSingleScan() As Long function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 21
方法
3.10 GetPauseState

3.10 GetPauseState
STDMETHOD(CS7ProSim::GetPauseState)( PauseStateConstants *pVal)

说明

返回 S7-PLCSIM 当前的暂停状态。

参数

参数 声明 说明

pVal 输出 指向所返回的 S7-PLCSIM 状态 (PauseStateConstants 设


置之一) 的指针

备注

从 Visual Basic 或 C# 中调用时,暂停状态在函数返回值中输出,没有 pVal 参数。

在 C++ 中调用时,则状态会在 pVal 指向的值中返回。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法
GetPauseState() As PauseStateConstants function

S7ProSim V5.4
22 操作手册, 07/2011, A5E03432376-02
方法
3.11 GetScanMode

3.11 GetScanMode
STDMETHOD(CS7ProSim::GetScanMode)( ScanModeConstants *pVal)

说明

报告 S7-PLCSIM 的工作模式。

参数

参数 声明 说明

pVal 输出 指向所返回的工作模式的指针。 返回的工作模式为


ScanModeConstants 中的一个

备注

从 Visual Basic 或 C# 中调用时,工作模式在函数返回值中输出,没有 pVal 参数。

在 C++ 中调用时,则状态会在 pVal 指向的值中返回。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法
GetScanMode() As ScanModeConstants function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 23
方法
3.12 GetStartUpSwitch

3.12 GetStartUpSwitch
STDMETHOD(CS7ProSim::GetStartUpSwitch)( RestartSwitchPosition *pP
os)

说明

获取 S7-PLCSIM 的启动设置(热启动、暖启动或冷启动)。

参数

参数 声明 说明

pPos 输出 指向 S7-PLCSIM 启动位置值 (RestartSwitchPosition 设置


之一) 的指针

备注

从 Visual Basic 或 C# 中调用时,开关位置在函数返回值中输出,没有 pPos 参数。

在 C++ 中调用时,则状态会在 pPos 指向的值中返回。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

GetStartUpSwitch() As RestartSwitchPosition function

S7ProSim V5.4
24 操作手册, 07/2011, A5E03432376-02
方法
3.13 GetState

3.13 GetState
STDMETHOD(CS7ProSim::GetState)( BSTR *pVal)

说明

返回包含 S7-PLCSIM 当前钥匙开关位置(RUN、RUN-P 或 STOP)的字符串。

参数

参数 声明 说明

pVal 输出 指向所返回的 S7-PLCSIM 钥匙开关位置值的指针。

备注
从 Visual Basic 或 C# 中调用时,状态在函数返回值中输出,没有 pVal 参数。

在 C++ 中调用时,则状态会在 pVal 指向的值中返回。

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
E_INVALID_STATE 0x00008002: 无效状态
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

GetState() As String function

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 25
方法
3.14 HotStartWithSavedValues

3.14 HotStartWithSavedValues
STDMETHOD(CS7ProSim::HotStartWithSavedValues)( BOOL val)

说明

设置布尔值以指定 S7-PLCSIM 在以 HotStart 状态启动时是否应加载保存的外围 I/O 的


值。

为使 S7-PLCSIM 启动并加载外围 I/O,用户需要调用值为 TRUE 的


HotStartWithSavedValues,保存 PLC 程序 (SavePLC) 并将 S7-PLCSIM 的启动状态设
置为 HotStart (SetStartUpSwitch)。 在 S7-PLCSIM 启动时,将随后加载外围 I/O。

参数

参数 声明 说明

val 输入 TRUE 值表示 S7-PLCSIM 将在热启动时加载保存的外围


I/O 数据。 FALSE 值表示将不会加载。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub HotStartWithSavedValues(val As Long)

S7ProSim V5.4
26 操作手册, 07/2011, A5E03432376-02
方法
3.15 Pause

3.15 Pause
STDMETHOD(CS7ProSim::Pause)()

说明

暂停仿真。

参数

错误处理
错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub Pause()

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 27
方法
3.16 ReadDataBlockValue

3.16 ReadDataBlockValue
STDMETHOD(CS7ProSim::ReadDataBlockValue)(
long BlockNumber,
long ByteIndex,
long BitIndex,
PointDataTypeConstants DataType,
VARIANT* pData)

说明

读取数据块存储区中的某一特定位(布尔型)、字节(字节型)、双字节字(整型)或四
字节字(长型)。

参数

参数 声明 说明

BlockNumber 输入 要读取的数据块的数量。 BlockNumber 的有效值取决于


CPU。
ByteIndex 输入 要读取的数据块中的起始字节位置。 ByteIndex 的有效值
取决于 CPU。
BitIndex 输入 在读取布尔值(位)时,要读取的数据块中起始位的位
置。 BitIndex 的有效值为 0 到 7。
DataType 输入 要读取的数据类型。 DataType 必须是
PointDataTypeConstants 中的一个。
pData 输入,输出 指向待读取数据的指针。 数据的有效值取决于数据类型。
确保在应用程序中分配和释放此存储区域。


如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。如果成
功,该方法将返回 pData 中给定的位,其数据类型变量将为布尔型。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。如果成功,则该方法将返回 pData 中的值。 数据类型
变量可以是字节型、整型或长型,具体取决于 DataType。

S7ProSim V5.4
28 操作手册, 07/2011, A5E03432376-02
方法
3.16 ReadDataBlockValue

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005: 未指定的错误
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_BADBYTENDX 0x80040201: 字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_READFAILED 0x80040203: 读取操作失败

Visual Basic 用法

Sub ReadDataBlockValue(BlockNum As Long, ByteIndex As Long,


BitIndex As Long, DataType As PointDataTypeConstants, pData)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 29
方法
3.17 ReadFlagValue

3.17 ReadFlagValue
STDMETHOD(CS7ProSim::ReadFlagValue)( long ByteIndex,
long BitIndex,
PointDataTypeConstants DataT
ype,
VARIANT* pData)

说明

读取位存储区中的某一特定位(布尔型)、字节(字节型)、双字节字(整型)或四字节
字(长型)。

参数

参数 声明 说明

ByteIndex 输入 代表要读取的位存储区域的起始字节位置。 ByteIndex 的


有效值取决于 CPU。
BitIndex 输入 在读取布尔值(位)时,代表要读取的位存储区域中起始
位的位置。 BitIndex 的有效值为 0 到 7。
DataType 输入 代表要读取的数据类型。 DataType 必须是
PointDataTypeConstants 中的一个。
pData 输入,输出 指向待读取数据的指针。 数据的有效值取决于数据类型。
确保在应用程序中分配和释放此存储区域。

如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。如果成


功,该方法将返回 pData 中给定的位,其数据类型变量将为布尔型。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。如果成功,则该方法将返回 pData 中的值。数据类型变
量可以是字节型、整型或长型,具体取决于 DataType。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
30 操作手册, 07/2011, A5E03432376-02
方法
3.17 ReadFlagValue

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_NOTCONNECTED 0x80040211:S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212:S7-PLCSIM 已关闭
PS_E_BADTYPE 0x80040206:数据类型无效
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_READFAILED 0x80040203: 读取操作失败

Visual Basic 用法

Sub ReadFlagValue(ByteIndex As Long, BitIndex As Long, DataType


As PointDataTypeConstants, pData)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 31
方法
3.18 ReadOutputImage

3.18 ReadOutputImage
STDMETHOD(CS7ProSim::ReadOutputImage)( long StartIndex,
long ElementsToRead,
ImageDataTypeConstants DataType,
VARIANT* pData)

说明

读取 S7-PLCSIM 外围输出(PQ 存储区域)中的元素。

参数

参数 声明 说明

StartIndex 输入 代表要读取的外围输出中的起始字节位置。 StartIndex


的有效值取决于 CPU。
ElementsToRe 输入 代表要从映像缓冲区中读取的字节、字或双字的数量。
ad ElementsToRead 的有效值取决于 CPU。
DataType 输入 代表要读取的数据类型。 DataType 值必须是
ImageDataTypeConstants 中的一个。
pData 输入,输出 指向待读取数据的指针。 数据的有效值取决于数据类
型。确保在应用程序中分配和释放此存储区域。

如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。如果成


功,该方法将返回 pData 中给定的位,其数据类型变量将为布尔型。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。如果成功,则该方法将返回 pData 中的值。数据类型变
量可以是字节型、整型或长型,具体取决于 DataType。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
32 操作手册, 07/2011, A5E03432376-02
方法
3.18 ReadOutputImage

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_READFAILED 0x80040203: 读取操作失败
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_NOTALLREADSWORK 0x8004020F: 部分读取操作未成功
ED
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

Sub ReadOutputImage(StartIndex As Long, ElementsToRead As Long,


DataType As ImageDataTypeConstants, pData) As Long

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 33
方法
3.19 ReadOutputPoint

3.19 ReadOutputPoint
STDMETHOD(CS7ProSim::ReadOutputPoint)( long ByteIndex,
long BitIndex,
PointDataTypeConstants DataType,
VARIANT* pData)

说明

读取外围输出(PQ 存储区域)中的某一特定位(布尔型)、字节(字节型)、双字节字
(整型)或四字节字(长型)。

参数

参数 声明 说明

ByteIndex 输入 代表要读取的外围区域中的起始字节位置。 ByteIndex


的有效值取决于 CPU。
BitIndex 输入 代表要读取的外围区域中的位的位置(在字节中)。 有
效值范围为 0 到 7。
DataType 输入 PointDataTypeConstants 中的一个
pData 输入,输出 指向要读取的数据的指针。 数据的有效值取决于数据类
型。

备注

如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。 如果成


功,该方法将返回 pData 中给定的位,其数据类型变量将为布尔型。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。 如果成功,则该方法将返回 pData 中的值。 数据类型
变量可以是字节型、整型或长型,具体取决于 DataType。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
34 操作手册, 07/2011, A5E03432376-02
方法
3.19 ReadOutputPoint

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的大
小无效
PS_E_READFAILED 0x80040203: 读取操作失败
PS_E_BADBITNDX 0x80040205: 字节标号无效
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法
Sub ReadOutputPoint(ByteIndex As Long, BitIndex As Long, DataType
As PointDataTypeConstants, pData) As Long

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 35
方法
3.20 SavePLC

3.20 SavePLC
STDMETHOD(CS7ProSim::SavePLC)( BSTR FileName)

说明

将当前仿真的 PLC 数据保存到文件中。

保存的数据包括程序、硬件配置、“CPU”子窗口中显示的钥匙开关位置、程序执行类型
(连续扫描或单次扫描)、I/O 状态、时间值、符号地址和电源设置(开或关)。

参数

参数 声明 说明

FileName 输入 存储仿真 PLC 数据的文件的名称

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


STG_E_CANTSAVE 0x80030103: 无法保存
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub SavePLC(FileName As String)

S7ProSim V5.4
36 操作手册, 07/2011, A5E03432376-02
方法
3.21 SetScanMode

3.21 SetScanMode
STDMETHOD(CS7ProSim::SetScanMode)( ScanModeConstants newVal)

说明

设置 S7-PLCSIM 的工作模式。

参数

参数 声明 说明

newVal 输入 要为 S7-PLCSIM 设置的工作模式。 该工作模式必须是


ScanModeConstants 中的一个。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub SetScanMode(newVal As ScanModeConstants)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 37
方法
3.22 SetStartUpSwitch

3.22 SetStartUpSwitch
STDMETHOD(CS7ProSim::SetStartUpSwitch)( RestartSwitchPosition
postion)

说明

设置要在 S7-PLCSIM 启动时采用的启动类型(热启动、暖启动或冷启动)。

参数

参数 声明 说明

位置 输入 要为 S7-PLCSIM 的启动位置设置的值

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub SetStartUpSwitch(postion As RestartSwitchPosition)

S7ProSim V5.4
38 操作手册, 07/2011, A5E03432376-02
方法
3.23 SetState

3.23 SetState
STDMETHOD(CS7ProSim::SetState)( BSTR newVal)

说明

设置 S7-PLCSIM 当前的钥匙开关位置(RUN、RUN-P 或 STOP)。

参数

参数 声明 说明

newVal 输入 要在 S7 PLCSIM 中为钥匙开关位置设置的值。 有效值


为 RUN、RUN_P、STOP 和 MRES

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005: 未指定的错误
E_INVALID_STATE 0x00008002: 无效状态
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接

Visual Basic 用法

Sub SetState(newVal As String)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 39
方法
3.24 StartPLCSim

3.24 StartPLCSim
STDMETHOD(CS7ProSim::StartPLCSim)( BSTR plcFile)

说明

通过指定的 PLC 仿真文件(之前调用 SavePLC 时保存的文件)启动第一个 S7-PLCSIM


实例。

参数

参数 声明 说明

plcFile 输入 用来启动 S7-PLCSIM 的文件的名称

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误

Visual Basic 用法

Sub StartPLCSim(plcFile As String)

S7ProSim V5.4
40 操作手册, 07/2011, A5E03432376-02
方法
3.25 StartPLCSimExt

3.25 StartPLCSimExt
STDMETHOD(StartPLCSimExt)(/*[in]*/ BSTR plcFile)

说明

通过指定的 PLC 仿真文件(在之前调用中保存的文件)启动 S7-PLCSIM 的一个实例。

参数

参数 声明 说明

plcFile [in] 输入 用来启动 S7-PLCSIM 的文件的名称

错误处理
在 ConnectionError 事件中报告错误,而不是通过函数调用的方式报告。

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_MAXINSTANCE 0x80040214: 已达到最多可打开的 S7-
PLCSIM 实例数目

Visual Basic 用法

Sub StartPLCSimExt(plcFile As String)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 41
方法
3.26 WriteDataBlockValue

3.26 WriteDataBlockValue
STDMETHOD(CS7ProSim::WriteDataBlockValue)(
long BlockNumber,
long ByteIndex,
long BitIndex,
const VARIANT* pData)

说明

将某一特定位(布尔型)、字节(字节型)、双字节字(整型)或四字节字(长型)写入
数据块存储区中。

参数

参数 声明 说明

BlockNumber 输入 代表要写入的数据块的数量。 BlockNumber 的有效值取


决于 CPU。
ByteIndex 输入 代表要写入的数据块的起始字节位置。 ByteIndex 的有
效值取决于 CPU。
BitIndex 输入 在写入布尔值(位)时,代表要写入的数据块的起始位
位置。 BitIndex 的有效值为 0 到 7。
pData 输入 指向要写入的数据的指针。 数据的有效值取决于数据类
型。确保在应用程序中分配和释放此存储区域。

备注

如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。如果成


功,该方法会将指定位 (pData) 写入编号为 BlockNumber 的数据块中。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。如果成功,则该方法会将该值写入 pData。数据类型变
量可以是字节型、整型或长型,具体取决于 DataType。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
42 操作手册, 07/2011, A5E03432376-02
方法
3.26 WriteDataBlockValue

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_NOTCONNECTED 0x80040211:S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212:S7-PLCSIM 已关闭
PS_E_BADTYPE 0x80040206:数据类型无效
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_WRITEFAILED 0x80040204: 写入操作失败

Visual Basic 用法

Sub WriteDataBlockValue(BlockNum As Long, ByteIndex As Long,


BitIndex As Long, pData)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 43
方法
3.27 WriteFlagValue

3.27 WriteFlagValue
STDMETHOD(CS7ProSim::WriteFlagValue)( long ByteIndex,
long BitIndex,
const VARIANT* pData)

说明

将某一特定位(布尔型)、字节(字节型)、双字节字(整型)或四字节字(长型)写入
位存储区中。

参数

参数 声明 说明

ByteIndex 输入 代表要写入的位存储区域的起始字节位置。 ByteIndex


的有效值取决于 CPU。
BitIndex 输入 在写入布尔值(位)时,代表要写入的位存储区域的起
始位位置。 BitIndex 的有效值为 0 到 7。
pData 输入 指向要写入的数据的指针。 数据的有效值取决于数据类
型。确保在应用程序中分配和释放此存储区域。

备注

如果 DataType 为 S7_Bit,则 ByteIndex 和 BitIndex 必须都设置为有效标号。如果成


功,该方法会将指定位 (pData) 写入编号为 BlockNumber 的数据块中。

如果 DataType 为 S7_Byte、S7_Word 或 S7_DoubleWord,则 ByteIndex 必须设置为有


效的标号(BitIndex 将被忽略)。如果成功,则该方法会将该值写入 pData。数据类型变
量可以是字节型、整型或长型,具体取决于 DataType。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
44 操作手册, 07/2011, A5E03432376-02
方法
3.27 WriteFlagValue

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_NOTCONNECTED 0x80040211:S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212:S7-PLCSIM 已关闭
PS_E_BADTYPE 0x80040206:数据类型无效
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_WRITEFAILED 0x80040204: 写入操作失败

Visual Basic 用法

Sub WriteFlagValue(ByteIndex As Long, BitIndex As Long, pData)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 45
方法
3.28 WriteInputImage

3.28 WriteInputImage
STDMETHOD(CS7ProSim::WriteInputImage)( long StartIndex, const
VARIANT* pData)

说明

向 S7-PLCSIM 的外围输入(PI 存储区域)中写入元素,从 pData 指向的数据的


StartIndex 开始。

参数

参数 声明 说明

StartIndex 输入 代表要写入的外围输入中的起始字节位置。 StartIndex


的有效值取决于 CPU。
pData 输入 指向将由 S7-PLCSIM 写入的数据的指针。 该数据的有
效值取决于 CPU。 确保在应用程序中分配和释放此存储
区域。

备注
要写入的元素的类型取决于“数据”中元素的类型。 所有元素必须是同一数据类型。 字节
数组写入字节,整数数组写入字,长型数组写入双字。 写入的值未经处理,并未由该方
法进行任何形式的解释或转换。 写入元素的数量取决于“数据”所指向的数组的大小。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
46 操作手册, 07/2011, A5E03432376-02
方法
3.28 WriteInputImage

返回值

值 含义

S_OK 0x00000000:成功代码
E_FAIL 0x80004005:未指定的错误
PS_E_BADBYTENDX 0x80040201:字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数
据数组的大小无效
PS_E_WRITEFAILED 0x80040204: 写入操作失败
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_NOTALLWRITESWORKED 0x80040210: 部分写入操作未成功
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM
连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法

Sub WriteInputImage(StartIndex As Long, Data) As Long

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 47
方法
3.29 WriteInputPoint

3.29 WriteInputPoint
STDMETHOD(CS7ProSim::WriteInputPoint)( long ByteIndex,
long BitIndex,
const VARIANT* pData)

说明

向外围输入(PI 存储区域)中写入数据变量中的一个特定位(布尔型)、字节(字节
型)、双字节字(整型)或四字节字(长型)。

参数

参数 声明 说明

ByteIndex 输入 代表要写入的外围输入中的起始字节位置。 ByteIndex


的有效值取决于 CPU。
BitIndex 输入 代表要写入的外围区域中的位的位置(在字节中)。 有
效值范围为 0 到 7。
pData 输入 指向要写入的数据的指针。 数据的有效值取决于数据类
型。

备注

如果将数据类型指定为布尔型,则 ByteIndex 和 BitIndex 必须均设置为有效标号。 如果


成功,则该方法将写入 pData 中指定的位。

如果将数据类型指定为字节型、整型或长型,则 ByteIndex 必须设置为有效标号


(BitIndex 将被忽略)。 如果成功,则该方法将写入 pData 中的元素。

错误处理

错误在 ConnectionError 事件中返回,而不是通过函数调用的方式返回。

S7ProSim V5.4
48 操作手册, 07/2011, A5E03432376-02
方法
3.29 WriteInputPoint

返回值

值 含义

S_OK 0x00000000: 成功代码


E_FAIL 0x80004005: 未指定的错误
PS_E_BADBYTENDX 0x80040201: 字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_WRITEFAILED 0x80040204: 写入操作失败
PS_E_BADBITNDX 0x80040205: 字节标号无效
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭

Visual Basic 用法
Sub WriteInputPoint(ByteIndex As Long, BitIndex As Long, Data) As
Long

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 49
方法
3.29 WriteInputPoint

S7ProSim V5.4
50 操作手册, 07/2011, A5E03432376-02
事件 4
概述

事件 含义

ConnectionError (页 51) 当无法连接到控制引擎(“S7-PLCSIM”)或任何 S7ProSim


方法调用发生错误时生成。
PauseStateChanged 当检测到暂停/继续状态变化时生成。 NewState 是一个字符
(页 52) 串,其代表 PauseStateConstants 之一。
PLCSimStateChanged 当检测到新的 PLC 切换状态时生成。 NewState 是新的运
(页 52) 行状态: “RUN”、“RUN_P”或“STOP”。
ScanFinished (页 52) 当单次扫描完成时生成。 ScanInfo 提供与扫描有关的索引
信息。
ScanModeChanged 当检测到工作模式更改时生成。 NewState 是一个字符串,
(页 53) 其代表 ScanModeConstants 之一。

4.1 ConnectionError
HRESULT ConnectionError(BSTR ControlEngine, long Error)

说明
无法与 S7 PLCSIM 中的仿真 PLC 建立连接时或调用 S7ProSim 方法出错时生成。

Visual Basic 用法

Event ConnectionError(ControlEngine As String, Error As Long)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 51
事件
4.2 PauseStateChanged

4.2 PauseStateChanged
HRESULT PauseStateChanged(BSTR NewState)

说明

当检测到暂停/继续状态变化时生成。 NewState 是一个字符串,其代表


PauseStateConstants 之一。

Visual Basic 用法

Event PauseStateChanged(NewState As String)

4.3 PLCSimStateChanged
HRESULT PLCSimStateChanged(BSTR NewState)

说明

当检测到新的 PLC 切换状态时生成。 NewState 是新的运行状态: “RUN”、“RUN_P”或


“STOP”。

Visual Basic 用法

Event PLCSimStateChanged(NewState As String)

4.4 ScanFinished
HRESULT ScanFinished(VARIANT ScanInfo)

说明

当单次扫描完成时生成。 ScanInfo 提供与扫描有关的索引信息。

Visual Basic 用法

Event ScanFinished(ScanInfo)

S7ProSim V5.4
52 操作手册, 07/2011, A5E03432376-02
事件
4.5 ScanModeChanged

4.5 ScanModeChanged
HRESULT ScanModeChanged(BSTR NewState)

说明

当检测到工作模式更改时生成。 NewState 是一个字符串,其代表 ScanModeConstants


之一。

Visual Basic 用法

Event ScanModeChanged(NewState As String)

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 53
事件
4.5 ScanModeChanged

S7ProSim V5.4
54 操作手册, 07/2011, A5E03432376-02
类型定义 5
5.1 类型定义

类型定义概述

类型 说明

CPURunMode (页 55) 代表 CPU RUN 模式扫描状态的常量


ImageDataTypeConstants 代表 ReadOutputImage 方法的常量
(页 56)
PauseStateConstants (页 56) 代表暂停状态的常量
PointDataTypeConstants 代表 ReadOutputPoint 方法的常量
(页 57)
RestartSwitchPosition (页 57) 代表前面板启动开关位置的常量
ScanModeConstants (页 58) 代表工作模式的常量
tagPauseState (页 58) 代表暂停状态的常量
ScanInfo 常量 (页 59) 代表扫描周期信息的常量

5.2 CPURunMode
enum CPURunMode { CONTINUOUS_SCAN, SINGLE_SCAN, SINGLE_STEP }

说明

代表 CPU RUN 模式扫描状态的常量

元素

CONTINUOUS_SCAN
SINGLE_SCAN
SINGLE_STEP

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 55
类型定义
5.3 ImageDataTypeConstants

5.3 ImageDataTypeConstants
enum {
S7Byte = 2,
S7Word = 3,
S7DoubleWord = 4
}

说明

代表 ReadOutputImage 方法的常量

元素

S7Byte
S7DoubleWord
S7Word

5.4 PauseStateConstants
enum {
Running = 0,
Paused = 1,
Disabled = 2
}

说明

代表暂停状态的常量

元素

DISABLED
Paused
Running

S7ProSim V5.4
56 操作手册, 07/2011, A5E03432376-02
类型定义
5.5 PointDataTypeConstants

5.5 PointDataTypeConstants
enum {
S7_Bit = 1,
S7_Byte = 2,
S7_Word = 3,
S7_DoubleWord = 4
}

说明

代表 ReadOutputPoint 方法的常量

元素
S7_Bit
S7_Byte
S7_DoubleWord
S7_Word

5.6 RestartSwitchPosition
enum {
WarmStart = 0,
HotStart = 1,
ColdStart = 2
}

说明

代表前面板启动开关位置的常量

元素
ColdStartRestart 位置 OB102
HotStartRestart 位置 OB101

WarmStartRestart 位置 OB100

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 57
类型定义
5.7 ScanModeConstants

5.7 ScanModeConstants
enum {
SingleScan = 0,
ContinuousScan = 1
}

说明

代表工作模式的常量

元素

ContinuousScan
SingleScan

5.8 tagPauseState
enum tagPauseState { ENABLED_RUNNING, ENABLED_PAUSED, DISABLED }

说明

代表暂停状态的常量

元素

DISABLED
ENABLED_PAUSED
ENABLED_RUNNING

S7ProSim V5.4
58 操作手册, 07/2011, A5E03432376-02
类型定义
5.9 ScanInfo 常量

5.9 ScanInfo 常量

ScanInfo

ScanInfo 数据类型变量是数据类型为长型的数组。 数组中的各个长型数据类型均定义有


关扫描的一定信息,如 ScanInfo 常量的定义。

表格 5- 1 ScanInfo 常量

组件 含义 定义

NUM_OF_SCANINFO_ELEMEN ScanInfo 返回数组中的元素数。 5


TS
EXECUTION_TIME_NDX 标号 0: 执行时间 (ms) 0
MIN_CYCLE_TIME_NDX 标号 1: 最短执行时间 (ms) 1
LARGEST_CYCLE_TIME_NDX 标号 2: 最长执行时间 (ms) 2
AVERAGE_CYCLE_TIME_NDX 标号 3: 平均周期时间 (ms) 3
IS_PLC_RUNNING_NDX 标号 4: 位存储器: 1 = PLC 正在运 4
行;0 = PLC 未在运行

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 59
类型定义
5.10 错误返回代码

5.10 错误返回代码

错误返回代码 - 概述

错误返回代码 含义
PS_E_BADBITNDX 0x80040205: 字节标号无效
PS_E_BADBYTECOUNT 0x80040202: 对于给定的起始字节标号,数据数组的
大小无效
PS_E_BADBYTENDX 0x80040201: 字节标号无效
PS_E_BADTYPE 0x80040206: 数据类型无效
PS_E_INVALIDCALLBACK 0x80040207: 回叫无效
PS_E_INVALIDDISPATCH 0x80040208: 分派无效
PS_E_INVALIDINPUT 0x80040213: 输入无效
PS_E_INVALIDSCANTYPE 0x8004020B: 扫描类型无效,必须是
ScanModeConstants 中的一个。
PS_E_MAXINSTANCE 0x80040214: 已达到最多可打开的 S7-PLCSIM 实例
数目
PS_E_MODENOTPOSSIBLE 0x8004020C: S7-PLCSIM 无法设置指定的工作模式
PS_E_NOTALLREADSWORK 0x8004020F: 部分读取操作未成功
ED
PS_E_NOTALLWRITESWORK 0x80040210: 部分写入操作未成功
ED
PS_E_NOTCONNECTED 0x80040211: S7ProSim 未与 S7-PLCSIM 连接
PS_E_NOTIFICATION_EXIST 0x8004020D: S7ProSim 已进行通知注册
PS_E_NOTREGISTERED 0x80040209: S7ProSim 未进行 S7-PLCSIM 回叫注

PS_E_NOTSINGLESCAN 0x8004020A: S7-PLCSIM 中未设置单次扫描程序执

PS_E_PLCNOTRUNNING 0x8004020E: S7-PLCSIM 未运行
PS_E_POWEROFF 0x80040212: S7-PLCSIM 已关闭
PS_E_READFAILED 0x80040203: 读取操作失败
PS_E_WRITEFAILED 0x80040204: 写入操作失败
E_FAIL 0x80004005: 未指定的错误
E_INVALID_STATE 0x00008002: 无效状态
S_OK 0x00000000: 成功代码
STG_E_CANTSAVE 0x80030103: 无法保存

S7ProSim V5.4
60 操作手册, 07/2011, A5E03432376-02
索引
GetScanMode 方法, 23
GetStartUpSwitch 方法, 24
GetState 方法, 25

AVERAGE_CYCLE_TIME_NDX, 59

HotStart, 57

设置, 26, 38
BeginScanNotify 方法, 13 HotStartWithSavedValues 方法, 26

C I
ColdStart, 57 ImageDataTypeConstants, 56
设置, 38 IS_PLC_RUNNING_NDX, 59
Connect 方法, 14
ConnectExt 方法, 15

ConnectionError 事件, 51
Continue 方法, 16 LARGEST_CYCLE_TIME_NDX, 59

CPURunMode, 55

D MIN_CYCLE_TIME_NDX, 59

Disconnect 方法, 17

E NUM_OF_SCANINFO_ELEMENTS, 59

EndScanNotify 方法, 18
ExecuteNmsScan 方法, 19 P
ExecuteNScans 方法, 20
Pause 方法, 27
ExecuteSingleScan 方法, 21
PauseStateChanged 事件, 52
EXECUTION_TIME_NDX, 59
PauseStateConstants, 56
PLCSIM,启动, 40, 41
G PLCSimStateChanged 事件, 52

GetPauseState 方法, 22 PointDataTypeConstants, 57

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 61
索引

R W
ReadDataBlockValue 方法, 28 WarmStart, 57
ReadFlagValue 方法, 30 设置, 38
ReadOutputImageT 方法, 32 WriteDataBlockValue 方法, 42
ReadOutputPoint 方法, 34 WriteFlagValue 方法, 44
RestartSwitchPosition, 57 WriteInputImage 方法, 46
WriteInputPoint 方法, 48


S7-PLCSIM,启动, 26, 40, 41 三划
S7ProSim 工作模式

S7-PLCSIM 接口,编程, 8 设置, 37

添加到 VB 项目, 7 获取, 23

概述, 7
S7ProSim Pro 方法 四划
ReadDataBlockValue, 28
为 S7-PLCSIM 编程 S7ProSim 接口, 8
ReadFlagValue, 30
引用, 7
WriteDataBlockValue, 42 方法
WriteFlagValue, 44 BeginScanNotify, 13
SavePLC 方法, 36 Connect, 14
ScanFinished 事件, 52 ConnectExt, 15
ScanInfo 常量, 59 Continue, 16
ScanModeChanged 事件, 53 EndScanNotify, 18
ScanModeConstants, 58 ExecuteNmsScan, 19
SetScanMode 方法, 37 ExecuteNScans, 20
SetStartUpSwitch 方法, 38 ExecuteSingleScan, 21
SetState 方法, 39 GetPauseState, 22
Siemens S7ProSim COM 对象,添加到项目, 7 GetScanMode, 23
StartPLCSim 方法, 40 GetStartUpSwitch, 24
StartPLCSimExt 方法, 41 GetState, 25
HotStartWithSavedValues, 26

T Pause, 27
ReadDataBlockValue, 28
tagPauseState, 58
ReadFlagValue, 30
ReadOutputImage, 32
ReadOutputPoint, 34

S7ProSim V5.4
62 操作手册, 07/2011, A5E03432376-02
索引

SavePLC, 36 写入, 44
SetScanMode, 37 读取, 30
SetStartUpSwitch, 38 位存储器值
SetState, 39 写入, 44

StartPLCSim, 40 读取, 30

StartPLCSimExt, 41 启动开关位置, 57

WriteDataBlockValue, 42 设置, 38

WriteFlagValue, 44 获取, 24

WriteInputImage, 46 返回值, 60

WriteInputPoint, 48
断开连接, 17 八划
事件
五划 ConnectionError, 51
PauseStateChanged, 52
写入
位存储器值 (M), 44 PLCSimStateChanged, 52

数据块 (DB) 值, 42 ScanFinished, 52

输入映像, 46 ScanModeChanged, 53

输入点, 48 事件处理程序, 8
单次扫描程序执行
加载保存的 .plc 文件, 40, 41
ExecuteNmsScan, 19
对 S7ProSim COM 对象的引用
ExecuteNScans, 20
Microsoft Visual Basic, 7
ExecuteSingleScan, 21
Microsoft Visual C#, 7
GetScanMode, 23
Microsoft Visual Studio C++, 7
ScanModeConstants, 58
SetScanMode, 37
六划 定义的常量, 55
在热启动时加载外围 I/O, 26 CPURunMode, 55
扫描执行方法 ImageDataTypeConstants, 56
ExecuteNmsScan, 19 PauseStateConstants, 56
ExecuteNScans, 20 PointDataTypeConstants, 57
ExecuteSingleScan, 21 RestartSwitchPosition, 57
扫描通知, 13, 18 ScanModeConstants, 58
tagPauseState, 58

七划 枚举类型, 55
CPURunMode, 55
位存储器
ImageDataTypeConstants, 56

S7ProSim V5.4
操作手册, 07/2011, A5E03432376-02 63
索引

PauseStateConstants, 56 CPURunMode, 55
PointDataTypeConstants, 57 ImageDataTypeConstants, 56
RestartSwitchPosition, 57 PauseStateConstants, 56
ScanModeConstants, 58 PointDataTypeConstants, 57
tagPauseState, 58 RestartSwitchPosition, 57
ScanModeConstants, 58
tagPauseState, 58
九划
保存 .PLC 文件, 36
持续扫描程序执行 十二划
GetScanMode, 23 暂停状态
ScanModeConstants, 58 设置, 16, 27
SetScanMode, 37 获取, 22
类型定义, 55
CPURunMode, 55
十三划
ImageDataTypeConstants, 56
数据块 (DB) 值
PauseStateConstants, 56
写入, 42
PointDataTypeConstants, 57
读取, 28
RestartSwitchPosition, 57
概述, 7
ScanModeConstants, 58
简介, 7
tagPauseState, 58
钥匙开关位置 错误返回代码, 60
设置, 39
获取, 25
项目引用, 7

十划
读取
位存储器值 (M), 30
数据块值 (DB)T, 28
输出, 34
输出映像, 32

十一划
常量, 55

S7ProSim V5.4
64 操作手册, 07/2011, A5E03432376-02

You might also like