我有 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)
我认为它有效,但我需要知道什么是价值#
谢谢
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)