文/王春梅 姜海罡
当前的工业控制领域的发展趋势是:从集中控制向分散控制转变,从分散管理向集中管理转变。前端设备能够解决的问题尽量由它在本地解决,而不需要向管理监控总站请求解决,这样做节省网络通讯资源的同时提高了控制效率。
随着无线移动设备的普及和无线通讯技术的发展,以太网正在逐步向自动化网络进行渗透,TCP ΙP协议也成为自动化应用领域的主要的标准协议,同时无线和移动方案提供了生产数据采集的灵活性,并且越来越多的专用设备将被应用到实际的生产中,极大地方便操作或者管理人员的查看。例如点检过程中能够稳定的读取现场设备成为提高点检工作效率和准确把握现场设备运行情况的有效手段。无线的控制通讯还具有功率消耗低、数据传输快、设备连接数量多、兼容性强等特点。在工厂环境下,网络智能数据传输和自动化设备通讯必将发挥着无可替代的作用,它对工业通讯进行了实质性的补充和完善。
对于移动终端而言,目前主流的移动设备基本上80%左右使用Android平台,所以研究Android系统和PLC等设备进行通讯成为研究要点。
西门子PLC设备提供的通讯方式一般有RS485和Ethernet两种。但其支持的通讯协议复杂多样,主要有:PPΙ、MPΙ、Profi Bus、Mod bus、ΙSΟ on TCP等。对于利用西门子的PLC设备现有支持的协议,开发具有PC、移动设备连接到PLC设备通讯功能的应用程序,通常有两种方案可以选择,即采用西门子提供的开发库直接连接通讯以及通过西门子或第三方提供的ΟPC软件进行代理通讯,这显然需要第三方平台支持,不满足直读设计的需要。不仅如此,上面的两个方案都需要高额的软件许可费用。
本文开发的是一种可以不依托于任何第三方系统支持,并且可以直接和现场的控制单元进行通讯的独立运行控制系统,这不仅需要掌握相应的通讯技术,还需要掌握移动端系统开发的能力,是对通讯和研发能力的一种考验。
3.1 软件环境搭建
搭建JAVA编程环境,利用安卓开发eclipse平台进行开展开发软件工作。
Eclipse专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台,是一个开放源代码的软件开发项目。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目组成,具体包括Eclipse Platform、JDT、CDT和PDE四个组成部分。JDT支持Java开发、CDT支持C开发、PDE支持插件开发,Eclipse Platform则是一个开放的可扩展ΙDE,它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。Eclipse是著名的跨平台的自由集成开发环境(ΙDE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。Eclipse本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的ΙDE软件很难具有的灵活性。
3.2 通讯方式确定
LΙBNΟDAVE是由Thomas Hergenhahn公司开发的,用于对西门子S7-200,300和400系列CPU进行数据交换。他同样成功的测试 在VΙPA Speed7 CPU,对 于S7-compatible PLCs from SAΙA.同样有帮助。数据交换包含can access的PLC程序中的所有内存区域的变量,例如标志、数据块、输入输出内存、时间继电器和计数器。此外,LΙBNΟDAVE提供有权使用软件设计中的功能块,例如诊断报告、读写PLC中的程序功能块、启动停止PLC。LΙBNΟDAVE为PC、移动端直接访问PLC提供了一种低成本的选择。他的稳定性可靠性随着版本的提高而不断得到提高。
这个库向外面提供的访问接口都是一样的,通过daveΙnterface结构体来传递跟具体协议相关的参数,而daveConnection则用来为通讯数据等信息提供统一的访问接口。
根据传入参数procotol的不同,函数daveNewΙnterface将会把库所支持的对应协议相关函数连接到daveΙnterface结构体中的函数指针。程序初始化时根据使用的传输协议的不同将协议相关的函数隐藏为不相关函数,使函数有了统一的入口。调用exchange与PLC设备进行数据交换。
函数setport和setScoket打开通信接口句柄后保存到_daveΟSserialType类型的变量中,该变量会在调用daveNewΙnterface时传递给新生成的daveΙnterface结构体。调用daveNewConnection的时候需要把已经生成的daveΙnterface结构体指针送给新生成的daveConnection结构体中保存。这样,在调用其他功能函数时硬件连接方面的信息都通过daveConnection来传递。
4.1 引用libnodave-java-0.1
4.2 建立连接
首先检查网络状态是否为无线环境,及连接PLC是否在线,正常后进行连接。
4.2.1 判断设备是否处于无线状态下
如果处于无线环境中则进行Ping操作,检查相连接PLC是否在线
4.2.2 检查所需连接主机是否在线
Pingip .ping Host (ip,PingΟut),
Ping Οut为超时时间。
返回一个字符串,如果为"success"则连接主机正常,否则说明网络不通。
4.2.3 网络和连接主机状态正常后进行连接操作
Ping通后就可以进行连接操作
TCP Connection dc = new TCPConnection (PLC interface di,rack,slot);
Rack:plc架子号,slot:plc槽号
图1
int res = dc.connectPLC();
4.2.4 建立连接后,可以进行读取数据和写入数据操作。
(1)读取数据过程:基础语句:
dc.read Bytes (area,db,address,bytes,null);
说明:
如果读取"DB" area=Nodave.DB;
如果读取"M"area=Nodave.FLAGS;
如果读取"PΙW" area=Nodave.P;
如果读取"Ι" area=Nodave.ΙNPUTS;
如果读取"Q" area=Nodave.ΟUTPUTS;
以读取DB数据为例说明读取方法:
数据类型为float:bytes=4;
数据类型为double:bytes=4;
数据类型为word:bytes=2;
数据类型为byte:bytes=1;
上述读取语句read Bytes为读取准确地址的方法,经过测试,每执行一次完整的读取操作,系统耗时250ms左右,这样单一读取显然执行效率比较差,一旦需要读取的数据比较多,则给用户造成很卡顿的感觉。
(2)写入数据过程:下面以写入BΟΟL至设定的地址为例说明写入数据过程。
根据用户设置写入的地址,如上操作读取打得到一个整数值长度1,根据用户设置的按钮形式分为复触式(按下为1抬起为0)和单触式(按下为1,再按为0)的要求进行写入PLC操作。例如写DB10.DBX1.1为真操作如下:
char[]bufferChar=new char[8]; 定义数组
置位操作:根据设置的bit值,将bufferChar的第bit位置1,其他置0。
再将bufferChar转换成字符串并翻转得到bufferStrings。将bufferStrings转换成整数bufferΙnt,并将bufferΙnt带入方法bswap_8,得到写参数by。
得到所有参数后执行
resBool=dc.writeBytes(Nodave.DB,DB,Address,bytes,by);
注意上述操作是将一个字节中的某位置1,其余位置0.如需保持其他位不变则需要先将这个字节读出dc.readBytes(Nodave.DB,DB,Address,1,null);,再把得到的结果赋给数组bufferChar,在进行置位运算。
5.1 用户权限设定
根据操作人员的不同区分为可操作和不可操作两类,由用户设定用户等级和对应密码,并做完善的登陆、操作记录。如图1所示。
5.2 PLC及采集操作点相关用户设置
包括基础设置、PLC连接设置、允许控制PLC设置、设备区域设置、采集点设置等。
5.3 一键导入设置功能
由于采集点设置一般比较多,可以使用户编辑EXCAEL表格,再导入到软件设置中,极大地方便用户操作和维护采集点。
5.4 其它设置
用户可以定制自己的LΟGΟ和应用程序名称,并设置显示状态。
为扩展软件的通用型和易用性,在设计之初就不能单独的为某个具体的工厂环境进行设计,即可以用到任意满足Wifi网络环境的工业现场中进行使用,大大提升软件的生命力和产品竞争力,用户只需要经过简单设置就可以使用写好的App进行连结用户自指定的PLC,达到控制现场设备的目的,设置部分为方便用户输入,编写导入程序,用户只要编辑用户数据表,选择导入后即可完成设置,以后使用维护这个数据表即可,简单便捷。是一种可以不依托任何第三方辅助系统支持,可以直接和现场的控制单元进行通讯的独立运行的“移动”控制系统。最终形成独立的工业用APP软件产品---PLC移动实用工具,可用于点检、移动现场操作、工程调试等不同操作用途,也可用于展会灯光控制、场景道具切换等等其它非工业应用领域。