Что нового

[Автоматизация] Как отследить и послать сигнал в промышленный контроллер?

xishnik

Новичок
Сообщения
51
Репутация
0
Как отследить и послать сигнал в промышленный контроллер?
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
597
Репутация
77
xishnik [?]
Основная задача: научить меня послать сигнал в контроллер об изменении той или иной температуры.
Найдите описание команд промышленного контроллера и отправляйте то что ему нужно. С такой постановкой задачи вряд ли кто-то поможет, ведь даже не указанно какой контроллер применен, какая версия прошивки и т. д. Не зная этого даже не погуглишь за вас чтобы найти документацию...
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
Prog сказал(а):
xishnik [?]
Основная задача: научить меня послать сигнал в контроллер об изменении той или иной температуры.
Найдите описание команд промышленного контроллера и отправляйте то что ему нужно. С такой постановкой задачи вряд ли кто-то поможет, ведь даже не указанно какой контроллер применен, какая версия прошивки и т. д. Не зная этого даже не погуглишь за вас чтобы найти документацию...
На 5 фотографии видно название контроллера..
Подскажите пример AutoIt кода посылки сигнала в контроллер через COM1 порт. Schneider Electric TSX P572823
Прошивается он через программу PL7 v 4.3.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Ставьте программу сниффер: https://technet.microsoft.com/ru-ru/sysinternals/bb896644
запускаете - выбираете слушать все порты. Затем запускаете ваш софт, отправляете команды. Сниффер должен их отловить и показать в наглядном виде.
Дальше - вам нужно будет найти программу - прокси для com портов, через которую и ваш софт и ваша утилита смогут одновременно отправлять команды.
Для работы с com портами есть UDF https://www.autoitscript.com/wiki/CommAPI
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
inververs сказал(а):
Ставьте программу сниффер: https://technet.microsoft.com/ru-ru/sysinternals/bb896644
запускаете - выбираете слушать все порты. Затем запускаете ваш софт, отправляете команды. Сниффер должен их отловить и показать в наглядном виде.
Дальше - вам нужно будет найти программу - прокси для com портов, через которую и ваш софт и ваша утилита смогут одновременно отправлять команды.
Для работы с com портами есть UDF https://www.autoitscript.com/wiki/CommAPI
Спасибо, схема работы ясна.
Мне кажется есть ещё способ, может посоветуете что-то на эту тему.
Можно снифферить не com порт, а само приложение из которого мы управляем процессом, и с автоита дать в него команду, а та программа уже пошлёт сигнал, получится что не нужен будет прокси, и вся информация будет лететь с нынешней программы.
Что мне нужно чтобы воплотить это в жизнь?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Можно автоматизировать нажатие кнопок.
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
inververs сказал(а):
Можно автоматизировать нажатие кнопок.
Я пробовал создавать в том приложении кнопки, которые бы добавляли и убавляли задание на n-ое число.
Но столкнулся с такой проблемой:
Обычный mouseclick не работает. Работает только такой вариант:
Код:
MouseMove(1035,850)
MouseUp("Left")
sleep(1000)
MouseDown("Left")

Только так происходит нажатие на кнопку. Но Mouseclick не подходит начальству, нужно сделать то же самое на controlclick, есть идеи?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
xishnik [?]
нужно сделать то же самое на controlclick, есть идеи?
Поводите по окошку утилитой Autoit Windows Info, и если контролы определяются используйте
Код:
ControlClick ControlCommand
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
inververs сказал(а):
xishnik [?]
нужно сделать то же самое на controlclick, есть идеи?
Поводите по окошку утилитой Autoit Windows Info, и если контролы определяются используйте
Код:
ControlClick ControlCommand
контролы не определяются я слал таким способом
Код:
ControlClick('ГРАФИКИ ТЕКУЩИЙ И ИСТОРИЯ','','',"left", 1,761, 147)

Таким кликом можно зайти в какое-то окно, но нажатие кнопки таким образом не происходит. Для того чтобы кнопка сработала, надо зажать на 1 сек. можно ли зажать контролклик на 1 сек?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
xishnik [?]
можно ли зажать контролклик на 1 сек?
нет



Добавлено:
Сообщение автоматически объединено:

Можно отослать окну сообщение, что нажата левая клавиша мыши по определенным координатам, подождать 1 секунду, отослать - что клавиша отжата. И, как я понимаю, курсор при этом не будет двигаться.
 
Автор
xishnik

xishnik

Новичок
Сообщения
51
Репутация
0
inververs сказал(а):
xishnik [?]
можно ли зажать контролклик на 1 сек?
нет



Добавлено:
Сообщение автоматически объединено:

Можно отослать окну сообщение, что нажата левая клавиша мыши по определенным координатам, подождать 1 секунду, отослать - что клавиша отжата. И, как я понимаю, курсор при этом не будет двигаться.



Приведите пожалуйста пример.
Большое спасибо за помощь, я уже на 99% уверен что у меня хоть что-то, но получится, главное не сдаваться и больше пробовать) Если что, я буду снифферить com порт, отслежу что именно происходит во время ввода информации и выложу скрин, в том случае если не получится разобраться с UDF на COM порт...)
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
http://autoit-script.ru/index.php?topic=50.15 вот здесь про клики в окно.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
xishnik
Приведите пожалуйста пример.
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

Func MouseLeftClick($hWnd, $X, $Y, $Sleep = 10)
  Local Const $MK_LBUTTON = 0x0001
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONDOWN))
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONDOWN, $MK_LBUTTON, _WinAPI_MakeLong($X, $Y))
  Sleep($Sleep)
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONUP))
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONUP, 0, _WinAPI_MakeLong($X, $Y))
EndFunc

контролы не определяются
UIAutomate - автоматизация нестандартных элементов GUI
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
xishnik [?]
Цитировать

можно ли зажать контролклик на 1 сек?

нет
а как же
Код:
AutoItSetOption ( 'MouseClickDownDelay',1000 )
если изменить, то ведь везде поменяется длительность зажатой клавиши ?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
xishnik [?]
Контроллер: TSX P572823 Premium
Как я понял из описания TSX P57 он поддерживает протокол Modbus. Вот на него и обратите внимание.
 

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
ra4o
поменяется длительность зажатой клавиши
Поменяется длительность зажатой кнопки мыши, которая к ControlClick отношения не имеет, а действует только на Mouse*() функции.
Неужели так сложно проверить?
 
Верх