|
咨询电话0512-55016572
本公司是由一批在大型机电设备公司中担任机械电气设计骨干联合组建而成的综合性专业公司。我们承接机电安装
,整厂自动化系统设计,配电施工试车,单机修改,产品开发等业务。另提供各种PLC解秘,变频器维修等服务 我们有稳定的管道,优惠的价格,为您提供各种工控产品。
代理产品:三菱PLC,变频器,人机界面;OMRON PLC,光电系列产品;北洋光电;坂神电机;亚得克,FESTO气动
产品,台达PLC,海德克;公牛插座;凯昆电工;SATA工具;博士电动工具等。 联系电话:0512-55016572
使用VB与PLC的通讯可以制作复杂/成本低廉的操作画面。
VB与PLC的通讯有很多方式:以OMRON来说,MSCOMM控件可以直接通讯,对MITSUBISHI
来说需要使用RS232/485摸组或使用WINSOCK控件与ENTHERNET摸组通讯。
本文只说明使用VB的MSCOMM控件实现与OMRON的通讯。 MITSUBISHI可以参照对应的电子书和下列格式实现目的。
一、引言 PLC以其高可靠性、适应工业过程现场、强大的联网功能等特点,被广泛应用。可实现顺序控制、PID回路调节、高速数据采集分析、计算机上位管理PLC分散控制的集散管理系统,是实现机电一体化的重要手段和发展方向。 WINDOWS操作系统以其图形用户界面、多任务、自动内存管理等特点,已取代了DOS操作系统的地位。WINDOWS操作系统为用户提供了API接口函数,但非专业开发人员难以掌握。VB作为WINDOWS下的应用软件开发平台以其易学好用的优点给程序员提供了强大的可视化编程工具。 在微机与PLC之间构成的集散控制系统中,多数是由一台PC计算机与数台PLC之间形成1-N的通信模式。该模式系统中PLC负责现场高速数据采集、实现逻辑、定时、计数、PID调节等控制任务并通过串行通讯口向微机传送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网络之间的数据通讯的技术及软硬件实现方案,合理充分利用系统的资源及特点,提高通讯效率。对同类系统的设计与实现有一定的启发和帮助。 |