莫冰1,2,刘长江2
(1.四川理工学院 自动化与信息工程学院, 四川 自贡 643000;2.四川理工学院 数学与统计学院, 四川 自贡 643000)
摘要:西门子S7-300可编程逻辑控制器(Programmable Logic Controller,PLC)在工业控制系统中有较为广泛的应用,但一直以来缺少密码锁方面的相关研究。针对西门子S7300 PLC控制的相关工业设备,设计了一类内嵌式电子密码锁系统,并将该系统的解密与设密与PLC控制原理相结合,使其能直接应用于工业设备,从而实现设备的防盗功能。最后,采用软件STEP 7 SIMATIC对密码锁系统进行编程和测试,其仿真结果表明密码锁的功能是可靠且有效的。
关键词:密码锁;PLC;STEP 7 SIMATIC;S7-300
中图分类号:TP277文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.10.003
引用格式:莫冰,刘长江.基于西门子S7-300 PLC的电子密码锁系统设计[J].微型机与应用,2017,36(10):7-10,14.
0引言
*基金项目:四川省人工智能重点实验室资助项目(2014RZY02);四川省桥梁无损检测与工程计算重点实验室资助项目(2014QZY01)
纵观密码锁的悠久历史,其种类繁多,从机械密码锁发展到如今功能齐全的电子密码锁。电子密码锁以其自身的优点被人们所广泛关注和使用。其特点如下。
(1)保密性能好,随机输入成功率极低,避免资料的丢失和财产的流失。
(2)密码可以随时更改,防止密码被盗。
(3)比机械锁零件少,减少人为的磨损。
(4)使用方便灵活,不需要佩带钥匙来开锁[1]。
如今,在工业和工程领域中,因其自身的易操作性,PLC被广泛使用在工业过程控制中。但是在一些大型的PLC工业整体系统中,由于非专业操作员的不当使用以及PLC程序的泄露,导致经济效益下降和财产的损失,产生了诸多不安全性因素,所以本文提出一种基于PLC的密码锁设计,该设计应用于PLC所处的工业领域的防盗中,可以大大加强管控力度,保证系统的安全运行,提高工厂的经济效益。
但是工业领域中将密码锁嵌入到PLC中用于防盗的案例实在太少,为了填补其空缺,本文采用德国西门子S7300 PLC来实现密码的设定和解锁功能,其结构简单,且故障率低。
S7300系列PLC采用模块化结构[2],适用于输入/输出(I/O)点数在1 000左右的集中或分布式控制系统,一般由中央处理单元(CPU)、输入信号模块、输出模块、电源模块、通信模块、接口模块和功能模块等组成[3],其中最基本的S7300 PLC系统只需中央处理单元、电源模块以及输入输出模块组成。在模块的安装方面也有一些规定,第一号槽位是电源模块,第二号槽位是中央处理器模块,第三号槽位是接口模块,接下来的模块可以自由分配接上即可[4]。
本文采用STEP 7 SIMATIC软件结合S7300 PLC芯片,仿真出密码锁的部分功能。STEP7 SIMATIC V5.5软件是德国西门子公司针对S7300/400 PLC所研发的一款支持中文及多个国家语言的编程软件[5],本文采用此编程软件对密码锁的部分功能进行仿真。
目前,PLC技术已经被广泛应用于机械制造、能源、交通运输及文化娱乐等行业中。随着其进一步发展,PLC必将渗透到生活中的每个角落[68]。对密码锁和以太网结合技术的深入研究也会给生活中各领域的防盗带来极大的改善。
1问题描述
1.1控制原理
本文设计的密码锁系统主要包括开锁和设密码两个部分。在开锁环节,进行输入数字的判断以及输入位数的判断,本文采用四位密码输入的形式,当依次输入的数字与设定的密码完全一致时,实现开锁,否则开锁失败;另外在此环节还增加了超时自锁功能,当用户超过某一时间不输入密码,键盘将自动加锁;在设密码环节,依次输入要设置的密码即可,按下确定键即实现密码的设置,同时密码已重置。同样在此环节,用户没有在规定时间重置密码,键盘将自动加锁。
1.2结构和符号表
基于西门子S7300PLC控制的密码锁结构的外部接线图如图1所示。
由图1可知,本文采用15个按键输入和6个指示灯作为输出,可以清楚地看出密码解锁和设密的整个过程。
用PLC进行仿真,必须将按键和指示灯转化为大家熟知的按钮,这就必须将其符号表[9]导入程序中进行仿真,本文的PLC密码锁的符号表如表1所示。
2软件设计
2.1功能模块FC1
功能块FC1主要描述开锁的程序,利用PLC的内部存储器标志位存储器区(M区),赋予0~9不同的地址,详情可见文献[10]。由于0~9的程序非常相似,以下只列出按键0的程序:
A(
O "0"
O M 11.0
)
AN "密码正确"
AN"密码错误"
AN"取消"
= M 11.0
以上程序表明,当密码正确(Q11.1灯亮)和密码错误(Q11.2灯亮)任意一个有效的时候,按键0~9均无效,而当取消按键按下时,0~9也均无效。
接下来的工作就是判断输入的位数是否满足设定的位数要求,利用一个加法计数器,每当0~9的按键按下时,都会加1,按下取消按键则给计数器清零。
如何判断输入是否正确是开锁过程中最重要的部分,在OB1主程序中设定初值地址MW0、MW2、MW4、MW6四个初值,详情可见文献[11]。在FC1模块中设定四个变量地址,即0~9按键按下时的数转化为十六进制的数所存放的变量地址,分别为MW30、MW32、MW34、MW36,主要程序如下:
A M 60.2
A(
L MW 0
L MW30
==I
)
A(
L MW 2
L MW32
==I
)
A(
L MW 4
L MW34
==I
)
A(
L MW 6
L MW36
==I
)
A(
L MW40
L 4
==I
)
= M 60.3
2.2功能模块FC2
FC2功能块与FC1在功能形式上是相似的,利用开锁部分的程序类推得到设密部分的程序,首先介绍0~9按键按下时的数由地址MW0、MW2、MW3以及MW4传送给新设定的地址MW50、MW52、MW54和MW56,由MW0~MW50借助当前值地址MW10来完成数据的传递,其程序如下:
A(
L MW40
L 1
==I
)
JNB _001
L "当前密码位的值"
T MW50
_001: NOP 0
其次,当设定的密码达到四位时,将之前已经赋值的地址MW50、MW52、MW54和MW56重新传递给MW0、MW2、MW4和MW6,按下确定键,则显示密码已重置,完成密码的修改。
2.3组织模块OB1
组织模块OB1的功能可简述为两点:第一,编译主程序;第二,使所有的功能模块都必须在组织块中调用,以完成程序的编译,功能模块相当于组织模块的子程序。
初始密码的设定:为方便程序调试,初始密码设为0000,借助功能模块中的地址MW0、MW2、MW4和MW6来完成,将起始密码的十六进制储存在以上地址中,其主要程序如下:
A(
O M8.0
ONM8.0
)
FPM8.1
= L 20.0
A L 20.0
JNB _001
L W#16#1
T MW 0
_001: NOP 0
A L 20.0
JNB _002
L W#16#1
T MW 2
_002: NOP 0
A L 20.0
JNB _003
L W#16#1
T MW 4
_003: NOP 0
A L 20.0
JNB _004
L W#16#1
T MW 6
_004: NOP 0
当按下开锁按键时,会提示请“输入密码”的字样,一旦输入密码,按下确定键,即可完成密码的验证,PLC验证密码的程序和设定密码的程序相似,其程序如下:
A(
O "设定"
O M 61.2
)
AN"密码已重置"
AN"加锁"
AN"超时50S取消改密码"
= M 61.2
= "请设定密码"
L S5T#50S
SD"超时50S取消改密码"
OB1组织模块的关键是如何判定密码输入错误,当没有依次输入密码或密码的输入位数超过四位时,均不能通过密码验证,在验证完密码是否正确后,要将FC1功能模块中加法计数器储存的位数MW40清零,以便在下一次输入的过程中,MW40从0开始计数,程序如下:
A(
A(
O "密码正确"
O M 61.2
)
A "加锁"
O "超时1M锁键盘"
O "键盘已加锁"
)
AN"开锁"
= L 20.0
A L 20.0
BLD 102
= "键盘已加锁"
A L 20.0
JNB _007
L W#16#0
T MW40
_007: NOP 0
本文中的电子密码锁系统可以嵌入到相关的PLC的工业设备中,作为设备的开启模块或部分危险操作的保护模块,从而有效降低设备的误操作率,提高整个系统的安全性。
3仿真结果
本文采用PLCSIM仿真器进行程序的仿真。
首先要调试的是密码的验证结果,验证仿真结果依次为开锁前(如图2所示)、输入四位密码后(如图3所示)以及密码正确后(如图4)。
其次是调试设密程序,将初始密码设置成0000,然后将密码改成0123进行调试,其仿真结果依次为设置密码前(如图5所示)、设置密码后(如图6所示)和密码已重置(如图7所示)。图中的前四个矩形框用于验证数字,第五个矩形框用于验证位数。
本文的仿真结果,清晰地展示了整个密码锁系统的运行状态和运行的过程。经过验证,程序是合理有效的。
4结论
本文提出的基于西门子S7300 PLC的密码锁设计,主要遵循PLC的外部输入输出的特性来进行相关研究和设计,从而使密码锁的解密和设密功能得以实现。就密码锁的功能齐全性而言,本设计还有待进一步改进。另外本文所编写的程序都是基于PLC程序之间具有相似性来编写的,以此来简化密码锁的程序,即使出现故障也能快速地修复,不影响整个系统的运行。
在本文的基础上,密码锁系统还可以与图像识别技术(例如指纹识别、虹膜识别)等结合起来应用于高级密码锁中[1214],从而完善其防盗的功能,具有工业领域或者现实生活中所要求的一些功能特性。
参考文献
[1] 亓秀玲. 用PLC实现密码锁的控制[J]. 机电工程技术, 2013, 42(1): 5556.
[2] 吴丽, 刘玉宾. 西门子S7300 PLC基础与应用[M]. 北京: 机械工业出版社, 2011.