当前位置:文档之家› 用VB实现上位机与OMRONPLC串行通讯

用VB实现上位机与OMRONPLC串行通讯

机响应格式
束。响应块中还包括反应执行结果的响应码。图 2
所示为数据传送时程序流程图。
其中:
起始符— ——@
节点号— ——指定与上位机通讯的 PLC(在
PLC 串口设置中设置)
命令码— ——和上位机所发命令相同
结束码— ——命令结束状态 (如:00 表示正
常完成,01 表示在 RUN 模式下无法执行)
2 通讯硬件及软件介绍
可以获得关于通信事件和通信错误的完整信息,进 而进行处理。查询法:MSComm 控件的 CommEvent 属 性返回通信中产生的事件和错误类型, 由通信控件 自动检测和跟踪通信状态后设置。因此,程序员可以 在每个重要的程序功能之后检查 CommEvent 属性 值来检测事件和通信错误。当然,要完成正常的通信 功能, 还必须正确设置 CommEvent 控件的相关属性 值。
1 引言
随着工业控制要求的不断发展,上位机监控已 基本成为集散控制系统所不可缺少的部分。一般情 况下, 在大型的集散控制系统中都是用专业工控组 态软件制作上位机的监控界面, 而以 PLC 厂家所推 荐 的 DDE SERVER 作 为 联 系 上 位 机 和 PLC 的 桥
梁。操作员站采用工控组态软件实现画面监控。由于 这种方案成本较高, 所以在很多小型的集散控制系 统中,趋向于采用通用工程软件,如 DELPHI,VISUAL BASIC,VISUAL C++ 等编制上位机监控界面。同时, 在一些实时性要求较高的监控应用中, 用 VISUAL BASIC 等工具可实现更底层的控制, 在硬件配置相 同时系统响应比工控组态软件要快。由于本方案将
80 (总第 116 期) 2009·1·
http://www.cicma
CIC 中国集成电路 China lnte gra te d Circult
应用
有传送优先权,总是首先发出命令并启动通信, PLC 串口设置中设置)
HOST LINK 单元收到命令交由 PLC 执行,然后将执
命令码— ——设置两个字节的命令码
3 通讯的实现
3. 1 上位机和可编程控制器之间的硬件 连接
我们用电缆将其 RS- 232C 通信板与计算机串 口相连,即可构成一个简单的监控线路,如图所示。
图 1 PLC与计算机连接示意图
当然,可以实现对多台进行监控,当 1 台上位机 同 时 和 N 台 PLC 通 讯 时 , 可 通 过 NT- AL001 把 RS- 232转换成 RS- 422 可实现和多台 PLC 的通讯。
而 OMRON CP1H PLC 由于很多区的信息在 PLC 处 于“运行”模式时都是不可写的,若需要写入,必须 先通过 SC 命令码把 PLC 置为“监控”模式,写入成 功后再把 PLC 改回“运行”模式。根据协议,可以得 到命令格式如下:
行结果返回上位机,二者以通信帧为单位,轮流交换
正文— ——设置命令参数
数据。通信时一组传送的数据称为“块”,它是命令
校验码— ——设置两字符的帧检查顺序码,
或响应的单元的数据块称为命令块,反过来,从 用于校验。它是从“@”开始到正文结束的所有字符
HOST- LINK 单元发送到上位机的数据块称为响应 的 ASCII 码按位异或运算的结果。
2. 2 VB介绍
VISUAL BASIC 6.0 中提供了一种实现串口通 讯的 MSComm 控件。该控件可完成对串口的读写工 作,从而实现与 PLC 的通讯,为此需正确设置它的 一些属性。MSComm 控件的属性有许多,其中一些需 要在编程时设置,另一些则取默认值即可,具体置方 法可参见相关资料。MSComm 控件有两种通信方式, 查询方式和事件驱动方式。事件驱动法:OnComm 事 件是 MSComm 控件提供的唯一的事件, 当有数据到 达端口或端口状态发生改变或通信错误产生时,都 将触发 OnComm 事件, 以捕获和处理这些通信事件 和通信中产生的错误,通过查询 CommEvent 属性值,
http://www.cicma
2009·1· (总第 116 期) 79
应用
CIC 中国集成电路
China lnte gra te d Circult
高级语言引入工控网络的监控中, 对于那些有兴趣 自行开发上位机控制软件的开发人员, 将有一定的 借鉴作用。本文将以在实际工程中运用 VB 实现上 位机和 OMRON CH1H PLC 的通讯为例, 向大家介 绍一种简单可靠,易于掌握的通讯方案。
上位机发送命令的格式
上位机到 PL件
在窗体中添加 MSComm 控件 MSCommSet 和一 个时钟控件 Timerl,时钟控件用来处理通信超时。在 使用 MSComm 控件之前要进行初始化, 建立起与串 行端口的连接。在通信控件的属性页中设置其属性, 要保证和 PLC 通讯参数一致。
正文— ——仅在有读数据时生成
校验码— ——用于校验,由 PLC 计算给出,
同上位机的 FCS 计算方法相同,可用来判断 PLC 传
来的应答是否可靠
终止符— ——设置 “*” 和 “回车”(CHR
$(13))两个字符表明命令结束。
4 通讯程序实例
图 2 数据传送程序流程图
上位机链接命令可参考相应 PLC 的编程手册, 其基本格式如下:
其中:
起始符— ——@ 节点号— ——指定与上位机通讯的 PLC(在
4. 2 串行口初始化
常用属性如下 Comport:设置通讯中,指定用于通讯的串口号。
http://www.cicma
2009·1· (总第 116 期) 81
应用
CIC 中国集成电路
China lnte gra te d Circult
Serial Communication between Computer and PLC by Using VB Programming
YANG Li-xuan,LIU Da-quan (Shanghai MICSON Semiconductor Equipment Co., Ltd. Shanghai 201114,China)
Abstract: With the de ve lopme nt of indus tria l a utoma tion, P LC a nd compute r be come s more a nd more e xte ns ive ly us e d in indus try. To pla y the ir pote ntia l to the full e xte nt, communica tion of P LC a nd compute r be come s more a nd more freque nt. Ta king OMRON CP 1H P LC a s a n e xa mple , this pa pe r introduce s a communica tion me thod be twe e n compute r a nd P LC by us ing VB progra mming. This s olution ha s s imple ha rdwa re s tructure a nd is fle xible . It ha s gre a t re fe re nce va lue for re a lizing HMI of s ma ll to middle -s ize d control s ys te m. Keywords: Vis ua l Ba s ic 6.0;P LC;S e ria l Communica tion
3. 2 上位机和可编程控制器之间的通讯 协议
上 位 机 链 接 通 信 使 用 的 是 OMRON 的 Host Link 协议,在一次交换中传输的命令或应答的数据 被称为一帧,一帧最多可包含 131 个数据字符。 OMRON CP1H 编程手册介绍了两种通讯方式,第一 种是由上位机向 PLC 发初始命令, 而第二种是由 PLC 向上位机发初始命令。前一种方式用得较多。系 统使用 HOST- LINK 通信协议进行通信,上位机具
2. 1 PLC介绍
OMRON 可编程控制器 SYSMAC CP1H 是最新 的超高速的一体化紧凑型 PLC。它整合了 CPM2A 和 CJ1 系列 PLC 的优点。内置数字 I/O、高速计数、 脉冲输出、模拟输入和输出功能,提供了极大的灵活 性。编程电缆只需要标准的 USB 线缆,使用快捷方 便。配备与 CS/CJ 系列共通的体系结构,与以往产品 CPM2A 40 点输入输出型尺寸相同,但处理速度可 达到约 10 倍的性能。CP1H PLC 提供了两个通讯口, 可 进 行 RS- 232C 通 信 和 RS- 422A/485 通 信 。 将 CPU 单元前面的拨动开关 SW4 (若选用串行端口 1)或者 SW5(若选用串行端口 2)设定为 OFF(出 厂时设定)。并且将串口设置中的模式设为 host link 模式。RS232 端口根据 PLC 系统设定的串行端口设 定的值进行动作。初始值:高位链接(9600 位 /s、启 动位 1 位、数据长 7 位、偶数校验、结束位 2 位)。
Inbuffersize:输入缓冲区大小,一般采用默认值 即可。
Outbuffersize:输出缓冲区大小,一般采用默认值 即可。
Output:向串口写数。 Input:从串口读数。 Inbuffercount:用来判断输入缓冲区内的字符数。 其详细内容请参考参考文献[2]。 初始化程序如下 Private Sub Initialize() mport = 1 MSComml.Setting =“9600 ,e ,7 ,2” MSComml.PortOpen = True MSComml.Inpulen = 0 MSComml.InputMode = ComInputModeText MSComml.Handshaking = ComNone MSComml.Inbuffersize = 1024 End Sub
相关主题