远程监控显示brother数控机床数据

最近几个月公司太忙了,到现在已经连续出差两个多月了。

这个项目这要做mes系统,涉及到产品在机床的加工过程监控,然后led看板显示产品进度。

这里的主角是日本的brother数控机床,服务器按照一定频率读取机床的生产数据,最基本的包括机床的工件产量,开机状态等信息。

后台是Java写的,其中一部分是led显示机床数据,而读取机床数据的部分本来想用dotnet做个Windows服务,可是折腾了很长时间还是没有搞定。

brother机床设备里面是个Linux系统,里面架设有ftp服务,可以从远程pc访问数据库nc文件,第一次用dotnet无法读取,原因是项目所在目录包含中文字符,后来换个位置后可以读取。如今在纯英文目录都不行,换了好几台设备还是不行,一直提示“基础连接已经关闭: 服务器提交了协议冲突”,网上很多资料都说是目录含有中文字符,可是我再三确认没有中文,我用的系统是win10 x64专业版,也有说是使用了代理,我把reqFtp.Proxy = null;还有关掉本地防火墙,主动被动模式都不行。

最后只能放弃,第二天早上突发奇想,用python写个脚本试试,果真见效,只能说dotnet framework 在ftp方面还是存在不少bug。以下是python脚本:

 1 # coding: utf8
 2 from ftplib import FTP
 3 
 4 
 5 def download(host='192.168.1.5', port=21, user='1234', pwd='1234', nc='WKCNTR.NC'):
 6     cnc = FTP()
 7     try:
 8         cnc.connect(host=host, port=port, timeout=10)
 9     except Exception as e:
10         print(e)
11         return
12     try:
13         cnc.login(user=user, passwd=pwd)
14     except Exception as e:
15         print(e)
16         return
17     print(cnc.getwelcome())
18     for name in cnc.nlst():
19         print(name)
20     file = open('d:/' + nc, 'w', encoding='utf8')
21 
22     def save_local(line):
23         file.write(line + '\n')
24         print(line)
25 
26     cnc.retrlines('RETR ' + nc, save_local)
27     file.close()
28     cnc.quit()
29 
30 if __name__ == '__main__':
31     download(host='192.168.26.5')

 下面是新的进展,由于cnc brother的ftp并不稳定,有时会不允许连接,或连接后不允许下载文件,只要出现这种情况,就再也无法回复,只有重启。

Tcp方式采集CNC兄弟设备数据

posted on 2016-12-22 22:06  jonney_wang  阅读(4582)  评论(2编辑  收藏  举报

导航