欧姆龙与三菱PLC之间的通信的实现
在现代工业中,plc通信联网功能的应用日益广泛。在实际生产现场,各个工位上可能使用不同厂家生产的plc,它们之间通信联网一直是工程上的一个难题。欧姆龙plc所特有的通信协议宏功能可以很好地解决这个问题[1] 。欧姆龙中小型plc,如cqm1h、c200hα、cj1、cs1等机型,均支持通信协议宏功能,可以实现与其他厂家的plc通信。协议宏通信方式编程简单、易于实现,是不同厂家plc通信的一种简便易行的方法。
本文选用欧姆龙丰田汽车价格的c200he-cpu42型plc,使用通信协议宏,与三菱的fx2n-64mr型 plc进行通信。欧姆龙plc为上位机,三菱 plc则为下位机。
网络结构如图1所示,主机c200he-cpu42作为上位机,使用c200hw-com06-ev1型通信板,通信板上带有rs-232c与rs-422a/485串行通信口各一个,都支持通信协议宏功能[2]。三菱fx2n-64mr作为下位机,机体上加装fx2n-485-bd串行通信功能扩展板,支持三菱计算机链接(computer link)通信协议[3]。1台上位plc最多可连接16台下位plc,上位plc与下位plc通过rs-485串行端口连接。通信过程中,上位plc首先发出指令并启动通信,下位plc收到指令并执行,然后将执行结果返回上位plc。下位plc之间不能进行直接通信。
图1 网络结构
欧姆龙的通信协议宏由通信序列(sequence)组成,由pmcr指令调用,与带有rs-232c或rs-422a/485端口的各种外围设备交换数据。通信协议宏支持软件(cx-protocol)的对话式菜单使通信序列易于登记。软件支持x-on和x-off、rts和cts等控制方法,允许传送任何带有校验码(如sum,lrc或crc)和帧长度的数据信息。一个接收阵列(matrix),最多可以设置15种类型的期望的接收信息,而每个期望接收信息都可以包含确定下一步要执行的过程和出现信息接收错误时要执行的故障处理命令[4]。
三菱计算机链接通信协议用于计算机与plc之间的通信,计算机发出读写plc数据的命令帧,plc收到后自动生成和返回响应帧,但是计算机程序仍需用户编写[3]。上位计算机通过安装在各台plc 上的串行通信功能扩展板连接多台plc构成网络。专用通信协议有两种格式(format 1和format 4),区别在于字符串最后是否添加cr/lf码。本文采用format 1通信格式。
地址决定计算机访问哪一台plc,同一网络中各plc的地址不能重复,设定范围为00h~0fh。plc号用来识别plc的cpu类型。指令用来指定操作的类型,如读、写等操作,由2个ascii码组成。校验码是从地址开始,校验码之前的所有字符的十六进制数的ascii码求和,取和的低两位数据的ascii码。
计算机与plc之间的数据流有3种形式:计算机从plc中读数据、计算机向plc写数据和plc向计算机写数据。本文用到了前两种数据流形式。
(1)计算机从plc读数据操作
命令:enq+地址+plc标识号+指令+等待时间+字符区域a+校验码
响应:stx+地址+ plc标识号+字符区域b+etx+校验码 (正确时)
nak+地址+ plc标识号+错误代码 (错误时)
计算机收到响应信号后发出确认信号:ack+地址+ plc号或nak+地址+ plc号
波妹撩车(2)计算机向plc写数据操作“加价王”雷克萨斯跌下神坛了吗
命令:enq+地址+plc标识号+指令+等待时间+字符区域c+校验码
华普海域响应:ack+地址+ plc标识号 (正确时)
nak+地址+ plc标识号+错误代码 (错误时)
字符区域中,a为要读取的存储区的开始位置和字节数;b为返回的存储区的值;c为要写入的存储区的开始位置和数值。校验码用来校验数据是否正确。
欧姆龙plc与三菱plc通信之前,先要生成通信协议宏。下面以从三菱plc的x位元件组读数据和向三菱plc的y位元件组写数据为例,介绍协议宏组态方法:
(1)创建通信协议宏
根据三菱喜迎油价上涨计算机链接通信协议的格式要求,在cx-protocol软件上创建工程,如图2所示。创建“read”和“write”两个通信序列(sequence)。接收阵列(matrix)用于接收响应数据。
图2 通信协议宏结构
(2)创建通信序列
在通信序列中设置链接字(link word)、传输方式控制参数(control)、应答方法(response)、数据接收监控时间(timer tr)、数据接收完成监控时间(timer tfr)、数据发送完成监控时间(timer tfs)等内容。
(3)创建通信步
在通信序列中创建通信步(step)。每个通信步包括步号(step)、重复计数器(repeat)、命令(command)、重试(retry)、发送信息(send message)、接收信息(recv message)、是否响
应(response)、下一个执行过程(next)以及出错处理(error)等内容。
(4)创建发送和接收信息
发送信息与接收信息必须严格按照计算机链接通信协议格式编写。由“报头”(header)、“结束符”(terminator)、“校验码”(check code)、“帧长度”(length)、“地址”(address)和“数据”(data)等几部分组成。其中,读数据的发送信息结构如图4所示。在发送信息中,“数据”为上位plc向下位plc发送的具体数据,由“报头”、“地址”、“plc标识号”、“指令”、“消息等待时间”、“字符区域”、“校验码”等七部分组成。其中, “h”为报头,取值enq,其ascii码为“05h”。“a”为地址,取值“00”,表示与从机00通信。“ff”为fx系列plc的标识号。“br”为“读位元件”指令。“a”为等待时间,对应100ms。“x0004”、“04”表示从x004开始读取4个位元件的值。“c”为校验码,指定为sum(0)。
(5)创建接收阵列
三菱通信格式比较复杂,而且接收到响应数据具有一定的不确定性。因此,在协议宏程序中使用接收阵列的形式完成数据的接收工作。如图3所示,在接收阵列中设置了3种可能接
收到的数据信息(receive message),并规定接收到特殊数据信息后要进行的下一步处理方法(next process)。
通信协议宏组态结束后,将其下载到通信板中。
三菱plc通信参数设置:通信格式设置为format 1,波特率9600bps、偶校验、7位数据位、1位停止位。地址设置范围00h~0fh。
奇瑞网站图3 接收阵列
欧姆龙plc通信参数设置:通信板a端口设定为协议宏通信方式,其他通信参数要与下位三菱plc的通信参数保持一致。
通信协议宏的调用与执行程序段如图4所示,28908为通信板端口a使用标志。pmcr指令的第一操作数“#1000”、“#1001”为控制字,第一位的“1”表示使用通信板的端口a,后3位数表
示调用并执行的通信序列号。dm0000、dm0200为pmcr指令的第二操作数,所指定的有效通道存放发送的数据。dm0100、dm0300为pmcr指令的第三操作数,存放接收到的数据。当pmcr调用000号通信序列时,从三菱plc的x位元件组读取数据,当pmcr调用001号通信序列时,向下位plc的y位元件组写入数据。
图4协议宏调用程序
通信协议宏具有较强的灵活性,程序的编写和调用非常简单,容易实现不同厂家plc之间的通信。在程序的编制与调试过程中,一些细节问题必须予以注意:
(1)在程序中有多条pmcr指令时,使用微分指令避免指令间的冲突;
(2)读取几个设备的数据,使用变量的方式接收数据;
(3)最好将发送信息与接收信息写在不同的通信步中,避免从站断线导致pmcr指令执行标志无法复位。
发布评论