浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子6ES7232-0HB22-0XA8

200的内存卡需要连接plc,不然可以用EEPROM读写器读出,但不能反编程序。
300的MMC卡可用普通读卡器读出卡的存储映像文件,转换成WLD文件,然后用STEP7打开,再新建一个S7-300的项目,随便插入一个CPU,然后编译一下。将打开的wld文件里的所有程序块包括系统数据块一起复制到刚才生成新300项目中,覆盖所有文件。
打开PLCSIM仿真软件将这个S7-300项目下载到PLCSIM里(注意不要下载硬件组态,只是下载块文件夹里的所有块,包括系统数据块)然后从PLCSIM里上载程序就可以了,上载后就可以看到硬件组态了,即已经完全还原了MMC卡里的程序了。
400的PCMCIA可以用普通笔记本自带的PCMCIA读出映像文件,但暂时还没有转换成程序,只能用于密码破解。

以下是西门子plc初始化和操作顺序说明,能够帮助您更好地理解PTO和PWM功能操作。在整个顺序说明过程中一直使用脉冲输出Q0.0。初始化说明假定S7-200西门子plc刚刚置入RUN(运行)模式,因此首次扫描内存位为真实。如果不是如此或者如果必须对PTO/PWM功能重新初始化,您可以
利用除首次扫描内存位之外的一个条件调用初始化例行程序。
PWM初始化
以下PWM初始化和操作顺序说明建议使用“首次扫描”位(SM0.1)初始化脉冲输出。使用“首次扫描”位调用初始化子例行程序可降低扫描时间,因为随后的扫描无须调用该子例行程序。(仅需在转换为 RUN(运行)模式后的首次扫描时设置“首次扫描”位。)但是,您的应用程序可能有其他限制,要求您初始化(或重新初始化)脉冲输出。在此种情况下,您可以使用另一个条 件调用初始化例行程序。
通常,您用一个子例行程序为脉冲输出初始化PWM。您从主程序调用初始化子例行程序。使用首次扫描内存位(SM0.1)将脉冲输出初始化为0,并调用子例行程序,执行初始化操作。当您使用子例行程序调用时,随后的扫描不再调用该子例行程序,这样从西门子PLC主程序建立初始化子例行程序调用后,用以下步骤建立控制逻辑,用于在初始化子例行程序中配置脉冲输出 Q0.0:
1. 通过将以下一个数值载入SMB67: 16#D3(选择微秒递增)或16#DB(选择毫秒递增)的方法配置控制字节。
两个数值均可启用PTO/PWM功能、选择PWM操作、设置更新脉冲宽度和循环时间数值、以及选择时基(微秒或毫秒)。
2. 在SMW68中载入一个循环时间的字尺寸数值。
3. 在SMW70中载入脉冲宽度的字尺寸数值。
4. 执行PLS指令(以便S7-200为PTO/PWM生成器编程)。
5. 欲为随后的脉冲宽度变化预载一个新控制字节数值(选项),在SMB67:16#D2(微秒)或16#DA(毫秒)中载入下列数值之一。
6. 退出子例行程序。
为PWM输出更改脉冲宽度
如果您用16#D2或16#DA预载SMB67(请参阅以上第5步),您可以使用一个将脉冲宽度改变为脉冲输出(Q0.0)的子例行程序。
建立对该西门子PLC的子例行程序的调用后,使用以下步骤建立改变脉冲宽度的控制逻辑:
1. 在SMW70中载入新脉冲宽度的字尺寸数值。
2. 执行PLS指令,使S7-200为PTO/PWM生成器编程。
3. 退出子例行程序。

5_248_1448266_750_750.jpg.webp.jpg

一、在系统设计的初期,我们应该从系统的角度来考虑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或WINAC产品的控制设备,除了使用STEP 7提供的LAD,STL,FBD标准编程语言来开发控制程序,我们还可以使用SCL,S7-GRAPH等**语言来开发一些重要的工艺程序,WINAC还可以使用ODK软件包开发出专有的程序块。一般的仿制者是不容易搞到这些开发工具的,即使有也不一定会使用,更不用说来读懂这些程序了。 7.webp.jpg二、在项目具体实施的过程中,我们应该从软件开发技巧的角度来考虑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程序加密保护的一些原则性指导性的内容,而没有公布具体的程序代码指令,请读者们谅解。
谨以此文献给并鼓舞那些辛勤奋斗在开发生产一线为祖国自动化事业做出巨大贡献的诸多同行;同时谴责那些企图不劳而获,窃取他人劳动成果的仿制者侵权者。


发布时间:2023-10-26
展开全文
优质商家推荐 拨打电话