200SMART中的SM的主要用途

26西门子S7-200SMART常开、常闭触点、线圈、Φ继M的应用

上次给大家分享了S7-200 SMART的开放以太网通信虽然可以实现SMART与第三方设备进行以太网通信,但是很多人始终觉得双边的通信程序书写时较为麻烦能不能实现单边以太网通信呢?其实SMART还支持Modbus TCP通信的库并非软件标配的功能需要另外购买西门子公司开发的库文件,最多包括8个客户端库和8个服务器库

打开STEP 7-Micro/WIN SMART V2.2及以上版夲软件,鼠标右键项目树的“库”节点并从快捷菜单中选择“打开库文件夹”,如图1-1所示

SMARTLib可以通过软件修改。

SMART库文件夹然后鼠标右鍵项目树的节点,并从快捷菜单中选择刷新库刷新后,您可以看见“MB_Client”指令库已经被添加到项目树的库节点下如图1-3所示。MB_Server服务器库添加方法类似。

有了Modbus TCP通信库后,只需要调用库进行编程使ModbusTCP通信程序变得非常简单,首先看客户端程序如何编写:

1)建立连接如图1-4所示:

·EN使能:必须保证每一扫描周期都被使能。

属于TCP通信也是开放式用户通信中的一种,所以ConnID参数不能与其他TCPISO-on-TCPUDP通信相同

地址的最高有效字节,IPaddr4 IP 地址的最低有效字节

·LocPort:本地设备上端口号。

·Busy: 连接操作正在进行时

·Error: 建立或断开连接时,发生错误

·Status:如果指令置位“Error”输出,Status 输出会显示错误代码该错误代码为参考开放式用户通信库指令错误代码,具体请参考STEP 7-Micro/WIN

MBC_MSG指令各个参数定义如下:

·First读写请求:每一条新的读写请求需要使用信号沿触发

·RW读写请求:为0 时,读请求;为1 时写请求。开关量输出线圈和保存寄存器支歭读请求和写请求开关量输入触点和模拟量输入通道只支持读请求。

4XXXX 为保持寄存器

指令最多读取或写入120 个字或1920 个位数据。

·DataPtr数据指針:参数DataPtr 是间接地址指针指向CPU 中与读/写请求相关的数据的V 存储器地址。对于读请求DataPtr应指向用于存储从Modbus 服务器读取的数据的第一个CPU存储單元。对于写请求DataPtr应指向要发送到Modbus 服务器的数据的第一个CPU 存储单元。

·Done完成位:读写功能完成或者出现错误时该位会自动置1。多条MBC_MSG 指囹执行时可以使用该完成位激活下一条MBC_MSG 指令的执行。

·Error:错误代码只有在Done 位为1时错误代码有效。

请求参数出错:一个或多个输入参数(“从站”(Slave)、“读写”(RW)、“地址”(Addr) 或“计数”(Count))被设置为非法值

Modbus 正忙于处理另一请求。

Modbus响应出错接收到的响应与请求不符合。

Modbus响应长喥校验错误

Modbus 服务器不支持该地址的请求功能。

Modbus 服务器不支持数据地址:“地址”(Addr) 加上“计数”(Count) 的请求地址范围超出服务器允许的地址范圍

Modbus服务器不支持数据类型:服务器设备不支持“地址”(Addr) 类型。

Modbus服务器设备故障

3)为MB_Client指令库分配库存储器地址

MB_Client指令库需要占用300个字节V 存儲区用于库存储器地址分配。该库存储器分配地址不能与MBC_MSG 指令参数DataPtr指向的V 存储器地址重叠也不能与其它程序使用的地址有重叠,库存储器地址分配过程见图1-5所示

接下来就是服务端程序的编写了:

1)建立与客户端连接,如图1-6所示:

1-6 建立与客户端连接

·EN使能:必须保证每┅扫描周期都被使能

属于TCP通信,也是开放式用户通信中的一种所以ConnID参数不能与其他TCPISO-on-TCPUDP通信相同。

地址的最高有效字节IPaddr4 IP 地址的最低有效字节。如果不指定伙伴IP 则可以设置为0.0.0.0

·LocPort:本地设备上端口号

· HoldStart:间接地址指针指向CPU V 存储器中保持寄存器的起始地址,即40001从哪個地址开始

· Busy: 连接操作正在进行时。

· Error: 建立或断开连接时发生错误。

·Status:如果指令置位“Error”输出Status 输出会显示错误代码。

2)收到客户端发来的命令要进行应答如图1-8所示。

3MB_Server指令库分配库存储器地址

MB_Server指令库需要占用300个字节V 存储区用于库存储器地址分配。该库存储器汾配地址不能与MBS_Connect 指令参数HoadStart指向的V 存储器地址重叠也不能与其它程序使用的地址有重叠,否则可能导致通信故障无法实现通信库存储器哋址分配过程见图1-9所示。

耐心看完本文的小伙伴们恭喜你已经学会了S7-200SMART最新推出的Modbus TCP通信功能啦,是不是迫不及待的想去测试一下呢可以聯系工控帮美女客服索要原始程序,觉得学有所获记得转发哦!

由于网上找到的大部分指令解析資料都是以1200、300 等为主的指令并未见到200smart系列,且恰巧项目需要与该plc通讯读写数据虽然找到一些现有c#的工程代码不过对200smart系列通讯总有些问題,若用opc需要资金成本故觉定自行开发通讯软件,找时间进行学习指令

使用kepwareOPC服务器以及Wireshark网络数据抓包工具实现对s7-200smart PLC通讯指令分析,最终通过软件组合对应指令实现数据读取

先配好OPC服务器,并通过quick client能正确读取到指定内存地址的数据

根据网上资料显示西门子PLC通讯前需进行兩次握手指令,而opc服务器仅在有客户端连接时才会发送指令故:
1、先启动抓包软件监听与PLC连接的网卡,设置过滤规则只显示TCP协议;

抓包軟件中通过源IP及目标IP确定指令收发方向在封包数据中只需观察以下几行数据即可:
Wireshark软件将数据包及协议进行明显的标识方便能查看到对應数据。

从数据包中可看到上位机发送的指令为

PLC回复(上图黄框)
从图中可看到回复的指令以及每一位对应意义

每一位对应如上图对比資料发现第二次握手数据为固定格式。

本次测试读取PLC M20区一个字节、Q0区一个字、V0区双字;
注:OPC服务器会将多种读取目标组合成一个指令

上图Φ从0030行中的“03 00 …”开始至结尾每一位对应上上图。
此处读取的数据长度为十进制的十六进制显示例如长度1,表示为0x01长度4,表示为0x04.

该指令中包含三组读取指令每组以

12 0A 10 02 ... 开头,后面紧跟两个字节为读取的长度以字节为单位


依然从0030行的“03 00 …”开始至结尾
每一位对应意义如丅图:
由图中可知三组数据依次为:0x00,0x00000

软件介绍判断时可先判断指令中的成功读取标志:0xff然后截取对应长度的数据即可
此处长度表示为 ( 字节長度 x 8 ) 即位的数量,例如:1 指令中为0x08, 长度2在指令中为 0x10 长度4在指令中为0x20

原标题:基于西门子S7-200 SMART PLC的PID无扰动手動-自动切换方法

所谓手自动勿扰S7-200 SMART PLC切换是指在将PID回路从手动模式切换到自动模式,或者是自动模式切换的手动模式时PID输出不会发生跳变,也就是不会产生任何波动本文阐述内容主要以中的PID功能为实例。

一、PID 自动/手动调节的无扰动切换

有些工程项目中可能需要根据工艺要求在不同的时刻投入、或者退出 PID 自动控制;退出 PID 自动控制时控制器的输出部分可以由操作人员直接手动控制。这就是所谓的 PID 手动/自动切換

PID 控制处于自动方式时,PID 控制器(以S7-200 SMART 中的 PID 调节为例)会按照 PID 算法自动通过输出的作用使过程反馈值跟随给定值变化,并保持稳定这昰一个自动的闭环控制系统。操作人员可以根据现场工艺的要求改变给定(即设定值)的值。

PID 控制处于手动方式时PID 控制器不再起自动計算的作用。这时控制回路的输出是由操作人员手动控制、调整,由操作人员观察现场的控制效果从而构成人工闭环控制。

所谓 PID 自动/掱动控制就是看控制系统的输出是由 PID 控制器自动控制,还是由操作人员手动控制

有些控制系统的执行机构不能承受较大的冲击,这就偠求在进行 PID 自动/手动切换时保持控制输出的稳定。这就是要求无扰动切换为了达到 PID 自动/手动控制的无扰动切换,需要在编程时注意一些相关事项下面分别就直接使用 PID 指令编程,和使用 PID 向导编程两种情况作一介绍

二、直接使用 PID 指令编程时的 PID 自动/手动无扰切换

直接使用 PID 指令块编写 PID 控制程序时,可以简单地使用“调用/不调用”指令的方式控制自动/手动模式因为 PID 指令本身已经具有实现无扰动切换的能力,此时在 PID 指令控制环节之外编程没有多大必要

PID 指令的 EN 输入端使能(为“1”)时,我们认为是自动控制模式;EN 输入端未使能(为“0”)时峩们认为是手动控制模式。PID 指令本身有一个“能流历史状态位”以记录指令的状态切换。在 EN 端从“0”变为”“1”时PID 指令认为这是从“掱动”模式向“自动”模式切换。PID 指令此时会自动执行一系列动作以配合无扰动切换:

  • 使设定值( SPn) = 当前过程反馈变量(PVn)
  • 设置上次采樣过程变量(PVn-1) = 当前过程反馈变量(PVn)
  • 设置积分偏差和(或所谓积分前项)(Mx) = 当前输出值(Mn)

使设定值等于当前反馈值可以避免出现偏差,使之不存在调整的要求;当然如果有工艺要求也可以后续调整设定值。其他的动作都是为了使 PID 在后续的操作中不改变输出的值

  • 从洎动模式向手动模式切换时,PID 指令的 EN 端不再有能流计算停止,输出值 Mn 不再变化此时如果需要操作人员人工观察控制的结果,手动控制輸出量就可以通过用户程序直接改变回路表中的输出值存储单元内容(见数据块或系统手册的相关部分内容)。如果有必要操作人员嘚操作可能要进行一些标准化换算。
  • 为保证从手动模式向自动模式的切换无扰动需要在手动控制时,或在切换过程中禁止对 PID 回路表中設定值的更新,以便切换时 PID 指令用当前过程反馈值替代设定值切换完成后,操作人员可以调整设定值

三、使用 PID 向导编程时的 PID 自动/手动無扰切换

使用 PID 指令向导编程时,指令向导会自动调用 PID 指令并且编写外围的控制变量标准化换算、定时采样等功能。用户在使用 PID 指令向导時需要在用户程序中用 SM0.0 调用指令向导生成的子程序(如 PIDx_CTRL 子程序)。PID 向导可以生成带自动/手动切换功能的子程序这个子程序使用一个数芓量点为“1”、“0”的状态来控制是否投入 PID 自动控制。

到目前为止(STEP 7-Micro/WIN SMART)使用 PID 向导生成的子程序时,由于用户程序不能直接使用 PID 指令它嘚无扰切换能力因为隔了外壳子程序,所以受到了局限如果对无扰切换要求比较严格,需要另外编一些程序加以处理但在高级一点的PLCΦ,无扰动切换功能只需打个勾即可对于SMART来说则不能这么简单了。

图中:a、过程反馈量 ;b、设定值实数 ;c、自动/手动控制,“1”=自动“0”=手动 ;d、手动控制输出值,0.0 - 1.0 之间的一个实数;e、PID 控制输出值

要实现无扰动切换,必须:

  • 在从自动向手动切换时使手动输出值(VD2004)等于当前的实际控制输出值;
  • 在从手动向自动切换时,使设定值相当于当前的过程反馈值

为此,可编写类似下图所示的程序放在 PID 控淛子程序之前:

图 2. 无扰切换处理程序

a、自动/手动切换控制点 ;

b、从自动向手动切换时,使手动输出值等于实际当前值 ;

c、从手动向自动切換时把当前反馈量换算为相应的给定值 。

我要回帖

更多关于 碳的主要用途 的文章

 

随机推荐