昆仑资源网 Design By www.lawayou.com
最近公司做了一个FMCS(厂务自控管理系统)项目,在建设运维期间经学有设备通讯不上,但是又没有好的方式检测设备是否是人为故障还是网线物理故障。在wincc上好像也不容易做设备的掉线检测,于是答应同事自己给他们做一个设备是否在局域网内在线存活的工具。可以当做一个小工具,也可以作为Wincc开发调用的外部插件来使用。当时有400多台设备,检测一遍用了不到20s。下面具体介绍一下这个软件,也把它分享出来,希望做工控方面的朋友有机会用到。
链接:https://cloud.189.cn/t/va6nUv3aEbM3(访问码:nrb1)
下载压缩文件解压后如下:
image.png
里面有说明文件
具体操作步骤:
检测功能
一、先从其它地方复制\输入要检测的IP到文档“待检测IP.txt”然后保存。
image.png
二、双击AliveIP_V1.0.exe可执行软件,运行软件。会有控制台弹出检测IP的过程,然后在当前文件夹下生成一个"掉线IP.txt"文档。目前我测试的只有192.168.1.2是在线的,其它的都不在这个局域网内。
image.png
报警功能
三、如果想在电脑或者Wincc上循环启动报警,可参考结合另外一个软件弹窗报警插件。(思路一:用电脑计划任务程序周期运行这两个软件。思路2:在Wincc中用全局脚本周期调用这两个软件)
四、通过双击ReadLinesCountAndNotice.exe软件,运行报警弹窗程序,可手动报警查看效果。
最后奉上源码,python3开发
AliveIP_V1.0.exe 如下==》
import threading
import subprocess
import time
import os
from queue import Queue
start_time=time.time()
#删除指定文件
if os.path.exists('掉线IP.txt'):
os.remove('掉线IP.txt')
#定义工作线程
WORD_THREAD=50
#定义IP列表
IPs=[]
#将需要ping 的ip加入队列
IP_QUEUE = Queue()
# for i in range(1,5):
# IP_QUEUE.put('192.168.1.'+str(i))
# for j in range(1,255):
# IP_QUEUE.put('192.168.2.'+str(j))
# file1= open('待检测IP.txt','r',encoding='utf-8') #打开要去掉空行的文件
# file2 =open('待检测IP2.txt','w',encoding='utf-8') #生成没有空行的文件
# for line in file1.readlines():
# if line == '\n':
# line=line.strip('\n')
# file2.write(line)
# file1.close()
# file2.close()
f=open('待检测IP.txt',encoding='utf-8')
lines=f.readlines()
for line in lines:
if line.isspace():
continue
else:
line=line.replace("\n","")
#line =line.replace("\t","")
IPs.append(line)
for x in IPs:
#print(x)
IP_QUEUE.put(x)
# with open ('待检测IP.txt') as file:
# for myline in file.readlines():
# if myline.isspace:
# continue
# else:
# print(myline)
#print(myline,end='') #end=""
#定义一个执行ping 的函数
def ping_ip():
while not IP_QUEUE.empty():
ip=IP_QUEUE.get()
res =subprocess.call('ping -n 1 -w 5 %s' %ip,stdout=subprocess.PIPE) #linux系统将'gn'替换成'-c'
#运行结果
print(ip,True if res ==0 else False)
if res !=0 :
with open('掉线IP.txt','a') as f:
f.write(ip+'\n')#进行换行输入f.write(ip+'\n')
if __name__ == '__main__':
threads=[]
for i in range(WORD_THREAD):
thread=threading.Thread(target=ping_ip)#绑定方法
thread.start()
#time.sleep(0.1)
threads.append(thread)
for thread in threads:
thread.join()
print('程序运行耗时:%s' %(time.time()-start_time))
-----------------------------------------------
ReadLinesCountAndNotice.exe 如下==》
import win32api,win32con
count = len(open('掉线IP.txt','rU').readlines())
print(count)
if count>=1:
win32api.MessageBox(0,'现已发现掉线设备总数:%s(台),请注意结合"掉线IP.txt"文本信息,安排检查现场!' %count,"提醒",win32con.MB_YESNOCANCEL)
总结:小伙伴们可以自己结合实际情况选用,在吾爱论坛成长了很多,终于能不做伸手党,为大家做点事了!2022/5/12
补充:在windows计划任务中执行弹窗,因为我这个弹窗要确认,所以不能在这里面启动。建议做自控的话在WinCC(其它上位机软件)中当作插件来使用。
昆仑资源网 Design By www.lawayou.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
昆仑资源网 Design By www.lawayou.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。