Прослушивание TCP/IP

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Аватара пользователя
Lerych
Сообщения: 191
Зарегистрирован: Чт дек 14, 2017 8:46 pm
Откуда: Московская область, Серпухов
Благодарил (а): 79 раз
Поблагодарили: 24 раза

Re: Прослушивание TCP/IP

Сообщение Lerych » Пн дек 03, 2018 8:48 pm

Огромное спасибо: fandaymon!
Отпишусь по результатам.
1. Создал класс: PLC в родительском классе SDevices
013.png
013.png (24.55 КБ) 1069 просмотров
2. Создал классе в PLC объект i8830_1 (потому, что их будет аж три)
3. В методе statusUpdated объекта i8830_1 прописал код

Код: Выделить всё

$value=getGlobal('i8830_1.status'); 
for ($i=0;$i<strlen($value);$i++) 
{
	if ($params['OLD_VALUE'][$i]!=$params['NEW_VALUE'][$i]) 
    {
 		setGlobal('cn'.$i.'.status',$value[$i]);  
    }
}
014.png
014.png (34.48 КБ) 1069 просмотров
4. В модуле TCP_sockets завел строку с сервером. В примере, всё настроено на имитатор, поэтому указал адрес и порт локального ПК.
011.png
011.png (12.16 КБ) 1069 просмотров
5. В модуле TCP_sockets завел строку с данными
012.png
012.png (16.83 КБ) 1069 просмотров
6. Создал в классе PLC объекты: cn0, cn1, cn2 и т.д.
7. Теперь по приходу сообщения от сервера в формате plc1101010 (plc1 - идентификатор ПЛК, остальное - состояние контактов), данные контактов сохраняются в status объекта i8830_1
8. При изменении status метод statusUpdated распихивает их в status объектов cn0, cn1 и т.д.
9. Т.к. на "боевом" ПК уже были заведены Простые устройства, элементы на сцене к ним привязаны и т.д., воспользовался модулем PropTransfer через который собственно статусы cn0, cn1 и т.д. передаю в объекты Простых устройств.
10. Пока всё работает вроде нормально, тестирую дальше.
Всем участвовавшим, СПАСИБО!
Ответить