摘要:介绍了PLC使用Socket接口将采集的工业自动化系统中的数据传送到服务器,数据经过编码解码、校验后提供给手机客户端、数字孪生、智慧水务等水处理信息化系统应用,这种方式可以更加灵活地将数据传送到指定服务器,以供各种信息化系统使用。
加入收藏
随着我国工业化的进步,越来越多的污水处理厂需要在生产管理过程中借助各种信息化平台(如手机客户端、数字孪生、智慧水务)来调整生产运行工艺参数,分析生产过程中可能产生的不利影响、矛盾冲突,并对潜在运行风险给出预警。通过对生产运行中各种数据的高速采集,实现智能分析多层次指标,为生产决策提供科学的数据支持,辅助提高生产效率,降低运营成本,智慧水务系统的建设能为管网规划和完善提供数据支撑和技术指导[1]。
污水处理信息化系统一般以厂区工业自动化控制系统为基础建设,如果用OPC或者通用数据库转发中间件对工业自动化系统数据进行采集,必须购买第三方软件后进行二次开发,也不利于后期系统升级优化。而目前市面绝大多数主流PLC都支持Socket接口的编程,采用这种方式的编程不但能节省软件购买费用,而且数据传送更加灵活,支持的数据类型也更加多样。
1、系统架构设计
Socket又称套接字,可以理解为以太网网络中不同主机双向通信的端点(Point)的抽象表达,是支撑TCP/IP通信的基本单元。这种方式中网络中任何两个主机通讯都至少需要一对Socket,其中一个运行在客户端,称之为Socket Client,另一个运行在服务器端,称之为Socket Server[2]。在本系统中,PLC作为Socket Client,本次开发的数据采集软件(KSkt Svr)作为Socket Server。它们之间通信的连接流程分为KSkt Svr侦听-PLC发出请求-连接确认三步,如图1所示。
KSkt Svr作为Socket Server在侦听时并不定位任何具体的客户端套接字,而是处于等待连接的状态,实时监控网络指定端口的状态。PLC发出连接请求时,必须先指定KSkt Svr的Socket的地址和端口号,然后才可以向KSkt Svr提出连接请求。KSkt Svr软件在侦听到该PLC的连接请求时,为这个PLC创建一个新线程用以管理与该连接的通信,并把自己Socekt的相关信息发给PLC,PLC端确认这些信息与自己发出的请求相符后,双方确认连接建立后即可通过该连接进行数据交互,然后KSkt Svr继续侦听并等待其他PLC发出的连接请求。
常见PLC基于Socket接口的指令均支持TCP和UDP两种协议。UDP全称是用户数据报协议,它是一种无连接的协议。UDP虽然具有多播和广播功能,但因不能提供数据包分组、组装和不能对数据包进行排序的缺点,造成当PLC发出数据报文后是无法得知这些数据报文是否安全完整送达目标、是否被目标成功获取的;TCP协议全称是传输控制协议,因为它在通讯之前必须通过握手建立连接,属于一种面向连接的协议,相对UDP来说是一种可靠的传输层通信协议。
本系统中PLC与KSkt Svr通讯选用的协议是TCP,以提高污水处理相关数据监测的实时性和可靠性。TCP是基于字节流的传输层通信协议,它按照数据发送先后进行数据传送,KSkt Svr端设置一定的通讯数据缓冲区,当数据来不及处理则存放在缓冲区内以确保数据的完整性。本系统中KSkt Svr在通讯连接建立后就不再对PLC写入数据,只单向接收PLC发送的各种自动化控制系统的数据(如液位数值等)。
2、主要功能设计
2.1报文编码解码
本方案中报文数据帧的编码方式参考了Modbus TCP协议数据帧格式,Modbus TCP是基于TCP/IP协议的工控应用协议,采用主/从方式通信[3],本系统的通信场景与其类似。在PLC侧对需要传送的数据进行封装编码,编码格式如图2所示。在KSkt Svr端对这些数据解码后进行各种处理应用。报文中每一个数据帧包括2个字节的起始符、1个字节的报文长度、2个字节的站点编号、1个字节的本数据帧的数据类型、需要传送的数据字节(如进水液位等),每个数据帧最后两个字节存放数据字节部分的CRC校验(图2中字节6到字节n-2)。经过测试发现在互联网传送时数据帧字节总长度n小于511时均能保证传输的准确率,过大时则会出现丢包现象,在局域网内通讯时则没有这种现象。PLC侧在编码时需要考虑到这一点。
图2所示报文数据帧中站点编号表示PLC的编号,采用2个字节主要考虑后续泵站、管网监测等终端数量较多的应用场景。数据帧中最重要的是字节5到字节n-2,这些字节存放的是传送给污水处理信息化系统应用的数据类型和数据。
数据类型0表示布尔型数据,用来传输自动化系统中各种离散数据如水泵的运行、停止、故障等。数据类型为0时每两个字节为一组数据,即图2中字节6和字节7表示一组数据,字节6存放设备状态的数据值,一个字节数据可以存放8个设备离散状态如8台水泵的运行信号,字节7对应存放这些设备状态数值的报警示值,解码时根据字节7的内容判断这些离散类型数据是正常应用还是需要标记应用。
数据类型1表示16位整型数据,用来传输自动化系统中各种整型数据如水泵本周运行次数等。数据类型为1时每3个字节为一组数据,即图2中字节6、7、8表示一组数据,其中字节6、7存放本周运行次数。字节8中不同的位表示这组数据不同的状态,第0位表示是否高限报警,第1位表示是否低限报警,在解码时根据这些位对数据进行标记应用。
数据类型2表示浮点型数据,用来传输自动化系统中各种浮点数据如进水液位等。数据类型为2时每5个字节为一组数据,即图2中字节6、7、8、9、10表示一组数据,字节6、7、8、9存放液位数据。字节10中不同的位表示这组数据不同的状态,第0位表示是否高限报警,第1位表示是否低限报警,在解码时根据这些位对数据进行标记应用。
同时预留其他数据编码类型,后续可以根据需要传送诸如64位整型、字符型数据。
2.2空闲超时
在本系统中,可能会存在某个PLC一定时间内不需要发送数据的情景或者因网络影响掉线的情景,这种情况下KSkt Svr无法快速地中断这些不用的连接,因此软件需要对每个连接成功的PLC设置一个Int16类型的空闲标记f Client Free Cnt,这个标记在连接空闲时周期计数。一旦接收到PLC发送的有效数据,则该标记置零。
当该标记超过设定的空闲超时限值时,表示这个连接不再发送数据,KSkt Svr将自动关闭这个连接线程,并将占用的资源释放。空闲超时可以确保服务器的连接资源可以循环利用。
3、软件设计
3.1 PLC
PLC采集的数据在通过Socket Server接口发送时,不同的品牌的PLC,甚至同一品牌不同型号的PLC指令都不同,比如西门子S7-200 SMART的相关指令如图3所示。各PLC厂商都会发布相关指令的详细使用手册或者例子程序,可以通过阅读这些手册获得PLC端编程的方法,本文不再进行详细描述。
3.2服务器端软件
服务器端的KSkt Svr软件使用VS2019基于框架架构.Net Framework 4.7.2开发,编程语言为VB。
根据前文所述,KSkt Svr作为通信的Socket Server,必须在运行时就创建一个侦听线程,用以等待处理PLC的连接请求。
然后需要在这个侦听线程定义一个Socket对象实时侦听通讯端口,一旦有新的PLC连接请求进入立即接受该请求并交给其他线程进行通讯相关事务处理,然后服务器继续侦听等待其他PLC的连接请求,这部分的核心代码如下所示:
以上代码中需要特别注意线程锁的作用。在多线程中为了保持数据的一致性,避免.Net中两个以上线程同时访问一个相同的对象会出现竞态条件,多线程在访问共享对象时必须加锁以保持数据的同步。VB语言中提供了Sync Lock语句,它确保一次只有一个线程可以访问或改变共享对象的状态,其原理是Sync Lock语句确保任一线程访问共享对象时会阻止其他线程进入语句块,直到正在执行的线程结束后方允许新的线程执行,避免多个线程同时访问相同的对象。这样就可以保证系统同时运行多个线程时,相互之间互不干扰,为实现多任务同步提供了技术支持[4]。如图4所示:在软件UI中设置一个显示当前所有连接的PLC的状态区域,包括其名称(Rtu Name)、空闲时间(WDog)以及IP地址等相关信息,用以诊断管理PLC的连接信息;同时设置几个诊断区域,分别显示接收到的数据处理情况,比如传送给其他应用的状态等等。
4、结束语
基于Socket接口的污水厂自动化数据采集系统设计和实现,是一种扩展污水处理信息化的应用范围的高性价比数据采集方案。随着数字孪生、智慧水厂等各种信息化系统的应用,有助于污水处理实现自动化控制的目标由代替人的体力向代替人的部分脑力劳动转变,逐步实现自动化控制向智能化控制的升级。目前该系统已经为某污水厂手机监控端提供数据支撑一年多,其运行稳定可靠,占用服务器资源也非常少。经过多项测试可以实现大批量的高频率数据传送,完全能满足污水处理厂的各种信息化系统应用的数据需求。
参考文献:
[1]张施晗.智慧水务在市政污水管网中的应用[J].工程技术研究,2021,6(10):202-203
[2]陈峰,孟宇,杨至诚.基于Socket方式实现不同品牌PLC之间的通信[J].化工自动化及仪表,2020,47(1):16-20
[3]崔靖元,魏春光,曾洁.基于Modbus TCP协议的地铁虚拟操纵台系统设计[J].自动化与仪表,2021,36(10):24-27,37
[4]吴晓华,梁哲,刘同来.基于C#的多线程P2P即时通讯系统[J].电脑知识与技术,2021,17(36):75-78
文章来源:李小凯,杨勇.基于Socket接口的污水厂自动化数据采集系统[J].工业控制计算机,2023,36(08):31-32+35.
分享:
河流是人类赖以生存和发展的重要资源,也是生态系统的重要组成部分。河流水环境的质量直接关系到人民群众的健康福祉,也影响着国家的经济社会发展和生态安全。我国对河流排污口的核查工作起步较晚,但近年来已取得了一定的进展。
2024-11-16水作为生命之源,对于维系生态平衡和人类生存具有不可替代的重要性。然而,随着工业化的快速推进和城市化的不断发展,水环境遭受了前所未有的污染和破坏,河道生态系统尤为受损。因此,水环境治理与河道生态修复成为当今环境保护领域的重要议题。
2024-11-16近年来,生态文明建设已引起全社会的高度重视,农村生活污水的治理也是国家重点关注的行业之一,稳定高效除磷是目前农村生活污水难点。在污水中,磷主要以正磷酸盐离子、聚合磷酸盐及有机磷化合物的形式存在。
2024-11-16文川河是流至连城县城区的唯一河流,连城的“母亲河”,闽江源头之一。流域内人口密集、工农业发达,工业和生活等各类污染源沿河分布。随着城市化、工业化的迅速发展与基础设施建设的滞后,导致文川河污染严重,水质不稳定,亟待治理。
2024-11-16选取新疆某垃圾填埋场作为研究对象,该场自1999年运营以来,缺乏规范的防渗措施,其地下水污染情况亟需评估。垃圾填埋场属于敏感污染源,地下水易受到污染,且填埋历史长,现场条件复杂。
2024-11-16当前,我国大气污染形势仍然严峻。从污染源角度来看,主要包括四个方面:一是汽车尾气排放,随着国民生活质量有了跨越式的发展,居民家庭中汽车数量也在不断增加,汽车排放尾气对大气环境污染愈发严重;二是煤炭燃烧污染,作为我国能源结构中的主力,煤炭燃烧释放的二氧化硫、氮氧化物和粉尘等污染物是导致大气污染的重要源头;
2024-11-14某污水处理厂位于浙江省湖州市织里镇,一期3万m3/d,采用A/O-SBR工艺,投运于2003年;二期3万m3/d,采用A2O工艺,投运于2012年,出水水质执行《城镇污水处理厂污染物排放标准》(GB 18918-2002)一级A标准。在运行过程发现,二期的A2O工艺对TN的去除率较低,影响出水达标排放,有必要对二期A2O的工艺运行参数进行优化调整,提高TN的去除率。
2024-11-14固定污染源排污许可证后监管作为排污许可制度的重要衔接环节,承担着对排污单位实际排放情况监测、核查和评估的职责,其监管制度体系构建以排污许可制为核心的“一证式”管理的全面推行,国家环保监管部门依法对排污单位的排放行为进行监管,约束其排污行为,保证环境质量,并对检查结果以及有违法行为的企业进行信息公开。
2024-11-14六价铬是许多工业的副产品,由于其污染的剧毒性、难处理、分布广而备受关注。作为重工业中用量较多的原料之一,其污染主要源于电镀、化学品、炼钢和铸造、采矿、油漆和印刷等行业的工业废水排放。上述企业生产会产生大量的铬离子废水,而六价铬废水通过土壤的渗透和滞留,导致地下水污染、土壤污染和耕地受损等问题。
2024-11-14饮用水重金属污染状况分析及风险评价,对饮用水源地的饮用水安全有着重要意义。本研究以黔东南州供水量为200万t以上8个集中式饮用水源为研究对象,利用地累积指数法和潜在生态风险指数法评价水源地表层水及底泥中砷、铜、锌、铅、锰、镍、铬等重金属污染状况,以期为该地区饮用水源地水质及底泥环境现状做出合理评价。
2024-11-14我要评论
期刊名称:工业控制计算机
期刊人气:2131
主管单位:江苏省科学技术厅
主办单位:中国计算机学会工业控制计算机专业委员会,江苏省计算技术研究所
出版地方:江苏
专业分类:计算机
国际刊号:1001-182X
国内刊号:32-1764/TP
邮发代号:28-60
创刊时间:1988年
发行周期:月刊
期刊开本:大16开
见刊时间:4-6个月
影响因子:3.316
影响因子:0.281
影响因子:0.629
影响因子:0.000
影响因子:0.000
您的论文已提交,我们会尽快联系您,请耐心等待!
你的密码已发送到您的邮箱,请查看!