微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于FINS协议的OMRON PLC与上位机以太网通信的实现

基于FINS协议的OMRON PLC与上位机以太网通信的实现

时间:11-23 来源:互联网 点击:

ICF为信息控制域,用于标明指令和响应;RSV为系统保留;GCT为网关允许数目;DNA为目的网络号;DA1为目的节点号;DA2为目的单元号;SNA为源网络号;SA1为源节点号;SA2为源单元号;SID为服务和响应的标识号,可任意设置,指令和响应对应相同;MRC和SRC分别为FINS指令的主指令和从指令;参数/数据域,用于标明所操作的数据地址、范围等,在响应帧中前两个字节MRES和SRES构成响应码,用来诊断错误信息。

3 FinsGateway和SYSMAC Compolet控件介绍
FinsGateway是OMRON FINS通信协议的驱动程序,它为计算机上的32位Windows操作系统提供一个工业自动化网络环境。FinsGateway集成了不同的网络协议,并为FINS通信和数据链接提供驱动程序和接口库函数。它通过创建高性能的虚拟存储区EventMemory,为不同的用户程序提供数据的接入和共享。利用FinsGateway,计算机可以通过各层网络(包括网络互联)访问网络上的PLC,通过接口库函数,用户还可以开发程序。

SYSMAC Compolet是欧姆龙公司专门为FINS通信开发的Active X控件,它是架构在FinsGateway这个驱动程序下的VB控件,对Fins指令做了进一步集成和优化。SYSMAC Compolet为SYSMAC C/CS1/CV系列的PLC提供应用程序编程接口,在开发时只需要调用该控件,编写程序更便捷,语句更简单,配合使用FinsGateway,通过计算机就可以方便地控制访问PLC,直接对其操作而不需要掌握相应的Fins指令知识。

4 OMRON PLC与上位机以太网通信的实现
OMRON PLC与上位机的以太网通信依靠发送FINS指令实现。上位机发送FINS指令可以直接读取或写入PLC相应的数据,PLC部分无需编写接收和发送程序。文献[1]给出了运用VC++异步套接字类CAsyncSocket与OMRON PLC进行以太网通信的方法。本例中采用FINS/UDP方式,具体如图7所示。上位机利用Visual Basic 6.0进行程序开发,具体实现向PLC发送FINS指令(读取内存区域,指令代码0101)读取DM100开始的150个字数据的功能。相较于文献[1]介绍的方法,本文中为不同层次的使用者提供了三种方法来实现这一个功能,增加了系统开发的选择性。图7上位机与PLC通过以太网通信

在进行上位机程序编程之前首先要完成上位机和PLC的以太网单元的设置。
(1)设置上位机的IP地址为10.72.18.11,子网掩码为255.255.255.0,它的FINS节点号默认为11。
(2)通过欧姆龙CX-Programmer软件,在IO表中将PLC CSIW-ETN11以太网单元的IP地址设置为10.72.18.19,子网掩码为255.255.255.0,FINS节点号设置为19。地址转换方式设置为自动生成(动态)。FINS/UDP端口为9600(默认)。保存后下传至PLC。
下面主要介绍三种方法来实现上述功能。
4.1 使用Micosoft Wi nsock控件
在VB中新建一个Standard.EXE文件。添加Winsock控件,对象命名为Winsock1,发送Fins命令程序如下:

编译保存后即可。
4.2 使用FinsGateway中的OMRON FinsMessaging Control
(1)在上位机中安装Finsgateway软件,并在Service Manager中启动CPU_UNIT和ETN_UNIT。
(2)ETN UNIT属性中,在UDP Nodes中手动添加PLC的IP地址(10.72.18.19)和FINS地址(0.19.0)。在Commuincation Unit Settings中设置端口号(9600)和FINS-IP地址转换方式为自动生成(动态)。
(3)在VB中新建一个standard.EXE文件。添加OMRON FinsGateway FinsMessaging Control,对象名为FinsMsgl。
(4)在form区添加一个Command button(命名为Command1)作为发送Fins指令之用;同时添加一个textbox(命名为Text1)作为显示所接受数据之用。
(5)在Conmand1中的Click事件中添加如下代码:
Private Sub Command1_C1ick()FinsMsg1.sendFinsCommand0,19,0,0101820064000096End Sub
在FinsMsg1中的OnReceive事件中添加如下代码:
Private Sub FinsMsg1_OnReceive ()
Dim net As Integer,node As Integer,unit AsInteger
Text1.Text=Fins Msg1.receive Message(net,node,unit,vbString)
End Sub
编译保存后即可。
4.3 使用FinsGateway和SYSMAC Compolet
(1)在上位机中安装Fins Gateway和SYSMACCompolet软件。启动FinsGateway的Service Manager,并启动CPU UNIT和ETN UNIT。
(2)同4.2中第(2)点。
(3)在VB中新建一个Standard.EXE文件。添加OMRON SYSMAC CS Control,对象名为SYSMAC CS11。
(4)在对象SYSMACCS11属性中,选择Communication标签,选中ActivateCoCommunication并设置PLC的Fins地址(0.19.0)。
(5)在form区添加一个Command button(命名为Command1)作为发送Fins指令之用;同时添加一个text box(命名为Text1)作为显示所接受数据之用。
(6)在Conmand1中的Click事件中添加如下代码:
Private Sub Command1_Click()
Text1.Text=SYSMAC_CS1 1.readArea(plcAreaDM,100,150,vbString)
End Sub
编译保存后即可。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top