python编写
远程操作都从connection开始,有connector和mdsconnection两种,貌似后者多的是ssh
与服务器的连接断开后,需要等一段时间才能再次连接,原因未知,报错如下
>>> c = connection.Connection('222.20.94.136')
Error during login: recv NULL
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\install\mdsplus\python\MDSplus\connection.py", line 247, in init
self.connect()
File "D:\install\mdsplus\python\MDSplus\connection.py", line 250, in connect
self.conn.connect()
File "D:\install\mdsplus\python\MDSplus\connection.py", line 82, in connect
raise MdsIpException("Error connecting to %s" %
MDSplus.connection.MdsIpException: %MDSPLUS-E-Unknown, Error connecting to 222.20.94.136
主要使用get()和put()两个函数,con.get()的使用跟TDI基本一致,两种都用$参数形式
遇到的难题在于没有找到完善的python文档,不熟悉,目前还不能用python灵活地操作mdsplus,比如用python创建炮号。这种问题在用C#时也同样存在。看python版源码可以查到更全面的python api,不过对于代码中字符串参数形式的远端指令(TDI),仍然很多不懂。
主要参考 https://www.mdsplus.org/index.php/Documentation:Tutorial:RemoteAccess
连上工控网后,连接的服务器ip地址需要改成192.168.1.1。
首先连上工控网,对一个空炮put操作(测试),如图 1076541炮
测试成功
直接跑
D:\mds_modify\venv\Scripts\python.exe D:/mds_modify/main.py
1076538
GET: shot:1076541, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076541, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076541, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076590, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076590, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076590, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076644, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076644, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076644, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076645, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076645, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076645, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076649, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076649, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076649, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076711, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076711, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076711, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076772, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076772, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076772, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076828, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076828, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076828, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076829, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076829, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076829, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076893, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076893, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076893, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076926, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076926, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076926, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076966, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076966, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076966, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076967, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076967, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076967, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076968, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076968, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076968, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076969, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076969, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076969, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076970, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076970, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076970, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076999, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076999, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1076999, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077090, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077090, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077090, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077161, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077161, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077161, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077225, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077225, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077225, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077286, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077286, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077286, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077291, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077291, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077291, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077303, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077303, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077303, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077331, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077331, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077331, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077357, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077357, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077357, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077361, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077361, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077361, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077379, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077379, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077379, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077436, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077436, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077436, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077505, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077505, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077505, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077578, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077578, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077578, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077639, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077639, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077639, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077669, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077669, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077669, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077686, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077686, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077686, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077702, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077702, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077702, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077783, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077783, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077783, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077806, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077806, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077806, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077855, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077855, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077855, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077857, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077857, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077857, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077937, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077937, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077937, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077944, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077944, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077944, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077967, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077967, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077967, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077999, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077999, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1077999, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078007, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078007, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078007, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078008, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078008, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078008, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078009, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078009, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078009, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078103, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078103, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078103, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078116, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078116, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078116, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078150, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078150, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078150, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078224, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078224, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078224, node:\Limiter_Bot, error occurs:%TREE-E-NODATA, No data available for this node.
1078225
GET: shot:1078232, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078232, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078305, node:\Limiter_Top, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078305, node:\Limiter_LFS, error occurs:%TREE-E-NODATA, No data available for this node.
1078306
1078225
GET: shot:1078232, node:\Ltop, error occurs:%TREE-E-NODATA, No data available for this node.
GET: shot:1078305, node:\Ltop, error occurs:%TREE-E-NODATA, No data available for this node.
1078306
Process finished with exit code 0
代码:
from MDSplus import connection
import traceback
ip = '192.168.1.1'
c = connection.Connection(ip)
shot_ranges = [[1076538, 1078224], [1078225, 1078305], [1078306, 1078388]]
src_dest_nodes = [['\Limiter_Top', '\Ltop'], ['\Limiter_LFS', '\Llfs'], ['\Limiter_Bot', '\Lbot']]
# src * 20 + 240
add_expre = ' * $1 + $2'
# debug
# c.openTree('jtext', shot=1076541)
# node_data = c.get('\Ltop')
# print(node_data)
# # c.closeTree('jtext', shot=1076540)
# # c.openTree('jtext', shot=1076541)
# # c.put('\Ltop', '$', node_data)
# c.closeTree('jtext', shot=1076541)
for shot_range in shot_ranges:
print(shot_range[0])
for shot in range(shot_range[0], shot_range[1]+1):
c.openTree('jtext', shot=shot)
for src_dest in src_dest_nodes:
# ltop of last 2 rounds is modified alone later
if shot_range[0] != shot_ranges[0][0] and src_dest[0] == src_dest_nodes[2][0]:
continue
try:
node_data = c.get(src_dest[0]+add_expre, 20, 240)
try:
c.put(src_dest[1], '$', node_data)
# c = c
except Exception as e:
print('PUT: shot:{}, node:{}, error occurs:{}.'.format(shot, src_dest[1], e))
# traceback.print_exc()
except Exception as e:
print('GET: shot:{}, node:{}, error occurs:{}.'.format(shot, src_dest[0], e))
# traceback.print_exc()
c.closeTree('jtext', shot=shot)
for shot_range in shot_ranges[1:]:
print(shot_range[0])
param = 0
if shot_range[0] == shot_ranges[1][0]:
param = 6
for shot in range(shot_range[0], shot_range[1]+1):
c.openTree('jtext', shot=shot)
try:
node_data = c.get('\Ltop'+'-$', param)
try:
c.put('\Lbot', '$', node_data)
# c = c
except Exception as e:
print('PUT: shot:{}, node:{}, error occurs:{}.'.format(shot, '\Lbot', e))
# traceback.print_exc()
except Exception as e:
print('GET: shot:{}, node:{}, error occurs:{}.'.format(shot, '\Ltop', e))
# traceback.print_exc()
c.closeTree('jtext', shot=shot)
c.disconnect()