西门子电源6ES7307-1BA01-0AA0现货供应
在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用**语言开发一个简易实用的通信程序。使用Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用bbbbbbs API函数,另一种是用VB支持的通信控件 MSCOMM。以下介绍使用通信控件方式实现通讯
1.硬件
采用SC-09编程电缆,连接PC串口与PLC编程口实现通讯。
2.PLC编程口的通信协议简介
通信格式:
波特率9600,偶校验,8位数据位,一位停止位。 具体请参考有关资料,以下举例说明其通讯格式
1)、DEVICE READ(读出软设备状态值)
计算机向PLC发送:
3.具体程序说明
MSComm控件简介用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的**通信工具。Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。
数据读与写采用函数bbbbb和output
(1)窗口加载程序
Private Sub bbbb_Load()
MSComm1.CommPort = 1 ‘选择COM1口
MSComm1.Settings = "9600,e,7,1"
If mscomm1.portopen=false then mscomm1.portopen=true
End Sub
(2)数据读取子程序:
Public Function GetData(ByVal StartAddress As bbbbbb, ByVal GetBytes As Integer, ByVal Hex_Bytes As bbbbbb) As bbbbbb
MSComm1.bbbbbLen = GetBytes * 2 + 4
MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)
‘传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码
GetData = MSComm1.bbbbb
MSComm1.InBufferCount = 0
MSComm1.bbbbbLen = 0
End Function
很多用户谈“干扰”色变,觉得干扰既看不到也摸不着,排除干扰引起的故障也毫无头绪。的确,由不同干扰引起的故障现象多种多样,有通信不稳定掉站的,有模块读数不准确的,也有烧毁模块的……下面咱们来看看这个用户碰到了什么奇怪现象。
前两天听一个用户抱怨S7-300 CPU的数据丢失,但重新上电后CPU又可以运行,不得其解。与用户沟通后,可以判定丢失的只是CPU的过程数据,而存储于MMC卡中的CPU程序并没有丢失,否则重新上电后CPU是不能运行的。这样的现象大部分是由于CPU受到干扰造成的,CPU进入故障模式,所有的LED灯全闪,所有通信中断,不控制输出信号,形象地说就是CPU死机了,像PC的蓝屏一样,这也是一种保护模式,防止设备误动作而造成不必要的损失。这时CPU的内部数据丢失,再次上电后(可能需要一段释放时间),MMC中存储的程序复制到CPU的工作存储器后CPU运行,但是所有的过程数据被初始化,诊断缓冲区的数据保持,过程分析应该是这样的。
什么样的情况会造成CPU进入故障模式呢?首先需要了解一下CPU内部的逻辑地接线,如图1所示,
缺省的情况下,PLC的逻辑地与供电系统M端以及PE相通,在接地良好且有等电位连接的情况下,各个分散的设备之间电位相同,便于互连。但是如果接地不好,例如共模干扰或其他干扰通过地线传导,这样干扰将会影响到PLC的逻辑地的点位,使之不能提供一个参考点位,造成CPU数据的混乱,从而使CPU进入故障模式。这种情况下,将PE与PLC的逻辑地分开及所说的浮地(CPU31X不能分开),将会避免干扰进入CPU的数据总线,但是在多个PLC连接时要注意之间的点位差是否在允许的范围内。
另外一种情况也需要注意,例如24V的电源不但给CPU供电,还给一些中间继电器供电,一些情况下,线圈在断开后释放能量,在电源回路上产生的高电压将影响到CPU的逻辑地,从图1种可以看到,高电压干扰直接影响到逻辑地,即使将PE与PLC的逻辑地分开也没有多少作用,因为与PE没有关系,有没有干扰可以使用示波器直接连接PLC的电源侧进行测量,如果有干扰,可以将CPU的电源与继电器控制回路分开,也可以使用二极管作为释放高电压,在西门子的手册可以找到这些资料,图2为使用二极管和齐纳二极管连接的释放回路,这些保护回路是对触点的保护,使用齐纳二极管也可以起到钳制电压的作用。
希望大家通过这个故事不仅可以解决与此相同故障,还能够掌握一些解决干扰的问题的思路和方法
通电后,西门子S7-400 CPU 或 CPU 318-2 开始执行用户程序之前,启动程序已开始工作。在启动程序中,用户可以对循环程序通过编程启动 OB 来进行相应地定义预设置。
如下有三种启动方式:
启动模式 | 描述 |
启动(暖启动) | 程序处理重新启动,数据继续保持。 |
冷启动 | 当前数据丢失,程序处理以初始值再次启动。 |
热启动 | 一旦供电恢复,程序从断电时的值开始继续工作。 |
在操作模式“STARTUP”中:
程序在启动 OB 中运行( OB 100 为启动(暖启动),OB101 为热启动,OB102 为冷启动) 。
不可用时间和报警控制程序运行。
时间保持更新。
运行时间表在运行。
信号模块上的数字输出被锁定,但可以通过直接存储来设置。
启动(暖启动):
图 01
在启动(暖启动)中, 程序处理以“基本设置”内系统数据和用户地址范围为程序启动点来重启。
过程映像区,非保持存储器,定时器和计数器都重新设置。保持的存储器,定时器,计数器各自都保留其*后的有效数值。所有以“未保留”的属性参数化的数据块被复位为初始值。其他数据块各自保留其*后的有效数值。
程序处理从头开始再次重新启动 (启动 OB 或 OB1) 。
如果供电中断,暖启动只可用于缓冲模式。如若运行的 CPU 没有后备电池,当开关接通或 POWER OFF 后重新上电时,CPU 将自动复位并重新启动(暖启动)。
如果系统不要求完全复位,那么启动(暖启动)一直是可行的。在如下情况发生后,只有启动(暖启动)可行:
完全复位。
在CPU 的 STOP 模式下载入用户程序。
USTACK/BSTACK 溢出。
通过 POWER OFF 或模式开关使启动(热启动)被中断。
重新启动超出参数化中断的时间限制。
启动(暖启动)的操作命令:
用户可以触发手动启动(暖启动):
通过模式选择开关
(如果可以,CRST/WRST 开关必须设置为 CRST)
通过PG的命令菜单或通讯功能
(模式选择开关需设置在 RUN 或 RUN-P 位置).
在 POWER ON 时,下面的状态会触发自动启动(暖启动):
POWER OFF 时 CPU 不在 STOP .
模式选择开关设置到 RUN 或者 RUN-P.
没有将 POWER ON 的参数设置为自动热启动或自动冷启动。
CPU 的启动(暖启动)没有因电源故障而引起中断(不依赖于启动的参数设置)
冷启动:
图 02
冷启动时,主存储器中 SFC 生成的数据块都被删除,其他数据块从装载存储器中获取默认值。
无论是否设置数据保持,过程映像区,定时器,计数器,指示器都将在程序(装载存储器)中重新设置到初始值。
输入的过程映像区被读入,STEP 7 用户程序开始重新启动 (OB102 或 OB1).
冷启动的操作命令:
只能从 PG 触发手动冷启动。
如果参数已相应地定义于 STEP 7 中,某些 S7-400 CPU 可通过模式选择开关和启动模式转换 (CRST/WRST) 来执行冷启动。
热启动:
图 03
在 RUN 状态下电源中断后再次供电,S7-400 CPU 通过初始化路径然后自动执行热启动。重新热启动后,用户程序在中断点继续运行 (定时器,计数器,指示器不被重新设置,当前数值保存在 DB 块中)。在断电前未执行的用户程序被称为剩余循环程序。剩余循环程序同时包括时间和报警控制程序部分。
热启动中,所有数据包括过程映像区都执行它们*后的有效数值。
程序在中断点继续执行命令。
在当前周期完成之前,输出不会改变。
如果供电中断,热启动只可适用于缓冲模式。
原则上来说,如果用户程序在 STOP 状态下没有改变 (例如装载一个修改过的块) 或者因为某些原因而不需要进行启动 (暖启动),那么,热启动是允许的。
热启动的操作命令:
如果相关参数已设定于 CPU 中,并且是如下原因造成 STOP, 那么手动热启动是可行的:
模式选择器从 RUN 转换到 STOP。
STOP 已被用户编程,STOP 在调用 OB 后未被载入。
STOP 状态包含于 PG 或某个通讯功能。
用户可以触发热启动:
通过模式选择开关来选择。
CRST/WRST 需设置在 WRST。
通过 PG 菜单命令或通过通讯功能 (模式选择开关设置到 RUN 或 RUN-P)
手动热启动已在 CPU 中参数化。
自动热启动可在 POWER ON 状态下被触发,如果:
在 POWER OFF 状态下,CPU 不在 STOP 或 HALT。
模式选择开关设置到 RUN 或 RUN-P。
自动热启动已为 POWER ON 在 CPU 内参数化。
在自动热启动中,CRST/WRST 的转换是无效的。