7
西门子模块6ES7322-1BF01-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程序加密保护的一些原则性指导性的内容,而没有公布具体的程序代码指令,请读者们谅解。西门子PLC串口通讯方法
1、RS485串口通信
三方设备大部分支持,西门子S7 PLC可以通过选择自由口通信模式控制串口通信。简单的情况是只用发送指令(XMT)向打印机或者变频器等三方设备发送信息。不管任何情况,都通过S7 PLC编写程序实现。当选择了自由口模式,用户可以通过发送指令(XMT)、接收指令(RCV)、发送中断、接收中断来控制通信口的操作。
2、PPI通信
PPI协议是S7-200CPU基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现通信,是S7-200 CPU默认的通信方式。 PPI是一种主-从协议通信,主-从站在一个令牌环网中。在CPU内用户网络读写指令即可,也就是说网络读写指令是运行在PPI协议上的。因此PPI只在主站侧编写程序就可以了,从站的网络读写指令没有什么意义。
3、MPI通信
MPI通信是一种比较简单的通信方式,MPI网络通信的速率是19.2Kbit/s~12Mbit/s,MPI网络多支持连接32个节点,大通信距离为50M。通信距离远,还可以通过中继器扩展通信距离,但中继器也占用节点。 MPI网络节点通常可以挂S7-200、人机介面、编程设备、智能型ET200S及RS485中继器等网络元器件。
西门子PLC与PLC之间的MPI通信一般有3种通信方式:
1) 全局数据包通信方式
2) 无组态连接通信方式
3) 组态连接通信方式
4、 PROFIBUS-DP通信
PROFIBUS-DP现场总线是一种开放式现场总线系统,符合欧洲标准和标准。PROFIBUS-DP通信的结构非常精简,传输速度很高且稳定,非常适合PLC与现场分散的I/O设备之间的通信。
5、 以太网通信
以太网的思想是使用共享的公共传输通道,这个思想早在1968年来源于厦威尔大学。 1972年,Metcalfe和David Boggs(两个都是网络)设置了一套网络,这套网络把不同的ALTO计算机连接在一起,同时还连接了EARS激光打印机。这就是世界上个个人计算机局域网,这个网络在1973年5月22日运行。Metcalfe在运行这天写了一段备忘录,备忘录的意思是把该网络改名为以太网(Ethernet),其灵感来自于“电磁辐射是可以通过发光的以太来传播”这一想法。 1979年,DEC、Inbbb和Xerox共同将网络标准化。
1984年,出现了细电缆以太网产品,后来陆续出现了粗电缆、双绞线、CATV同轴电缆、光缆及多种媒体的混合以太网产品。 以太网是目前世界上的拓朴标准之一,具有传传播速、网络资源丰富、系统功能强、安装简单和使用维护方便等很多优点
| 新漏洞已在美国被确认 NSSLabs总部设在美国,为的立研究和评测机构。据外电报道,5月中旬,两名立测评员和NSSLabs发现西门子的工业控制系统存在漏洞。SA(数据采集与监视控制系统)是广泛应用在西门子PLC上的软件。他们发现SA存在漏洞,StuxnetWorm(业内人士称为级工厂病毒、震网等)可以很侵入,可以利用漏洞编写软件进行攻击。 上述漏洞得到了美国国土部的确认,NSSLabs正积和美国国土部的有关部门共同讨论如何解决这个问题。 考虑到西门子的PLC系统广泛应用于生产企业和电力企业中,甚至包括战舰上,这些测评人员自发停止了对此的一个公开讨论,以防止利用此漏洞。 在西门子的公开声明中,公布了存在漏洞的自动化编程控制器的具体名称:SIMATICS7-1200。 在声明中,西门子称“问题主要是随着因特网应用产生的”。根据西门子进行的相关实验发现,这些网络攻击带来的某些情况将会导致设备自己关闭,产生的故障和停电导致的故障类似。 对于西门子的回复,测评员并不满意。他们称,西门子为了面子大大减轻了问题的严重性,因为漏洞影响的范围很广,会影响到世界上每一个工业化的国家。 漏洞发现者之一Beresford还公开表示,在和西门子的工程师电话沟通了45分钟之后,西门子的措施被认定为无效了。 的制造业系统 据悉,StuxnetWorm在去年爆发,是世界上个可直接破坏现实世界中工业基础设施的代码。据赛门铁克公司的统计,截至去年10月,已有过4万个网络被该蠕虫感染,其中60%的受害主机位于伊朗境内。 安天为网络应急服务支撑单位,其旗下的安天实验室去年10月份发布了 《对Stuxnet蠕虫攻击工业控制系统事件的综合报告》。 其技术发言人苗得雨介绍说,在我国,WinCC系统已经广泛应用于很多重要行业,StuxnetWorm的攻击目标是SIMATICWinCC软件,后者主要用于工业控制系统的数据采集与监控,由于可以通过U盘等多种途径进行传播,工业系统也暴露在病毒攻击范围中。 瑞星王占涛介绍说,西门子在自动化工业操控体系几乎占有性地位,StuxnetWorm的破坏功能依托西门子的操作系统完成。因此,病毒会自动搜索西门子的操作软件进行感染。 王占涛称,StuxnetWorm攻击非常,对个人电脑无危害,企业尤其是大的工业企业才是其目标。据他了解,StuxnetWorm目前只出过几个版本的病毒,每个版本只是针对特定的操作系统。 安天实验室的报告称,一旦受到攻击,可能造成相关企业和工程项目的基础设施运转出现异常,甚至发生机密失窃、停工停产等严重事故。而针对工业控制网络和现场总线的攻击,可能破坏企业重要装置和设备的正常测控,由此引起的后果将是灾难性的。 国内千家企业曾被攻击 据业内人士介绍,西门子公司生产的PLC在我国的应用相当广泛,属于市场占有率排名的。由西门子公司开发的类似系统在我国的多个重要行业如能源、电力、通信、交通等领域都有应用。 根据去年西门子组织的 “工业自动化集团、驱动技术集团、楼宇科技集团媒体行”活动报道,广州石化、广州南站、龙穴造船厂、华润水泥、青湖工业、中航工业制造所等均为西门子的客户。 苗得雨说,由于漏洞早已,中国面临攻击也许是难以避免的事情。西门子是一个庞大的跨国集团,由于使用统一的接口和标准,几乎所有的中控系统都会面临这样的问题。 王占涛对 《每日经济新闻》记者称,去年瑞星曾经监测到了StuxnetWorm对中国企业的攻击痕迹。据瑞星监测,中国内地已经有上千家中国工厂以及一些大型工业行业的企业遭受攻击,在使用的U盘和收到的邮件中,瑞星监测到了相关的攻击痕迹。由于涉及保密信息,他未进一步透露详细的内容。 王占涛介绍说,上千家虽然是个小数目,但考虑到中国产业、大企业的数量,这个数字并不容小觑。 针对此次被曝存在漏洞的西门子SIMATICS7-1200,工业自动化、重庆大学电气工程学院教授廖常初介绍说,“是西门子近两三年推出的新产品,体积非常小,是工业自动化操作系统的,应用领域十分广泛,几乎没有行业限制。” 西门子是否会对此采取相应的提示?对中国使用者是否提示到此项风险?对此,西门子中国并未直接给予回复,称“一切均以总公司的官方声明为准”。 |



近日,西门子新一代智能逻辑控制器LOGO! 0BA7正式发布并开始订购。LOGO! 0BA7包含两种新模块: LOGO! 230RCE 和LOGO! 12/24RCE(E代表集成以太网接口)。
LOGO! 0BA7 作为LOGO! 0BA6的 ,为客户提供了多样的选择,其新特点如下:
•LOGO! 0BA7 基本模块集成以太网接口,轻松实现LOGO! 0BA7 基本模块之间,LOGO! 0BA7 基本模块与SIMATIC S7 控制器,西门子人机界面产品之间的以太网通讯;
•程序存储区多支持400个功能块,是LOGO! 0BA6的2倍;
•数据归档功能,存储自定义过程数据到LOGO! 内部存储区或4GB 以下的标准SD存储卡;
•用户自定义函数,增加了功能的移植性,有利于优化程序结构;
•支持容量在4GB以下的标准SD存储卡和SIMATIC MMC卡;
•实时时钟掉电保持时间延长到480小时,是LOGO! 0BA6的6倍;
•8位移位寄存器增加到4个,满足加复杂的应用要求;
•诊断功能,可以通过软件或集成面板查看故障信息。
同时,LOGO! 轻松软件发布新版本V7.0,新增如下特性:
•以太网通讯编程;
•新增5个特殊功能块:天文时钟,秒表,大/小值,平均值,模拟量滤波器;
•实时传输I/O状态;
•离线模拟LOGO! 0BA7 基本模块主站模式之间的以太网通讯;
•支持bbbbbb7操作系统, 操作系统, LINUX操作系统西门子PLCS7-300中的局部变量都代表什么意思,具体怎么应用?
答:L相当于DB,区别在于,L只是局部变量,只用于子程序中,且初始值不固定,即不一定为0,多用于子程序的中间临时变量。DB是全局变量,可保存。
L的用法和DB一样,在子程序中,L0.0的用法就和DB1.DB0.0或M0.0一样。因为L不能保存变量,所以一般只充当临时变量,所以每个子程序都可以调用L0.0。之所以用L,可以减少变量的占用,简约变量空间。
1. M 作为控制继电器来存储中间操作状态或其他控制信息,也可以按MB,MW,MD来存取。它在整个POU(Program Organizational Unit)有效,因此在编程前在全局符号表中先定义,这样一来在各个程序中使用时不会发生冲突等,也备于查错。
2. L 是局部存储器,作为暂时存储器或给子程序传递参数,L也可以L*.*(如L2.5 是BOOL 量,是二个字节的五位),LB,LW,LD来存取,但仅仅在它被创建的POU中有效,它也可以在符号表中定义,但只能在各个POU自己的符号表中定义.
3. 全局变量和局部变量在符号寻址编程时,全局变量直接显示符号名,而局部变量在符号前会加上#,采用局部变量编程有很多优势:程序可以功能化移植(减少重复编程量),大程序方便协同作战(把任务分成各个功能块),这是SIEMENS的PLC比较优越性之处。寻址,就是指令要进行操作的地址。给定指令操作的地址方法,就是寻址方法。
在谈间接寻址之前,我们简单的了解一下直接寻址。所谓直接寻址,简单的说,就是直接给出指令的确切操作数,象上面所说的,A Q2.0,就是直接寻址,对于A这个指令来说,Q2.0就是它要进行操作的地址。
这样看来,间接寻址就是间接的给出指令的确切操作数。对,就是这个概念。
比如:A Q【MD100】 ,A T【DBW100】。程序语句中用方刮号 【 】 标明的内容,间接的指明了指令要进行的地址,这两个语句中的MD100和DBW100称为指针Pointer,它指向它们其中包含的数值,才是指令真正要执行的地址区域的确切位置。间接由此得名。
西门子的间接寻址方式计有两大类型:存储器间接寻址和寄存器间接寻址。
【存储器间接寻址】
存储器间接寻址的地址给定格式是:地址标识符+指针。指针所指示存储单元中所包含的数值,就是地址的确切数值单元。
存储器间接寻址具有两个指针格式:单字和双字。
单字指针是一个16bit的结构,从0-15bit,指示一个从0-65535的数值,这个数值就是被寻址的存储区域的编号。
双字指针是一个32bit的结构,从0-2bit,共三位,按照8进制指示被寻址的位编号,也就是0-7;而从3-18bit,共16位,指示一个从0-65535的数值,这个数值就是被寻址的字节编号。
指针可以存放在M、DI、DB和L区域中,也就是说,可以用这些区域的内容来做指针。
单字指针和双字指针在使用上有很大区别。下面举例说明:
L DW#16#35 //将32位16进制数35存入ACC1
T MD2 //这个值再存入MD2,这是个32位的位存储区域
L +10 //将16位整数10存入ACC1,32位16进制数35自动移动到ACC2
T MW100 //这个值再存入MW100,这是个16位的位存储区域
OPN DBW【MW100】 //打开DBW10。这里的【MW100】就是个单字指针,存放指针的区域是M区,
MW100中的值10,就是指针间接的地址,它是个16位的值!
--------
L L#+10 //以32位形式,把10放入ACC1,此时,ACC2中的内容为:16位整数10
T MD104 //这个值再存入MD104,这是个32位的位存储区域
A I【MD104】 //对I1.2进行与逻辑操作!
=DIX【MD2】 //赋值背景数据位DIX6.5!