S7-200 SMART CPU 固件版本 V2.0 及以上版本的 CPU 可实现CPU、编程设备和HMI(触摸屏)之间的多种通信:
— CPU与编程设备之间的数据交换。
— CPU与HMI之间的数据交换。
— CPU与其他S7-200 SMART CPU之间的PUT/GET通信。
S7-200 SMART CPU 以太网连接资源如下:
— 1个连接用于与STEP7 Micro/Win SMART软件的通信。
— 8个连接用于CPU与HMI之间的通信。
— 8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET主动连接
— 8个连接用于CPU与其他S7-200 SMART CPU之间的PUT/GET被动连接
S7-200 SMART CPU提供了PUT/GET 指令,用于S7-200 SMART CPU之间的以太网通信(PUT/GET 指令格式见 表 1)。PUT/GET 指令只需要在主动建立连接的 CPU 中调用执行,被动建立连接的 CPU不需要进行通信编程。PUT/GET 指令中TABLE 参数用于定义远程CPU的 IP地址、本地CPU和远程 CPU的数据区域以及通信长度(TABLE 参数定义见 表 2)。
表 1 PUT和GET 指令:
LAD/FBD
|
STL |
描述 |
|
PUT TABLE |
PUT 指令启动以太网端口上的通信操作,将数据写入远程设备。PUT 指令可向远程设备写入最多 212 个字节的数据。 |
|
GET TABLE |
GET 指令启动以太网端口上的通信操作,从远程设备获取数据。GET 指令可从远程设备读取最多 222 个字节的数据。 |
表 2 PUT和GET 指令的TABLE参数定义:
字节偏移量
|
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
0 |
D1 |
A2 |
E3 |
0 |
错误代码4 |
|||
1 |
远程 CPU的 IP地址 |
|||||||
2 |
||||||||
3 |
||||||||
4 |
||||||||
5 |
预留(必须设置为0) |
|||||||
6 |
预留(必须设置为0) |
|||||||
7 |
指向远程 CPU 通信数据区域的地址指针 |
|||||||
8 |
||||||||
9 |
||||||||
10 |
||||||||
11 |
通信数据长度5 |
|||||||
12 |
指向本地 CPU 通信数据区域的地址指针 |
|||||||
13 |
||||||||
14 |
||||||||
15 |
1 D :通信完成标志位,通信已经成功完成或者通信发生错误。
2 A :通信已经激活标志位。
3 E :通信发生错误,错误原因需要查询 错误代码4。
4 错误代码 :见表 3 PUT 和 GET 指令TABLE 参数的错误代码。
5 通信数据长度 :需要访问远程 CPU通信数据的字节个数,PUT 指令可向远程设备写入最多 212 个字节的数据,GET 指令可从远程设备读取最多 222 个字节的数据。
表 3 PUT 和 GET 指令TABLE 参数的错误代码:
错误代码
|
描述 |
0 |
通信无错误 |
1 |
PUT/GET TABLE参数表中存在非法参数:
|
2 |
同一时刻处于激活状态的 PUT/GET 指令过多(仅允许 16 个) |
3 |
无可以连接资源,当前所有的连接都在处理未完成的数据请求(S7-200 SAMRT CPU主动连接资源数为 8 个)。 |
4 |
从远程 CPU 返回的错误:
|
5 |
与远程 CPU 之间无可用连接:
|
6-9 |
预留 |
S7-200 SMART CPU 以太网端口含有 8 个PUT/GET 主动连接资源和 8 个PUT/GET 被动连接资源。例如:CPU1 调用 PUT/GET 指令与 CPU2 ~ CPU9 建立8主动连接的同时,可以与 CPU10 ~ CPU17 建立8被动连接(CPU10 ~ CPU17 调用 PUT/GET 指令),这样的话 CPU1 可以同时与16台 CPU(CPU2 ~ CPU17)建立连接。关于主动连接资源和被动连接资源的详细解释如下:
1、主动连接资源和被动连接资源在下面的例子中,CPU1 为主动端,其 IP 地址为192.168.2.100,调用 PUT/GET 指令;CPU2 为被动端,其 IP 地址为192.168.2.101,不需调用 PUT/GET 指令,网络配置见图 1 。通信任务是把 CPU1 的实时时钟信息写入 CPU2 中,把CPU2 中的实时时钟信息读写到 CPU1 中。
图 1 CPU通信网络配置图
CPU1 主程序中包含读取 CPU 实时时钟、初始化 PUT/ GET 指令的 TABLE 参数表、调用 PUT 指令和 GET 指令等。
图 2 读取 CPU1 实时时钟
注:READ_RTC 指令用于读取 CPU 实时时钟指令,并将其存储到从字节地址 T 开始的 8 字节时间缓冲区中,数据格式为 BCD 码。
图 3 定义 PUT 指令 TABLE 参数表
图 4 定义 GET 指令 TABLE 参数表
图 5 调用 PUT 指令和 GET 指令
CPU2 的主程序只需包含一条语句用于读取 CPU2 的实时时钟,并存储到 VB100 ~ VB107,如图 6 所示。
图 6 读取 CPU2 实时时钟
为了更好地理解 PUT/GET指令的编程,可参考下面的例程。
注意:此指令库/程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。