7
西门子模块6ES7322-1FL00-0AA0供应
前言:
随着中国整体经济实力的加强,制造和加工工业正逐步向中国转移,这给中国国内工业装备市场带来了大量的商机,国内各行业的制造商开发和制造出大量的设备,了良好的经济和社会效应。但是,也有小部分的制造商,由于其自身能力和客观因素的限制,无法及时开发出合适的产品,但利益的驱动使他们把目光瞄**,和**开发成功的产品,有甚者是整机拷贝或者。由于现代工业设备大量采用PLC作为主控制系统,PLC作为整个设备的部件,其软件包涵了生产工艺,控制逻辑,设备数据,加工参数及信息通讯等重要内容,从而成为设备者要的目标之一。纵观目前中国上应用的主流PLC,虽然在设计上都采用了各种软硬件加密的手段,但破解者运用的破解手段也越来越,从初的穷举法,端口侦听,软件跟踪,到现在可以通过直接复制提取内存芯片的内容来分析破解,有甚者在互连网上公开讨论和传播方法和工具,因此所有产品无一例外地遭到了破解。这对中国众多的中小型OEM制造商来说是非常不利的,“我们几年的开发成果可能因此一夜之间付诸东流”当得知S7-200/300硬件加密也被破解后,一位OEM制造商无奈地说。由于者的开发成本很低或几乎为零,因此还没有来得及收回开发成本就陷入了竞争,这大的影响了开发新产品的积性,对我国的装备工业的长远发展是十分有害的。
难道就这样束手无策,听任者为所欲为了吗?答案是否定的,多年来一直关注和研究PLC控制程序保护方面的问题,笔者在实践中了一些经验和心得,在本文中愿意和**们共同分享和讨论,大家共同为保护自己的劳动成果而努力。笔者多年来一直从事西门子SIAMTIC S7 PLC的应用,因此本文也只是从纯粹的技术层面出发,探讨SIMATIC S7 PLC控制程序的保护。
在系统设计的初期,我们应该从系统的角度来考虑PLC控制程序的保护:
1. T.I.A(全集成自动化)的概念有助于保护我们的KNOW HOW
T.I.A实现了组态和编程,数据管理和通讯,自动化与驱动产品(包括PLC控制器、HMI人机界面、网络、驱动器等产品)的高度集成。实践证明,采用T.I.A集成概念设计的控制系统很难被。同一个软件平台,相同的硬件组成,一样的总线通讯,可以设计出截然不同的控制系统,这是一个让自由发挥的平台。例如,一个CPU315-2DP和2个MM440变频器进行PROFIBUS-DP的通讯,除了PLC和变频器有常规的数据交换,如果用户使用了DRIVES ES的工程软件,还能实现2个MM440之间的直接的快速数据交换,另外通过DRIVES ES还能实现PLC和MM440之间过10个总共16个PZD过程数据的交换,实现PLC批量下载变频器参数的功能。而这一切的实现从表面上看,硬件没有发生任何的变化,者很难从硬件上来判断出系统是如何控制这两台驱动器的速度的。不熟悉西门子产品的者无法轻易换硬件配置或软件,而即使者是个西门子产品的,要自分析清楚具体细节问题也不是件的事情。从某种程度上说,T.I.A大大提高了对者的技术水平要求的门槛,达到西门子系统集成水平的技术人员一是不多,二很少有愿意做这些不齿的事情的。
此外,对于一些较大系统的OEM开发商,路由通讯功能,iMAP软件包等都是很不错的T.I.A系统功能或工具,我们应该尽量利用T.I.A给我们带来的技术优势,技术,加大或的技术难度。
2. 使用通讯功能
在实际的工作中,我们往往会遇到一些系统间需要数据交换的问题(如PLC-PLC之间,PLC与驱动器之间,PLC与仪表之间),无论是西门子产品之间还是西门子产品与三方产品之间,建议使用通讯的方案来代替模拟量或开关量之间的信号互连的方案。对于前者,者只能看见一条硬件的通讯线,至于有多少数据是如何通过通讯交换的,者要花精力研究具体的用户程序才能搞清楚;而对于后者,是省心省力了,者也是一目了然,尽收眼底。
PLC与驱动器的通讯,除了了控制字/状态字、设定值/反馈值及过程变量的数据通讯,驱动器工作的参数也能由PLC通过软件下载,这样即可以降低终用户维护系统的技术要求,同时可以防止者通过驱动器工作参数分析系统尤其在驱动方面的工作原理和设计思路。西门子公司的工程软件DRIVE ES BASIC/SIAMTIC,为广大的西门子产品用户实现此类功能提供了一个强大的工具;而使用SIMATIC PLC却使用三方驱动器的用户,也可以自行开发针对性的参数读写程序,一般支持PROFIBU-DP的驱动器都可以实现。
有时候我们的控制系统会由多个子控制系统构成,由此形成多CPU机界面的网络,西门子S7-200产品常见的是PPI网络,S7-300/400产品常见的是MPI网络,通常是人机界面与CPU之间的数据交换,而我们也可在CPU的用户程序中添加一些无须组态的S7基本通讯功能(S7-200可用NETR/NETW指令,S7-300/400可以用X_PUT/X_GET指令),定时或不定时地在CPU之间进行少量数据交换,通过这些数据实现子系统控制逻辑的互锁。对于这样的系统,者要分析某一子系统的程序也不是件十分事情。
3. 使用面板类型的人机界面
尽量在自动化系统中使用面板类型的人机界面来代替单一的按钮指示灯,虽然按钮指示灯的功能是无法保密的,但目前为止,面板型人机界面能够实现程序上载并实现反编译的产品还不多见,可以在面板的画面上加上明显的厂家标识和联系方式等信息,者还不至于傻到连这个也原样照抄吧。这样迫使者重新编写操作面板的程序甚至于PLC的程序,而则可利用面板和PLC数据接口的一些特殊功能区(如西门子面板的区域指针,或VB脚本)来控制PLC的程序执行。这样的PLC程序在没有HMI源程序的情况下只能靠猜测和在线监视来PLC内部变量的变化逻辑,费时费力,大的增加了的难度。
4. 采用语言编写部分重要的工艺程序
这一点主要针对采用S7-300/400或WI产品的控制设备,除了使用STEP 7提供的LAD,STL,FBD标准编程语言来开发控制程序,我们还可以使用SCL,S7-GRAPH等语言来开发一些重要的工艺程序,WI还可以使用ODK软件包开发出专有的程序块。一般的者是不搞到这些开发工具的,即使有也不一定会使用,不用说来读懂这些程序了。
在项目具体实施的过程中,我们应该从软件开发技巧的角度来考虑PLC控制程序的保护:
1. 编程方式的采用
a) 采用模块化的程序结构,采用符号名,参数化来编写子程序块
b) S7-300/400尽量采用背景数据块和多重背景的数据传递方式
c) 多采用间接寻址的编程方式
d) 复杂系统的控制程序尤其是一些带有顺序控制或配方控制的程序,可以考虑采用数据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。
用户应该尽量采用以上几种层次的编程方式,这样编出来的程序中嵌入系统的保护加密程序,才不被发现和破解
2. 主动保护方法
a) 利用系统的时钟
b) 利用程序卡或者CPU的ID号和序列号
c) 利用EEPROM的反写入功能,及一些需要设置的内存保持功能
d) 利用系统提供的累时器功能
e) 在用户程序的数据块中设置密码
f) 软件上设置逻辑陷阱
g) 可以反向利用自己在编程时犯的错误
3. 被动保护方法
a) 在内存容量利用许可的条件下,不要删除被认为是无用的程序
b) 在数据块里留下的标识,以便于将来遭到侵权时可以取证
4. 应用反技术的注意事项
a) 在用户程序中嵌入保护程序要显得自然一些,不能很突兀的加出一段程序来,代码要尽量精简,变量符号名应与被嵌入程序段的变量保持一致
b) 往往一种保护加密手段是不够的,应该多种方法并用,并且这些保护程序一旦后对系统造成的后果也应该尽量不同,造成所谓的“效应”,从而增加程序被的难度,时间与成本,短时间内让者束手无策,
c) 保护好程序的原代码,如果需要交付程序的,在不影响用户对设备维护的前提下,应对交付的程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块
d) 做好严格的测试,以避免保护程序的不完善引起的误动作而带来的不必要的麻烦,同时也能降低售后服务的的费用
运用保护手段的原则
我们虽然掌握了一些加密保护的手段,有一点明白,密码和锁的道理是一样的,没有打不开的锁,也没有解不开的密码,我们从技术上采取的措施来防止侵权的作用还是十分有限的,因此大家不能把所有的希望都寄托在所谓的加密技术或与反技术上;除此之外我们还可以通过的申请等其他诸如法律手段来保护我们的知识产权;但重要的是我们不能安于现状,而是要勇于,不断地利用新技术开发新产品,技术新高地,争做的人,才能使我们的企业立于不败之地。
加密保护技术本身也是一把剑,用好了客户满意,自己的权益又悄悄的得到了保护,用不好不仅不起作用,给售后服务带来许多麻烦,还会得罪客户;好人掌握这种技术是用来保护自己不被侵权,而用心不良的人会利用它去要挟客户。因此本文也于讨论了关于PLC程序加密保护的一些原则性指导性的内容,而没有公布具体的程序代码指令,请读者们谅解PPI协议是专门为S7-200开发的通信协议。S7-200 CPU的通信口(Port 0、Port 1)均支持PPI通信协议。S7-200 CPU的PPI网络通信是建立在RS-485网络的硬件基础上,因此其连接属性和需要的网络硬件设备与其他RS-485网络一致。
1 网络读写(NETR/NETW)指令介绍
网络读写指令一般用于S7-200 CPU之间的PPI网络通信。PPI通信前要保PPI网络上的所有站点都应当有各自不同的网络地址,否则通信不会正常进行。另外,网络读写指令进行编程和应用时要注意以下几点:2 网络读写指令向导组态
下面通过一个实例(两台S7-200 PLC之间的通信)来介绍如何使用网络读写指令向导。,两个S7-200之间的硬件连接需要一根标准DP电缆加两个DP总线插头。两台S7-200的RS485通信端口连接方式,可参考以下图片中的连接方式(如果PLC有两个通信端口,则任意端口都可进行配置,本例中两个PLC均以Port 0口做PPI通信使用),



1.1如何获得指针或者间接寻址有关的信息?
指针的类型包括16位指针、32位指针、Pointer(6Byte)和Any(10Byte)。16位指针用于定时器、计数器、程序块的寻址;32位指针用于I/Q/M/L/数据块等存储器中位、字节、字以及双字的寻址,其中0~2位表示位地址(0~7)、3~18位为字节地址,其余位未定义;Pointer和Any一般应用在复杂数据类型(比如Date_and_Time /Array/bbbbbb等)在FB、FC之间的传递。而Any可以看做是对Pointer的延伸,因为由10Byte组成的Any中Byte4~Byte9就是一个Pointer。
了解指针的格式十分重要,为正确使用指针,应阅读如下内容:
1、 "SIMATIC Programming with STEP 7 V5.5" 05/2010 27.3.4章 参数类型
2、文档:1008用于S7-300 和S7-400 的语句表(STL)编程
3、文档:F0215,S7-300和S7-400寻址 1.2为什么语句 LAR1 P##Pointerbbbbb 在一个函数(FC)中是无效的,然而,同样的语句在一个功能块(FB)中是有效的?
在FC被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC内部对此V区地址直接取址放入到地址寄存器AR1或AR2是不被编译器规则接受的(导致MC7寄存器信息过长),也就是说在FC内部通过P#进行地址寄存器取址仅能支持Temp临时变量。因此如果需要在FC中操作指针等复杂输入输出变量需要使用累加器进行中转。
考虑到程序的一致性、遵守编译器规则和STL手册中LAR1指令说明,建议用户使用如下指令操作:
L P##Pointerbbbbb
LAR1 1.3 STEP 7 中哪些操作会覆盖DB/DI寄存器或者地址寄存器AR1/AR2的内容?
下面说明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2内容改变的一些操作:
DB寄存器和AR1受到影响的操作
1. 使用完整的DB路径(如L DB20.Val)或者调用FC/FB时使用DB块完整地址作为其参数,则DB寄存器内容被覆盖。
例如在OB1中调用FC1后,DB寄存器变成20。
OPN DB1
Call FC1
bbbbb(bit):DB20.DBX0.2
因此在编程的时候,OPN 指令打开数据块,通过DBX x.y的方式访问其中内容, 但是如果在打开数据块后DB寄存器的内容被修改了,则DBX x.y的方式访问变量则 会访问到错误的地址。可以通过使用符号寻址的方式或者使用完整路径编程避免,当 然重新使用 OPN指令也是可以的。
2. 调用FC时使用bbbbbb, array, structure ,UDT作为其形参或者调用FB时使用bbbbbb, array, structure 或者UDT作为其in out形参,在FC/FB程序中访问这些地址则AR1寄存器内容被覆盖,因此当使用AR1进行间接寻址时需要注意AR1内容的正确性。
AR2地址寄存器和DI寄存器在FB中作为参数和静态变量的基址寻址使用。AR2和DI如果被修改,会影响FB的参数访问,如果希望在FB中使用DI寄存器或者地址寄存器AR2,预先保存它们中的内容,并在使用后恢复它们,例如:
TAR2 #AR2_SAVE; //AR2寄存器状态保存到#AR2_SAVE
L DINO;
T #DB2_SAVE; //DI寄存器状态保存到#DB2_SAVE
LAR2 #AR2_SAVE; //AR2寄存器恢复到使用前状态1.4 如何得到多重背景FB中的变量在背景DB里的偏移量呢?
OPN DI [#DB2_SAVE]; //DI寄存器恢复到使用前状态
1、说起S7-300系列I/O模块,特别是ET200M中的SM331-7KB02/-7KF02等AI模块,相信很多人都遇见过共模干扰电压(Ucm)限出现上/下溢出,而不能正常使用;特别是4线制仪表或传感器信号易出现这种故障现象。
2、为应对这种共模干扰电压(Ucm)现象,相信大家都是外加AI信号隔离模块解决。但这种方案同时也增加了硬件成本开销、控制柜体布局容量、硬件安装调试时间,以及设备故障点等诸多问题。
3、当然,一些系统集成商将增加AI信号隔离模块的方案,作为项目成本开销并向用户追加投入费用的依据。
4、众所周知,在SIENENS的S7-300系列4~20mADC测量范围手册说明书里,有很大篇幅讲解关于2线或 4线制仪表、隔离与非隔离模块、I/U/RTD/TC等信号抑制共模干扰电压(Ucm)接线的方案。
5、简单的说,SIENENS的S7-300系列4~20mADC测量范围手册说明书中,对抑制共模干扰电压(Ucm)接线的处理方法如下:
(1)每个通道的M- 输入端连接到模块地。
(2)Mana端也接地。
(3)再将Mana端与每个通道的M- 输入端短接线。
(4)将未用到的COMP+端接地。
6、个人在现场遇见过几次这种干扰现象,都以SIENENS的接线方案处理好,并且还按此方案成功指导过其他同事类似的问题处理。
概述
S7-300是模块化小型PlC系统,能满足中等性能要求的应用。其模块化结构设计使得各种单的模块之间可进行广泛组合以用于扩展。
系统组成
处理单元(CPU):各种CPU有不同的性能,例如,有的CPU上集成有PROFIBUS—DP通讯接口等。
信号模块(SM):用于数字量和模拟量输入/输出。
通讯处理器(CP):用于连接网络和点对点连接。
功能模块(FM):用于高速计数,定位操作(开环或闭环定位)和闭环控制。
负载电源模块(PS):用于将SIMATICS7—300连接到120/230V交流电源,或24/48/60/110V直流电源。
接口模块(1M):用于多机架配置时连接主机架(CR)和扩展机架(ER)。S7—300通过分布式的主机架(CR)和3个扩展机架(ER),可以操作多达32个模块。运行时风扇。
SIMATICS7—300适用于通用领域:高电磁兼容性和强抗振动,冲击性,使其具有的工业环境适应性。
功能
SIMATICS7—300的大量功能能够支持和帮助用户进行编程、启动和维护,其主要功能如下:
高速的指令处理:0.1—0.6u s的指令处理时间在中等到较低的性能要求范围内开辟了全新的应用领域。
浮点数运算:用此功能可以有效地实现为复杂的算术运算。
方便用户的参数赋值:一个带标准用户接口的软件工具给所有模块进行参数赋值。
人机界面(HMl):方便的人机界面服务已经集成在S7—300操作系统内、因此人机对话的编程要求大大减少。
SIMATIC人机界面(HMl)从S7—300中数据,S7-300按用户的刷新速度传送这些数据。S7-300操作系统自动地处理数据的传送。
诊断功能:CPU的智能化的诊断系统连续监控系统的功能是否正常、记录错误和特殊系统事件(例如:时、模块换等)。
口令保护:多级口令保护可以使用户高度、有效地保护其技术机密,防止未经允许的复制和修改,操作方式选择开关:操作方式选择开关像钥匙一样可以拔出,当钥匙拔出时,就不能改变操作方式。这样就防止非法删除或改写用户程序。
通讯
这是一个经济而有效的解决方案;方便用户的STEP7的用户界面提供了通讯组态功能,这使得组态非常、简单。
SIMATICS7—300具有多种不同的通讯接口:多种通讯处理器用来连接AS—I接口和工业以太网总线系统;串行通讯处理器用来连接点到点的通讯系统;多点接口(MPl)集成在CPU中,用于同时连接编程
器、PC机、人机界面系统及其他SIMATICS7/M7/C7等自动化控制系统。CPU支持下列通讯类型:
过程通讯:通过总线(AS—I或Pronbus)对I/O模块周期寻址(过程映象交换)。
数据通讯:在自动控制系统之间、人机界面(HMl)和几个自动化功能块间相互调用。
S7—300新模块
S1MATIC S7—300产品系列又推出了几种新的模块,这些模块扩大了用户的选择范围,为多的应用带来了便利和可能。新推出的模块有以下几种:
▲PS305电源模块:24—110V DC输入、24VDC/2A输出,环境条件扩展型。
▲CPU3141FM处理单元新增一种可外插存储器卡的模块、该模块需STEP7V5.OSP3以上版本支持。
▲SM321数字量输入模块:48—125VDC,环境条件扩展型。
▲SM322数字量输出模块:48—125VDC/1.、环境条件扩展型。
▲SM331热电阻/电阻输入模块,分辨率24位。
▲SM331热点偶输入模块,分辨率24位。
▲SM3354人/4出模拟输入/输出模块,背板总线隔离,诊断与中断功能。
▲SM338声波位置,可连4个声波位置传感器,多8个测量点。
▲CM35计数器模块,8通道计数,大10KHz,
▲CP343—lIT通讯模块,10/100Mbps工业以太网,Web服务器,WWW网页,E—mail发送功能