Страница 5 из 5

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

Добавлено: Пн дек 03, 2018 8:48 pm
Lerych
Огромное спасибо: fandaymon!
Отпишусь по результатам.
1. Создал класс: PLC в родительском классе SDevices
013.png
013.png (24.55 КБ) 1324 просмотра
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 КБ) 1324 просмотра
4. В модуле TCP_sockets завел строку с сервером. В примере, всё настроено на имитатор, поэтому указал адрес и порт локального ПК.
011.png
011.png (12.16 КБ) 1324 просмотра
5. В модуле TCP_sockets завел строку с данными
012.png
012.png (16.83 КБ) 1324 просмотра
6. Создал в классе PLC объекты: cn0, cn1, cn2 и т.д.
7. Теперь по приходу сообщения от сервера в формате plc1101010 (plc1 - идентификатор ПЛК, остальное - состояние контактов), данные контактов сохраняются в status объекта i8830_1
8. При изменении status метод statusUpdated распихивает их в status объектов cn0, cn1 и т.д.
9. Т.к. на "боевом" ПК уже были заведены Простые устройства, элементы на сцене к ним привязаны и т.д., воспользовался модулем PropTransfer через который собственно статусы cn0, cn1 и т.д. передаю в объекты Простых устройств.
10. Пока всё работает вроде нормально, тестирую дальше.
Всем участвовавшим, СПАСИБО!