如何使用PYCOMM库解析来自Rockwell Tag的UDT数据

时间:2019-03-22 01:40:04

标签: python plc

我想将Python用于Allen Bradley PLC中,获取标签,并向我提供完整的标签列表,包括所有UDT类型。获得此列表后,用户将选择他们想要从列表中登录到数据库的标签。

到目前为止,我唯一关心的是如何使用PyComm库解析返回的数据。这是我的代码:

from pycomm.ab_comm.clx import Driver as ClxDriver

    c = ClxDriver()

    if c.open('192.168.1.148'):

        tags = c.get_tag_list()

        value = tags[4]

        print value

    c.close()

这是控制台输出:

{'instance_id': 31819, 'template_instance_id': 2336, 'tag_name': 'Auger1', 'udt': {'internal_tags': ['Running', 'Stopped', 'Faulted', 'Speed'], 'name': 'Motor_Status', 'data_type': [(0, 'BOOL', 0), (1, 'BOOL', 0), (2, 'BOOL', 0), (0, 'REAL', 4)]}, 'template': {'structure_handle': 64721, 'structure_size': 8, 'member_count': 5, 'object_definition_size': 35}, 'data_type': 'user-created', 'dim': 0, 'tag_type': 'struct'}

我浏览了PyComm库,看起来数据是在这种情况下格式化的:

self._tag_list.append({'instance_id': tag['instance_id'],
                                               'tag_name':  tag['tag_name'],
                                                'dim': dimension,
                                                'tag_type': tag_type,
                                                'data_type': data_type})

我认为有很多工作可以完全解析它,但是对于初学者来说,这是我的问题:

1)如何从该字符串中分离标签名称“ Auger1”?
2)如何从该字符串中分离内部标签['Running','Stopped','Faulted','Speed']?

0 个答案:

没有答案