众所周知,许多品牌的PLC程序可以通过软件破解。一旦程序被破解,就会对外部人员非常透明。然而,如果将设备卖给别人而又将整个PLC程序锁死,这样做就不切实际了,因为乙方将无法维护设备。保密和维权是中国市场上长盛不衰的话题。实际上,德国工程师从未对其程序进行完全加密,而是采用其他方法,既不影响故障诊断,又可以保护核心机密。我将向大家介绍这些方法,让大家参考。
一、选择西门子的安全PLC或博途平台的KNOWHOW功能。
西门子安全PLC是西门子旗下的一款主打安全功能的产品,其性能非常可靠,并且安全PLC的程序块一经加密就难以破解,从而有效地保护核心内容。另一方面,博途PLC是西门子的新产品,其版权保护也是其重要功能之一,KNOWHOW功能结合了软硬件双重加密的特点,未加密的模块可被正常监控,如果没有密码则无法加载到其他PLC上。因此,使用博途的KNOWHOW功能不仅可以方便地分享程序给他人进行维护,还能保障核心程序不受侵扰。
二、采用语言编写关键工艺程序
有许多方法,除了基础的梯形图编程、功能块编程和语句表编程外,还有更多选择,如PCS7的CFC、SFC,以及SCL、S7-GRAPH等。由于这些语言的复杂性,一般工控人员难以完全掌握,这增加了仿制的难度。因此,关键的工艺程序可以使用这些语言编写,以保护核心技术。
1.编程方式的选择包括:
(1)采用模块化的结构,使用符号名和参数化来编写子程序块。
(2)使用背景数据块和多重背景的数据传递方式。
(3)多采用间接寻址的编程方式。
(4)对于复杂系统的控制程序,特别是带有顺序控制或配方控制的程序,可以考虑采用数2.据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。
3.为了保护程序,用户应采取以下主动和被动的保护方法:
主动保护方法:
(1)利用系统的时钟。
(2)使用程序卡或CPU的ID号和序列号。
(3)利用EEPROM的反写入功能和需要设置的内存保持功能。
(4)使用系统提供的累时器功能。
(5)在用户程序的数据块中设置密码。
(6)在软件中设置逻辑陷阱。
(7)利用自己在编程时犯的错误。
被动保护方法:
(1)在内存容量允许的情况下,不删除被认为是无用的程序。
(2)在数据块中留下开发者的标识,以备将来遭到侵权时取证。
4.在应用反窃取技术时,需要注意以下事项:
(1)在用户程序中嵌入保护程序时要显得自然,避免突兀加入程序段,代码要简洁,变量符号名与被嵌入程序段的变量保持一致。
(2)单一保护加密手段可能不够,应采用多种方法,并且这些保护程序激活后对系统造成的后果应该尽量不同,以增加抄袭者的困难。
(3)保护好程序的原代码,如果需要交付程序,在不影响用户设备维护的前提下,应对程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块。
进行严格测试,以避免保护程序不完善引起的误动作,也能降低售后服务的费用。
三、使用通讯功能
在实际的工程应用中,经常会遇到系统之间需要进行数据交换的情况,比如多个PLC之间或者PLC与第三方仪器之间的通讯。针对这种情况,不论是西门子产品之间的通讯还是西门子产品与第三方产品之间的通讯,建议采用通讯的方式,而不是传统的模拟量或开关量之间的互连方式。对于前者,仿制者只能看到一条硬件的通讯线,而要想了解具体的数据交换过程,就必须仔细研究用户程序,这对仿制者来说是一项相当具有挑战性的任务;而对于后者,情况则变得简单得多,开发者省去了不少心力,仿制者也能轻易了解数据的传输过程。
在一些涉及到变频器或者伺服电机等设备的程序设计中,通常存在多种控制方式,可以直接通过线路控制,也可以通过通讯控制。采用通讯控制方式会使程序变得更加复杂,从而增加仿制的难度。举例来说,对于PLC对伺服驱动器的控制,简单的方法可能是通过脉冲直接控制或者模拟量控制,这种方式相对容易被仿制。但如果采用通讯控制方式,程序将变得更加复杂,仿制者如果不熟悉通讯报文的格式,将很难进行仿制。
有时候,控制系统由多个子系统组成,形成了多CPU加人机界面的网络。例如,西门子S7-200产品常见的是PPI网络,S7-300/400产品常见的是MPI网络,通常用于人机界面与CPU之间的数据交换。我们可以在CPU的用户程序中添加一些无需组态的S7基本通讯功能,定时或不定时地在CPU之间进行少量数据交换,通过这些数据来实现子系统控制逻辑的互锁。对于这样的系统,仿制者要想分析某一子系统的程序也不是一件十分容易的事情。
四、采用面板类型的人机界面
在自动化系统中,尽量使用面板类型的人机界面来代替单一的按钮和指示灯。许多人机界面如果没有源程序,只有备份和恢复功能,这样就可以实现维护功能并且保密了HMI层的程序。对于一个PLC系统而言,即使拥有源程序,但如果缺少了HMI部分的标记,也是很难进行仿制的。
在系统开发中,数据交换是一个常见的需求,比如PLC之间或者PLC与外部设备之间的通讯。为了防止仿制,通讯方式是,而不是传统的模拟或数字信号连接。通过通讯,仿制者只能看到通讯线路,而要理解数据交换,需要深入研究用户程序,这对仿制者来说是相当困难的任务。
在控制系统中,采用通讯控制方式会增加仿制的难度。例如,PLC对伺服驱动器的控制可以通过简单的方式实现,但采用通讯控制会使程序更复杂,仿制者如果不了解通讯报文格式,将很难仿制成功。此外,对于多CPU和人机界面网络的系统,可以利用CPU的基本通讯功能实现子系统控制逻辑的互锁,这也增加了仿制的难度。
另外,使用面板式人机界面可以防止仿制。开发者可以在界面上添加厂家标识和联系方式等信息,使仿制者无法直接复制。如果仿制者想要复制程序,就必须重新编写界面和PLC程序,而开发者则可以利用面板和PLC数据接口的特殊功能来控制程序执行。没有源程序的情况下,仿制者只能靠猜测和在线监视来获取内部变量的变化逻辑,这增加了仿制的难度。
五、采用非标准的人机界
另外,采用非标准的人机界面也是一种防止仿制的方法。通过利用VB编写程序,并选择适当的库与PLC进行接口,可以获得很多好处,比如没有版权问题和系统升级的简便性。这种方式对于普通人来说很难修改,更不用说仿制了。对于没有计算机编程功底的人来说,修改是困难的,而即使懂得计算机,缺乏PLC或工艺基础也无法进行修改。