连接标志! 8.3 和带有 snap7 lib 的 Python

问题描述 投票:0回答:1

Image 它给了我这个结果,但我不知道这意味着什么 -> #

我有 Q1 和 Q2 处于活动状态。如果我只激活 Q1 打印!已安装

import snap7
from snap7.util import *
def read_logo_outputs(ip, rack, slot):
    # Crear un cliente
    client = snap7.client.Client()
    
    # Conectar al PLC
    client.connect(ip, rack, slot)
    # Leer las salidas digitales
    outputs = client.read_area(Areas.PA, 0, 0, 1)
    example = outputs.decode('utf-8')
    # Cerrar la conexión
    client.disconnect()
    
    return example  # Convert the output to bytearray

# Usar la función
ip = '192.168.30.101'  # Dirección IP del PLC
rack = 0  # Número de rack
slot = 2  # Número de slot
result = read_logo_outputs(ip, rack, slot)
print(result)

我认为它有效,但我需要知道什么是价值#

谢谢

python plc snap7
1个回答
0
投票

asci...

!(33) 表示 Q1。

"
(34) 表示 Q2

#
(35) 表示 Q1 和 Q2

而且是

client.read_area(Areas.PA, 0, 0, 1)
而不是
client.read_area(0x82, 0, 0, 1)
client.read_area(snap7.types.areas['PA'], 0, 0, 1)

这可以用来:

import snap7
from snap7.util import *    

def asci_conversor(valor):
    valor = ord(valor)
    bin_str = bin(valor)[2:]  # Elimina el prefijo '0b'
    bit_table = [(i, int(bit)) for i, bit in enumerate(bin_str[::-1])]
    return bit_table

def read_logo_outputs(ip, rack, slot):
    # Crear un cliente
    client = snap7.client.Client()
    
    # Conect to PLC
    client.connect(ip, rack, slot)
    # Reed digital output
    outputs = client.read_area(Areas.PA, 0, 0, 1)
    example = outputs.decode() #decode it
    # close conection
    client.disconnect()
    
    return example 

ip = '192.168.30.101'  # PLC IP 
rack = 0 
slot = 2
while True:
    result = read_logo_outputs(ip, rack, slot)
    result = asci_conversor(result)
    print(result)
    time.sleep(3)
© www.soinside.com 2019 - 2024. All rights reserved.