如何做一个最简单的自动化催款神器

一  需要的软件

1、 编程软件:博图TIA Portal V17

2、 模拟软件:S7-PLCSIM  Advanced V7.0

3、 昆仑通泰触摸屏组态软件:McgsPro组态软件

注:以上软件版本仅作为本次模拟的使用版本,最新版本可以自行去官网下载。

二  博图TIA Portal V17中程序的编辑

01 创建数据块

创建DB1全局变量数据块,在数据块属性界面取消“优化的快访问” ;

并创建需要的变量表;创建完变量表后,记得编译。

02 创建函数块

创建FC函数块,并在组织块OB1中调用。

03 创建程序

在右侧“指令”界面的“扩展指令”中将读取时间指令

和设置时间指令

拖入FC1的程序段1。 

这里读取时间指令RD_SYS_T和设置时间指令WR_SYS_T的格式为DTL;其中读取时间指令RD_SYS_T的OUT口输出和设置时间指令WR_SYS_T的IN口输入均为DTL格式的变量和指令的格式一致。RET_VAL为INT整型数据,用来显示两个指令的错误和状态。RET_VAL在程序正常执行时为0,读取时间指令RD_SYS_T的RET_VAL在错误时输出8081;表示数据读取超出 OUT 参数已选数据类型所允许的范围,无法保存。设置时间指令WR_SYS_T的RET_VAL错误状态会比较多,共有9类错误,具体如下: 

另外还需要了解一点:DTL最小为 DTL#1970-01-01-00:00:00.0,最大为 DTL#2200-12-31-23:59:59.999999999。

DTL(Date and Time Long)是一种用于存储日期和时间信息的数据类型,其操作数长度为12个字节。它在处理与日期、时间相关的自动化控制任务时非常有用,比如记录事件发生的时间、进行时间顺序的控制等。

以下是DB1中读取时间指令RD_SYS_T的OUT输出端和设置时间指令WR_SYS_T的IN输入端变量的数据情况,DTL类型直接分配了读取时间所需要的所有参数,年月日时分秒,还有星期以及纳秒信息。

UINT、USINT、UDINT 均为无符号整数类型。“U”代表无符号(Unsigned),即这些类型只能表示非负整数。其中,USINT 为无符号短整型,UINT 为无符号整型,UDINT 为无符号双整型。

USINT 通常占 8 位

UINT 占 16 位

UDINT 占 32 位

USINT 取值范围是 0 - 255(2^8 - 1)

UINT 取值范围是 0 - 65535(2^16 - 1)

UDINT 取值范围是 0 - 4294967295(2^32 - 1) 

 这是程序段2和程序段3的程序,用来比较到期时间和当前时间,继而控制程序的运行,达到到期断开整个程序的目的;通过年月日时相等时断开程序运行来维护自身权益;当下的年月日时和到期的年月日时相等时,则System_run变量被置1,整个程序被断开,需要再上位机利用管理员权限来复位,并重新设置到期时间。 

程序段4是设置时间的程序;利用移位指令,将设置值写入设置时间指令WR_SYS_T的IN输入端变量。

移位指令支持的数据类型如下:

位字符串、整数、浮点数、定时器、日期时间、CHAR、WCHAR、STRUCT、ARRAY、TIMER、COUNTER、IEC 数据类型、PLC 数据类型 (UDT)

支持的存储区有I、Q、M、D、L 或常量。 

以上是程序段5的程序,用来控制剩余时间的预警;提前一年,一小时,一分钟,一秒钟来预警程序即将终止运行也不合适,所以把预警时间设定在月或者日。

月份相减得到差值,设置差值时间,例如差值时间SUB_Month1为2个月,设定时间SUB_Month正好小于等于2个月则提醒程序即将到期;天数的程序也是一样,这里如果月份的差值设置有值则直接比较剩余的月份的差值,如果月份的差值为0,才比较天数的差值。

整体的运行逻辑是程序到期后,先判断是以月为单位预警的,还是以天数为单位预警的,剩余月份的设置有值,则小于等于剩余月份预警,剩余月份的设置为0,则根据剩余天数的设置来预警,如果都没设置,则不会预警,到期后直接中断程序运行。

三  HMI触摸屏的组态

01 创建项目创建变量

这里我们使用昆仑通泰的组态软件来实现整个程序的界面控制,创建项目和导入变量的具体过程这里不再详细描述,可以参考以前的文件和官方教程。 

这里着重看下变量,DB1块在这里的通道类型为:V数据存储器;数据类型根据DB1相应变量的类型来设置,比如年的设定为16位无符号数,月日时分秒的设置为8位无符号数,BOOL类型则需要在数据类型的设置选择是通道的第几位,比如DB1.DBX48.2则选择通道第二位。

例如设置年DB1_SET_Year为16位无/有符号数,地址为DB1.DBW38 

因为是DB数据块,所以在这里通道类型为V数据存储区,数据类型为16位无符号数,通道地址为1.38(1代表DB1,38代表地址38);设置完成后实际地址为DB1.WB038,无符号则为DB1.WUB038,都可以。

比如设置月DB1_SET_Month为8位无/有符号数,地址为DB1.DBB40 

因为是DB数据块,所以在这里通道类型为V数据存储区,数据类型为8位无符号数,通道地址为1.40(1代表DB1,40代表地址40);设置完成后实际地址为DB1.BB040,无符号则为DB1.BUB040,都可以。

那么如果是DB2,例如地址为DB2.DBB20;则通道类型不变,为V数据存储区;数据类型为8位无符号数,通道地址为2.20(2代表DB2,20代表地址40);设置完成后实际地址为DB2.BB020,无符号则为DB2.BUB020,都可以。

BOOL量的设置和以上差不多,因为是数据块的数据通道类型依然为V数据存储区;数据类型根据是通道的第几位来设置,比如DB1.DBX2.0很明显是通道的第0位,则数据类型设置为“通道的第00位”,DB1.DBX2.2为通道的第2位,则数据类型设置为“通道的第02位”,通道地址根据具体地址来,例如DB1.DBX2.0,通道地址则为1.02;例如DB1.DBX14.0,通道地址则为1.14;例如DB2.DBX14.0,通道地址则为2.14。

比如电机启动Start是BOOL量,实际地址为DB1.DBX45.0 

02 组态界面

这里我们需要两个界面,第一个是时间设置界面,用来校准触摸屏和PLC的时间和当下时间保持一致,同时设置程序到期时间和到期的剩余时间,组态电机的状态显示和启停操作,模拟到期前和到期后程序的实际状态;在这个界面加入时间预警的报警滚动条,来显示预警信息。

第二个界面为用户管理界面,用来登录和退出用户;设置权限来管理到期时间和校准时间的设置。 

界面的文字用标签工具来

组态;日期等参数的设置用输入框工具

来完成;电机的启动停止用标准按钮工具

来实现;界面切换和当前用户显示都是用标签工具

来实现,指示灯是用

动画显示来完成的,报警滚动条用滚动条组件来

完成。 

用户管理界面主要设置用户登录和用户注销两个按钮,当前用户用来显示界面正在使用的权限类型。用户登录和用户注销用标准按钮工具

来实现;界面切换和当前用户显示都是用标签工具

来完成。

03 权限的设置

单击菜单栏的工具选项,在下拉菜单选择“用户权限管理”,打开用户管理器,在用户名一栏,选定“负责人”选项,单击属性编辑打开用户属性设置对话框;填入用户密码,并将密码写入确认密码,单击确认,完成权限的设置。 

在时间设置界面,双击设置时间按钮,在弹出的对话框中选择权限,打开用户权限设置对话框,勾选权限不匹配时弹出对话框,勾选管理员组,单击确认;完成设置时间的权限设置,系统复位按钮也一样的设置。相当于给校准系统时间功能和运行到期时间加了权限,系统使用时间到期后,必须拥有管理员权限的工程师才能重新设置时间,复位时间对程序的锁定,重新使系统正常运行。

注释:昆仑通泰触摸屏用户登录在按钮的脚本程序里使用!LogOn( ),用户注销的按钮脚本程序里使用!LogOff(),当前用户的标签输出显示里连接$UserName变量即可。

以上是用户管理的具体设置,其他的比较常规,这里不再赘述。另外还有:

ChangePassword(): 该函数允许用户修改自己的密码。用户需要输入旧密码和新密码,系统会进行验证并更新密码。 

Editusers(): 该函数用于管理用户,包括添加、删除或修改用户信息。管理员可以通过此函数对用户权限进行管理。 

四 仿真软件设置

双击仿真软件图标,打开软件。 

勾选TCP/IP单适配器,接口默认本地即可。 

配置示例名称,可以任意起个名字,IP地址和子网掩码必须和CPU地址一致,PLC类型必须和组态的CPU类型一致;配置完成后,单击“Start”。 

仿真软件成功运行后,在激活的PLC实例下方会出现PLC类型和对应的IP地址,表示已经成功运行仿真器。

五 系统运行

01 下载设置

在菜单栏单击“工具”,在下拉菜单里选择“下载工程”,弹出“下载设置对话框”,运行方式选择为“模拟”,单击“工程下载”,数据下载成功后,单击“启动运行”按钮。

   博图程序下载的设置这里不再赘述,启动仿真软件后,下载过程和实际是一样的。

02 系统运行

启动运行后,登录负责人管理权限,输入用户密码,注销方式选择“超过登录时长”,时间设置为3分钟。即管理员权限登录后,超过3分钟会自动注销管理员权限。 

这是正在运行的时间设置界面。 

以上是程序正在监控的界面。

03 功能测试

浅蓝色部分是当前时间显示情况,系统时间设置和到期时间设置临时设置一个值,剩余时间预警暂写入2个月和15天。 

我们看到当前用户没有登录,所以在单击设置时间按钮时弹出权限不足的提示。 

切换到用户登录界面,单击用户登录按钮,在弹出的对话框中,输入负责人的密码和等于时长,单击确认。 

可以看到管理员权限的负责人用户已经登录成功。 

单击“时间设置”按钮,可以看到系统时间显示已经变成设置的时间。 

程序中的数据和触摸屏一致。

 

由于到期时间远小于当前系统时间,所以启停保程序可以运行。 

如果剩余时间预警少于或等于两个月,或者剩余时间预警月份为0 ,剩余天数小于或等于15日,系统会出现预警提示。如果超过或等于到期时间,则程序终止。具体如下:

 这里只是比较了年月日时,年月日时相等时,程序执行终止。 

以上是程序终止的情况,此时需要通过管理员权限重新设置到期时间,复位系统,使程序工作在到期日期之前。

本文通过最简单的方式来实现程序运行时间的控制,帮助厂家来管理售中发生的催款问题和售中售后系统时间校准问题。

提升工作效率。

 

作者:

网名禅主,80后,2015年开始从事环保行业自控及电气系统设计,调试工作,已有10年时间;先后从事过污泥处理,工业废水处理,污水处理,市政泵站,调蓄池相关工作。

图片

2025年07月