|
S7-1200-1500案例之生成动态验证码 相关软(硬)件: 1、编程软件:TIA_V15.1 2、仿真软件:PLCSIM 控制要求: 1)生成动态验证码。 本文采用系统时间戳和生成的随机数作为验证码的生成数据源。 本文以生成6位数验证码为例,验证码有效时间为五分钟。 注:程序仅供参考!!! 一、生成动态验证码: (新建项目、新建FB块、添加变量、编写程序、调用FB块、关联变量、下载测试) 1、新建FB块(CAPTCHA)、定义块接口参数: (*块接口参数: INPUT: SetCaptcha :(BOOL)生成验证码 User_Captcha :(DINT)用户输入验证码 OUTPUT: Is_Valid :(BOOL)验证是否成功 Captcha :(DINT)生成的验证码;*) 定义块接口参数 2、编写程序: 生成动态验证码程序 (* 生成动态验证码:Smart Auto Control -- WangQuanFuGui 原创 块接口参数: INPUT: SetCaptcha :(BOOL)生成验证码 User_Captcha :(DINT)用户输入验证码 OUTPUT: Is_Valid :(BOOL)验证是否成功 Captcha :(DINT)生成的验证码 *)
REGION Edge //触发生成验证码 #SetCaptchaU := #SetCaptcha AND NOT #statEdgeSave; #statEdgeSave := #SetCaptcha; //获取时间戳 #TimestampSwap(#TimeStamp); END_REGION
REGION captcha IF #SetCaptchaU THEN //触发时间戳 #statTimeStamp := #TimeStamp; //获取时间戳的后3位数字 #TimeCaptcha := #TimeStamp MOD 1000; //生成99-999之间的随机数 #RandomNumber := "FC_RandomNumberDINT"(MinValue := 99, MaxValue := 999); //生成6位数字验证码 #Captcha := #statCaptcha := #RandomNumber * 1000 + #TimeCaptcha; END_IF; END_REGION
REGION Valid // 用户输入的验证码验证 IF #User_Captcha = #statCaptcha AND (#TimeStamp - #statTimeStamp <= #CAPTCHA_EXPIRY_TIME) THEN #Is_Valid := TRUE; // 验证成功 ELSE #Is_Valid := FALSE; // 验证失败 END_IF; END_REGION
生成动态验证码程序 3、调用程序、下载测试: 设置时区 下载测试 下载测试 二、时间戳FB块: 1、新建FB块(TimestampSwap): 自定义数据类型 定义块接口参数 2、编写程序: 时间戳转换程序 三、随机数FC块: 1、新建FC块(FC_RandomNumberDINT): 定义块接口参数 2、编写程序: 随机数转换程序 注:程序仅供参考!!! 参考文献《STEP7和WinCC Engineering系统手册》
STEP 7 和 WinCC EngineeringV16-V20 链接:https://pan.baidu.com/s/1yndwGyRb0o6o5m6N2SbYAA?pwd=1234 提取码:1234
全集成自动化获取 TIA Portal 相关信息的最短途径! https://docs.tia.siemens.cloud/ 后台回复关键字获取TIA系列软件V11-V20: 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |