Raspberry Pi to AB controllogix:如何根据连续读取 plc 标签值触发 GPIO 中的输出
Raspberry Pi to AB controllogix: how to trigger output in GPIO based on continuosly reading plc tag value
我在 GitHub 上发现了 pylogix,并且一直在 AB L71 CPU 上使用 reading/writing 标签。我在 read/write 部分成功了,但我想做的是根据 plc 值大于 0 触发 GPIO 引脚输出。
我似乎无法弄清楚我需要做什么才能将不断更新的值输入到输出函数中。
import threading
from pylogix.eip import PLC
from gpiozero import LED
from time import sleep
comm = PLC()
comm.IPAddress = '10.201.191.177'
def readdata():
threading.Timer(1.0, readdata).start()
x = comm.Read('parts')
print (x)
readdata()
if x > 0:
relay = LED(2)
很高兴看到我不是这个论坛上唯一对 PLC 感兴趣的人。我可能会向您推荐这个:
编辑:
我阅读了您模块的文档。在下面试试这个新代码
可以找到文档 https://gpiozero.readthedocs.io/en/stable/
import threading # I don't think this is necessity for your application
import time
from pylogix.eip import PLC
from gpiozero import LED
from time import sleep
with PLC() as comm #small edit here to control the closing of sockets upon exit
comm.IPAddress = '10.201.191.177'
running=True
relay = LED(2) #I believe the previous version of your code was constantly overwriting your 'relay' variable with a new instance of class LED
while running==True:
x=comm.read('parts')
if x > 0:
relay.on()
else: relay.off()
time.sleep(.5)
#this will run forever updating your LED every 500ms, I would recommend writing code to exit this loop
我在 GitHub 上发现了 pylogix,并且一直在 AB L71 CPU 上使用 reading/writing 标签。我在 read/write 部分成功了,但我想做的是根据 plc 值大于 0 触发 GPIO 引脚输出。
我似乎无法弄清楚我需要做什么才能将不断更新的值输入到输出函数中。
import threading
from pylogix.eip import PLC
from gpiozero import LED
from time import sleep
comm = PLC()
comm.IPAddress = '10.201.191.177'
def readdata():
threading.Timer(1.0, readdata).start()
x = comm.Read('parts')
print (x)
readdata()
if x > 0:
relay = LED(2)
很高兴看到我不是这个论坛上唯一对 PLC 感兴趣的人。我可能会向您推荐这个:
编辑: 我阅读了您模块的文档。在下面试试这个新代码 可以找到文档 https://gpiozero.readthedocs.io/en/stable/
import threading # I don't think this is necessity for your application
import time
from pylogix.eip import PLC
from gpiozero import LED
from time import sleep
with PLC() as comm #small edit here to control the closing of sockets upon exit
comm.IPAddress = '10.201.191.177'
running=True
relay = LED(2) #I believe the previous version of your code was constantly overwriting your 'relay' variable with a new instance of class LED
while running==True:
x=comm.read('parts')
if x > 0:
relay.on()
else: relay.off()
time.sleep(.5)
#this will run forever updating your LED every 500ms, I would recommend writing code to exit this loop