您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于CAN总线的多PLC网络通信方案研究

基于CAN总线的多PLC网络通信方案研究

来源:筏尚旅游网
第1期 微处理机 No.1 2012年2月 MICROPROCESS0RS Feb.,2012 基于CAN总线的多PLC网络通信方案研究 薛青娜 (西安铁路职业技术学院,西安710014) 摘要:目前,很多小型PLC并没有集成CAN通信接口,这样就妨碍了通信模块的连接。提 出了一种基于CAN总线的PLC网络通信方案,该方案通过将各厂家不同的通信协议转化为统一 的CAN网络通信,从而实现了较好的互相连通性以及统一的上位机监控能力。 关键词:PLC通信;CAN总线;现场总线 DOI编码:10.3969/j.issn.1002—2279.2012.01.009 中图分类号:TP393.3 文献标识码:A 文章编号:1002—2279(2012)01—0027—04 Study of MUIti PLC Network Communication Scheme based on CAN Bus XUE Qing—na (Xi tm railway vocational and technical college。Xi an 710014.China) Abstract:Many of the small PLC is no integrated communication interface,SO that it hampers the communication module of connection.This paper presents a kind of PLC network communication scheme based on CAN bus.The scheme is to construct PLC communication network by equipping RS232——CAN gateways on the host PC and each PLC. Key words:PLC Communication;CAN bus;Field bus 1 引 言 40m),非常适合用于组建PLC通信网络 ]。 提出了一种基于CAN总线的PLC网络方案, 目前,_出于成本的考虑,大部分的小型PLC并 能够对多台联网的PLC实现远程配置、数据通信, 没有集成CAN通信接口,部分大型PLC集成有 并能够在投入较低硬件成本的基础上,实现良好的 CAN通讯接口,但价格较贵。随着应用技术的发 系统运行性能。这个方案也充分发挥了现场总线 展,经常会出现一些应用场合,在面积较大的范围 CAN—bus的实时、可靠、高速、远距离、易维护等特 内,需要多台PLC协同完成一个系统的综合控 点 。通过单片机将PLC的通讯协议转化为CAN 制…。许多制造业用户特别是大型企业,为了避免 协议,并组成CAN总线网络,以实现各PLC之间的 过分依赖一家系统提供商,通常会采用几家不同厂 相互访问,同时可使用上位机检测各PLC的工作和 商的控制系统。PLC之间的通信格式不兼容,给企 通信状况。这种方式组建的PLC网络,与选择集成 业内部的系统集成、集中管理和升级带来了极大的 CAN通讯功能的PLC设备相比,具有更加灵活的系 困难。因此,研究一种统一的通信协议,以使不同品 统扩展能力,也能够获得更好的性价比…。 牌的PLC可以统一监控和互相自由通信具有重要 的现实意义。 2基于CAN总线的PLC网络方案 CAN总线具有多主工作方式、各站依据优先权 进行总线访问的机制、无破坏性的总线仲裁技术、短 帧结构不易受干扰、自动检错、发送期间若丢失仲裁 或由于出错而遭到破坏的帧可实现自动重发等性 能。直接通信距离最远可达10km(传输速率为 5kbit/s),最高通信速率可达1Mbit/s(传输距离为 图1基于CAN总线的PLC网络方案 作者简介:薛青娜(1979一),女,陕西渭南人,讲师,主研方向:通信信号技术。 收稿日期:2011—04—08 ・28・ 微处理机 2012正 在该方案中与上位机联系的欧姆龙PLC通过 转换网关连接,而下位机的PLC1,PLC2,…,PLCn 则是不同公司的PLC产品,有欧姆龙的PLC,有三 起数据传输。当多节点参与通信时,必须为上位机 链接通信设置节点号,用以区分不同的节点,本文中 每个DP51+上只有一个PLC,节点号设置为0o。从 上位计算机发送一个命令时,必须遵循上位机连接 通信协议。 菱的sc—O9,还有满足MODBUS通信协议的控制 产品。这里转换网关的作用就是搭建不同PLC协 议与CAN协议之间的桥梁,并满足不同PLC协议 程序f_can.I.C用来将CAN接口接收到的命令 转化为欧姆龙的通信协议。主函数void f_.can 1()首 先发送各命令共同的起始字符@和节点号”o0”, unsigned char m—之间的无缝衔接。为了开发方便起见,转换网关使 用周立功的DP51+开发板来进行实现,其中的 CAN功能通过CAN控制芯片sJA1000来完成。 canchar[]中保存了主程序中接收 3 PLC协议与CAN协议的转换方案 在CAN与多PLC协议转换方案中,主要是通 到的CAN命令,其中第一个字节为该命令的控制字 符,根据该字节的值区别不同的命令并分别处理。 fsegalj.c程序用来将串口接收到的欧姆龙响 _过软件来实现协议之间的转换,这里有欧姆龙通信 协议、三菱sC一09、Modbus RTU。这里在DP51+的 应命令转化为CAN命令。CAN命令帧的地址为读取 命令中包含的发送节点地址,命令码为将相应命令码 的第7位置1,unsigned char m—sefialchar[]中保存了 主程序中接收到的欧姆龙PLC通过串口发送的字 符,其中第四和第五字节保存了命令的标题码,程序 以此判断并分别处理不同的命令。若为测试命令,则 软件中使用f._serial一1.C和f_can一1.C:实现欧姆龙 通信协议和CAN协议的互相转换;f_serial_2.C和L can 2.C:实现三菱SC一09通信协议和CAN协议的 互相转换;f_senal一3.C和f.carl一3.c:实现Modbus RTU通信协议和CAN协议的互相转换。在软件检 测到不同协议的时候,通过中断方式来调用上述函 数完成协议转换。 3.1 欧姆龙通信协议与CAN协议互相转换 将数据区的第三个字节设置为本节点PLC的类型 号,其它读写命令由开始地址区分后转换为相应的 CAN命令。在处理读数据的响应命令时,对于大于 8个字节的命令,要分成多帧分别传送。 3.2三菱通信协议与CAN协议互相转换 在上位机中严格按照OMRON专用协议编写通 信程序。这样PLC才能理解上位机发来的命令帧, 而上位机才能理解PLC发回的响应帧 J。响应帧 在PLC的上位链接单元中自动生成,在PLC中无需 三菱sc一09通信电缆采用统一的编址处理各 种软设备,因此需要明确每一个软设备的具体设备 地址,读写时各软设备的地址范围如下表所示,每一 地址为一个字节,长8位,相当于8个软设备,如读 写时0080H实际是X0一x7的值。 用户再编写通信程序 因此可以没有PLC的主动参 与而进行通信。PLC也有能力在必须主动参与时发 表l三菱字软设备地址 程序f—can一2.C用来将CAN接口接收到的命令转 读取保持寄存器命令的标题码o3,标题码之后为读 化为三菱sc一09的通信协议。因为三菱sc一09通信 取变量的开始地址和读取数目,把转换完成的Modb. 协议中每个字节的最高位为偶校验位,其余位为数据 US命令中从地址到读取数据低位的各字节存储在数 位,而DP51+串口协议每字节8位数据位,无校验位。 组char ch[]中,然后计算该命令的CRC校验。 fserial2.C程序用来将串口接收到的SC—O9 __的通信命令转化为CAN命令。因接收到的每个字 节都包含了偶校验位,所以在使用每个字节的值之 前,首要要去取偶校验位,然后再根据标题码判断不 同的处理命令。 3.3 MODBUS协议与CAN协议转换 f_serial一3.C程序用来将串口接收到控制器的 应答命令转化为CAN命令。DP51+接收到应答命 令后计算CRC校验,确认校验无误则转化为CAN 命令并发送回相应的节点,如果命令大于8个字节, 则分成多帧分别发送。 程序f_can_3.C用来将CAN接口接收到的命令 4不同类型PLC互相通信 转化为Modbus的通信协议。在DP51+接收到读取 4.1欧姆龙PLC主动发起写操作、 工作区的命令0x22后,首先发送节点地址01,其后为 必要时欧姆龙能主动发起传送数据,以减少上 1期 薛青娜:基于CAN总线的多PLC网络通信方案研究 ・29・ 位机监控的频率。实现这一功能需要在欧姆龙PLC 中编写TXD命令,首先初始化DM区,DM0痈字节 为写操作命令代码,与CAN协议的命令码相同,低 字节为写操作目标节点的地址。DM1中保存写命 以欧姆龙主动发起读取三菱PLC数据的操作 令的开始地址,从DM2开始保存要写的数值。 TXD命令的格式如图2所示,首源字s为传送 数据第.一个字的地址,本文中固定为DM0,控制字 为例,具体通信步骤如下: (1)在欧姆龙PLC中编写TXD命令,首先初始 化DM区,DM0高字节为命令代码,与CAN协议的 命令码相同(04),低字节为读取数据目标PLC的节, 点地址。DM1高字节设置读取目标PLC哪个区域 的数据,若读取输人区则置为01,读取输出区则设 置为02,读取工作区则设置为03。低字节设置读取 来的数据放到本机工作区的开始地址,如设置为 00。DM2设置为读取目标节点数据的开始地址, (c)的值决定了数据的输出端口,在上位机链接模 式中,最低两位未使用,均设置为0。最高位设置为 1,则输出到外围端口,设置为0,则输出到外围端口 以外的端口。当最高位设置为0时,第二位设置为 DM3设置为读取的字节数。然后通过TXD命令将 0,使用CPU单元内置的RS一232C端口,设置为t DM0到DM3的数据发送到DP51+(1)。 或2则分别使用串行通信板端口l或2。本文使用 欧姆龙PLc I l三菱PLC CPU单元内嚣的RS一232C端口,因此控制字C没 置为#0。字节数N必须是#0000到#0061之问的 BCD值(即最多有122个字节的ASCII字符)。当 执行条件为ON时,TXD从首源字s开始读出N个 字节数据,将其转化为ASCII码,然后输出数据到指 定端V-1,在读取DM区时,将先读取高字节,后读取 图3 PLC主动读数据通信流程 低字节。 (2)DP51+(1)确认欧姆龙发送来的Ex命令 s:首源字 IR,SR,AR,DM,EM,HR,TM/CNT,LR 正文的第一个字节为0x04后,将其转化为CAN查 C:控制字 询命令(0x04),并发送到目标节点。 # (3)DP51+(2)接收到查询消息帧以后,通过 N:字节数 判断第3个字节的值,采用相应的命令读取三菱 IR,SR,AR,DM,EM,HR,TM/CNT,LR# PLC输入区、输出区或者工作区的数据。 图2欧姆龙TXD命令 (4)三菱PLC自动H向应对它的读数据命令。 从欧姆龙PLC发送出的字符格式如下表所示, (5)DP51+(2)接收到三菱PLC对读数据命令 欧姆龙PLC将自动添加前缀(起始字符、节点号和 的响应后,以接收到CAN命令的第4个字节的值为 标题码EX)和后缀(校验码和结束符)。程序f_ser- 开始地址,发出按字节写工作区命令0x13到DP51+ iaJ.1.c通过标题码EX来判断是否是欧姆龙PLC (1)。 发出的TXD命令,根据正文的最高字节,将其转化 (6)DP51+(1)接收到写工作区命令0xl3后, 为相应的CAN通信命令(按字节写输出命令0x03、 处理开始地址后转化为欧姆龙写IR区命令,在接收 按字节写工作区命令0x13),接收写人命令节点的 到欧姆龙PLC的正确响应后通信结束,读取的数据 处理流程与上位机监控时相同,在收到写入节点发 保存在欧姆龙的工作区中。 回的正确响应命令后,欧姆龙主动发起的对其它节 4.3三菱PLC主动发起读写操作 点写人数据的操作结束。 三菱PLC主动发起读写其它节点的数据需要 表2欧姆龙EX命令 使用RS指令。RS指令的格式如图4所示,虽然在 一起始字符节点号标题码正文 校验码FCS 结束符 个程序中可以按需使用大量Rs指令,但必须保 @ 。’ 。。E x 数据 寡篆 in 证同一时刻只有一个Rs指令被驱动。该指令使用 RS一232接口来发送和接收串行数据,在RS指令接 4.2欧姆龙PLC主动发起读操作 通的情况下,将M8122置位(设置发送请求),将从 当需要欧姆龙主动发起读数据操作时,需要使 发送地址开始,依次将数据发送到串口,发送数据的 用查询命令0x04。两PLC互相通信的示意图如图3 个数由发送数据点数决定。本文不需要三菱PLC 所示。 主动接收数据,因此接收数据点数设置为0。 微处理机 由M8161决定发送数据的方式,当M8161设置 为OFF时,l6位数据被分成高8位和低8位,然后 再发送;设置为ON时,高8位被忽略,只发送低8 位。本文中CAN应用层协议采用按字节方式读写, 因此使用Rs指令前,将M8161设置为ON。 图4三菱RS指令 由三菱PLC主动发起写其它节点的操作时,首 先初始化数据寄存器,Do设置为写操作命令代码, 与CAN协议的命令码相同,Dl设置为写操作目标 节点的地址。D2中保存写命令的开始地址,从D3 开始保存要写的数值。然后驱动RS指令,并设置 图5欧姆龙TXD通信程序 在欧姆龙PLC中首先将DM0一DM3分别设置 为#0402、#0100、#0000、#0002,然后每t秒钟通过 TXD命令将DM0一DM3的数据发送到串口,将三菱 PLC的输人区从地址0开始的两个字节读到工作区 IR016,然后将输出区IR100设置为与工作区起始地 发送请求。三菱PLC将自动在数据块的前后分别 添加数据块起始标志STX和数据块结束标志ETX。 由三菱PLC主动发起读取其它节点数据的操 作时,首先初始化数据寄存器,D0设置为查询命令 代码o4,Dl设置为读取数据目标节点的地址。D2 设置为读取目标PLC哪个区域的数据,D3设置为 读取来的数据放到本机工作区的开始地址。D4设 址IR016的值相同。将三菱PLC的输人点设置为 ON以后,欧姆龙PLC相应的输出点点亮,由欧姆龙 主动发起的读数据命令正确执行。 6结束语 许多制造业用户特别是大型企业,为了避免过 分依赖一家系统提供商,通常会采用几家不同厂商 的控制系统 J。PLC之间的通信格式不兼容,给企 业内部的系统集成、集中管理和升级带来了极大的 困难。本文提出了一种基于CAN总线的PLC网络 置为读取目标节点数据的开始地址,D5设置为读取 的字节数。然后驱动RS指令,并设置发送请求。 其余通信流程与欧姆龙主动发起读取其它节点数据 的流程相同。 5 系统测试 用Keil软件编写协议转换程序(与欧姆龙PLC 连接的DP51+的CAN通信地址设置为2,另外一个 与三菱PLC连接的DP51+的CAN地址设置为3, 实际应用时可外接DIP开关用来选择地址),并生 成汇编文件,然后将DP51+的串口与上位机串口相 通信方案,该方案通过将各厂家不同的通信协议转 化为统一的CAN网络通信,从而实现了较好的互相 连通以及统一的上位机监控能力。 参考文献: [1] 甘永梅,李,刘小娟.现场总线技术及其应用 连接,将模式选择开关拨到编程模式,打开DPFlash 下载软件,型号选择DP51(+),选择连接的上位机 [M].北京:机械工业出版社,2004. [2] 温克强.Modbus通讯协议在DCS与PLC通讯中的应 用[J].石油化工自动化,2005(5):65—68. [3]李喜东,刘波涛,.Modbus RTU串行通讯协议在 工业现场的应用[¨.自动化技术与应用,2005,24 (7):37—40. 串口,并选择波特率为9600bps 6 J。 在欧姆龙PLC中首先将DM0一DM2分别设置 为#0302、#0000、#0001,然后执行如图5所示的命 令,每1秒钟通过TXD命令将DM0一DM2的数据 发送到串口,经过DP51+转换为对三菱PLC写输 出区的命令,然后将DM2中的数值循环左移一位。 三菱PLC的输出指示灯依次循环点亮,由欧姆龙 PLC主动发起的写数据命令正确执行。 [4] 袁飞,程恩.基于Modbus规约的智能仪表与Pc机通 信技术实现[J].微计算机信息,2004,20(9):56—57. [5]赵伟,张小牛.网络化一测量技术与仪器发展的新趋 势[J].电测与仪表.2000,37(7):5—9. [6]郑平,李英.基于E ̄emet的全开放工业控制网络[J]. 工业仪表与自动化装置,2001(3):6—9. [7]吴钦伟.工业仪表与装置智能化网络化的进展[J].自 动化博览,2003(18):1—6. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务