WEEK1_1 改mdsplus数据

周一-周二:mdsplus修改

  • 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()