采用PLC作为通信控制设备,解决变压器信号远程传输难题
在某电厂110kV变压器改造过程中,针对变压器现场信号多、与后台传输距离远等特点,保定天威集团特变电气有限公司的研究人员许金红,在2021年第1期《电气技术》上撰文,提出并采用通过可编程逻辑控制器将变压器二次开关量信号、模拟量信号转化成数字信号再经由光纤通信传到远方后台的方法,成功解决了实际困难。
在某电厂110kV变压器改造过程中,二次信号的远程传输中发现3个难题:①新增的变压器本体二次信号较之前增加很多,增设电力电缆困难;②变压器与后台测控系统的传输距离较远(800m),干扰源较多,模拟量信号衰减大,容易失真;③后台系统沿用以前老式的监控系统,必须考虑新变压器与老式后台系统的兼容问题。
考虑到以上几点,本文中提出对变压器本体二次信号采用可编程逻辑控制器(programmable logic controller, PLC)转化成数字信号,并更换为通过光纤传输数字量,由光纤传输到达监控室之后再将数字信号转化成模拟量和开关量,实现与后台系统的对接。该项目具有节省成本和安全可靠的优点。
1 系统组成及原理
1)变压器信号采集量
本项目中从变压器本体采集并需输送的信号包含光纤测温信号5路,全部为4~20mA模拟量;油温、油位、瓦斯报警、光纤报警开关量信号15路和1路PT100温度远传信号。采集到的信号传输到控制室后,15路开关量和5路模拟量仍保留不变,传至后台的1路PT100经转化为4~20mA模拟量后接入监控系统。
2)硬件组成
硬件设备由PLC及其扩展模块、光电交换机、单模光纤等组成。
根据设备采集及输出的开关和模拟量数量,项目中采用两台西门子ST40型CPU模块、一个EM AI08模拟量输入模块、两个EM AQ04模拟量输出模块,一个EM AR02热电阻模块,完成模数转换和通信功能。
其中一台PLC放置在变压器端控箱内,用来将本体的二次开关量和模拟量转化为数字信号,另一台置于控制室,用于将数字信号转换回开关量和模拟量。光电交换机采用工业级MIENI1203型,用来将PLC转化的数字电信号转成光信号或将光信号转化回电信号。
3)工作原理
本系统主要工作过程是通过以下途径实现的:PLC作为主要数据采集和模数转化元件,首先将采集到的测控信号通过PLC转化成数字量,再经光纤交换机把电信号转换成光信号传输出去;在后台通过另一台光电交换机接收光信号,并通过后台的光电交换机接收后由后台PLC把信号转换回模拟量和开关量,两台PLC通过以太网、光纤网络组建网络通信,通过以太网协议实现两台之间的信息发送和接收。系统组成框图如图1所示。
图1 系统组成框图
2 软件编程测试
西门子S7-200 SMART CPU提供一个以太网端口,因此两台PLC可以方便地通过以太网口连接至光纤设备实现信息交换。本项目以太网通信协议采用TCP通信协议。TCP是一个因特网核心协议,在以太网通信的主机上运行的应用程序之间,TCP提供了可靠、有序并能够进行错误校验的消息交互功能。TCP能保证接收和发送的所有字节内容和顺序完全相同。
对S7-200 SMART之间的TCP通信,双方通过调用开放式用户通信指令库中的指令即可实现。
2.1 变压器端PLC编程
1)设置变压器端PLC IP地址
将变压器端PLC地址设置为192.168.0.101,如图2所示。
图2 设置变压器端PLC IP地址
2)建立变压器端PLC TCP连接
调用指令库中的TCP_CONNECT指令建立TCP连接,参数设置如图3所示。设置连接后台PLC地址为192.168.0.102,远端端口为2001,本地端口为5000,连接标识ID为1。
图3 设置TCP_CONNECT指令参数
3)调用发送数据指令
调用TCP_SEND指令发送以VB0为起始地址,数据长度为VW100内存储数据,发送到连接ID为1指定的后台端PLC。变压器端TCP_SEND指令的参数设置如图4所示。
图4 设置TCP_SEND指令参数
2.2 后台端PLC编程
1)设置后台端PLC IP地址
参照图2,设置IP地址为192.168.0.102。
2)建立后台端TCP连接
参照图3,调用TCP_CONNECT指令建立TCP连接。设置变压器端地址为192.168.0.101,远端端口为5000,本地端口为2001,连接标识ID为1。
3)后台端接收数据
后台端PLC调用TCP_RECV指令接收变压器端PLC发送的数据。接收的缓冲区长度为VW100内存储数据,数据接收缓冲区以VB1000为起始。后台端接收数据指令的设置如图5所示。
2.3 数据传输测试结果
按照图2—图5进行硬件连接和测试,并对PLC编程,进行数据传输试验。在图6中,VW0是变压器端发送的开关量数据,VW50是变压器端发送的1个模拟量数据,VW100是发送的数据长度。图7中,VW1000是后台端接收的对应开关量数据,VW1050是后台端接收的对应模拟量数据,VW100是接收的数据长度。
通过变压器端PLC发送数据和后台端PLC接收数据一致性测试,数据结果显示:开关量数值完全相同;模拟量数值由于模拟量处在动态变化中以及传输的稍有滞后,结果稍有偏差,但从数值看差值很小,仅万分之三左右的误差,满足监测精度,达到了预定目标,证明方法可行。
图5 后台端TCP_RECV指令设置
图6 变压器端发送的数据
图7 后台端接收的数据
3 结论
通过本项目的软硬件实施,验证了其数据的准确性。系统运行可靠,获得了成功。本项目具有以下几方面的显著优点:
1)采用PLC作为通信控制设备,软、硬件设计简单,响应迅速,运行可靠。
2)采用光纤/以太网通信的方式,避免了铺设大量的电力电缆,可节省大量人力、物力,从而更节材。
3)采用光纤传输的方式,传输距离长,环境适应性强。
本文编自2021年第1期《电气技术》,论文标题为“基于PLC的光纤通信技术在变压器远程监控中的应用”,作者为许金红。
LabVIEW通过以太网与西门子S7-1200PLC通信,制作你自己的WINCC
原创不易,请勿抄袭!
很多人可能听过或者用过这个软件,其实简单来说就是一个信息采集的系统,在工业中,对应的就是人机界面,类似于WINCC,INTOUCH,组态王等等,近几年在国内很火,今天和大家分享一下。
其实,建立自己的人机界面的方式有很多种,其中包括文中所讲的Labview,除此之外作者还使用过VB运用prodave驱动或者Libnodave驱动连接PLC数据制作画面,也非常好用。都是非常好用且有趣的应用,而且使用这些小众化的方式可以使得编出来的人机界面很高大上,最重要的是没有刻苦学习过的人无法更改或者判断故障,也就是不可替代性!搞工控的都知道不可替代性代表了什么,尤其是在每年数万电气自动化毕业生就业的前提下。
除了上述的目的,我觉得对于这些应用,一般的工控人员来讲只需要简单了解,需要用的时候再去研究学习即可,毕竟自动化知识不是纸上谈兵,没有实际应用再好的学生也学不来。
好吧,开始我们今天的案例!
一 概述
西门子S7-1200 PLC支持多种协议通过以太网通讯方式,如OPC、TCP、S7、MODBUS-TCP等。TCP方式相比其它协议,具有更多的灵活性,更快的数据响应等优点,本人即介绍LabVIEW通过TCP方式与S7-1200 PLC通信。
S7-1200 PLC的TCP通信方式,称之为“开放式用户通讯”,通过以太网发送或读取数据。
二 测试硬件和软件
硬件包括:
博途S1200PLC:CPU 1215C和PC一台;
软件包括:
博途 TIA V14 SP1和LabVIEW 2012 或以上版本
编程思路分为两步;
1PLC编程:配置PLC --> 添加发送和接收数据块 --> 发送数据程序 --> 接收数据程序 --> 编译下载
2LabVIEW编程:创建TCP连接 --> 接收或发送数据 --> 关闭连接
三 操作步骤
3.1 CPU配置
1 打开 TIA Portal,创建项目,添加CPU为1215C。
2 双击“设备组态”,切换到“设备视图”,点击CPU,右键选择属性。
3 在常规栏,选择PROFINET 接口[X1]/以太网地址属性,设置CPU的IP地址,本例设置为 192.168.0.10,如下图所示:
4 在常规栏,选择系统和时间存储器属性,启用系统存储器字节和时钟存储器字节,如下图:
5 如果传输的数据量大,且实时性要求高,可选择通信负载属性,把由通信引起的循环负荷由默认为20%,提高到 50%。
3.2 添加数据块
1 添加发送数据块。该数据块用于存储PLC向LabVIEW发送的数据。点击程序块/添加新块,在打开的对话框中选择数据块,输入名称,如 PlcSendData ,类型可选择全局DB。注意如果不一次性传输大量数据,可以直接使用PLC变量,单次发送一个数据,不需要创建数据块。
2 打开该数据块PlcSendData ,添加数据,名称如 ArySendData,选择数据类型Array of Byte,即字节数组,数组长度设置为10。
3 修改数据块属性。选中数据块PlcSendData ,右键属性,在属性栏去掉优化的块访问,以支持绝对寻址模式。
4 添加接收数据块。该数据块用于存储LabVIEW向PLC发送的数据。数据块名称PlcRecvData,数据类型Array of Byte,操作方法同步骤1、2、3。
3.3 编写发送数据程序
1 打开 Main 程序
2 添加指令通信/开放式用户通信/TSEND_C到程序段1,调用选项的数据块名称采用默认。
3 配置 TSEND_C 的通讯参数。选中 TSEND_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定,连接数据选择新建,系统会自动创建一个连接数据 ,如PLC_1_Send_DB。输入伙伴的IP地址,如192.168.0.12。由伙伴主动建立连接 ,PLC的端口可保留默认的2000。连接类型为TCP,连接ID采用默认值。(注:所谓伙伴即与PLC通信的另一方,可以为上位机PC、HMI等)
4 配置 TSEND_C 的输入输出。TSEND_C在检测到参数 REQ 上升沿时执行发送作业,因此每次发送数据时,都应在REQ上产生一个脉冲,此处为了简便,调用系统时钟 Clock_10Hz(每秒10次),周期性的发送数据。参数DATA为待发送的数据,此处调用数据块 PlcSendData。注意 DATA采用纯符号寻址时,发送 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。
3.4 编写接收数据程序
1 添加指令通信/开放式用户通信/TRCV_C 到程序段2,调用选项的数据块名称采用默认。
2 配置 TRCV_C 的通讯参数。选中 TRCV_C,右键属性,切换到组态页,选择连接参数属性。伙伴项选择未指定,连接数据选择3.3 步骤自动创建的数据,如PLC_1_Send_DB,切记不要选择新建 (此例的通讯连接为自动创建,因此发送与接收共用一个连接,必须保持一致才能正常通讯)。
3 配置 TRCV_C 的输入输出。TRCV_C在检测到参数 EN_R 为1时启动接收。参数DATA为数据接收区,此处调用3.2步骤所创建的数据块PlcRecvData。注意DATA采用纯符号寻址时,接收 LEN 应设置为0,而采用绝对寻址时,应设置为实际发送数据的长度。通讯状态参数 DONE\BUSY等按需要连接。具体参数信息请查看帮助文档。
4 为了判断PLC是否正确接收到LabVIEW所发送的数据,可通过以下两种方法测试。
a、将第3.3 的数据发送区设置为与数据接收区相同的数据块,即 PlcRecvData,使PLC把接收到数据发送回LabVIEW。
b、添加 MOVE 指令采用数据移动的方法完成此功能,如下所示:
3.5 编写LabVIEW程序
1) 创建TCP连接TCP OpenConnection。输入PLC的IP地址 192.168.0.10 和端口号2000。
2) 读取数据TCP Read。输入读取长度10(PLC程序的发送数据块长度为10个字节)。
3) 发送数据TCP Write。
4) 关闭连接TCP Close Connection。
5) 前面板如下。点击 Write,把数据WriteData写入PLC,同时PLC把该数据发回LabVIEW,通过 ReadData显示。如果ReadData数据与WriteData一致,即通信正常。
3.6 下载程序,连接测试
哎呀妈呀,累死我了,大家点个赞支持我一下呗!
喜欢的话请点赞并分享,您的支持是我坚持下去的动力!送人玫瑰,手有余香!
相关问答
stuxnet病毒的攻击流程是什么
[回答]染OB1时,它会执行以下行为:增加原始模块的大小;在模块开头写入恶意代码;在恶意代码后插入原始的OB1代码。Stuxnet也会用类似于感染OB...Stuxn...