Я пытаюсь очистить свой код, но я новичок в python, поэтому я почти уверен, что мой синтаксис неправильный.Я написал простой контроллер, чтобы переменная message_lx_setPoint
приближалась к значению уставки message_lx_setPoint
.Я использую операционную систему робота , поэтому сценарий зацикливается на этом.Так как он работает нормально, значение message_lx_current
приближается к значению setPoint.Ниже приведен код, который я сделал для этого:
#defs
increment = 0.1
#setPoint values
message_lx_setPoint = 5.0 #value set by some controller(?)
message_ly_setPoint = 5.0
#current values
message_lx_current = 0.0 #value set by some sensor(?)
message_ly_current = 0.0
def approach_lx_setPoint():
global message_lx_current, message_lx_setPoint, increment
if message_lx_current < message_lx_setPoint:
print("current is less than set point")
message_lx_current += increment
elif message_lx_current == message_lx_setPoint:
print("current is equal to set point")
message_lx_current = 0.0
elif message_lx_current > message_lx_setPoint:
print("current is greater than set point")
message_lx_current -= increment
return message_lx_current
def approach_ly_setPoint():
global message_ly_current, message_ly_setPoint, increment
if message_ly_current < message_ly_setPoint:
print("current is less than set point")
message_ly_current += increment
elif message_ly_current == message_ly_setPoint:
print("current is equal to set point")
message_ly_current = 0.0
elif message_ly_current > message_ly_setPoint:
print("current is greater than set point")
message_ly_current -= increment
return message_ly_current
def main():
approach_lx_setPoint()
approach_ly_setPoint()
print(message_lx_current)
print(message_ly_current)
Я должен сделать это для 6 различных переменных, поэтому мой код начинает раздуваться;Я должен сделать 6 методов, чтобы контролировать все 6 переменных.Я хочу сделать так, чтобы я делал только один единственный метод, я передаю переменную, которой нужно управлять, и переменную, которая является заданным значением, и она выполняется оттуда.Я думаю что-то вроде этого:
#same variables as before
def approachSetPoint(current, target):
global increment
if current < target:
print("current is less than set point")
current += increment
elif current == target:
print("current is equal to set point")
current = 0.0
elif current > target:
print("current is greater than set point")
current -= increment
return current
def main():
approachSetPoint(message_lx_current, message_lx_setPoint)
approachSetPoint(message_ly_current, message_ly_setPoint)
print(message_lx_current)
print(message_ly_current)
Я надеюсь, что результатом этого будет то, что вместо того, чтобы иметь по одному approachSetPoint
def для каждой переменной, которую я буду контролировать, я будуесть только one подхода подхода SetPoint, и все, что мне нужно сделать, это вызвать его в основном с соответствующими переменными, и он будет делать то же самое.
Я пробовал это, и у меня нет ошибок иличто-нибудь, однако, значения НЕ обновлялись (?).Я предполагаю, что просто неправильно связываю переменную, которую передаю в качестве аргумента, с той, которая модифицируется в методе.Любая идея, как подходить к поведению, как я описываю?Заранее спасибо!