实现WINDOWS下上位机与PLC网络之间的数据通讯 点击:3495 | 回复:4



汇尼克

    
  • 精华:73帖
  • 求助:0帖
  • 帖子:136帖 | 167回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2002年8月31日
发表于:2003-11-23 17:22:00
楼主
[摘 要] 可编程控制器与PLC机组成的集散控制系统,越来越广泛的应用于生产过程自动化领域。本文就PC机与多台PLC组成的网络之间数据通讯的通用模式及软、硬件实现方案加以探讨。 [关键词] 计算机 PLC 网络通讯 软硬件 一、引言 PLC以其高可靠性、适应工业过程现场、强大的联网功能等特点,被广泛应用。可实现顺序控制、PID回路调节、高速数据采集分析、计算机上位管理PLC分散控制的集散管理系统,是实现机电一体化的重要手段和发展方向。 WINDOWS操作系统以其图形用户界面、多任务、自动内存管理等特点,已取代了DOS操作系统的地位。WINDOWS操作系统为用户提供了API接口函数,但非专业开发人员难以掌握。VB作为WINDOWS下的应用软件开发平台以其易学好用的优点给程序员提供了强大的可视化编程工具。 在微机与PLC之间构成的集散控制系统中,多数是由一台PC计算机与数台PLC之间形成1-N的通信模式。该模式系统中PLC负责现场高速数据采集、实现逻辑、定时、计数、PID调节等控制任务并通过串行通讯口向微机传送PLC工作状态机有关数据从而实现计算机对控制系统的管理,提高了PLC的控制能力的控制范围。使其从设备级的控制发展到生产线级乃至工厂级的控制,从而实现工厂智能化的目标。该集散控制系统中,PLC与微型计算机之间的通讯显得尤为重要。因此如何提高保证它们之间的通讯准确程度、可靠性及效率是通讯成功与否的关键技术之一,下面就对该关键技术做一些探讨。 二、上位计算机与PLC之间的链接方式 本文介绍的是上位机与多台PLC组成的多链系统,常用的连接方式有两种: 方式一使用连接适配器较少,也不用信号转换,但若中间一台PLC出故障,其后续的PLC无法与上位机通讯。
方式二虽然使用了信号转换,但可避免前级故障对后级的影响。
三、上位计算机与PLC的链路通讯 以OMRON公司CPM1A型PLC和上位计算机通讯为例,通讯协议如下:
按上图顺序发送/接受命令。每次通讯发送/接受的一组数据称为一“帧”。帧由少于131个字符的数据构成,若发送数据要进行分割帧发送,分割帧的结尾用CR码(CHR(13))一个字符的分界符(分段字符)来代替终端。发送帧的一方具有发送权,发送方发送完一帧后,将发送权交给接受方。 发送帧的基本格式为: @机号 识别码 正文 FCS *CR 其中:@ 为帧开始标志 机号 网络通讯中每一台PLC被分配给的唯一番号 识别码 该帧的通讯命令码 正文 用来设定命令参数 FCS 帧校验和 终端 命令结束符 响应的基本格式为: @机号 识别码 结束码 正文 FCS *CR 其中:@机号 识别码 正文等同发送帧意义 结束码 返回命令结束有无错误等状态 关于多于131个字符的分割帧这里不在赘述。 四、通讯过程 通讯开始先由上位计算机依次对网的PLC发出一串字符的测试帧命令。为充分利用上位机CPU的时间,可使上位机与PLC并行工作,在上位机等待PLC回答信号的同时,使CPU处理其它任务或线程。某PLC在接到上位机的一个完整帧以后,首先判断是不是自己的代号,若不是就不予理睬,若是就发送呼叫回答信号。上位机接到回答信号后,与发送测试的数据比较,若两者无误,发出可以进行数据通讯的信号,转入正常数据通讯,否则提示用户检查线路重新测试或通讯失败。 五、上位计算机WINDOWS下的通讯程序设计 上位机通讯软件是用VB开发的,因VB具有强大的图形显示功能,可以开发出界面良好的WINDOWS标准风格的图形用户界面。同时VB还提供了串行端口控件MSCOMM,程序员在利用该控件时,只需设置、监视其属性和事件,即可完成对串行口的初始化和数据的传输工作。 Sub forml_load() Mscomml.comport = 1 Mscomml.settings = "9600,n,8,1" End sub Sub commandl_click Mscomml.inputlen = 0 If mscomml.portopen = false then Mscomml.portopen = true End if For I = 1 to n ;N为网络系统中的PLC个数 If i<10 then S$ = "@"+"0"+str$(i)+"ts"+"abcd" Else S$ = "@"+str$(i)+ts"+"abcd" ;abcd为测试字符 Endif … ;形成上位机测试命令数据块sedata$; Mscomml.output = sedata$ Timerl_on = false Timetl.enable = true Do until (mscomml.inbuffercountáñ0) or (timerl_on = true) Domy = doevents() Loop Timerl.enable = false … Redata$ = mscomml.input If redata$ = sedata$ … ;转入正常通讯数据处理 Else Labell.caption = str$(i)+“测试通讯失败,检查线路后再测试” Endif Endsub 六、PLC方的通讯设置 计算机与PLC通讯的目的是实现计算机对PLC运行状态、数据区的监控、PLC工的管理并可用计算机编程。一般来说,在通讯过程中PLC是被动的,每一次通讯都由计算机发起与终止,但也可由PLC发起。 通讯前需用外部输入设备在系统设定区域的DM6650-DM6653中进行通讯条件设定。 通道地址 位 设定 功能说明 DM6650 00 - 07 01 通讯标准定为 08 - 11 任意 12 - 15 0 上位链接模式 DM6651 00 - 07 03 波特率为9600BPS 08 - 15 08 8位数据1位停止 DM6652 00 - 15 0000 延时设定 DM6653 00 - 07 00 - 31 机号设定为00 - 31 08 -15 任意 七、结束语 本文旨在探讨用可视化编程语言实现PC机与PLC网络之间的数据通讯的技术及软硬件实现方案,合理充分利用系统的资源及特点,提高通讯效率。对同类系统的设计与实现有一定的启发和帮助。



风采

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 57回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2003年7月12日
发表于:2003-08-09 00:00:00
1楼
不错,和我厂的dcs系统很符合.

汇尼克

  • 精华:73帖
  • 求助:0帖
  • 帖子:136帖 | 167回
  • 年度积分:0
  • 历史总积分:958
  • 注册:2002年8月31日
发表于:2003-08-09 13:17:00
2楼
谢谢称赞,有机会可以和我公司联系: 广州汇尼克机电设备有限公司 TEL:020-85549829、85549873 Fax:020-85549770 http://www.elevanic.com

吾本布衣

  • 精华:0帖
  • 求助:1帖
  • 帖子:30帖 | 77回
  • 年度积分:0
  • 历史总积分:398
  • 注册:2003年7月09日
发表于:2003-11-23 17:22:00
3楼
请教:FCS,帧校验和要计算吗?还是固定是“42”?

cmlergod

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:2
  • 注册:2004年7月01日
发表于:2004-10-08 14:53:00
4楼
怎样用VB编写人机界面与松下FP0进行串口通讯!!! 我是个新手(学习中)!想用VB给已经编好程序的松下FP0做一个简单的人机界面,在VB中提供了通信控件—应用通信控件(MSCOMM),但是怎样通过人机界面来控制PLC的启停,并设置PLC程序中的计数器的参数,彻底脱离松下PLC的编程软件FPWIN!请大家帮帮我!最好能提供一个例子!我想我的问题是不是在于不清楚FP0的通讯协议!大家能否提供帮助!不胜感激!

热门招聘
相关主题

官方公众号

智造工程师