|
Вопросы о Trim5 Работа и применение контроллеров с сенсорной панелью Trim5. |
|
Опции темы | Поиск в этой теме |
22.10.2016, 21:44 | #1 |
Новичок
Регистрация: Sep 2014
Сообщения: 6
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Trim5 и WEB
Доброго
Вопрос существует ли для Trim5 Web интерфейс - хотя бы тем же методом что для SMH? |
23.10.2016, 14:37 | #2 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
Trim5 поддерживает SMConnect и у него есть SMConfig - это такая специальная "веб морда", на которую можно попасть, если ваш трим подключен к локальной сети по ethernet. Набирайте в браузере его ip адрес и попадаете (как на роутер).
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
24.10.2016, 11:15 | #3 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Trim5 и WEB
Всё как у SMH-2Gi, никаких отличий.
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
27.10.2016, 17:12 | #4 |
Новичок
Регистрация: Sep 2014
Сообщения: 6
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Trim5 и WEB
Спасибо - попробуем
|
04.09.2018, 10:12 | #5 |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
Доброго всем!!!
Если же все так как на 2Gi , то почему не запускается проект на базе http://forum.segnetics.ru/showpost.p...2&postcount=51 /ip/Data2Gi.php вообще пишет аракадабру какую-то вместо чтения load_map Знаю что я не умный . Так что прошу поделиться знаниями с гуру |
04.09.2018, 11:35 | #6 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
Процессоры разные. Разные версии системы команд. Проще говоря, надо перекомпилировать под нужную платформу.
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
04.09.2018, 12:40 | #7 |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
|
05.09.2018, 01:52 | #8 | ||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Trim5 и WEB
Цитата:
Цитата:
P.S. Мое общение с Сегнетиксами закончилось на 2Gi. |
||
05.09.2018, 09:30 | #9 | |
Senior Member
Регистрация: Dec 2013
Адрес: Краснодар
Сообщения: 187
Благодарил(а): 6 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
Цитата:
Код:
AdIpPLC = "127.0.0.1"; if(!$this->ParamVar()) { $this->PortIpPLC = 502; $this->Unit = 1; } srand( (float) microtime()*1000000 ); } // public function SetAdIpPLC( $Ip = "127.0.0.1") { $this->AdIpPLC = $Ip; $this->ModConn(); } // public function ModConn() { $this->Fp = @fsockopen( "$this->AdIpPLC", $this->PortIpPLC, $errno, $errstr, 5 ) ; // or die("������ ���������� � ������� $this->AdIpPLC:$this->PortIpPLC"); } // public function ModClose() { if ( $this->Fp) @fclose($this->Fp); } private function WriteSocket( $OutBuf ) { fwrite( $this->Fp, implode( "", $OutBuf )); return true; } private function ReadSocket () { while ( ! $InBuf = fgetc($this->Fp) ); $status = socket_get_status($this->Fp); $InBuf .= fread($this->Fp, $status["unread_bytes"]); /* if ( $this->Debug ) { for ( $i=0; $i"; } } */ return $InBuf; } private function WordToBytes( $word = 0 ) { $word = $word &0xFFFF; return array( chr(($word & 0xFF)), chr(($word >> 8) & 0xFF)); } private function BytesToWord( $lbyte = 0, $rbyte = 0 ) { return( ord($lbyte) * 256 + ord($rbyte) ); } private function WordToDouble( $lword, $rword) { return ( ($lword & 0xFFFF) << 16) + (($rword & 0xFFFF) ); } private function FloatToWord($value) { // get float binary string $float = pack("f", $value); // set 32-bit unsigned integer of the float $w = unpack("L", $float); return $w[1]; } private function WordToFloat( $lword, $rword) { // get unsigned long $ulong = pack("L", $this->WordToDouble( $lword, $rword)); // set float $float = unpack("f", $ulong); return $float[1]; } private function DoubleToSgnInt($value) { if ((0x80000000 & $value) != 0) { return -(0x7FFFFFFF & ~$value)-1; } else { return (0x7FFFFFFF & $value); } } private function WordToSgnInt($value) { if ((0x8000 & $value) != 0) { return -(0x7FFF & ~$value)-1; } else { return (0x7FFF & $value); } } // --------------------------------------------------- // ������ ���� ���������� 2Gi (XML) // --------------------------------------------------- public function PlcAllVarToXML() { $strxml = "\r\n"; foreach(array_keys($this->VarPrm) as $line) $strxml .= "<" . $line . ">" . $this->PlcVarRead( $line) . "\r\n" ; $strxml .=""; return $strxml; } // --------------------------------------------------- // ������ ���� ���������� 2Gi (������) // --------------------------------------------------- public function PlcAllVarRead() { foreach(array_keys($this->VarPrm) as $line) $tmparr[$line] = $this->PlcVarRead( $line); return $tmparr; } // --------------------------------------------------- // ������ �� ���������� 2Gi // --------------------------------------------------- public function PlcVarRead( $varname="") { return $this->ReadRegData( $this->VarPrm[$varname][1], $this->VarPrm[$varname][2], $this->VarPrm[$varname][3]); } // ----------------------------------------------- // ������ �� ���������� 2Gi // ----------------------------------------------- public function PlcVarWrite($varname="", $data=0) { return $this->WriteRegData( $this->VarPrm[$varname][1], $this->VarPrm[$varname][2], $this->VarPrm[$varname][3], $data ); } // --------------------------------------------------- // ������ ��������� // --------------------------------------------------- public function ReadRegData( $Adr=2, $Reg=2, $Type=2) { if ( $Reg < 2 ) { $Type=0; } $sbuf = array ( 0=>chr(0), chr(0), chr(0), chr(0), chr(0), 5=>chr(6), 6=>chr($this->Unit), 7=>chr(4)) ; list( $sbuf[8], $sbuf[9] ) = $this->WordToBytes( $Adr ); //��� ������� if ( $Reg == 3 ) $sbuf[7] = chr(3); if ( $Reg == 2 ) $sbuf[7] = chr(4); if ( $Reg == 1 ) $sbuf[7] = chr(1); if ( $Reg == 0 ) $sbuf[7] = chr(2); $sbuf[10] = chr(0); if ( $Type < 2 ) $sbuf[11] = chr(1); else $sbuf[11] = chr(2); $this->WriteSocket($sbuf); $rbuf = $this->ReadSocket(); if ( $rbuf[7] != $sbuf[7] ) { // ��� ������� ������ // echo "������ ������ ������ \n"; return False; } // $nbByte = ord( $rbuf[8] ); // // ��� ������� /* for ( $i=0; $i"; } echo "Reg =". $Reg." "; echo "Type =". $Type." "; */ // ����� ������� switch ( $Type) { case "0": return ord( $rbuf[9] ); break; case "1": return $this->WordToSgnInt($this->BytesToWord($rbuf[9],$rbuf[10])); break; case "2": return $this->DoubleToSgnInt($this->WordToDouble($this->BytesToWord($rbuf[11],$rbuf[12]), $this->BytesToWord($rbuf[9],$rbuf[10]))); break; case "3": return $this->WordToFloat( $this->BytesToWord($rbuf[11],$rbuf[12]), $this->BytesToWord($rbuf[9],$rbuf[10])); break; default: return False; } } // ----------------------------------------------- // ������ ��������� // ----------------------------------------------- public function WriteRegData( $Adr=2, $Reg=3, $Type=2, $WrData=0) { if ( $Reg == 1 ) { $Type=0; $CodeFunction = 5; $BQnty = 6; } else if ( $Reg == 3 ) { $CodeFunction = 16; $BQnty = 9; if ($Type > 1) {$BQnty = 11;} } else return false; $sbuf[0] = chr(0); $sbuf[1] = chr(0); $sbuf[2] = chr(0); $sbuf[3] = chr(0); list( $sbuf[5], $sbuf[4] ) = $this->WordToBytes($BQnty); //���-�� ���� $sbuf[6] = chr( $this->Unit ); $sbuf[7] = chr( $CodeFunction ); list( $sbuf[9], $sbuf[8] ) = $this->WordToBytes((int)$Adr); // ����� ������ if ( $Reg == 1 ) { if ( $WrData != 0 ) { $sbuf[10] = chr(255); } else { $sbuf[10] = chr(0); } $sbuf[11] = chr(0); } else if ($Type == 1){ $sbuf[10] = chr(0); $sbuf[11] = chr(1); $sbuf[12] = chr(2); list( $sbuf[14], $sbuf[13]) = $this->WordToBytes( $WrData); } else { // ���� ������ ��� Long !!! $sbuf[10] = chr(0); $sbuf[11] = chr(2); $sbuf[12] = chr(4); if ($Type == 3) $WrData = $this->FloatToWord($WrData); list( $sbuf[14], $sbuf[13] ) = $this->WordToBytes($WrData & 0xFFFF); list( $sbuf[16], $sbuf[15] ) = $this->WordToBytes(($WrData >>16) & 0xFFFF); } // ��� ������� /* echo "Write "; for ($i=0;$i"; } echo " "; */ // ����� $this->WriteSocket($sbuf); $rbuf = $this->ReadSocket(); if ( $rbuf[7] != $sbuf[7] ) { // ��� ������� ������ // echo "������ ������ ������ \n"; return False; } return True ; } // ----------------------------------------------- // ��������� ���������� // ----------------------------------------------- private function ParamVar() { $curr = "/projects/load_files.map"; if(!file_exists($curr)) $curr = "load_files.map"; if(file_exists($curr)) { $all = file_get_contents($curr); $ini = explode("\n", $all); $Sreg=null; $all =null; foreach($ini as $line) if(strncmp($line, "[Inst", 5) == 0) $Sreg=0; else if(strncmp($line, "[Coil", 5) == 0) $Sreg=1; else if(strncmp($line, "[Inre", 5) == 0) $Sreg=2; else if(strncmp($line, "[Hold", 5) == 0) $Sreg=3; else if(strncmp($line, "var", 3) == 0) { $curr = explode("=", $line); $num = explode(",", ",". $curr[1]); //echo $num[5] . "," . $num[1] . "," . $Sreg."," . $num[3] . " "; // ��� �������� $curr=trim($num[5]); $all[$curr][1]=$num[1]; $all[$curr] [2]=$Sreg; $all[$curr] [3]=$num[3]; } else if(strncmp($line, "Adr", 3) == 0) { $num = explode("=", $line); //����� Slave } else if(strncmp($line, "If", 2) == 0) { if(strpos($line, "=5,")) { $port = explode(":", $line); //���� MB/TCP } } } else { //echo "��� �����. ��������� �� ������."; return False; } $this->PortIpPLC = $port[1]; $this->Unit = $num[1] ; $this->VarPrm = $all; return True; } } ?> Последний раз редактировалось Alexsis, 05.09.2018 в 09:47 |
|
05.09.2018, 09:39 | #10 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Trim5 и WEB
Пожалуйста, сделайте это в нормальном виде. Используйте PastCode или хотя бы на форуме через теги кода. Ну так же невозможно читать. =(
__________________ В сегнетиксе не работаю с самого начала 2019 года. |
06.09.2018, 00:17 | #11 | |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 785
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Trim5 и WEB
Цитата:
Попробуйте вторую строку в файле Data2Gi.php Код:
require_once dirname(__FILE__) . '/class_2GiMbusTcp.php'; Код:
require("class_2GiMbusTcp.php"); Добавлено через 56 минут Обновил |
|