当前位置:首页 > 智能硬件 > 智能硬件
[导读] 在工业控制领域中,PLC作为一种稳定可靠的控制器得到广泛的应用。但它也有自身的一些缺点,即数据的计算处理和管理能力较弱,不能给用户提供良好的界面等。而计算机恰好能弥补PLC的不足,它不但有很强的数据处理和

  在工业控制领域中,PLC作为一种稳定可靠的控制器得到广泛的应用。但它也有自身的一些缺点,即数据的计算处理和管理能力较弱,不能给用户提供良好的界面等。而计算机恰好能弥补PLC的不足,它不但有很强的数据处理和管理能力,而且能给用户提供非常美观而又易于操作的界面。将PLC与计算机结合,可使系统达到既能及时地采集、存储数据,又可处理和使用好数据,两者结合的关键是PLC与计算机之间的通信。本文以OMRON公司的CPMI小型PLC为例,详细的讨论了PLC与计算机通信的原理和用VB如何实现PLC与计算机的通信。

  一、通行原理与方法

  上位机要能够通过PLC监控下层设备的状态,就要实现上位机与PLC间的通信,一般工业控制中都是采用RS232C实现。上位机首先向PLC 发送查询数据的指令(实际上是查询PLC中端子的状态和dm区的值等),PLC接收了上位的指令后,进行校验(fcs校验码),看其是否正确,如果正确,则向上位机传送数据(包含首尾校验字节)。否则,PLC拒绝向上位机传送数据。上位接收到PLC传送的数据,也要判断正确与否,如果正确,则接收,否则,拒绝接收。

  由于cpm1a没有提供串行通信口,我们利用其提供的外设端口实现通信。PLC与计算机之间的连接是通过omron提供的专用电缆cqm1-cif01来实现的,其硬件连接图如图1所示。


  二、 PLC与计算机间的通信规约

  计算机与PLC间的通信是以“帧”为单位进行的,并且在通信的过程中,计算机具有更高的优先级。首先,计算机向PLC发出命令帧,然后,PLC作出响应,向计算机发送回响应帧。其中命令帧和响应帧的格式如下:

  (1) 命令帧格式。为了方便计算机和PLC的通讯,cpm1a对在计算机连接通信中交换的命令和响应规定了相应的格式。当计算机发送一个命令时,命令数据主准备格式如图2所示。


  其中@放在首位,表示以@开始,设备号为上位机识别所连接的PLC的设备号。识别码为命令代码,用来设置用户希望上位机完成的操作,fcs为帧检验代码,一旦通信出错,通过计算fcs可以及时发现。结束符为“*”和cr回车符,表示命令结束。

  (2) 响应帧格式。由PLC发出的对应于命令格式的响应帧格式如图3所示。


 


  其中,异常码可以确定计算机发送的命令是否正确执行。其它的与正文中的含义相同。正文仅在有读出数据时有返回。

  三、 通信程序的设计

  为了充分利用计算机数据处理的强大功能,我们可以采用计算机有优先权的方式,在计算机上编写程序来实现计算机与PLC的通信, 计算机向 PLC发出命令发起通信,PLC自动返回响应。本文中采用vb来编写计算机与PLC间的通讯程序。在vb中提供了通信控件—应用通信控件(mscomm),实现通过串行端口传送和接受的功能。

  下面介绍mscomm控件的属性:

  *commport:设定通信连接端口代号,程序必须指定所要使用的串行端口号,windows系统使用所设定的端口与外界通信。

  *portopen:设定通信口状态,若为真,通信端口打开,否则关闭。

  *settings:设定通信口参数,其格式是"BBbb,p,d,s",其中bbbb为通信速率(波特率),p为通信检查方式(奇偶校验), d 为数据位数,s为停止位数,其设定应与PLC的设定一致。

  *input:将对方传送至输入缓冲区的字符读入到程序。

  *output:将字符写入输出缓冲区。

  *inbuffercount:传回接收缓冲区中的字符数。

  *outbuffercount:传回输出缓冲区中的字符数。

  *inputlen:设定串行端口读入字符串的长度。

  *inputmode:设定接收数据的方式。

  *rthreshold:设定引发接收事件的字符数。

  *commevent:传回ONcomm事件发生时的数值码

  *oncomm事件:无论是错误或事件发生,都会触发此事件。

  (1) 控件参数的初始化

  初始化程序如下:

  mscomm.comport=2 `使用串口com2

  mscomm.settings="9600, e, 7, 2" `波特率9600,偶校验,7位数据位,2位停止位

  mscomm.portopen=true `打开通信端口,准备通信

  (2) 计算校验码fcs,计算fcs的vb自定义函数如下:

  function fcs(byval inputSTr as string) as string

  dim slen, i, xorresult as integer

  dim tempfes as string

  slen=len(inputstr) `求输入字符串长度

  xorresult = 0

  for i = 1 to slen

  xorresult = xorresult xor asc(mid$(inputstr, i, 1)) `按位异或

  next i

  tempfes=hex$(xorresult) `转化为16进制

  if len(tempfes)=1then tempfes =“0”+tempfes

  fcs = tempfes

  end function

  (3) 计算机与PLC通信程序

  主要是一个自定义函数。

  function readdata(byval inputstr as string, byval num as integer) as string

  dim outputstr as string

  dim instring as string

  dim returnstr as string

  dim endstring as string

  dim fcsstring as string

  dim returnfcsstring as string)

  mscomm.inbuffercount=0

  utputstr=inputstr+fcs(inputstr)+“*” `给出命令帧

  mscomm.output=outputstr+chr$(13) `向PLC传送命令帧

  do

  doevents

  loop while mscomm.inbuffercount < 15

  instring=mscomm.input `获取PLC的响应帧

  `结束码判断

  endstring = mid$(instring, len(instring) -

  num- 5, 2)

  if endstring = "13" then

  readdata = "error"

  exit function

  elseif endstring = "14" then

  readdata = "error"

  exit function

  elseif endstring = "15" then

  readdata = "error"

  exit function

  elseif endstring = "18" then

  readdata = "error"

  exit function

  elseif endstring = "a3" then

  readdata = "error"

  exit function

  elseif endstring = "a8" then

  readdata = "error"

  exit function

  end if

  `响应帧校验

  endstring = mid$(instring, 1, len(instring) - 4)

  returnfcsstring = mid$(instring,len(instring) - 3, 2)

  fcsstring = fcs(endstring)

  if fcsstring <> returnfcsstring then

  readdata = "error"

  exit function

  end if

  returnstr = mid$(instring,

  len(instring) - num - 3, num)

  readdata = returnstr

  end function

  从上面程序可以看到,计算机对PLC返回的响应帧要进行fcs校验,并利用异常码排除返回的异常数据,这样不但可以提高计算机获取信息的正确性,而且提高了计算机监控的实时性。

  四、结束语

  本文介绍的通信方法在我校cims研究中心自行研制的一套机电一体化设备中得到实施运用,经试验运行,证明这种通信方法稳定、可靠,确实是一种非常有效的方法。将PLC与计算机通信网络连接起来,PLC作为下位机,计算机作为上位机,形成一个优势互补的自动控制系统,实现了“集中管理,分散控制”。其中各个PLC子系统或远程工作站在生产现场对各个被控对象进行控制,利用网络连接构成一个PLC综合控制,满足了现代自动化系统向信息化、网络化、智能化的过渡。

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

北京2024年5月13日 /美通社/ -- 5月11日,软通动力在鲲鹏昇腾开发者大会2024期间举办"软硬全栈,加速智能化赋能"分论坛。业界专家学者和优秀企业代表齐聚一堂,共同交流分享鲲鹏昇腾生态的创...

关键字: 智能化 全栈 PEN 计算机

卡西欧计算机株式会社宣布推出与冲浪者基金会合作设计的G-SHOCK系列新款防震手表G-5600SRF,旨在保护海洋。这款手表的表圈和表带由回收树脂废料制成,展现独特设计。配备Tough Solar太阳能充电系统,强调环保...

关键字: 手表 SHOCK SOLAR 计算机

随着信息技术的迅猛发展和大数据时代的到来,机器学习成为了人工智能领域中的核心技术之一。机器学习是通过模拟人类学习行为,使计算机系统能够从数据中自动发现规律、提取特征并进行预测和决策的过程。它在诸多领域取得了广泛的应用,包...

关键字: 计算机 人工智能 机器学习

随着大数据时代的到来,数据处理成为了一项至关重要的任务。传统的数据处理方法往往面临着效率低下、准确性不高等问题,而机器学习技术的兴起为数据处理带来了全新的解决方案。本文将深入探讨机器学习在数据处理中的应用,并分析其优势和...

关键字: 数据处理 计算机 机器学习

机器学习是人工智能领域的一个重要分支,它使用各种算法来使计算机系统能够从数据中学习和改进,而无需进行明确的编程。在机器学习的广阔领域中,有多种算法被广泛应用,每种算法都有其独特的适用场景和优势。本文将详细介绍机器学习中的...

关键字: 机器学习 人工智能 计算机

随着信息技术的飞速发展,机器学习(Machine Learning)作为人工智能领域的重要分支,正在逐步改变我们生活的方方面面。那么,什么叫做机器学习呢?简单来说,机器学习是一门研究如何让计算机从数据中自动获取知识和技能...

关键字: 机器学习 人工智能 计算机

随着信息技术的飞速发展,数据已经成为现代社会的重要资源。数据挖掘和机器学习作为处理和分析数据的两大关键技术,在多个领域得到了广泛应用。尽管它们在某些方面存在重叠,但数据挖掘和机器学习在定义、目标、方法以及应用场景等方面存...

关键字: 数据挖掘 机器学习 计算机

计算机的历史可以追溯到公元前的古代算盘和查尔斯·巴贝奇的“分析机”构想。然而,现代意义上的计算机起源于二战时期对复杂军事计算需求的响应。1941年,美国宾夕法尼亚大学开发出了ENIAC(Electronic Numeri...

关键字: 计算机 云服务

自二十世纪以来,计算机技术经历了从机械计算装置到如今高度智能化、微型化的巨大飞跃,成为人类科技进步的重要推动力。电脑的发展史是一段充满创新与突破的历史,以下将按照时间顺序概述这一发展历程。

关键字: 电脑 计算机

计算机网络是当今信息化社会中不可或缺的基础设施,它将世界各地的计算机系统及其附属设备紧密联系在一起,实现了信息的高速传输与共享资源的有效利用。计算机网络的定义可以归纳为:计算机网络是一系列分布在不同地理位置、具备独立功能...

关键字: 计算机 信息交互
关闭
关闭