基于VB的台达PLC与监控计算机的串行通信实现

合集下载

基于VB的PLC与计算机串行通信的实现

基于VB的PLC与计算机串行通信的实现

关键词: P L C ; 串行 通信 ; V B
现代工业 的 自动化生产 控制 已经从 单一 的直 接面 向控 制某一
表 1常用 字 符 及 其 A S Cl l 码 对 层次的全面计算机集 中制造系统
( C o m p u  ̄ r i n t e g r a t e d Ma n u f a c t u r i n g S y s t e m, 简称 C I MS ) , 此 类 系统 是将多 台计算机和各种控制器用 网络联接在一起 , 共 同分享从产品 设计 到制造 、 生产全过程 的有关数据库 , 进行各类与生产 、 管理有关 的实时信息交换。 在这一系统中 , 控制机之间 , 控制机与计算机之间 的信 息交换 、 通讯联络是必不可少 的基础条件 。为满 足现代工业 自 动化 的需要 , P L C一般均 配有 数据通讯模块 , 用 来进行 P L C之 间、
P L C与上位计算机之间的数据通讯, 组成工厂生产自动化网络。
表 2信息帧的组成
1计算机与 F X系列 P L C的通信 ’ F x系列 P L C根据使用 的通信模块与通讯协议的不同 ,可分为 4种通信模式 。 ( 1 )N : N链接 网络通信模式 ; ( 2 )并行链接通信模式 ; ( 3 ) 无协议通信模式 ; ( 4 ) 计算机链接通信模 式。 N: N通信方式和双机并行 通信方式是 P L C之间的通信模式 , 本 文不予 以讨论 。F X系列 P L C可以通过编程 口或通信 口与计算机通 MS C o m m控件提供 了一系 信 。通过编程 口通信 , 计 算机只能与一 台 P L C通信 , 实 现和 P L C中 以设计多个通信控件来访 问多个通信 口。 列标准通讯属性和方法 , 可 以建立应用程序与 串行端 口的联接 。该 的软 元件 间接访 问构成二级控 制系统 ; 通过通信 口通信 , 计算机可 控 件 屏 蔽 了通 信 过 程 中 的底 层操 作 ,程 序 员 只 需 设 置 和监 视 与多 台 P L C通信 , 实行对 P L C中的软元件 直接访 问 , 构成 总线 型网 MS C o m m控件的属性和事件就可 以实现串行异步通信 。 络控制 系统 。P L C使用不 同的通信适配器 , 但通信规程和通信程序 MS C o m m具有 二十多个属性 , 可灵 活应用 于各 种场合 , 其 中常 取决 于编程 口还是通信 口, 与P L C无关 。 用 的几个主要属性描述如下 : 本文 以三菱 F X系列 P L C为例 , 介绍计算机 与 P L C串行通信 的 C o mm P o r t设置并返 回通信端 口号 ; 实行方法 , 并利用 V B 6 . 0 编写通信软件 , 实现计 算机对 P L C工作状 S e t t i n g s以字符串形式设置并返回波特率 、 奇偶 效验 、 数据位和 态 的实 时 监 控 。 停止位 ; F X系列 P L C与计算机之间的通信采用 F X 一 4 8 5 P C — I F硬件接 P o r t O p e n设置并返 回通信端 口的状态 , 也 可打开和关闭端 口; 口, P L C的通信口为 F X 2 N 一 4 8 5 A D P 模块 ,信息交换以字符串形式 I n p u t从接收缓冲区返回并删除字符 ; 进行 。 O u p u t向传输缓冲区写入 一个字符 ; 2 F X系列 P L C的通信协议 I n b u f e r s i z e确定输入缓冲区的大小 , 一般选 默认值 ; 计算机 与 P L C 之 间的通信是建 立在以 R S 2 3 2 标 准为基础 的异 O u t b u f e r s i z e 确定输 出缓冲区的大小 , 一般选默认值 ; 步双 向通信 , P L C 有特定 的通信 格式 ,内部不需要编写专 门的通信 I n p u t l e n设 置并 返回 I n p u t 属性从输入缓冲区读取的字符数 , 若 程序 , 只要 把数据存放在 相应 的数据寄存器 中 , 每个数据 寄存器都 设置位 0 , 则一次可把输入缓 冲区的所有字符读出 ; 有对应 的物理通信地址 , 通 信时由计算机直接对物理通信地址进行 I n b u f e r c o u n t确定输入缓冲区内的字符数 。 操作 。通信过程 中, 传 输字符 和命令字 以 A S CⅡ码为准 。 其余 的属. 陛设置位默认值即可。 F X系列 P L C 采 用面向字符 的传输规则 , 用5 个通信控制字符 , 4计算机通信程序 的设计 其约定说明见表 1 。 下面举例说 明编写通信程序的方法 。 计算 机与 P L C进行通信 时 , 是 以帧为单位进行信息交换 的。其 控制要求 : 计算机对 P L C进行远程控制。 输 出继 电器 Y 0由计算 中控制字符 E N Q 、 A C K 、 N A K , 可以构成单字符帧发送和接收, 其余 机远程控制 , Y O =1 , 电动机启动 ; Y O =O , 电动机停止 。 的以信息帧形式发送和接收。信 息帧的组成见表 2 。 ( 1 ) 初始化程序 其中, S T X为 开始标 志 , A S CⅡ码 : 0 2 H; E X T为结束 标志 , A S C

台达PLC与VB通讯简易教程

台达PLC与VB通讯简易教程

VB 實現電腦與台達PLC 的串列通信───────PLC 產品處 王乃全摘要:本文介紹了Visual Basic6編程語言,MODBUS ASCII 通信協定及通過VB 如何實現與台達DVP PLC 的通信關鍵字:Visual Basic MODBUS ASCII PLC 前言:現代的世界是一個高度自動化的世界,各式各樣的設備都可以和電腦連線,而最簡單的自動化連線方式就是使用串列通信。

VB 提供了串列通信控制項可以讓開發者開發串列通信的系統程式,功能上也提供了不少為用戶著想的簡便之處。

PLC 是現在控制領域不可缺少的部分,已經非常普及,如何簡便的與PLC 交互已經成為眾多廠商新的競爭戰場。

由此產生了人機界面、組態軟體等產品。

這些產品的產生大大簡化了對PLC 的控制,操作,使用更方便。

但也有共同的缺點:價格過高和開發性較差。

VB 作為“原始"的編程語言在這兩方面無疑有著明顯的優勢。

本文結合一個簡單的案例,用比較基礎的概念為大家展示如何通過VB 實現PC-PLC 的通信,對於初涉這個領域的工程師,也會受益與本文提供的基本概念。

一、串列通信基本概念1、 通信的種類:通常通信的形式可以分為兩種,並行通信(Parallel Communication )和串列通信(Serial Communication )。

所謂並行,既是一次傳輸量為8位;而串列一次只傳1位元。

這兩種不同的通信模式如圖平行傳輸串列傳輸 2、 串列通信常用的串列通信也有兩種。

分別位RS-232和RS-4852-1 RS-232RS-232的信號准位元乃是參考地線而來的,如圖,傳輸端參考接地端1來傳送資料;接收端則參考接地端2還原出傳送端的信號準備。

接地端1 接地端2 由圖可知,由於兩個接地端准位不一定一樣,而且很容易受到干擾,所以信號在RS-232線路傳輸時,很容易產生錯誤。

2-2 RS-485RS-485的信號傳輸方式如圖。

接地點1 接地點2RS-485的信號將被傳送出去時會分成正負兩條線路,當到達接收端後,在將信號相減還原成原來的信號;如果將原始的信號表示成(DT),而被分成的信號分別標示成(D+)及(D-),則DT= (D+)-(D-)同樣地,接收端在接收到信號後,也依據上式還原成原來的樣子。

如何通过VB实现PC机与PLC的以太网通信plc

如何通过VB实现PC机与PLC的以太网通信plc

如何通过VB实现PC机与PLC的以太网通信- plc此控件对于用户在运行时不行见,供应了一个简洁的途径访问TCP 及UDP网络服务而无需了解底层细节,使用时你只需设置属性、在恰当的时候调用它供应的方法即可。

主要属性有:BytesReceived:返回当前缓冲区中的字节数量,我们可以使用GetData 方法以接收数据。

只读且设计时不行用。

LocalHostName:返回本机名字符串,设计时不行用。

LocalIP:返回以(xxx.xxx.xxx.xxx)格式表达的IP地址串。

设计时不行用,运行时只读。

LocalPort :本机使用接收端口可读写,设计时可用,Long型。

对于客户,假如无需指定端口,则用端口0发送数据。

在此状况下,控件将随机选择一个端口。

在一个连接确定后,为TCP的端口。

对于服务器,指用于监听的端口。

如设置为0,则用随机数。

在调用Listen 方法后,该属性自动包含用到的端口。

端口0总是用于在两计算机间建立动态连接。

客户期望通过端口0获得一个随机端口以”回调”连接服务器。

Protocol :套接字类型,为TCP或UDP二者之一,缺省为TCP类型。

设置为sckTCPProtocol表示TCP协议sckUDPProtocol表示UDP协议。

在此属性被重置之前需用Close方法关闭之。

RemoteHost:发送或接收数据的主机,你可供应主机名如:FTP://,或一IP地址串,例如“100.0.1.1”。

RemoteHostIP:远程主机的IP地址。

对于客户程序,在连接确定后使用Connect方法,此属性包含远程主机的IP名串。

对于服务器程序,在引入连接需求后(Connection Request 大事),此属性包含IP串。

当使用UDP套接字,在Data Arrival大事发生后,此属性为发送UDP数据的机器IP地址串。

RemotePort:连接套接字端口值。

例如通常HTTP应用使用80端口,FTP则使用21。

应用MSComm控件实现计算机与PLC间的串行通讯

应用MSComm控件实现计算机与PLC间的串行通讯

应用MSComm控件实现计算机与PLC间的串行通讯摘要本文应用S7-200系列PLC的RS-485接口,通过PC/PPI电缆与计算机的RS-232接口连接,软件方面应用Visual Basic提供的串行通讯控件(MSComm)实现PC机对可编程序控制器的监控与管理。

本文主旨在于探讨应用可视化编程语言实现PC机与PLC网络之间数据通讯的技术以及实现方案,利用PC机的管理与监控功能实现对PLC的自动化控制。

关键词可编程序控制器;串行通讯;中断0 引言可编程序控制器(PLC)专门用于工业控制,它的核心是以微处理器的结构为基础,在硬件结构上和普通的计算机基本一致。

它在基本的计算机结构当中,加入了传统的继电器控制系统,使其具有了高度的可靠性,更好的适应工业现场的环境,而且具备了强大的联网处理功能,广泛地应用在工业控制生产过程中。

微软的Visual Basic提供了MSComm控件,通过硬件的串行端口传送和接收数据,实现了PC机与PLC之间的通信,为可视化程序对PLC的控制提供了可能。

本文基于西门子公司生产的S7-200型PLC,应用MSComm控件,编写了计算机与PLC通讯程序,包括了上位机和下位机相应的程序代码。

提出了应用编程语言实现PC/PLC网络之间数据通信的软件解决方案,实现了用PC机对PLC 的监控及控制。

1 PLC与计算机间的通讯S7-200型PLC可以连接编程器、人机接口设备,甚至连接其他的PLC或PC机,组成PLC网络,可以实现PC与PLC、PLC与PLC的各种通信功能。

同时可以应用PC的管理功能实现对PLC的编程、监控和联网的功能。

S7-200系列PLC具有9针的RS-485接口,可以通过PC/PPI电缆与计算机连接,PLC之间可以通过SINEC-L2接口连接成PLC网络。

S7-200系列PLC主要有两种通信模式:一种为点对点(PPI)通信协议模式,用在PLC与编程器或人机接口产品之间通讯;另一种是自由口通讯模式,此模式对用户完全开放,用户可以自行设定通讯协议,使用程序控制串行通讯接口。

PLC与VB6.0串口通讯案例

PLC与VB6.0串口通讯案例

1、引言可编程控制器以其高可靠性,配置灵活和完善的功能,在工业控制系统中得到越来越广泛的应用。

但对于操作员所需要的报表打印、趋势图形显示、工况查寻、参数在线修改等功能,PLC却不能直接方便地提供。

所以通常采用计算机PC与PLC组成一个完整的监控系统。

本文以台安TP02系列PLC为例,讨论用Visual Basic(VB)实现PLC与上位机的通讯2、VB在通讯控件中的使用可编程控制器PLC与上位机PC之间的通信,下位机为PLC,基于其可靠性极高,主要承担控制功能,而上位PC机主要承担监察管理功能,有时兼备部分控制功能,如发出运行,停止命令。

VB语言是基于WINDOWS操作系统的功能强、易学易用、主要是面向学习对象的程序设计语言。

VB带有专门管理串行通讯的MSComm控件,只需设置几个主要参数就可以实现PLC与PC串行通讯。

要完成通信必须设置MSComm的相关属性值:(1)CommPort:设置或传回通信连接端口代号(2)Settings:设置初始化参数。

以字符串的形式设置或传回连接速度、奇偶校验、数据位、停止位等4个参数(3)PortOpen:设置或传回通信连接端口的状态(4)Input:从输入寄存器传回并移除字符(5)Output:将一个字符串写入输出寄存器(6)InputLen:指定由串行端口读入的字符串长度(7)InBu FF erCount:传回在接收寄存器中的字符数3、软硬件之间:台安TP02与上位机PC通信时,为了实现两者的通信需要配备通信线。

4、通信程序的实现4.1 通信初始化程序首先,在窗体开始设计之前,添加MSComm控件。

4.2程序编写:4.2.1 通信控件MSComm1属性设置:mPort = 1 设置端口号MSComm1.Settings = "19200,E,7,2" 设置通信参数MSComm1.InputLen = 0 设置读入字符串长度MSComm1.PortOpen = True 设置通信端口状态4.2.2 PLC运行程序:STX$ = "::"TransmitBuf$ = "01?5RUN"sum$ = CheckSum(transmitBuf$)ETX$ = Chr$(13)SXD$ = STX$ + transmitBuf$ + sum$ + ETX$MSComm1.Output = SXD$DoDoEventsLoop Until MSComm1.InBu FF erCount >= 12In1$ = MSComm1.Input4.2.3 从PLC读取资料,将寄存器内的数据资料在PC上显示以便观察监控(反应时间50ms):STX$ = "::"transmitBuf$ = "01?5MRVD000102"sum$ = CheckSum(transmitBuf$)ETX$ = Chr$(13)SXD$ = STX$ + transmitBuf$ + sum$ + ETX$MSComm1.Output = SXD$DoDoEventsLoop Until MSComm1.InBufferCount >= 20InData$ = MSComm1.InputLabel2.Caption = Mid$(InData$, 10, 4)Label3.Caption = Mid$(InData$, 14, 4)4.2.4从PLC读取资料,将RelayC0001状态通过PC显示进行监控(反应时间50ms):STX$ = "::"transmitBuf$ = "01?5MCRC0001"sum$ = CheckSum(transmitBuf$)ETX$ = Chr$(13)SXD$ = STX$ + transmitBuf$ + sum$ + ETX$MSComm1.Output = SXD$DoDoEventsLoop Until MSComm1.InBufferCount >= 13In4$ = MSComm1.InputCoil$ = Mid$(In4$, 10, 1)C1% = CInt(Coil$)Label6.Caption = C1%4.2.5 设定Relay状态,将Relay设定为ON(反应时间50ms):Dim C1 As IntegerSTX$ = "::"transmitBuf$ = "01?5SCSY00011"sum$ = CheckSum(transmitBuf$)ETX$ = Chr$(13)SXD$ = STX$ + transmitBuf$ + sum$ + ETX$MSComm1.Output = SXD$DoDoEventsLoop Until MSComm1.InBufferCount >= 12In2$ = MSComm1.Input4.2.6 PLC停止运行:STX$ = "::"transmitBuf$ = "01?5STP"sum$ = CheckSum(transmitBuf$)ETX$ = Chr$(13)SXD$ = STX$ + transmitBuf$ + sum$ + ETX$MSComm1.Output = SXD$DoDoEventsLoop Until MSComm1.InBufferCount >= 12In3$ = MSComm1.Input4.2.7 VB6.0下CheckSum函数代码如下:Private Function CheckSum(transmitBuf$)L = Len(transmitBuf$)Add = 0Dim k, sum As IntegerFor k = 1 To LTJ$ = Mid$(transmitBuf$, k, 1)Add = Add + Asc(TJ$)Next kDo While Add >= 256Add = Add - 256LoopAdd = 255 - Add + 1tempBuf$ = Hex$(Add)CheckSum = LTrim(tempBuf$)End Function5、结论PLC与上位机的结合,并通过VB6.0传送数据所构成的计算机监控系统,对于近距离传输数据的现场控制来说是一种性价比很高的解决方案。

利用串行通信实现计算机与PLC协同工作

利用串行通信实现计算机与PLC协同工作

比人工测试提高了 10%。 自动测试系统是由 2 个独
StrBit = Split( Serial_in,″ ″)
高效准确地传递。 本文将通信任务集中放置在定时

性,另一方面信息处理逐项以独占式完成提高了信息
MR8000.Value = Val( StrBit(0) )
程序中,一方面 短 定 时 周 期 提 高 了 信 息 传 递 的 时 效
[6]
,即
持续的脉冲信号,当按一定频率持续输出,表明计算
机和 PLC 联机正常。 其它信号均为指令信号,上升沿
有效, 计 算 机 和 PLC 接 到 信 号 后 都 要 执 行 一 定 的
任务。
为解决这个问题,可以参照 PLC 端口的输入输出工作
的信号传递问题。 即将通信过程都集中放入一个定
时程序中,先从 PLC 读取所需数据,然后再将需要输
MSComm1.PortOpen = True
MSComm1.Settings = ″19200,e,8,1″
MSComm1.InputMode = comInputModeText
MSComm1.InputLen = 0
串口中断程序:
Private Sub MSComm1_OnComm( )
the data signal during the cycle scan,to ensure the reliability of information transmission.
Keywords:VB;PLC;computer;serial communication
0 引言
近年来,随着用工成本的不断上升,越来越多的
校准命令
3 信号处理与传递
由于串行通信在某一时刻只能接收或者发送 1 个

VB下PLC与PC串口通信的实现解析

收稿日期:2005-01-10作者简介:张传伟(1974-,男,安徽淮南人,西安科技大学机械工程学院讲师,硕士,主要从事机电系统智能控制和CAD/CAM 方面的科研与教学工作,(E-mailz hangcw@xus 。

文章编号:1001-2265(200512-0062-02VB 下PLC 与PC 串口通信的实现张传伟,王昀睿(西安科技大学机械工程学院,西安 710054摘要:结合DVP 系列可编程控制器的特点,给出了利用Visual Basic(VB中的MSComm 控件实现计算机与PLC 的串行通信的方法,并给出了详细的程序设计过程。

该方案简单、实用,对由其它类型PLC 和上位机组成的监控系统的通信实现有一定的参考价值,并在电力无功补偿控制系统中得到了成功的应用,取得了满意的效果。

关键词:VB;串行通信;MSComm;PLC 中图分类号:TP391.8 文献标识码:AImplementation of Serial Communication Between PLC and PCZHANG Chuan -wei,WANG Yun -rui(School of Mechanical Engineering,Xi c an University of Science &Technology,Xi c an 710054,ChinaAbstract:According to the characteristics of DVP series Programmable Logic controllers,a com munication method between the computer and PLC with VB language is introduced,program ming and process is given in detail.This scheme has a simple hard ware structure and is practicable,which has also a reference value to the realization of communication between computer and PLC in other supervisor system.It has beenapplied successfully in electrical reactive power compensation control system.Key words:visual basic;serial communication;MSComm;PLC0 引言PLC 是80年代发展起来的新一代工业控制装置,由于可靠性高、适应性好、抗干扰能力优、接口功能强、编程简单、直观以及模块化结构、使用方便等优点,在工业控制领域中得到了广泛应用。

基于VB的上位机与PLC的串行通信

基于VB的上位机与PLC的串行通信1 引言在现代控制系统中,pc机作为上位机负责系统管理、状态监控、信息处理和打印报表等工作,plc作为下位机进行面向现场的实时控制已成为一种典型的系统结构。

因此,pc机与plc之间的通信问题便成了系统能否实现的关键。

串行通信以其接线简单、容易实现的特点得到了广泛的应用。

visual basic编程软件简单易学、功能强大,利用它可以很方便的实现pc机与plc间的串行通讯。

本文以omron公司的cpm2a plc为例,介绍了利用vb6.0实现pc机与plc串行通讯的具体方法。

omron公司的cpm2a plc支持host-link通信协议,可以与上位计算机进行通信。

使用host-link通信协议构成的通信网络,可以很方便的实现上位pc对下位plc的实时监控。

2 原理设计2.1 系统结构系统结构如图1所示,计算机作为上位机,plc作为下位机,因omron cpm2a本身带有rs-232串口,因此,利用rs-232电缆将其与pc机的串口(com1或com2)相连,便构成了一个1:1的简单的通讯系统[1]。

图1 系统结构2.2 host-link通信协议[2]omron公司的host-link通信系统是由上位计算机(ibm pc或兼容机)通过安装在各台p lc上的host-link单元连接多台plc构成的网络。

上位机对系统中的plc进行集中管理与监控,通过与host link单元的通信,可以编辑或修改各台plc的程序,实时监控其运行过程,实现自动化系统的集散控制。

对于小型plc,也可以通过其rs 232c通信端口进行链接。

系统使用host-link通信协议进行通信,上位机具有传送优先权,总是首先发出命令并启动通信,host link单元收到命令交由plc执行,然后将执行结果返回上位机,二者以通信帧为单位,轮流交换数据。

通信时一组传送的数据称为“块”,它是命令或响应的单位,从上位机发送到host -link单元的数据块称为命令块,反过来,从host- link单元发送到上位机的数据块称为响应块。

PLC基于VB与计算机通信的一种方法

串行 通 信 。
sa a = Ara ( , 3 dt r y 12,)
参考文献
【】廖常初 . 7 0 P C l ¥ 2 0 L 基础教程 【 . M】机械
工 业 出版 社 , 0 6. 20
D B e) s B t m i n y ( ye t A R D m n y eUB u d s aa + 4 A e i B t( 0 n ( t ) ) s d

4结语
本 文介绍 了采用VB通 信控 件( Co MS mm)
般 工 业控 制 中 都是 采 用 R 一 3 实 现 。 s 22 上
位 机首 先 向P c L 发送 查询 数据 的 指令 , L P C 接 收 了上 位 的指 令 后 , 行校 验 , 其是 否 进 看 正 确 , 果 正 确 , 向 上 位 机 传 送 数据 ( 如 则 包 含首 尾校 验字 节 ) 否 则 , L 拒 绝 向上 位机 。 P C
在 工业 控 制领 域 中 , L 作 为一 种 稳 定 P C 可 靠 的 控 制 器 得 到 广 泛 的 应 用 。 P 与 将 Lc
Dm e 0 s B t i rv A y e P i ae S b f r _o d ) r t u o m la ( v
W ih M SComm 1 t

R D rsre rvrve t) sB t e i Pl t ee c
计 算 机 结 合 , 使 系 统 达 到 既 能 及 时 地 采 可
集 、 储 数 据 , 可 处 理 和 使 用 好 数据 , 存 又 两 者 结 合 的 关 键 是 P C与 计 算 机 之 间 的 通 L
En d S ub

基于VB的台达PLC与监控计算机的串行通信实现(下)



以下举例说 明现场设备 与 P C通 信的实现 。 L 1 )控 制要 求 :控制 P C的起动 、停 止 .并显示 L 运行状态 ( 绿色 为运行 ,红色 为停止 ) ;能够 用交替 型按钮控制 Y . 1 O Y ,并用指示灯显示 Y . 1 态 ( OY 状 绿
色为运行 ,红色 为停 止 ) ;能 够对 D2 6 1 .D 5 5 2两个 寄存 器进 行数值 写入 的操 作 。
螭 胖 符 ,暴用 2十字符 .
日 O ∞
E l0 C ) 日 0tL OH. I /R( , ∞ F e^ ) O m1
L C算法 :A R H C D H D T H R D + M + A A ,然后取 2

1 8.第¨ 期 数 机床 1 控 市场
维普资讯
Ed f n I L C = h R I r c
E d u c in n F n to
②运行的开始就判断 P C的状态并设置标志位 L 初次运行打开 串 口,并显示 P c运 行状态。 L
P iae u F r L a ( r t S b o m o d ) v

2 )实现思路 : L P C起动停止 的标志位为 M1 7 , 0 2
地址 写入状 态
L O 码 R
0 1 0 5
0 5
O 0
站 号
功 能 码
O 1
O 1
起始地址 读取数 目
LO 码 R
O B
1 4
① L C算 法校验 的实现 : R
P b F n t n L C sr Sr g uI i u c i R ft C o As t n )As Sr g i ti n
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

产品的出现简化了对PLC的控制、操作,使PLC的应用更加方便;但也有其共同的缺点,价格普遍偏高和可二开发性较差。

VB作为“原始”的编程语言在这两方面无疑有着明显优势的,本文结合一个简单的案例,用比较基础的概念讨论如何通过VB实现PC与PLC之间的通信问题,这对刚涉步控制领域的工程师或许是有帮助的。

在现场设备层中各式各样的设备都可以和计算机联机,而最简单的自动化联机方式就是使用串行通信,VB提供了串行通信控件可以让开发者开发出串行通信的系统程序,以下是对相关问题的粗略讨论。

2 串行通信基本概念
数据通讯中有两种类型的通信形式,即并行通信(Parallel Communication)和串行通信(Serial Communication)。

例如,如果有8位数据需要传送,那么并行通信一次就可以完成8位的传输量;而串行一次只能传送1位。

图1表示了两种不同的通信模式,常用的串行通信也有两种,分别为RS-232和RS-485。

2.1 RS-232 串行通信
RS-232的信号准位是参考地线而言的,如图2所示。

相对于参考接地端1传输端传送数据;接收
端则相对于参考接地端2复现出传送端的传送的数据。

图2 RS-232 串行通信示意图
由图2可知,由于两个接地端准位不一定一样,而且很容易受到干扰,所以信号在RS-232线路传输时,很容易产生错误。

2.2 RS-485串行通信
RS-485的信号传输方式如图3所示。

RS-485的信号被传送出去时会分成正负两条线路,当到达接收端后,在将信号相减还原成原来的信号;如果将原始的信号表示成(DT),而被分成的信号分别标示成(D+)及(D-),则DT=(D+)-(D-)。

同理,接收端在接收到信号后,也依据上式还原成原来的样子。

如果线路受到干扰,两条线路的信号分别为(D+)+Noise与(D-)+Noise。

接收端还原信号为(DT)= [(D+)+Noise]-[(D-)+Noise],与先前结果一样,所以RS-485可以有效的防止噪声的干扰。

3 VB的基本概念
VB(Visual Basic)是微软的窗口软件,提供了很多接口成员,对象、属性、事件、方法就是4个重要的接口,VB提供了许多常用的控件。

3.1卷标控件
卷标控件如图4(a)所示,该控件专用于显示文字、数字用,显示如图4(b)所示
按钮控件
按钮控件如图5(a)所示,该控件使用率很高,提供一个供系统用户操作用的按钮,如图5(b)所示。

3.3 定时器控件
定时器控件如图6所示,该控件的最大作用在固定的时间内可执行所设置的程序代码一次。

VB提供了大量的控件,在此不再多述。

4 基于MScomm控件的串行通信
要完成VB与PLC等设备的串行通信要用到MScomm控件,在此有必要对该控件作较详细的说明。

Mscomm是一个非标准控件,需要要手动添加许多项目,其步骤如下。

1)选择菜单的【工程】
2)选择【部件】
3)在弹出的对话框中做如图7的选择。

图7 对话框界面
4)如图8所示,在部件选项卡就会出现MScomm控件。

图8 MScomm控件
5)基本属性
MODBUS ASCII
Modbus 分为ASCII和RTU两种,ASCII采用的格式和校验相对简单,本文采用ASCII格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。

1)通信格式
LRC算法:ADR H+CMD H+DATA H,然后取2的补码。

2)功能码
05,写入线圈
01,读线圈状态
06,写入单个字寄存器
VB与PLC通信的实现
以下举例说明现场设备与PLC通信的实现。

1)控制要求:控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控制Y0,Y1,并用指示灯显示Y0,Y1状态(绿色为运行,红色为停止);能够对D256,D512两个寄存器进行数值写入的操作。

2)实现思路:PLC起动停止的标志位为M1072,查DVP协议,知道地址为H0C30,按功能码01操作;同样Y0,Y1的地址分别为H0500,H0501。

写入FF00为ON,0000为OFF,按功能码05操作;D256,D512地址分别为H1100,H1200,按功能码06操作即可。

3)VB接口的设计如图10所示。

图10 监控程序界面
用按钮控制PLC的起动停止,Y0、Y1的ON/OFF及D256、D512写完数据的发送;用Shape组件做指示灯,表示PLC的运行状态和Y的状态;用timer组件不停的读取M1072的状态,以判断PLC 的运行情况;用MScomm控件实现PC与PLC的通信。

4)编程实现的代码构成
(1) LRC算法校验的实现
Public Function LRC(str As String) As String
c = 0
l = Len(str)
For c = c + 1 To l
c_data = Mid$(str, c, 2)
d_lrc = d_lrc + Val("&H" + c_data)
c = c + 1
Next c
If d_lrc > &HFF Then
d_lrc = d_lrc Mod &H100
End If
h_lrc = Hex(&HFF - d_lrc + 1)
If Len(h_lrc) > 2 Then
h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)
End If
LRC = h_lrc
End Function
(2)运行的开始就判断PLC的状态并设置标志位'初次运行打开串口,并显示PLC运行状态Private Sub Form_Load()
Dim s1 As String
Dim s2 As String
Dim s22 As String
Dim s3 As String
Dim s4 As String
= True
s2 = "01010C300001"
s22 = LRC(s2)
s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10) = s1
s3 =
s4 = Mid$(s, 6, 8)
If s4 = "0C30FF00" Then
plc = 1 'PLC为运行标志
Else
plc = 0 'PLC为停止标志
End If
End Sub
(3)下面一段为用指示灯表示PLC的运行状态Private Sub Timer5_Timer()
Dim s1 As String
Dim s2 As String
Dim s22
Dim s3 As String
Dim s4 As String
s2 = "01010C300001"
s22 = LRC(s2)
s1 = ":" + s2 + s22 + Chr$(13) + Chr$(10)
= s1
s3 =
s4 = Mid$(s3, 8, 2)
If s4 = "31" Then
plc = 1 'PLC为运行标志
Else: If s4 = "30" Then plc = 0 'PLC为停止标志End If
If plc = 1 Then
= "PLC正在运行......"
= RGB(0, 255, 0) 'green
Else
= "PLC已经停止"
= RGB(255, 0, 0) 'red
End If
End Sub
(4) PLC的起动与停止
'起动PLC
Private Sub start_Click()
Dim strout As String
str = "00050C30FF00" 'M1072 为PLC起动停止标志位。

查地址表,M1072为为置
ON,0000为置OFF。

'以上都是固定格式,要牢记。

LRCC = LRC(str) '计算 str的lrc校验码。

strout = ":" + str + LRCC + Chr$(13) + Chr$(10) '欲传送之数据。

13为D,10为A
= strout
= True
End Sub
'停止PLC
Private Sub stop_Click()
Dim strout As String
= False
str = "00050C300000"
LRCC = LRC(str)
strout = ":" + str + LRCC + Chr$(13) + Chr$(10)
= strout
= True
End Sub
Y0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。

D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了。

相关文档
最新文档