WonderwareIntouch与欧姆龙PLC通讯,本文章以欧姆龙CJ2MCPU35为例,通讯方式为MBTCP。
一、配置SMC
1.在AVEVA文件夹目录下,选择并打开“SystemPlatformManagementConsole”(缩写简称为SMC)

2.打开SMC后,依次展开“OperationsIntegrationServerManager——项目名——WinPlatform_Main——OperationsIntegrationSupervisoryServers——Omron-OMRONFINS————Configuration”

3.左键选中“Configuration”,右键选择“AddChannelSelectorConnection”。“Configuration”的相关参数无需设置。

4.左键选择建好的“New_ChannelSelector_000”,在右边出现了三个参数“IgnoreNonFatalPLCError”“Connection”“Mode”。在帮助文档里面,有对这三个参数的讲解。
“IgnoreNonFatalPLCError”:决定是否PLC上的非致命错误。选择No意味着当PLC出现一个非致命错误时,驱动通道显示状态码64,所有的设备名目被设置成BAD状态;选择YES意味着当PLC出现一个非致命错误时,驱动通道显示状态码0并且发送一个警告信息到日志里,所有的设备名目被保留在GOOD状态。
“Connection”:UDP是指UDP/IP网络,Serial是指串口通讯。
“Mode”:欧姆龙CS1、CJ1、CJ2和CP1系列使用CS1模式,CV、CVM1、CVM1D系列使用CV模式,这个餐宿是可选项,如果你不确定,就用默认即可。
我们这里连接是CJ2M系列PLC,使用的是以太网,所以三个参数选择如下图。

5.左键选中“New_ChannelSelector_000”,右键选择“AddDeviceSelectorConnection”。

6.左键选中新建的“New_DeviceSelectorSelector_000”,右边会出现如下的一个参数Station,这也是最容易犯迷糊的一个参数。

首先先看帮助文档里面的解释:
IPaddress:在你UDP/IP以太网络上的PLCIP地址;
Portnumber:是指UDP端口,由设备上的FINS协议使用。它通常为9600,但可以在设备设置中更改;
Networkaddress:根据FINS协议,是指设备的子网地址;
nodenumber:指定FINS子网上的设备节点号(1-254)。如果未指定值,则会自动插入上次使用的节点号。
UnitID:用于PC接口的ID号,在PLC程序中配置。此参数是可选的;如果未指定任何值,则默认值为0。
Mode:FINS通信模式确定通信驱动程序可以与之通信的Omron设备的类型。此参数是可选的;如果未指定任何值,则在全局设置中配置默认值。
咋一看,里面有些参数不是很明白,但实际上,查看一下欧姆龙PLC里面网络设置页面,基本上都能对上。如下图


一般来说,PLC编程人员不会去刻意修改网络设置页的内容,因此Station里面设置为:192.168.1.10:9600:0:10:0:CS1(其中Networkaddress应该与IP地址最后一节保持一样,而不是设置为0)。
如果,Intouch不是和PLC直连的,在它们之间还有一个网络耦合器(改变PLC的IP地址,使所有PLC的不同IP转换到统一网段),那么,Station里面设置为:128.10.26.60:9600:0:10:0:CS1(128.10.26.60为网络耦合器转换后的IP地址,后面的所有都保持不变,同时网络耦合器里面设置要有UDP:9600的端口)。


二、配置IDE
1.打开“SystemPlatformIDE”,弹出以下弹窗:

2.如果是第一次打开,需要新建一个Galaxy,这里Galaxy直接翻译过来是“星系”的意思,在WonderwareIntouch里面,其实指的是整个项目,因为WonderwareIntouch把所有内容都各自模块化,建立驱动连接用的是“SystemPlatformManagementConsole”,变量点可以在“SystemPlatformManagementConsole”、“IDE”、或者“IntouchHMIWindowMaker”里面建,画面在“IntouchHMIWindowMaker”,画面运行在“IntouchHMIWindowViewer”,所以Galaxy指的就是他们所有的总和。
“GRnodename”是本机计算机名,如果项目移植到其他主机上,这里需要改为其他主机名;
“Galaxytype”,就是选一个项目模板,第一次做项目肯定没有积累的模板,我们选择Default_,如果已经做过相似的项目,可以将上个项目生产cab的模板,直接放在C:ProgramFile(x86)——ArchestrA——Framework——Bin——BackupGalaxies里面。


4.接下来,正确的做法是,将“TemplateToolbox”框内的“DeviceIntegration”和“System”下的逐个进行生成DerivedTemplate(派生模板),然后将原“DeviceIntegration”和“System”隐藏不用,而是用新的派生模板,这时因为原“DeviceIntegration”和“System”图标都是带锁的,是不能修改的,而派生模板是根据编程者的需要修改的。我在这里偷懒,就不生成派生模板了,直接当做派生模板来用了。
5.新建“WinPlatform”实例,WinPlatform_001相当于一台主机电脑。

6.新建“AppEngine”实例,AppEngine_001相当于一个应用程序。

7.新建“DDESuiteLinkClient”实例,DDESuiteLinkClient_001相当于通讯驱动。

8.新建“UserDefined”实例,UserDefined_001相当于一个对象,可以是一个阀门,可以使一个罐子,可以是一个PLC,与这个实例相关的过程量就作为这个对象的相关属性设置在这个对象里。

9.新建“Area”实例,Area_001相当于一片区域或者一个工段;

10.在左下角“Deployment”选项卡内,将DDESuiteLinkClient_001按住拖曳到AppEngine_001内部释放,结果如下图:

接下来我们开始建立变量点。
双击“UserDefined_001”;
打开属性的添加“➕”按钮;
在右边出现的属性Name里面填写这个对象的一个属性名,比如Temp(温度);
“Datatype”选择Float(浮点型);
“Engunits”填写℃;
“Availablefeatures”选择I/O;
“I/O”选项卡里面选择“Read”(只读);

11.双击“DDESuiteLinkClient_001”,开始设置通讯通道。

双击打开;
Servernode填写本主机IP地址或是直接“localhost”;
Servername填写SMC中的中间部分“OMRONFINS”;
切到下一个选项卡;

添加驱动通道;
此处的通道名称一定与SMC中“DeviceGroups”中名称一致,我们这里用的是RongLian_CJ2M;
添加变量名称;
这里的命名规则是“对象名.属性名”,根据我们前面建立的对象和属性,这里为UserDefined_001.Temp;
这里需要填写PLC中此变量的变量地址D102,后面加一个F是IDE帮助文档里面要求的数据格式Float;
保存并checkIn;
12.此时,对象UserDefined_001图标前带有一个感叹号,意味着没有和驱动通道相绑定,需要将对象拖至相应的驱动通道内。

View——IODevices;
将UserDefined_001拖曳至RongLian_CJ2M松开,UserDefined_001的感叹号消失;

14.在Deployment界面,将各个右键部署下去,相当于使用生效。

15.然后就可以在SMC的以下目录查看变量的实时数值。如果D102F显示红色方框,代表通讯没有连接上,如果是绿色方框且Value列有实时变化的数值,则表示已经连接上。此处由于没有实际的PLC,故显示连不上。






