我想将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']?