diff --git a/SCADA/Database/mysql.sql b/SCADA/Database/mysql.sql index cd044a7..504c9e0 100644 --- a/SCADA/Database/mysql.sql +++ b/SCADA/Database/mysql.sql @@ -1,392 +1,410 @@ -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `dictionary` ( - `DictType` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `Code` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `Description` varchar(50) COLLATE latin1_german1_ci DEFAULT '' -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `log_alarm` ( - `StartTime` datetime DEFAULT NULL, - `Source` varchar(50) COLLATE latin1_german1_ci DEFAULT '', - `ConditionID` int(11) DEFAULT '0', - `AlarmText` varchar(128) COLLATE latin1_german1_ci DEFAULT '', - `AlarmValue` text COLLATE latin1_german1_ci, - `Duration` int(11) DEFAULT '0', - `Severity` int(11) DEFAULT '0', - `SubAlarmType` int(11) DEFAULT '0' -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `log_event` ( - `EventType` int(11) DEFAULT NULL, - `Severity` int(11) DEFAULT NULL, - `IsAcked` bit(1) DEFAULT NULL, - `ActiveTime` datetime DEFAULT NULL, - `Source` varchar(50) DEFAULT NULL, - `Comment` varchar(50) DEFAULT NULL, - `SQLCounter` int(11) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`SQLCounter`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `log_hdata` ( - `ID` int(11) NOT NULL DEFAULT '0', - `TimeStamp` datetime NOT NULL, - `Value` text COLLATE latin1_german1_ci -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `membership` ( - `ID` int(11) NOT NULL AUTO_INCREMENT, - `UserName` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `Password` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `Role` int(11) NOT NULL DEFAULT '0', - `Email` varchar(50) COLLATE latin1_german1_ci DEFAULT '', - `Phone` varchar(50) COLLATE latin1_german1_ci DEFAULT '', - PRIMARY KEY (`ID`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `membership` VALUES (1,'admin','c4ca4238a0b923820dcc509a6f75849b',4,NULL,NULL),(2,'op','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL),(3,'everyone','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL); -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_condition` ( - `TypeID` int(11) NOT NULL AUTO_INCREMENT, - `Source` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `AlarmType` int(11) NOT NULL DEFAULT '0', - `EventType` tinyint(4) NOT NULL DEFAULT '0', - `ConditionType` tinyint(4) NOT NULL DEFAULT '0', - `Para` text COLLATE latin1_german1_ci, - `IsEnabled` tinyint(4) NOT NULL DEFAULT '1', - `DeadBand` text COLLATE latin1_german1_ci, - `Delay` int(11) NOT NULL DEFAULT '0', - `Comment` varchar(50) COLLATE latin1_german1_ci DEFAULT '', - PRIMARY KEY (`TypeID`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_driver` ( - `DriverID` int(11) NOT NULL DEFAULT '0', - `DriverType` int(11) NOT NULL DEFAULT '0', - `DriverName` varchar(64) COLLATE latin1_german1_ci NOT NULL DEFAULT '', - `TimeOut` int(11) NOT NULL DEFAULT '0', - `Server` varchar(128) COLLATE latin1_german1_ci DEFAULT '', - `Spare1` varchar(50) COLLATE latin1_german1_ci DEFAULT '', - `Spare2` varchar(50) COLLATE latin1_german1_ci DEFAULT '' -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `meta_driver` VALUES (1,3,'S1',1000,'127.0.0.1','{6E6170F0-FF2D-11D2-8087-00105AA8F840}','9600'),(2,5,'Modbus',1000,'127.0.0.1','','2'); -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_group` ( - `GroupID` int(11) NOT NULL DEFAULT '0', - `DriverID` int(11) DEFAULT '0', - `GroupName` varchar(20) COLLATE latin1_german1_ci DEFAULT '', - `UpdateRate` int(11) DEFAULT '0', - `DeadBand` text COLLATE latin1_german1_ci, - `IsActive` tinyint(4) NOT NULL DEFAULT '1' -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `meta_group` VALUES (20001,1,'Receiving1',300,'0',0),(20002,1,'Receiving2',0,'0',0),(20003,2,'test',1000,'0',1); -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_scale` ( - `ScaleID` int(11) NOT NULL DEFAULT '0', - `ScaleType` tinyint(4) NOT NULL DEFAULT '0', - `EUHi` text COLLATE latin1_german1_ci, - `EULo` text COLLATE latin1_german1_ci, - `RawHi` text COLLATE latin1_german1_ci, - `RawLo` text COLLATE latin1_german1_ci -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_subcondition` ( - `ConditionID` int(11) NOT NULL DEFAULT '0', - `SubAlarmType` int(11) NOT NULL DEFAULT '0', - `Threshold` text COLLATE latin1_german1_ci, - `Severity` tinyint(4) NOT NULL DEFAULT '0', - `Message` varchar(250) COLLATE latin1_german1_ci DEFAULT '', - `IsEnable` tinyint(4) NOT NULL DEFAULT '1' -) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; -/*!40101 SET character_set_client = @saved_cs_client */; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `meta_tag` ( - `TagID` smallint(5) NOT NULL AUTO_INCREMENT, - `TagName` varchar(512) NOT NULL, - `DataType` tinyint(3) unsigned NOT NULL, - `DataSize` smallint(5) NOT NULL DEFAULT '0', - `Address` varchar(64) NOT NULL, - `GroupID` smallint(5) NOT NULL DEFAULT '0', - `IsActive` bit(1) NOT NULL, - `Archive` bit(1) NOT NULL, - `DefaultValue` blob, - `Description` varchar(128) DEFAULT NULL, - `Maximum` double(24,2) NOT NULL DEFAULT '0.00', - `Minimum` double(24,2) NOT NULL DEFAULT '0.00', - `Cycle` int(10) NOT NULL DEFAULT '0', - `RowVersion` blob NOT NULL, - UNIQUE KEY `TagID` (`TagID`) -) ENGINE=InnoDB AUTO_INCREMENT=159 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `meta_tag` VALUES (2,'Receiving1_AlmAck',1,1,'Channel4.Receiving1.K0008.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0划'),(3,'Receiving1_888',1,1,'Channel4.Receiving1.K0006.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0化'),(4,'Receiving1_Conveyor3_Running',1,1,'Channel4.Receiving1.K0006.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0话'),(5,'Receiving1_Conveyor4_Alarm',1,1,'Channel4.Receiving1.K0001.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0槐'),(6,'Receiving1_Conveyor4_Running',1,1,'Channel4.Receiving1.K0001.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徊'),(7,'Receiving1_Conveyor5_Alarm',1,1,'Channel4.Receiving1.K0008.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0怀'),(8,'Receiving1_Conveyor5_Running',1,1,'Channel4.Receiving1.K0007.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0淮'),(9,'Receiving1_Conveyor6_Alarm',1,1,'Channel4.Receiving1.K0008.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0坏'),(10,'Receiving1_Conveyor6_Running',1,1,'Channel4.Receiving1.K0005.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0欢'),(11,'Receiving1_Conveyor7_Alarm',1,1,'Channel4.Receiving1.K0006.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0环'),(12,'Receiving1_Conveyor7_Running',1,1,'Channel4.Receiving1.K0006.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0桓'),(13,'Receiving1_Conveyor8_Running',1,1,'Channel4.Receiving1.K0001.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0还'),(14,'Receiving1_Conveyor9_Alarm',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0缓'),(15,'Receiving1_Conveyor9_Running',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0换'),(16,'Receiving1_DF01SQH_Alarm',1,1,'Channel4.Receiving1.K0002.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0患'),(17,'Receiving1_DF01SQL_Alarm',1,1,'Channel4.Receiving1.K0003.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0唤'),(18,'Receiving1_DF02SQH_Alarm',1,1,'Channel4.Receiving1.K0002.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0痪'),(19,'Receiving1_DF02SQL_Alarm',1,1,'Channel4.Receiving1.K0003.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豢'),(20,'Receiving1_DF03SQH_Alarm',1,1,'Channel4.Receiving1.K0002.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0焕'),(21,'Receiving1_DF03SQL_Alarm',1,1,'Channel4.Receiving1.K0003.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0涣'),(22,'Receiving1_DF04SQH_Alarm',1,1,'Channel4.Receiving1.K0002.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(23,'Receiving1_DF04SQL_Alarm',1,1,'Channel4.Receiving1.K0003.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(24,'Receiving1_DF05SQH_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(25,'Receiving1_DF05SQL_Alarm',1,1,'Channel4.Receiving1.K0003.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(26,'Receiving1_DF06SQL_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(27,'Receiving1_F01SQH_Alarm',1,1,'Channel4.Receiving1.K0007.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(28,'Receiving1_F02SQH_Alarm',1,1,'Channel4.Receiving1.K0007.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(29,'Receiving1_F03SQH_Alarm',1,1,'Channel4.Receiving1.K0007.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(30,'Receiving1_F04SQH_Alarm',1,1,'Channel4.Receiving1.K0007.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(31,'Receiving1_F05SQH_Alarm',1,1,'Channel4.Receiving1.K0007.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(32,'Receiving1_F06SQH_Alarm',1,1,'Channel4.Receiving1.K0007.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(33,'Receiving1_Fan1_Alarm',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(34,'Receiving1_Fan1_Running',1,1,'Channel4.Receiving1.K0008.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(35,'Receiving1_Fan2_Running',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(36,'Receiving1_Fan3_Running',1,1,'Channel4.Receiving1.K0001.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(37,'Receiving1_FourWays_Left',1,1,'Channel4.Receiving1.K0006.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(38,'Receiving1_FourWays_MID',1,1,'Channel4.Receiving1.K0006.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(39,'Receiving1_FourWays_Right',1,1,'Channel4.Receiving1.K0006.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(40,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(41,'Receiving1_Gate10_Alarm',1,1,'Channel4.Receiving1.K0003.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(42,'Receiving1_Gate10_Cls',1,1,'Channel4.Receiving1.K0004.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(43,'Receiving1_Gate10_Ols',1,1,'Channel4.Receiving1.K0004.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(44,'Receiving1_Gate11_Alarm',1,1,'Channel4.Receiving1.K0005.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(45,'Receiving1_Gate11_Cls',1,1,'Channel4.Receiving1.K0001.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(46,'Receiving1_Gate11_Ols',1,1,'Channel4.Receiving1.K0005.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(47,'Receiving1_Gate12_Alarm',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(48,'Receiving1_Gate12_Cls',1,1,'Channel4.Receiving1.K0001.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(49,'Receiving1_Gate12_Ols',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(50,'Receiving1_Gate13_Alarm',1,1,'Channel4.Receiving1.K0005.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(51,'Receiving1_Gate13_Cls',1,1,'Channel4.Receiving1.K0001.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(52,'Receiving1_Gate13_Ols',1,1,'Channel4.Receiving1.K0005.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(53,'Receiving1_Gate14_Alarm',1,1,'Channel4.Receiving1.K0005.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(54,'Receiving1_Gate14_Cls',1,1,'Channel4.Receiving1.K0000.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(55,'Receiving1_Gate14_Ols',1,1,'Channel4.Receiving1.K0005.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(56,'Receiving1_Gate15_Alarm',1,1,'Channel4.Receiving1.K0005.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(57,'Receiving1_Gate15_Cls',1,1,'Channel4.Receiving1.K0000.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(58,'Receiving1_Gate15_Ols',1,1,'Channel4.Receiving1.K0005.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(59,'Receiving1_Gate16_Ols',1,1,'Channel4.Receiving1.K0000.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(60,'Receiving1_Gate17_Ols',1,1,'Channel4.Receiving1.K0000.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(61,'Receiving1_Gate18_Ols',1,1,'Channel4.Receiving1.K0000.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(62,'Receiving1_Gate19_Ols',1,1,'Channel4.Receiving1.K0000.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(63,'Receiving1_Gate20_Ols',1,1,'Channel4.Receiving1.K0000.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(64,'Receiving1_Gate21_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(65,'Receiving1_Gate3_Alarm',1,1,'Channel4.Receiving1.K0005.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(66,'Receiving1_Gate3_Cls',1,1,'Channel4.Receiving1.K0000.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(67,'Receiving1_Gate3_Ols',1,1,'Channel4.Receiving1.K0005.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0籠'),(68,'Receiving1_Gate4_Alarm',1,1,'Channel4.Receiving1.K0005.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0火'),(69,'Receiving1_Gate4_Cls',1,1,'Channel4.Receiving1.K0000.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0获'),(70,'Receiving1_Gate4_Ols',1,1,'Channel4.Receiving1.K0005.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0或'),(71,'Receiving1_Gate5_Alarm',1,1,'Channel4.Receiving1.K0003.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惑'),(72,'Receiving1_Gate5_Cls',1,1,'Channel4.Receiving1.K0004.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0霍'),(73,'Receiving1_Gate5_Ols',1,1,'Channel4.Receiving1.K0000.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0货'),(74,'Receiving1_Gate6_Alarm',1,1,'Channel4.Receiving1.K0003.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0祸'),(75,'Receiving1_Gate6_Cls',1,1,'Channel4.Receiving1.K0004.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0击'),(76,'Receiving1_Gate6_Ols',1,1,'Channel4.Receiving1.K0000.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0圾'),(77,'Receiving1_Gate7_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0基'),(78,'Receiving1_Gate7_Cls',1,1,'Channel4.Receiving1.K0004.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0机'),(79,'Receiving1_Gate7_Ols',1,1,'Channel4.Receiving1.K0000.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0畸'),(80,'Receiving1_Gate8_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0稽'),(81,'Receiving1_Gate8_Cls',1,1,'Channel4.Receiving1.K0004.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0积'),(82,'Receiving1_Gate8_Ols',1,1,'Channel4.Receiving1.K0000.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0箕'),(83,'Receiving1_Gate9_Alarm',1,1,'Channel4.Receiving1.K0003.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(84,'Receiving1_Gate9_Cls',1,1,'Channel4.Receiving1.K0004.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(85,'Receiving1_Gate9_Ols',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(86,'Receiving1_Gate9_Ols4',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(87,'Receiving1_Gate9_Ols5',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(88,'Receiving1_Gate9_Ols6',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(89,'Receiving1_Gate9_Ols7',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(90,'Receiving1_Gate9_Ols8',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(91,'Receiving1_Gate9_Ols9',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(92,'Receiving1_leg1alm',1,1,'Channel4.Receiving1.K0010.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(93,'Receiving1_LegMotor1_Overload',8,4,'Channel4.Receiving1.R0016',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪n'),(94,'Receiving1_LegMotor1_Running',1,1,'Channel4.Receiving1.K0006.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(95,'Receiving1_LegMotor2_Overload',8,4,'Channel4.Receiving1.R0024',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(96,'Receiving1_LegMotor2_Running',1,1,'Channel4.Receiving1.K0005.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪r'),(97,'Receiving1_Legmotor2Speed_Speed',8,4,'Channel4.Receiving1.R0028',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(98,'Receiving1_LegMotor3_Overload',8,4,'Channel4.Receiving1.R0044',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(99,'Receiving1_LegMotor3_Running',1,1,'Channel4.Receiving1.K0006.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(100,'Receiving1_Legmotor3Curr_Digi',8,4,'Channel4.Receiving1.R0036',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(101,'Receiving1_Legmotor3Speed_Speed',8,4,'Channel4.Receiving1.R0048',20001,'','',NULL,'鎻愬崌鏈烘祴閫',0.00,0.00,0,'\0\0\0\0\0'),(102,'Receiving1_LegMotor4_Overload',8,4,'Channel4.Receiving1.R0004',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(103,'Receiving1_LegMotor4_Running',1,1,'Channel4.Receiving1.K0001.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(104,'Receiving1_Legmotor4Curr_Digi',8,4,'Channel4.Receiving1.R0000',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(105,'Receiving1_LocalRemote',1,1,'Channel4.Receiving1.K0008.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(106,'Receiving1_MagicRoll1_Alarm',1,1,'Channel4.Receiving1.K0007.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(107,'Receiving1_MagicRoll1_Running',1,1,'Channel4.Receiving1.K0006.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(108,'Receiving1_MagicRoll2_Alarm',1,1,'Channel4.Receiving1.K0007.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(109,'Receiving1_MagicRoll2_Running',1,1,'Channel4.Receiving1.K0006.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪Z'),(110,'Receiving1_MagicRoll3_Alarm',1,1,'Channel4.Receiving1.K0007.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(111,'Receiving1_MagicRoll3_Running',1,1,'Channel4.Receiving1.K0006.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(112,'Receiving1_MagicRoll4_Alarm',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(113,'Receiving1_MagicRoll4_Running',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(114,'Receiving1_Sifter1_Running',1,1,'Channel4.Receiving1.K0006.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(115,'Receiving1_Sifter2_Running',1,1,'Channel4.Receiving1.K0006.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(116,'Receiving1_Sifter3_Alarm',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0!'),(117,'Receiving1_Sifter3_Running',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪"'),(118,'Receiving1_ThreeWays1_Left',1,1,'Channel4.Receiving1.K0001.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0#'),(119,'Receiving1_ThreeWays1_Right',1,1,'Channel4.Receiving1.K0001.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0$'),(120,'Receiving1_ThreeWays2_Left',1,1,'Channel4.Receiving1.K0006.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0%'),(121,'Receiving1_ThreeWays2_Right',1,1,'Channel4.Receiving1.K0006.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0&'),(122,'Receiving2_LegCUR102_Digi',8,4,'Channel4.Receiving1.R0020',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪''),(123,'Receiving2_LegCUR106_Digi',8,4,'Channel4.Receiving1.R0012',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0('),(124,'Receiving1_Conveyor1_Alarm',1,1,'Channel4.Receiving2.K0002.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0)'),(125,'Receiving1_Conveyor1_Running',1,1,'Channel4.Receiving2.K0002.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0*'),(126,'Receiving1_Conveyor2_Alarm',1,1,'Channel4.Receiving2.K0002.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0+'),(127,'Receiving1_Conveyor2_Running',1,1,'Channel4.Receiving2.K0002.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0,'),(128,'Receiving1_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0-'),(129,'Receiving1_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0.'),(130,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0/'),(131,'Receiving1_Gate2_Alarm',1,1,'Channel4.Receiving2.K0001.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\00'),(132,'Receiving1_Gate2_Cls',1,1,'Channel4.Receiving2.K0001.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\01'),(133,'Receiving1_Gate2_Ols',1,1,'Channel4.Receiving2.K0001.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\02'),(134,'Receiving2_Airport1_Alarm',1,1,'Channel4.Receiving2.K0002.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\03'),(135,'Receiving2_Airport1_Running',1,1,'Channel4.Receiving2.K0001.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\04'),(136,'Receiving2_Airport2_Alarm',1,1,'Channel4.Receiving2.K0001.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\05'),(137,'Receiving2_Airport2_Running',1,1,'Channel4.Receiving2.K0001.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\06'),(138,'Receiving2_AlmAck',1,1,'Channel4.Receiving2.K0002.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\07'),(139,'Receiving2_Converyor1_Running',1,1,'Channel4.Receiving2.K0001.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\08'),(140,'Receiving2_Converyor2_Alarm',1,1,'Channel4.Receiving2.K0002.12',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\09'),(141,'Receiving2_Converyor2_Running',1,1,'Channel4.Receiving2.K0002.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0:'),(142,'Receiving2_Fan1_Alarm',1,1,'Channel4.Receiving2.K0001.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0;'),(143,'Receiving2_Fan1_Running',1,1,'Channel4.Receiving2.K0001.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0<'),(144,'Receiving2_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0='),(145,'Receiving2_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.06',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0>'),(146,'Receiving2_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0?'),(147,'Receiving2_Gate2_Ols',1,1,'Channel4.Receiving2.K0002.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0粿'),(148,'Receiving2_LegMotor1_Overload',8,4,'Channel4.Receiving2.R0008',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糀'),(149,'Receiving2_Legmotor1Speed_Speed',8,4,'Channel4.Receiving2.R0012',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糂'),(150,'Receiving2_LegMotor2_Overload',8,4,'Channel4.Receiving2.R0000',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糃'),(151,'Receiving2_LegMotor2_Running',1,1,'Channel4.Receiving2.K0002.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糄'),(152,'Receiving2_Legmotor2Speed_Speed',8,4,'Channel4.Receiving2.R0004',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糆'),(153,'Receiving2_LocalRemote',1,1,'Channel4.Receiving2.K0002.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糉'),(154,'Receiving2_MagicRoll1_Alarm',1,1,'Channel4.Receiving2.K0002.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糋'),(155,'Receiving2_MagicRoll1_Running',1,1,'Channel4.Receiving2.K0002.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糎'),(156,'Receiving2_Sifter1_Alarm',1,1,'Channel4.Receiving2.K0002.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糏'),(157,'Receiving2_Sifter1_Running',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糐'),(158,'Receiving2_Sifter1_Running8',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糑'); -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `registermodule` ( - `DriverID` int(10) NOT NULL AUTO_INCREMENT, - `AssemblyName` varchar(255) DEFAULT NULL, - `ClassName` varchar(50) DEFAULT NULL, - `ClassFullName` varchar(128) DEFAULT NULL, - `Description` varchar(50) DEFAULT NULL, - UNIQUE KEY `DriverID` (`DriverID`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; -/*!40101 SET character_set_client = @saved_cs_client */; -INSERT INTO `registermodule` VALUES (4,'E:\\SCADA\\dll\\OPCDriver.dll','OPCReader','OPCDriver.OPCReader','OPC鍗忚'),(5,'E:\\SCADA\\dll\\FileDriver.dll','DataBaseReader','FileDriver.DataBaseReader','SQL 鏁版嵁搴'),(6,'E:\\SCADA\\dll\\FileDriver.dll','TagDriver','FileDriver.TagDriver','鏍囩鐩存帴璇诲啓'),(8,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusRTUReader','ModbusDriver.ModbusRTUReader','Modbus RTU鍗忚'),(9,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusTCPReader','ModbusDriver.ModbusTCPReader','Modbus Tcp鍗忚'),(10,'E:\\SCADA\\dll\\SiemensPLCDriver.dll','SiemensTCPReader','SiemensPLCDriver.SiemensTCPReader','S7 浠ュお缃戝崗璁'); -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `AddEventLog`(IN pStartTime DATETIME, - IN pSource NVARCHAR(50) , - IN pComment NVARCHAR(50)) -BEGIN -IF pComment<>IFNULL((SELECT Comment FROM LOG_EVENT WHERE EVENTTYPE=2 AND Source=Source ORDER BY SQLCOUNTER DESC LIMIT 1),'') THEN - INSERT INTO LOG_EVENT(EVENTTYPE,SEVERITY,ACTIVETIME,SOURCE,COMMENT) VALUES(2,0,pStartTime,pSource,pComment); -END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAlarm`(IN pStartTime DATETIME, - IN pEndTime DATETIME ) -BEGIN -SELECT StartTime,AlarmText,AlarmValue,SubAlarmType,Severity,ConditionID,Source,Duration FROM LOG_ALARM WHERE StartTime BETWEEN pStartTime AND pEndTime ORDER BY StartTime; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEventTime`(IN pEVENTTYPE int, - IN pSOURCE nvarchar(50), - IN pCOMMENT nvarchar(50), - OUT pSTARTTIME DATETIME, - OUT pENDTIME DATETIME) -BEGIN -DECLARE _ID INT DEFAULT 0; - -SELECT SQLCOUNTER,ACTIVETIME INTO _ID,pSTARTTIME FROM LOG_EVENT WHERE EVENTTYPE=pEVENTTYPE AND SOURCE=pSOURCE AND COMMENT=pCOMMENT ORDER BY ACTIVETIME DESC LIMIT 1; - -SET @sql = CONCAT('SELECT ACTIVETIME INTO ', pENDTIME, ' FROM LOG_EVENT WHERE EVENTTYPE = "', - pEVENTTYPE, '" AND SOURCE = "', pSOURCE, '" AND SQLCOUNTER> ',_ID,' ORDER BY ACTIVETIME DESC LIMIT 1'); - PREPARE stmt FROM @sql; - EXECUTE stmt; - DEALLOCATE PREPARE stmt; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `InitServer`(IN pTYPE int) -BEGIN - - IF pTYPE<>1 THEN - SELECT M.DRIVERID,DRIVERNAME,SERVER,TIMEOUT,R.AssemblyName,R.ClassFullName,Spare1,Spare2 FROM META_DRIVER M INNER JOIN RegisterModule R ON M.DRIVERTYPE=R.DriverID; - END IF; - - SELECT COUNT(*) FROM META_TAG; - - SELECT TAGID,GROUPID,RTRIM(TAGNAME),ADDRESS,DATATYPE,DATASIZE,ARCHIVE,MAXIMUM,MINIMUM,CYCLE FROM META_TAG WHERE ISACTIVE=1; - - IF pTYPE<>1 THEN - SELECT DRIVERID,GROUPNAME,GROUPID,UPDATERATE,DEADBAND,ISACTIVE FROM META_GROUP ; - END IF; - - IF pTYPE=0 THEN - SELECT SOURCE FROM META_Condition WHERE EVENTTYPE=2; - END IF; - - IF pTYPE<>2 THEN - SELECT TYPEID,SOURCE,ALARMTYPE,A.ISENABLED,CONDITIONTYPE,PARA,IFNULL(COMMENT,''),DEADBAND,DELAY,SUBALARMTYPE,Threshold,SEVERITY, - IFNULL(MESSAGE,''),B.ISENABLE FROM META_Condition a LEFT OUTER JOIN META_SUBCONDITION b ON a.TypeID=b.ConditionID WHERE EVENTTYPE<>2; - END IF; - - -- LEFT OUTER JOIN META_TAG c ON a.SOURCEID=c.TAGID - SELECT SCALEID,SCALETYPE,EUHI,EULO,RAWHI,RAWLO FROM META_SCALE; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadALL`(IN pGroupID SMALLINT) -BEGIN - -SELECT COUNT(*) FROM META_TAG WHERE GROUPID=pGroupID AND IsActive=1; -SELECT TAGID,DATATYPE,IFNULL(DEFAULTVALUE,0) FROM META_TAG WHERE IsActive=1 AND GROUPID=pGroupID ORDER BY TAGID; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadHData`(IN pStartTime DATETIME, - IN pEndTime DATETIME, - IN pID INT) -BEGIN - - IF pID IS NULL THEN - SELECT ID,TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY ID,TIMESTAMP; - ELSE - SELECT TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE ID=pID AND TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY TIMESTAMP; - -- select ID,TIMESTAMP,VALUE from HDADATA WHERE TIMESTAMP BETWEEN @StartTime AND @EndTime order by TIMESTAMP - END IF; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadValueByID`(IN pID SMALLINT, - IN pDATATYPE TinyInt) -BEGIN - - -- 寰呭畬鍠 --- IF @DATATYPE=1 --- SELECT CAST(DEFAULTVALUE AS BIT) FROM META_TAG WHERE TAGID=@ID --- ELSE IF @DATATYPE=3 --- SELECT CAST(DEFAULTVALUE AS TINYINT) FROM META_TAG WHERE TAGID=@ID --- ELSE IF @DATATYPE=4 --- SELECT CAST(DEFAULTVALUE AS SMALLINT) FROM META_TAG WHERE TAGID=@ID --- ELSE IF @DATATYPE=7 --- SELECT CAST(DEFAULTVALUE AS INT) FROM META_TAG WHERE TAGID=@ID --- ELSE IF @DATATYPE=8 --- SELECT CAST(DEFAULTVALUE AS REAL) FROM META_TAG WHERE TAGID=@ID --- ELSE IF @DATATYPE=11 --- SELECT CAST(DEFAULTVALUE AS VARCHAR) FROM META_TAG WHERE TAGID=@ID - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateValueByID`(IN pID SMALLINT, - IN pValue varchar(50)) -BEGIN - - UPDATE META_TAG SET DEFAULTVALUE=pValue WHERE TAGID=pID; - -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; -/*!50003 SET @saved_cs_client = @@character_set_client */ ; -/*!50003 SET @saved_cs_results = @@character_set_results */ ; -/*!50003 SET @saved_col_connection = @@collation_connection */ ; -/*!50003 SET character_set_client = utf8 */ ; -/*!50003 SET character_set_results = utf8 */ ; -/*!50003 SET collation_connection = utf8_general_ci */ ; -/*!50003 SET @saved_sql_mode = @@sql_mode */ ; -/*!50003 SET sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ; -DELIMITER ;; -CREATE DEFINER=`root`@`localhost` PROCEDURE `WriteHData`(IN pDATE DATETIME) -BEGIN - - -- DELETE FROM LOG_HDATA FROM LOG_HDATA L INNER JOIN META_TAG T ON T.TAGID=L.ID WHERE T.DATATYPE=11 - -- SELECT COUNT(*),COUNT(DISTINCT ID) FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0; - -- SELECT H.ID,T.DATATYPE,C FROM( SELECT ID,COUNT(*)C FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 GROUP BY ID)H INNER JOIN META_TAG T ON H.ID=T.TAGID ORDER BY ID --WITH ROLLUP - -- SELECT TIMESTAMP,VALUE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 ORDER BY ID,TIMESTAMP - - -- DELETE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0; -END ;; -DELIMITER ; -/*!50003 SET sql_mode = @saved_sql_mode */ ; -/*!50003 SET character_set_client = @saved_cs_client */ ; -/*!50003 SET character_set_results = @saved_cs_results */ ; -/*!50003 SET collation_connection = @saved_col_connection */ ; +/* +SQLyog Enterprise Trial - MySQL GUI v7.11 +MySQL - 5.7.20-log : Database - scada +********************************************************************* +*/ + +/*!40101 SET NAMES utf8 */; + +/*!40101 SET SQL_MODE=''*/; + +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +CREATE DATABASE /*!32312 IF NOT EXISTS*/`scada` /*!40100 DEFAULT CHARACTER SET utf8 */; + +USE `scada`; + +/*Table structure for table `dictionary` */ + +DROP TABLE IF EXISTS `dictionary`; + +CREATE TABLE `dictionary` ( + `DictType` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `Code` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `Description` varchar(50) COLLATE latin1_german1_ci DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `dictionary` */ + +/*Table structure for table `log_alarm` */ + +DROP TABLE IF EXISTS `log_alarm`; + +CREATE TABLE `log_alarm` ( + `StartTime` datetime DEFAULT NULL, + `Source` varchar(50) COLLATE latin1_german1_ci DEFAULT '', + `ConditionID` int(11) DEFAULT '0', + `AlarmText` varchar(128) COLLATE latin1_german1_ci DEFAULT '', + `AlarmValue` text COLLATE latin1_german1_ci, + `Duration` int(11) DEFAULT '0', + `Severity` int(11) DEFAULT '0', + `SubAlarmType` int(11) DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `log_alarm` */ + +/*Table structure for table `log_event` */ + +DROP TABLE IF EXISTS `log_event`; + +CREATE TABLE `log_event` ( + `EventType` int(11) DEFAULT NULL, + `Severity` int(11) DEFAULT NULL, + `IsAcked` bit(1) DEFAULT NULL, + `ActiveTime` datetime DEFAULT NULL, + `Source` varchar(50) DEFAULT NULL, + `Comment` varchar(50) DEFAULT NULL, + `SQLCounter` int(11) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`SQLCounter`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +/*Data for the table `log_event` */ + +/*Table structure for table `log_hdata` */ + +DROP TABLE IF EXISTS `log_hdata`; + +CREATE TABLE `log_hdata` ( + `ID` int(11) NOT NULL DEFAULT '0', + `TimeStamp` datetime NOT NULL, + `Value` text COLLATE latin1_german1_ci +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `log_hdata` */ + +/*Table structure for table `membership` */ + +DROP TABLE IF EXISTS `membership`; + +CREATE TABLE `membership` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `UserName` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `Password` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `Role` int(11) NOT NULL DEFAULT '0', + `Email` varchar(50) COLLATE latin1_german1_ci DEFAULT '', + `Phone` varchar(50) COLLATE latin1_german1_ci DEFAULT '', + PRIMARY KEY (`ID`) +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `membership` */ + +insert into `membership`(`ID`,`UserName`,`Password`,`Role`,`Email`,`Phone`) values (1,'admin','c4ca4238a0b923820dcc509a6f75849b',4,NULL,NULL),(2,'op','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL),(3,'everyone','c4ca4238a0b923820dcc509a6f75849b',1,NULL,NULL); + +/*Table structure for table `meta_condition` */ + +DROP TABLE IF EXISTS `meta_condition`; + +CREATE TABLE `meta_condition` ( + `TypeID` int(11) NOT NULL AUTO_INCREMENT, + `Source` varchar(50) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `AlarmType` int(11) NOT NULL DEFAULT '0', + `EventType` tinyint(4) NOT NULL DEFAULT '0', + `ConditionType` tinyint(4) NOT NULL DEFAULT '0', + `Para` text COLLATE latin1_german1_ci, + `IsEnabled` tinyint(4) NOT NULL DEFAULT '1', + `DeadBand` text COLLATE latin1_german1_ci, + `Delay` int(11) NOT NULL DEFAULT '0', + `Comment` varchar(50) COLLATE latin1_german1_ci DEFAULT '', + PRIMARY KEY (`TypeID`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `meta_condition` */ + +/*Table structure for table `meta_driver` */ + +DROP TABLE IF EXISTS `meta_driver`; + +CREATE TABLE `meta_driver` ( + `DriverID` int(11) NOT NULL DEFAULT '0', + `DriverType` int(11) NOT NULL DEFAULT '0', + `DriverName` varchar(64) COLLATE latin1_german1_ci NOT NULL DEFAULT '', + `TimeOut` int(11) NOT NULL DEFAULT '0', + `Server` varchar(128) COLLATE latin1_german1_ci DEFAULT '', + `Spare1` varchar(50) COLLATE latin1_german1_ci DEFAULT '', + `Spare2` varchar(50) COLLATE latin1_german1_ci DEFAULT '' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `meta_driver` */ + +insert into `meta_driver`(`DriverID`,`DriverType`,`DriverName`,`TimeOut`,`Server`,`Spare1`,`Spare2`) values (1,3,'S1',1000,'127.0.0.1','{6E6170F0-FF2D-11D2-8087-00105AA8F840}','9600'),(2,5,'Modbus',1000,'127.0.0.1','','2'); + +/*Table structure for table `meta_group` */ + +DROP TABLE IF EXISTS `meta_group`; + +CREATE TABLE `meta_group` ( + `GroupID` int(11) NOT NULL DEFAULT '0', + `DriverID` int(11) DEFAULT '0', + `GroupName` varchar(20) COLLATE latin1_german1_ci DEFAULT '', + `UpdateRate` int(11) DEFAULT '0', + `DeadBand` text COLLATE latin1_german1_ci, + `IsActive` tinyint(4) NOT NULL DEFAULT '1' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `meta_group` */ + +insert into `meta_group`(`GroupID`,`DriverID`,`GroupName`,`UpdateRate`,`DeadBand`,`IsActive`) values (20001,1,'Receiving1',300,'0',0),(20002,1,'Receiving2',0,'0',0),(20003,2,'test',1000,'0',1); + +/*Table structure for table `meta_scale` */ + +DROP TABLE IF EXISTS `meta_scale`; + +CREATE TABLE `meta_scale` ( + `ScaleID` int(11) NOT NULL DEFAULT '0', + `ScaleType` tinyint(4) NOT NULL DEFAULT '0', + `EUHi` text COLLATE latin1_german1_ci, + `EULo` text COLLATE latin1_german1_ci, + `RawHi` text COLLATE latin1_german1_ci, + `RawLo` text COLLATE latin1_german1_ci +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `meta_scale` */ + +/*Table structure for table `meta_subcondition` */ + +DROP TABLE IF EXISTS `meta_subcondition`; + +CREATE TABLE `meta_subcondition` ( + `ConditionID` int(11) NOT NULL DEFAULT '0', + `SubAlarmType` int(11) NOT NULL DEFAULT '0', + `Threshold` text COLLATE latin1_german1_ci, + `Severity` tinyint(4) NOT NULL DEFAULT '0', + `Message` varchar(250) COLLATE latin1_german1_ci DEFAULT '', + `IsEnable` tinyint(4) NOT NULL DEFAULT '1' +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; + +/*Data for the table `meta_subcondition` */ + +/*Table structure for table `meta_tag` */ + +DROP TABLE IF EXISTS `meta_tag`; + +CREATE TABLE `meta_tag` ( + `TagID` smallint(5) NOT NULL AUTO_INCREMENT, + `TagName` varchar(512) NOT NULL, + `DataType` tinyint(3) unsigned NOT NULL, + `DataSize` smallint(5) NOT NULL DEFAULT '0', + `Address` varchar(64) NOT NULL, + `GroupID` smallint(5) NOT NULL DEFAULT '0', + `IsActive` bit(1) NOT NULL, + `Archive` bit(1) NOT NULL, + `DefaultValue` blob, + `Description` varchar(128) DEFAULT NULL, + `Maximum` float(24,2) NOT NULL DEFAULT '0.00', + `Minimum` float(24,2) NOT NULL DEFAULT '0.00', + `Cycle` int(10) NOT NULL DEFAULT '0', + `RowVersion` blob NOT NULL, + UNIQUE KEY `TagID` (`TagID`) +) ENGINE=InnoDB AUTO_INCREMENT=159 DEFAULT CHARSET=utf8; + +/*Data for the table `meta_tag` */ + +insert into `meta_tag`(`TagID`,`TagName`,`DataType`,`DataSize`,`Address`,`GroupID`,`IsActive`,`Archive`,`DefaultValue`,`Description`,`Maximum`,`Minimum`,`Cycle`,`RowVersion`) values (2,'Receiving1_AlmAck',1,1,'Channel4.Receiving1.K0008.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0划'),(3,'Receiving1_888',1,1,'Channel4.Receiving1.K0006.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0化'),(4,'Receiving1_Conveyor3_Running',1,1,'Channel4.Receiving1.K0006.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0话'),(5,'Receiving1_Conveyor4_Alarm',1,1,'Channel4.Receiving1.K0001.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0槐'),(6,'Receiving1_Conveyor4_Running',1,1,'Channel4.Receiving1.K0001.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徊'),(7,'Receiving1_Conveyor5_Alarm',1,1,'Channel4.Receiving1.K0008.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0怀'),(8,'Receiving1_Conveyor5_Running',1,1,'Channel4.Receiving1.K0007.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0淮'),(9,'Receiving1_Conveyor6_Alarm',1,1,'Channel4.Receiving1.K0008.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0坏'),(10,'Receiving1_Conveyor6_Running',1,1,'Channel4.Receiving1.K0005.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0欢'),(11,'Receiving1_Conveyor7_Alarm',1,1,'Channel4.Receiving1.K0006.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0环'),(12,'Receiving1_Conveyor7_Running',1,1,'Channel4.Receiving1.K0006.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0桓'),(13,'Receiving1_Conveyor8_Running',1,1,'Channel4.Receiving1.K0001.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0还'),(14,'Receiving1_Conveyor9_Alarm',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0缓'),(15,'Receiving1_Conveyor9_Running',1,1,'Channel4.Receiving1.K0001.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0换'),(16,'Receiving1_DF01SQH_Alarm',1,1,'Channel4.Receiving1.K0002.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0患'),(17,'Receiving1_DF01SQL_Alarm',1,1,'Channel4.Receiving1.K0003.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0唤'),(18,'Receiving1_DF02SQH_Alarm',1,1,'Channel4.Receiving1.K0002.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0痪'),(19,'Receiving1_DF02SQL_Alarm',1,1,'Channel4.Receiving1.K0003.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豢'),(20,'Receiving1_DF03SQH_Alarm',1,1,'Channel4.Receiving1.K0002.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0焕'),(21,'Receiving1_DF03SQL_Alarm',1,1,'Channel4.Receiving1.K0003.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0涣'),(22,'Receiving1_DF04SQH_Alarm',1,1,'Channel4.Receiving1.K0002.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0宦'),(23,'Receiving1_DF04SQL_Alarm',1,1,'Channel4.Receiving1.K0003.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0幻'),(24,'Receiving1_DF05SQH_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0荒'),(25,'Receiving1_DF05SQL_Alarm',1,1,'Channel4.Receiving1.K0003.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0慌'),(26,'Receiving1_DF06SQL_Alarm',1,1,'Channel4.Receiving1.K0002.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0黄'),(27,'Receiving1_F01SQH_Alarm',1,1,'Channel4.Receiving1.K0007.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0磺'),(28,'Receiving1_F02SQH_Alarm',1,1,'Channel4.Receiving1.K0007.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0蝗'),(29,'Receiving1_F03SQH_Alarm',1,1,'Channel4.Receiving1.K0007.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0簧'),(30,'Receiving1_F04SQH_Alarm',1,1,'Channel4.Receiving1.K0007.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0皇'),(31,'Receiving1_F05SQH_Alarm',1,1,'Channel4.Receiving1.K0007.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0凰'),(32,'Receiving1_F06SQH_Alarm',1,1,'Channel4.Receiving1.K0007.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惶'),(33,'Receiving1_Fan1_Alarm',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0煌'),(34,'Receiving1_Fan1_Running',1,1,'Channel4.Receiving1.K0008.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0晃'),(35,'Receiving1_Fan2_Running',1,1,'Channel4.Receiving1.K0008.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0幌'),(36,'Receiving1_Fan3_Running',1,1,'Channel4.Receiving1.K0001.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0恍'),(37,'Receiving1_FourWays_Left',1,1,'Channel4.Receiving1.K0006.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0谎'),(38,'Receiving1_FourWays_MID',1,1,'Channel4.Receiving1.K0006.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0灰'),(39,'Receiving1_FourWays_Right',1,1,'Channel4.Receiving1.K0006.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0挥'),(40,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0辉'),(41,'Receiving1_Gate10_Alarm',1,1,'Channel4.Receiving1.K0003.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0徽'),(42,'Receiving1_Gate10_Cls',1,1,'Channel4.Receiving1.K0004.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0恢'),(43,'Receiving1_Gate10_Ols',1,1,'Channel4.Receiving1.K0004.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0蛔'),(44,'Receiving1_Gate11_Alarm',1,1,'Channel4.Receiving1.K0005.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0回'),(45,'Receiving1_Gate11_Cls',1,1,'Channel4.Receiving1.K0001.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0毁'),(46,'Receiving1_Gate11_Ols',1,1,'Channel4.Receiving1.K0005.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0悔'),(47,'Receiving1_Gate12_Alarm',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0慧'),(48,'Receiving1_Gate12_Cls',1,1,'Channel4.Receiving1.K0001.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0卉'),(49,'Receiving1_Gate12_Ols',1,1,'Channel4.Receiving1.K0005.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惠'),(50,'Receiving1_Gate13_Alarm',1,1,'Channel4.Receiving1.K0005.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0晦'),(51,'Receiving1_Gate13_Cls',1,1,'Channel4.Receiving1.K0001.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0贿'),(52,'Receiving1_Gate13_Ols',1,1,'Channel4.Receiving1.K0005.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0秽'),(53,'Receiving1_Gate14_Alarm',1,1,'Channel4.Receiving1.K0005.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0会'),(54,'Receiving1_Gate14_Cls',1,1,'Channel4.Receiving1.K0000.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0烩'),(55,'Receiving1_Gate14_Ols',1,1,'Channel4.Receiving1.K0005.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0汇'),(56,'Receiving1_Gate15_Alarm',1,1,'Channel4.Receiving1.K0005.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0讳'),(57,'Receiving1_Gate15_Cls',1,1,'Channel4.Receiving1.K0000.14',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0诲'),(58,'Receiving1_Gate15_Ols',1,1,'Channel4.Receiving1.K0005.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0绘'),(59,'Receiving1_Gate16_Ols',1,1,'Channel4.Receiving1.K0000.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0荤'),(60,'Receiving1_Gate17_Ols',1,1,'Channel4.Receiving1.K0000.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0昏'),(61,'Receiving1_Gate18_Ols',1,1,'Channel4.Receiving1.K0000.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0婚'),(62,'Receiving1_Gate19_Ols',1,1,'Channel4.Receiving1.K0000.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0魂'),(63,'Receiving1_Gate20_Ols',1,1,'Channel4.Receiving1.K0000.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0浑'),(64,'Receiving1_Gate21_Ols',1,1,'Channel4.Receiving1.K0000.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0混'),(65,'Receiving1_Gate3_Alarm',1,1,'Channel4.Receiving1.K0005.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0豁'),(66,'Receiving1_Gate3_Cls',1,1,'Channel4.Receiving1.K0000.12',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0活'),(67,'Receiving1_Gate3_Ols',1,1,'Channel4.Receiving1.K0005.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0伙'),(68,'Receiving1_Gate4_Alarm',1,1,'Channel4.Receiving1.K0005.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0火'),(69,'Receiving1_Gate4_Cls',1,1,'Channel4.Receiving1.K0000.13',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0获'),(70,'Receiving1_Gate4_Ols',1,1,'Channel4.Receiving1.K0005.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0或'),(71,'Receiving1_Gate5_Alarm',1,1,'Channel4.Receiving1.K0003.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0惑'),(72,'Receiving1_Gate5_Cls',1,1,'Channel4.Receiving1.K0004.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0霍'),(73,'Receiving1_Gate5_Ols',1,1,'Channel4.Receiving1.K0000.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0货'),(74,'Receiving1_Gate6_Alarm',1,1,'Channel4.Receiving1.K0003.08',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0祸'),(75,'Receiving1_Gate6_Cls',1,1,'Channel4.Receiving1.K0004.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0击'),(76,'Receiving1_Gate6_Ols',1,1,'Channel4.Receiving1.K0000.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0圾'),(77,'Receiving1_Gate7_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0基'),(78,'Receiving1_Gate7_Cls',1,1,'Channel4.Receiving1.K0004.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0机'),(79,'Receiving1_Gate7_Ols',1,1,'Channel4.Receiving1.K0000.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0畸'),(80,'Receiving1_Gate8_Alarm',1,1,'Channel4.Receiving1.K0003.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0稽'),(81,'Receiving1_Gate8_Cls',1,1,'Channel4.Receiving1.K0004.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0积'),(82,'Receiving1_Gate8_Ols',1,1,'Channel4.Receiving1.K0000.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0箕'),(83,'Receiving1_Gate9_Alarm',1,1,'Channel4.Receiving1.K0003.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(84,'Receiving1_Gate9_Cls',1,1,'Channel4.Receiving1.K0004.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(85,'Receiving1_Gate9_Ols',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(86,'Receiving1_Gate9_Ols4',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(87,'Receiving1_Gate9_Ols5',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(88,'Receiving1_Gate9_Ols6',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(89,'Receiving1_Gate9_Ols7',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(90,'Receiving1_Gate9_Ols8',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(91,'Receiving1_Gate9_Ols9',1,1,'Channel4.Receiving1.K0000.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(92,'Receiving1_leg1alm',1,1,'Channel4.Receiving1.K0010.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(93,'Receiving1_LegMotor1_Overload',8,4,'Channel4.Receiving1.R0016',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪n'),(94,'Receiving1_LegMotor1_Running',1,1,'Channel4.Receiving1.K0006.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(95,'Receiving1_LegMotor2_Overload',8,4,'Channel4.Receiving1.R0024',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(96,'Receiving1_LegMotor2_Running',1,1,'Channel4.Receiving1.K0005.15',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪r'),(97,'Receiving1_Legmotor2Speed_Speed',8,4,'Channel4.Receiving1.R0028',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(98,'Receiving1_LegMotor3_Overload',8,4,'Channel4.Receiving1.R0044',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(99,'Receiving1_LegMotor3_Running',1,1,'Channel4.Receiving1.K0006.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(100,'Receiving1_Legmotor3Curr_Digi',8,4,'Channel4.Receiving1.R0036',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(101,'Receiving1_Legmotor3Speed_Speed',8,4,'Channel4.Receiving1.R0048',20001,'','',NULL,'鎻愬崌鏈烘祴閫',0.00,0.00,0,'\0\0\0\0\0'),(102,'Receiving1_LegMotor4_Overload',8,4,'Channel4.Receiving1.R0004',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(103,'Receiving1_LegMotor4_Running',1,1,'Channel4.Receiving1.K0001.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(104,'Receiving1_Legmotor4Curr_Digi',8,4,'Channel4.Receiving1.R0000',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(105,'Receiving1_LocalRemote',1,1,'Channel4.Receiving1.K0008.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(106,'Receiving1_MagicRoll1_Alarm',1,1,'Channel4.Receiving1.K0007.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(107,'Receiving1_MagicRoll1_Running',1,1,'Channel4.Receiving1.K0006.11',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(108,'Receiving1_MagicRoll2_Alarm',1,1,'Channel4.Receiving1.K0007.01',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(109,'Receiving1_MagicRoll2_Running',1,1,'Channel4.Receiving1.K0006.06',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪Z'),(110,'Receiving1_MagicRoll3_Alarm',1,1,'Channel4.Receiving1.K0007.00',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(111,'Receiving1_MagicRoll3_Running',1,1,'Channel4.Receiving1.K0006.04',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(112,'Receiving1_MagicRoll4_Alarm',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(113,'Receiving1_MagicRoll4_Running',1,1,'Channel4.Receiving1.K0001.09',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(114,'Receiving1_Sifter1_Running',1,1,'Channel4.Receiving1.K0006.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0'),(115,'Receiving1_Sifter2_Running',1,1,'Channel4.Receiving1.K0006.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0 '),(116,'Receiving1_Sifter3_Alarm',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0!'),(117,'Receiving1_Sifter3_Running',1,1,'Channel4.Receiving1.K0001.10',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪"'),(118,'Receiving1_ThreeWays1_Left',1,1,'Channel4.Receiving1.K0001.07',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0#'),(119,'Receiving1_ThreeWays1_Right',1,1,'Channel4.Receiving1.K0001.05',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0$'),(120,'Receiving1_ThreeWays2_Left',1,1,'Channel4.Receiving1.K0006.03',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0%'),(121,'Receiving1_ThreeWays2_Right',1,1,'Channel4.Receiving1.K0006.02',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0&'),(122,'Receiving2_LegCUR102_Digi',8,4,'Channel4.Receiving1.R0020',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糪''),(123,'Receiving2_LegCUR106_Digi',8,4,'Channel4.Receiving1.R0012',20001,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0('),(124,'Receiving1_Conveyor1_Alarm',1,1,'Channel4.Receiving2.K0002.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0)'),(125,'Receiving1_Conveyor1_Running',1,1,'Channel4.Receiving2.K0002.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0*'),(126,'Receiving1_Conveyor2_Alarm',1,1,'Channel4.Receiving2.K0002.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0+'),(127,'Receiving1_Conveyor2_Running',1,1,'Channel4.Receiving2.K0002.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0,'),(128,'Receiving1_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0-'),(129,'Receiving1_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0.'),(130,'Receiving1_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.11',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0/'),(131,'Receiving1_Gate2_Alarm',1,1,'Channel4.Receiving2.K0001.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\00'),(132,'Receiving1_Gate2_Cls',1,1,'Channel4.Receiving2.K0001.09',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\01'),(133,'Receiving1_Gate2_Ols',1,1,'Channel4.Receiving2.K0001.10',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\02'),(134,'Receiving2_Airport1_Alarm',1,1,'Channel4.Receiving2.K0002.08',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\03'),(135,'Receiving2_Airport1_Running',1,1,'Channel4.Receiving2.K0001.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\04'),(136,'Receiving2_Airport2_Alarm',1,1,'Channel4.Receiving2.K0001.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\05'),(137,'Receiving2_Airport2_Running',1,1,'Channel4.Receiving2.K0001.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\06'),(138,'Receiving2_AlmAck',1,1,'Channel4.Receiving2.K0002.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\07'),(139,'Receiving2_Converyor1_Running',1,1,'Channel4.Receiving2.K0001.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\08'),(140,'Receiving2_Converyor2_Alarm',1,1,'Channel4.Receiving2.K0002.12',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\09'),(141,'Receiving2_Converyor2_Running',1,1,'Channel4.Receiving2.K0002.13',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0:'),(142,'Receiving2_Fan1_Alarm',1,1,'Channel4.Receiving2.K0001.02',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0;'),(143,'Receiving2_Fan1_Running',1,1,'Channel4.Receiving2.K0001.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0<'),(144,'Receiving2_Gate1_Alarm',1,1,'Channel4.Receiving2.K0001.04',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0='),(145,'Receiving2_Gate1_Cls',1,1,'Channel4.Receiving2.K0001.06',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0>'),(146,'Receiving2_Gate1_Ols',1,1,'Channel4.Receiving2.K0001.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0?'),(147,'Receiving2_Gate2_Ols',1,1,'Channel4.Receiving2.K0002.05',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0粿'),(148,'Receiving2_LegMotor1_Overload',8,4,'Channel4.Receiving2.R0008',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糀'),(149,'Receiving2_Legmotor1Speed_Speed',8,4,'Channel4.Receiving2.R0012',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糂'),(150,'Receiving2_LegMotor2_Overload',8,4,'Channel4.Receiving2.R0000',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糃'),(151,'Receiving2_LegMotor2_Running',1,1,'Channel4.Receiving2.K0002.01',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糄'),(152,'Receiving2_Legmotor2Speed_Speed',8,4,'Channel4.Receiving2.R0004',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糆'),(153,'Receiving2_LocalRemote',1,1,'Channel4.Receiving2.K0002.03',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糉'),(154,'Receiving2_MagicRoll1_Alarm',1,1,'Channel4.Receiving2.K0002.14',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糋'),(155,'Receiving2_MagicRoll1_Running',1,1,'Channel4.Receiving2.K0002.00',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糎'),(156,'Receiving2_Sifter1_Alarm',1,1,'Channel4.Receiving2.K0002.15',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糏'),(157,'Receiving2_Sifter1_Running',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糐'),(158,'Receiving2_Sifter1_Running8',1,1,'Channel4.Receiving2.K0002.07',20002,'','\0',NULL,NULL,0.00,0.00,0,'\0\0\0\0\0糑'); + +/*Table structure for table `registermodule` */ + +DROP TABLE IF EXISTS `registermodule`; + +CREATE TABLE `registermodule` ( + `DriverID` int(10) NOT NULL AUTO_INCREMENT, + `AssemblyName` varchar(255) DEFAULT NULL, + `ClassName` varchar(50) DEFAULT NULL, + `ClassFullName` varchar(128) DEFAULT NULL, + `Description` varchar(50) DEFAULT NULL, + UNIQUE KEY `DriverID` (`DriverID`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; + +/*Data for the table `registermodule` */ + +insert into `registermodule`(`DriverID`,`AssemblyName`,`ClassName`,`ClassFullName`,`Description`) values (4,'E:\\SCADA\\dll\\OPCDriver.dll','OPCReader','OPCDriver.OPCReader','OPC鍗忚'),(5,'E:\\SCADA\\dll\\FileDriver.dll','DataBaseReader','FileDriver.DataBaseReader','SQL 鏁版嵁搴'),(6,'E:\\SCADA\\dll\\FileDriver.dll','TagDriver','FileDriver.TagDriver','鏍囩鐩存帴璇诲啓'),(8,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusRTUReader','ModbusDriver.ModbusRTUReader','Modbus RTU鍗忚'),(9,'E:\\SCADA\\dll\\ModbusDriver.dll','ModbusTCPReader','ModbusDriver.ModbusTCPReader','Modbus Tcp鍗忚'),(10,'E:\\SCADA\\dll\\SiemensPLCDriver.dll','SiemensTCPReader','SiemensPLCDriver.SiemensTCPReader','S7 浠ュお缃戝崗璁'); + +/* Procedure structure for procedure `AddEventLog` */ + +/*!50003 DROP PROCEDURE IF EXISTS `AddEventLog` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `AddEventLog`(IN pStartTime DATETIME, + IN pSource NVARCHAR(50) , + IN pComment NVARCHAR(50)) +BEGIN +IF pComment<>IFNULL((SELECT Comment FROM LOG_EVENT WHERE EVENTTYPE=2 AND Source=Source ORDER BY SQLCOUNTER DESC LIMIT 1),'') THEN + INSERT INTO LOG_EVENT(EVENTTYPE,SEVERITY,ACTIVETIME,SOURCE,COMMENT) VALUES(2,0,pStartTime,pSource,pComment); +END IF; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `GetAlarm` */ + +/*!50003 DROP PROCEDURE IF EXISTS `GetAlarm` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAlarm`(IN pStartTime DATETIME, + IN pEndTime DATETIME ) +BEGIN +SELECT StartTime,AlarmText,AlarmValue,SubAlarmType,Severity,ConditionID,Source,Duration FROM LOG_ALARM WHERE StartTime BETWEEN pStartTime AND pEndTime ORDER BY StartTime; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `GetEventTime` */ + +/*!50003 DROP PROCEDURE IF EXISTS `GetEventTime` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `GetEventTime`(IN pEVENTTYPE int, + IN pSOURCE nvarchar(50), + IN pCOMMENT nvarchar(50), + OUT pSTARTTIME DATETIME, + OUT pENDTIME DATETIME) +BEGIN +DECLARE _ID INT DEFAULT 0; + +SELECT SQLCOUNTER,ACTIVETIME INTO _ID,pSTARTTIME FROM LOG_EVENT WHERE EVENTTYPE=pEVENTTYPE AND SOURCE=pSOURCE AND COMMENT=pCOMMENT ORDER BY ACTIVETIME DESC LIMIT 1; + +SET @sql = CONCAT('SELECT ACTIVETIME INTO ', pENDTIME, ' FROM LOG_EVENT WHERE EVENTTYPE = "', + pEVENTTYPE, '" AND SOURCE = "', pSOURCE, '" AND SQLCOUNTER> ',_ID,' ORDER BY ACTIVETIME DESC LIMIT 1'); + PREPARE stmt FROM @sql; + EXECUTE stmt; + DEALLOCATE PREPARE stmt; +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `InitServer` */ + +/*!50003 DROP PROCEDURE IF EXISTS `InitServer` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `InitServer`(IN pTYPE int) +BEGIN + + IF pTYPE<>1 THEN + SELECT M.DRIVERID,DRIVERNAME,SERVER,TIMEOUT,R.AssemblyName,R.ClassFullName,Spare1,Spare2 FROM META_DRIVER M INNER JOIN RegisterModule R ON M.DRIVERTYPE=R.DriverID; + END IF; + + SELECT COUNT(*) FROM META_TAG; + + SELECT TAGID,GROUPID,RTRIM(TAGNAME),ADDRESS,DATATYPE,DATASIZE,ARCHIVE,MAXIMUM,MINIMUM,CYCLE FROM META_TAG WHERE ISACTIVE=1; + + IF pTYPE<>1 THEN + SELECT DRIVERID,GROUPNAME,GROUPID,UPDATERATE,DEADBAND,ISACTIVE FROM META_GROUP ; + END IF; + + IF pTYPE=0 THEN + SELECT SOURCE FROM META_Condition WHERE EVENTTYPE=2; + END IF; + + IF pTYPE<>2 THEN + SELECT TYPEID,SOURCE,ALARMTYPE,A.ISENABLED,CONDITIONTYPE,PARA,IFNULL(COMMENT,''),DEADBAND,DELAY,SUBALARMTYPE,Threshold,SEVERITY, + IFNULL(MESSAGE,''),B.ISENABLE FROM META_Condition a LEFT OUTER JOIN META_SUBCONDITION b ON a.TypeID=b.ConditionID WHERE EVENTTYPE<>2; + END IF; + + -- LEFT OUTER JOIN META_TAG c ON a.SOURCEID=c.TAGID + SELECT SCALEID,SCALETYPE,EUHI,EULO,RAWHI,RAWLO FROM META_SCALE; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `ReadALL` */ + +/*!50003 DROP PROCEDURE IF EXISTS `ReadALL` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadALL`(IN pGroupID SMALLINT) +BEGIN + +SELECT COUNT(*) FROM META_TAG WHERE GROUPID=pGroupID AND IsActive=1; +SELECT TAGID,DATATYPE,IFNULL(DEFAULTVALUE,0) FROM META_TAG WHERE IsActive=1 AND GROUPID=pGroupID ORDER BY TAGID; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `ReadHData` */ + +/*!50003 DROP PROCEDURE IF EXISTS `ReadHData` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadHData`(IN pStartTime DATETIME, + IN pEndTime DATETIME, + IN pID INT) +BEGIN + + IF pID IS NULL THEN + SELECT ID,TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY ID,TIMESTAMP; + ELSE + SELECT TIMESTAMP,VALUE,M.DATATYPE FROM LOG_HDATA L INNER JOIN META_TAG M ON L.ID=M.TAGID WHERE ID=pID AND TIMESTAMP BETWEEN pStartTime AND pEndTime ORDER BY TIMESTAMP; + -- select ID,TIMESTAMP,VALUE from HDADATA WHERE TIMESTAMP BETWEEN @StartTime AND @EndTime order by TIMESTAMP + END IF; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `ReadValueByID` */ + +/*!50003 DROP PROCEDURE IF EXISTS `ReadValueByID` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `ReadValueByID`(IN pID SMALLINT, + IN pDATATYPE TinyInt) +BEGIN + + -- 寰呭畬鍠 +-- IF @DATATYPE=1 +-- SELECT CAST(DEFAULTVALUE AS BIT) FROM META_TAG WHERE TAGID=@ID +-- ELSE IF @DATATYPE=3 +-- SELECT CAST(DEFAULTVALUE AS TINYINT) FROM META_TAG WHERE TAGID=@ID +-- ELSE IF @DATATYPE=4 +-- SELECT CAST(DEFAULTVALUE AS SMALLINT) FROM META_TAG WHERE TAGID=@ID +-- ELSE IF @DATATYPE=7 +-- SELECT CAST(DEFAULTVALUE AS INT) FROM META_TAG WHERE TAGID=@ID +-- ELSE IF @DATATYPE=8 +-- SELECT CAST(DEFAULTVALUE AS REAL) FROM META_TAG WHERE TAGID=@ID +-- ELSE IF @DATATYPE=11 +-- SELECT CAST(DEFAULTVALUE AS VARCHAR) FROM META_TAG WHERE TAGID=@ID + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `UpdateValueByID` */ + +/*!50003 DROP PROCEDURE IF EXISTS `UpdateValueByID` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateValueByID`(IN pID SMALLINT, + IN pValue varchar(50)) +BEGIN + + UPDATE META_TAG SET DEFAULTVALUE=pValue WHERE TAGID=pID; + +END */$$ +DELIMITER ; + +/* Procedure structure for procedure `WriteHData` */ + +/*!50003 DROP PROCEDURE IF EXISTS `WriteHData` */; + +DELIMITER $$ + +/*!50003 CREATE DEFINER=`root`@`localhost` PROCEDURE `WriteHData`(IN pDATE DATETIME) +BEGIN + + -- DELETE FROM LOG_HDATA FROM LOG_HDATA L INNER JOIN META_TAG T ON T.TAGID=L.ID WHERE T.DATATYPE=11 + -- SELECT COUNT(*),COUNT(DISTINCT ID) FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0; + -- SELECT H.ID,T.DATATYPE,C FROM( SELECT ID,COUNT(*)C FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 GROUP BY ID)H INNER JOIN META_TAG T ON H.ID=T.TAGID ORDER BY ID --WITH ROLLUP + -- SELECT TIMESTAMP,VALUE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0 ORDER BY ID,TIMESTAMP + + -- DELETE FROM LOG_HDATA WHERE DATEDIFF(DAY,@DATE,TIMESTAMP)=0; +END */$$ +DELIMITER ; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; diff --git a/SCADA/Program/CoreTest/Example.csproj b/SCADA/Program/CoreTest/Example.csproj index acfe045..81ecc02 100644 --- a/SCADA/Program/CoreTest/Example.csproj +++ b/SCADA/Program/CoreTest/Example.csproj @@ -44,15 +44,15 @@ False - bin\Microsoft.Expression.Controls.dll + ..\..\dll\Microsoft.Expression.Controls.dll False - bin\Microsoft.Expression.Drawing.dll + ..\..\dll\Microsoft.Expression.Drawing.dll False - bin\Microsoft.Expression.Interactions.dll + ..\..\dll\Microsoft.Expression.Interactions.dll @@ -60,7 +60,7 @@ False - bin\System.Windows.Interactivity.dll + ..\..\dll\System.Windows.Interactivity.dll diff --git a/SCADA/Program/HMIControl/HMIControl.csproj b/SCADA/Program/HMIControl/HMIControl.csproj index 4c107d1..63378e9 100644 --- a/SCADA/Program/HMIControl/HMIControl.csproj +++ b/SCADA/Program/HMIControl/HMIControl.csproj @@ -34,8 +34,14 @@ 4 - - + + False + ..\..\dll\Microsoft.Expression.Controls.dll + + + False + ..\..\dll\Microsoft.Expression.Drawing.dll + diff --git a/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll b/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll index a858de3..d3c90cc 100644 Binary files a/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll and b/SCADA/Program/HMIControl/bin/Debug/HMIControl.dll differ diff --git a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml b/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml deleted file mode 100644 index aaaf85b..0000000 --- a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Controls.xml +++ /dev/null @@ -1,557 +0,0 @@ - - - - Microsoft.Expression.Controls - - - - - Called before the polylines are looped over. - - - - - Computes the value used when LayoutPath.Capacity is set to Auto. - - - - - Checks whether or not the polylines should continue being looped over. - - - - - Called before a new polyline is marched. - - - - - Called when a polyline is completed. - - The remaining arclength in the polyline. - - - - Called when a step is successfully completed. - - The actual step distance. - This may be different than Step if another polyline has been wrapped to. - - - - Distributes the children of a path panel along a given layout path. - - The path panel. - The index of the path in pathPanel.LayoutPaths. - The index of the first child to be laid out on this path. - The index of the next child to be distributed. If childIndex is returned, this function has done nothing. - - - - The index of the next child to be arranged. - - - - - The distance in arc length that will be used for layout. - - - - - The distance in arc length to walk along the current polyline. - - - - - The total number of elements to be arranged on the LayoutPath. - - - - - Distributes the children of a path panel along a layout path. - Even distribution means that there is equal arclength between the centers of all - the elements on the path. - - - - - Specifies which path layout properties have changed. - - - - - Provides data for the event. - - - - - Initializes a new instance of the class. - - The data for the event. - - - - Gets the properties changed in a event. - - - - - Encapsulates the data needed to update a . - - - - - Gets or sets the index of the path on which an element is arranged. - - - - - Gets or sets the index of an element in a collection of elements. - - - - - Gets or sets the index of an element on a path. - - - - - Gets or sets the offset of an element proportional to the total length of a collection of paths. - - - - - Gets or sets the offset of an element proportional to the length of a path. - - - - - Gets or sets the angle perpendicular to the path at an element's location. - - - - - Gets or sets the angle perpendicular to the path at an element's location if the element is oriented to the path. - - - - - Gets or sets whether or not an element is arranged on a path. - - - - - Represents an element that is arranged by a . - - - Implementing this interface enables to set these properties when the element is arranged. - This interface is not intended for general implementation. - - - - - Updates the properties based on the given and raises the event. - - The data needed to update the . - - - - Occurs when one or more of the properties change. - - - This event is raised whenever the item鈥檚 position along the path is updated. This can occur due to changes in the properties on the or changes to . - - - - - Gets the index of the path on which the item is arranged. - - - - - Gets the index of the item in a collection of items. - - - - - Gets the index of the item on the path on which it is arranged. - - - - - Gets the offset of the item proportional to the total length of a collection of paths. - - - - - Gets the offset of the item proportional to the length of the path on which it is arranged. - - - - - Gets the angle perpendicular to the path at the item's location. - - - - - Gets the angle perpendicular to the path at the items's location if the item is oriented to the path. - - - - - Gets or sets whether or not the item is arranged on the path. - - - - - Converts a representing whether or not an element is arranged to a value used to scale the element. - - - - - Throws a exception in all cases. - - The target data being passed to the source. - The of data expected by the source object. - An optional parameter to be used in the converter logic. - The culture of the conversion. - The value to be passed to the source object. - - - - Converts the specified to a . - - The source data being passed to the target. - The of data expected by the target dependency property. - An optional parameter to be used in the converter logic. - The culture of the conversion. - If the is true, 1 is returned. Else, 0 is returned. - - - - Specifies the distribution of a . - - - - - Specifies the orientation of elements on a . - - - - - Specifies the method for altering the on an open path. - - - - - Describes a path along which elements are arranged. - - - - - Ideally, we want to cache the Bezier curves before flattening, because transform will affect flattening. - That requires us to cache curves that we don't support very well yet. Instead, we cache the flatten points - in distribution strategy and transform them on demand. - - - - - Gets or sets the element that defines the path. - - - - - Gets or sets whether items are laid out evenly or with a fixed padding. - - - - - Gets or sets the maximum number of items displayed on the . - - - - - Gets or sets the distance in pixels along the arc length of the between two items. - - - - - Gets or sets the orientation of the items. - - - This property is supported on , but not . - - - - - Gets or sets the distance from the start of the to place the first item. - - - - - Gets or sets the percentage of the that participates in layout. - - - - - Gets or set the method to alter on an open path. - - - - - Gets the computed Capacity. - - - - - Gets whether or not the is valid in the context. - A is not valid if it is a descendant of the in which it is used. - - - - - Distributes the children of a layout path based on the size of the children and a given padding between the children. - The distance in arclength between children is determined by the padding plus the sum of the radii of the children's bounding boxes. - - - - - Contains a list of items that are laid out along one or more paths. - - - - - Initializes a new instance of the class. - - - - - Creates the element used to display a specified item. - - A corresponding to a specified item. - - - - Determines if the specified item is (or is eligible to be) its own item container. - - true if the item is its own item container; otherwise, false. - The specified item. - - - - Positions child elements. - - The size that this object should use to arrange its child elements. - The actual size used. - - - - Gets or sets a collection of objects that define the path(s) used for layout. - - - - - Gets or sets the index to use within the list of items. - - - - - Gets or sets whether the item index wraps to the beginning of the collection when StartItemIndex is greater than 0. - - - - - Represents an item in a . - - - - - Initializes a new instance of the class. - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - For a description of this member, see . - - - - - Arranges child elements along one or more path. - - - can be used as an alternative to when selection is not necessary. - The property is not supported on . - - - - - Initializes a new instance of the class. - - - - - Measures the size required for child elements. - - The available size that this element can give to child elements. - The size that this element determines it needs during layout, based on its calculations of child element sizes. - - - - Positions child elements. - - The size that this object should use to arrange its child elements. - The actual size used. - - - - Arranges the child at the given index at a particular location on a LayoutPath. - - An index from the range 0 to PathPanel.Count. - The index of the layout path on which to arrange the child. - The polyline in the layout path. - The location on the polyline. - The index of the child on the LayoutPath. - - - - Calculates the radius of the bounding circle for the child at the given index. - - An index from the range 0 to PathPanel.Count. - - - - Gets or sets a collection of objects that define the path(s) used for layout. - - - - - Gets or sets the index to use within the list of items. - - - - - Gets or sets whether the item index wraps to the beginning of the collection when is greater than 0. - - - - - The subset of LayoutPaths that are attached and not collapsed. - - - - - Count is the number of Children that the PathPanel will lay out. - If StartItemIndex > 0 and WrapItems is false, then this can be less than PathPanel.Children.Count - - - - - Gets the panel that contains the containers of an ItemsControl. - - The ItemsControl. - - The panel that contains the containers of an ItemsControl, or null - if the panel could not be found. - - - is null. - - - - - Traverses a tree by accepting an initial value and a function that - retrieves the child nodes of a node. - - The type of the stream. - The initial node. - A function that retrieves the child - nodes of a node. - A predicate that evaluates a node - and returns a value indicating whether that node and it's children - should be traversed. - A stream of nodes. - - - - Get the visual tree children of an element. - - The element. - The visual tree children of an element. - - is null. - - - - - Get the visual tree children of an element and the element itself. - - The element. - - The visual tree children of an element and the element itself. - - - - - Retrieves all the logical children of a framework element using a - breadth-first search. For performance reasons this method manually - manages the stack instead of using recursion. - - The parent framework element. - The logical children of the framework element. - - - - Retrieves all the logical descendents of a framework element using a - breadth-first search. For performance reasons this method manually - manages the stack instead of using recursion. - - The parent framework element. - The logical children of the framework element. - - - diff --git a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml b/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml deleted file mode 100644 index f396802..0000000 --- a/SCADA/Program/HMIControl/bin/Debug/Microsoft.Expression.Drawing.xml +++ /dev/null @@ -1,1770 +0,0 @@ - - - - Microsoft.Expression.Drawing - - - - - Renders a callout shape supporting several shapes combined with a callout arrow. - - - - - Provides a base class of a composite shape that derives from and implements . - - - implements interface, - and supports rendering a geometry similar to , but the geometry can be rendered outside the layout boundary. - - A typical implementation has a customized default template in generic.xaml which template-binds most shape properties to a . - It should also extend the property to customize the appearance of the . - - This class also supports showing content together with the shape. - - - - - Provides an interface to describe the parameters of a Shape. - - - This interface is the data for communication between Shape and GeometrySource. - Typically, a concrete implementation of IShape will implement this interface and pass it into - GeometrySource.UpdateGeometry(), which will then consume the shape as a read-only data provider. - - - - - Provides the necessary interface to define a Shape. - Both primitive and composite shapes need to match this interface, although they might derive from different types of FrameworkElement. - - - - - Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously. - - - - Gets or sets the that specifies how to paint the interior of the shape. - A that describes how the shape's interior is painted. The default is null. - - - Gets or sets the that specifies how the outline is painted. - A that specifies how the outline is painted. - - - Gets or sets the width of the stroke outline. - The width of the outline, in pixels. - - - Gets or sets a enumeration value that describes how the shape fills its allocated space. - One of the enumeration values. The default value at runtime depends on the type of . - - - - Gets the rendered geometry presented by the rendering engine. - - - - - Gets the margin between logical bounds and actual geometry bounds. - This can be either positive (as in ) or negative (as in ). - - - - - Occurs when RenderedGeometry is changed. - - - - - Extends how the shape is drawn with creating geometry source. - - - - - Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously. - - - - Provides the behavior for the Arrange portion of a Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior. - The actual size used once the element is arranged in layout. - The final area within the parent that this object should use to arrange itself and its children. - will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin. - - - - Transforms a string content into with center alignment and multiple line support. - - - Use template-binding to instead of to enable this method. - - - - - Gets or sets the that specifies how to paint the interior of the shape. - - A that describes how the shape's interior is painted. - - - Gets or sets the that specifies how the outline is painted. - A that specifies how the outline is painted. - - - Gets or sets the width of the stroke outline. - The width of the outline, in pixels. - - - Gets or sets a enumeration value that describes how the shape fills its allocated space. - One of the enumeration values. - - - Gets or sets a enumeration value that describes the at the start of a . - A value of the enumeration that specifies the shape at the start of a . - - - Gets or sets a enumeration value that describes the at the end of a line. - One of the enumeration values for . - - - Gets or sets a enumeration value that specifies the type of join that is used at the vertices of a . - A value of the enumeration that specifies the join appearance. - - - Gets or sets a limit on the ratio of the miter length to half the of a element. - The limit on the ratio of the miter length to the of a element. This value is always a positive number that is greater than or equal to 1. - - - Gets or sets a collection of values that indicate the pattern of dashes and gaps that is used to outline shapes. - A collection of values that specify the pattern of dashes and gaps. - - - Gets or sets a enumeration value that specifies how the ends of a dash are drawn. - One of the enumeration values for . The default is . - - - Gets or sets a that specifies the distance within the dash pattern where a dash begins. - A that represents the distance within the dash pattern where a dash begins. The default value is 0. - - - - Gets the rendered geometry presented by the rendering engine. - - - - - Gets the margin between the logical bounds and the actual geometry bounds. - This can be either positive (as in ) or negative (as in ). - - - - - Gets or sets the internal content that converts a string into a center-aligned, multiple-line TextBlock. - - - - - Occurs when RenderedGeometry is changed. - - - - - Gets or sets the position of the callout relative to the top and left corner. - - - - - Gets or sets the callout style. - - - - - Provides a base class of a composite shape that derives from and implements . - - - implements interface, - and supports rendering a geometry similar to , but the geometry can be rendered outside the layout boundary. - - A typical implementation has a customized default template in generic.xaml which template-binds most shape properties to a . - It should also extend the property to customize the appearance of the . - - - - - Extends how the shape is drawn with creating geometry source. - - - - - Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously. - - - - Provides the behavior for the Arrange portion of a Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior. - The actual size used once the element is arranged in layout. - The final area within the parent that this object should use to arrange itself and its children. - will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin. - - - - Gets or sets the that specifies how to paint the interior of the shape. - - A that describes how the shape's interior is painted. - - - Gets or sets the that specifies how the outline is painted. - A that specifies how the outline is painted. - - - Gets or sets the width of the stroke outline. - The width of the outline, in pixels. - - - Gets or sets a enumeration value that describes how the shape fills its allocated space. - One of the enumeration values. - - - Gets or sets a enumeration value that describes the at the start of a . - A value of the enumeration that specifies the shape at the start of a . - - - Gets or sets a enumeration value that describes the at the end of a line. - One of the enumeration values for . - - - Gets or sets a enumeration value that specifies the type of join that is used at the vertices of a . - A value of the enumeration that specifies the join appearance. - - - Gets or sets a limit on the ratio of the miter length to half the of a element. - The limit on the ratio of the miter length to the of a element. This value is always a positive number that is greater than or equal to 1. - - - Gets or sets a collection of values that indicate the pattern of dashes and gaps that is used to outline shapes. - A collection of values that specify the pattern of dashes and gaps. - - - Gets or sets a enumeration value that specifies how the ends of a dash are drawn. - One of the enumeration values for . The default is . - - - Gets or sets a that specifies the distance within the dash pattern where a dash begins. - A that represents the distance within the dash pattern where a dash begins. The default value is 0. - - - - Gets the rendered geometry presented by the rendering engine. - - - - - Gets the margin between the logical bounds and the actual geometry bounds. - This can be either positive (as in ) or negative (as in ). - - - - - Occurs when RenderedGeometry is changed. - - - - - Renders a bent line segment with optional arrow heads on both ends. - - - - Provides the behavior for the Measure pass of Silverlight layout. Classes can override this method to define their own Measure pass behavior. - The size that this object determines it requires during layout, based on its calculations of child object allotted sizes, or possibly on other considerations such as fixed container size. - The available size that this object can give to child objects. Infinity () can be specified as a value to indicate that the object will size to whatever content is available. - - A default can render at anysize. - The will stretch to the layout boundary and render to the outside if necessary. - - - - - Gets or sets the amount of bend for the arrow. - - The bend amount between 0 and 1. - - - - Gets or sets how the arrow head is rendered at the start of the line. - - - - - Gets or sets how the arrow head is rendered at the end of the line. - - - - - Gets or sets from which corner to start drawing the arrow. - - - - - Gets or sets the length of the arrow in pixels. - - - - - Provides an items control that displays one selected item, and allows panning between items using touch gestures. - - - - - The constructor for PanningItems. - - - - - Called when the PanningItems template is applied. - - - - - Gets or sets the orientation of items in the control. - - - - - Gets or sets the flick tolerance. This can be a value between 0 and 1. - It represents the percentage of the size of the PanningItems needed to be covered by the flick gesture to trigger an items change. - - - - - Gets or sets the item before the selected item. - - - - - Gets or sets the item after the selected item. - - - - - Gets or sets whether the contents of the items control will loop, so that the first item will follow the last item. - - - - - Gets or sets the value of the slider controlling the panning motion. - - - - - Helper class to work with PathGeometry. - - - - - Converts a string in the path mini-language into a PathGeometry. - - A string in the path mini-language. - - - - Converts the given geometry into a single PathGeometry. - - - - - Updates the given geometry as PathGeometry with a polyline matching a given point list. - - - - - Parses abbreviated geometry sytax. - - - - - Helper class to convert an ArcSegment to BezierSegment(s). - - - Helper class to work with PathSegment and all variations. - - - Strategy classes to handle different types of PathSegment. - - - - - Converts an arc segment into Bezier format. - Returns BezierSegment, PolyBezierSegment, LineSegment, or null. - When returning null, the arc degenerates into the start point. - - - - - Avoid calling the three-parameter constructor, since it always sets a local value for IsStroked. - - - - - - - Updates the SegmentCollection with a given polyline matching a given point list. - Tries to keep changes minimum and returns false if nothing has been changed. - - - - - Updates the collection[index] segment with a poly-Bezier segment matching a given point list. - A given point list must contain 3*N points for N Bezier segments. - - - - - Tests if a given path segment is empty. - - - - - Gets the point count in a given path segment. - - - - - Gets the last point of a given path segment. - - - - - Gets the point of a given index in a given segment. - If input is (-1), returns the last point. - - - - - Flattens a given segment and adds resulting points into a given point list. - - The segment to be flatten. - The resulting points list. - The start point of the segment. - The error tolerance. Must be positive. Can be zero. Fallback to default tolerance. - - - - ArcToBezier, computes the Bezier approximation of an arc. - - - This utility computes the Bezier approximation for an elliptical arc as - it is defined in the SVG arc spec. The ellipse from which the arc is - carved is axis-aligned in its own coordinates, and defined there by its - x and y radii. The rotation angle defines how the ellipse's axes are - rotated relative to the x axis. The start and end points define one of 4 - possible arcs; the sweep and large-arc flags determine which one of - these arcs will be chosen. - - Returning cPieces = 0 indicates a line instead of an arc - cPieces = -1 indicates that the arc degenerates to a point - - - - - Gets the number of Bezier arcs, and sine/cosine of each. - - - This is a private utility used by ArcToBezier. Breaks the arc into - pieces so that no piece will span more than 90 degrees. The input - points are on the unit circle. - - - - - GetBezierDistance returns the distance as a fraction of the radius. - - - Get the distance from a circular arc's end points to the control points - of the Bezier arc that approximates it, as a fraction of the arc's - radius. - - Since the result is relative to the arc's radius, it depends strictly on - the arc's angle. The arc is assumed to be of 90 degrees or less, so the - angle is determined by the cosine of that angle, which is derived from - rDot = the dot product of two radius vectors. We need the Bezier curve - that agrees with the arc's points and tangents at the ends and midpoint. - Here we compute the distance from the curve's endpoints to its control - points. - - Since we are looking for the relative distance, we can work on the unit - circle. Place the center of the circle at the origin, and put the X axis - as the bisector between the 2 vectors. Let a be the angle between the - vectors. Then the X coordinates of the 1st and last points are cos(a/2). - Let x be the X coordinate of the 2nd and 3rd points. At t=1/2 we have a - point at (1,0). But the terms of the polynomial there are all equal: - - (1-t)^3 = t*(1-t)^2 = t^2*(1-t) = t^3 = 1/8, - - so from the Bezier formula there we have: - - 1 = (1/8) * (cos(a/2) + 3x + 3x + cos(a/2)), - - hence - - x = (4 - cos(a/2)) / 3 - - The X difference between that and the 1st point is: - - DX = x - cos(a/2) = 4(1 - cos(a/2)) / 3. - - But DX = distance / sin(a/2), hence the distance is - - dist = (4/3)*(1 - cos(a/2)) / sin(a/2). - - Rather than the angle a, we are given rDot = R^2 * cos(a), so we - multiply top and bottom by R: - - dist = (4/3)*(R - Rcos(a/2)) / Rsin(a/2) - - and use some trig: - ________________ - cos(a/2) = \/(1 + cos(a)) / 2 - ______________________ - R*cos(a/2) = \/(R^2 + R^2 cos(a)) / 2 - ________________ - = \/(R^2 + rDot) / 2 - - Let A = (R^2 + rDot)/2. - ____________________ - R*sin(a/2) = \/R^2 - R^2 cos^2(a/2) - _______ - = \/R^2 - A - - so: - _ - 4 R - \/A - dist = - * ------------ - 3 _______ - \/R^2 - A - - History: - 5/29/2001 MichKa - Created it. - - - - - Returns false if the radius is too small compared to the chord length (returns true on NaNs) - radius is modified to the value that is accepted. - - - - - A utility class to flatten Bezier curves. - - - - - Flattens a Bezier cubic curve and adds the resulting polyline to the third parameter. - - The four Bezier cubic control points. - The maximum distance between two corresponding points on the true curve - and on the flattened polyline. Must be strictly positive. - Where to add the flattened polyline. - True to skip the first control point when adding the flattened polyline. - Where to add the value of the Bezier curve parameter associated with - each of the polyline vertices. - If is empty, the first control point - and its associated parameter are always added. - - - - Flattens a Bezier quadratic curve and adds the resulting polyline to the third parameter. - Uses degree elevation for Bezier curves to reuse the code for the cubic case. - - The three Bezier quadratic control points. - The maximum distance between two corresponding points on the true curve - and on the flattened polyline. Must be strictly positive. - Where to add the flattened polyline. - Whether to skip the first control point when adding the flattened polyline. - Where to add the value of the Bezier curve parameter associated with - each of the polyline vertices. - If is empty, the first control point and - its associated parameter are always added. - - - - Extension methods that support non-geometry types. - - - - - Allows the application of an action delegate (often a very simple lambda) against an entire sequence. - - - - - Allows the application of an action delegate (often a very simple lambda) against an entire sequence. - - - - - Allows the application of an action delegate (often a very simple lambda) against an entire sequence with the index of each item. - - - - - Ensures the count of a list to a given count. Creates with a given factory or removes items when necessary. - If Input IList is a List, AddRange or RemoveRange is used when there's no factory. - - - - - Ensures the count of a list is at least the given count. Creates with a given factory. - - - - - Add a range of items to the end of a collection. - If a collection is a list, List.AddRange is used. - - - - - Gets the last item of a given list. - - - - - Removes the last item from the given list. - - - - - Makes a copy of obj and all it's public properties, including all collection properties. - - - - - Sets the value if different. Avoids setting a local value if possible. - Returns true when the value has been changed. - - - - - Clears the dependency property when it is locally set on the given dependency object. - Returns false if the dependeny property is not locally set. - - - - - Finds all visual descendants of a given type and condition using breadth-first search. - - - - - Gets all visual children in IEnumerable. - - - - - Unifies the interface of PropertyMetadata in WPF and Silverlight. - Provides the necessary notification about render, arrange, or measure. - - - - - This private Ctor should only be used by AttachCallback. - - - - - Chain InternalCallback() to attach the instance of DrawingPropertyMetadata on property callback. - In Silverlight, the property metadata is thrown away after setting. Use callback to remember it. - - - - - Before chaining the original callback, trigger DrawingPropertyChangedEvent. - - - - - Extension methods for geometry-related data structures (Point/Vector/Size/Rect). - - - - - Resizes the rectangle to a relative size while keeping the center invariant. - - - - - Gets the difference vector between two points. - - - - - Memberwise plus for Point. - - - - - Memberwise minus for Point. - - - - - Converts a string of mini-languages to a . - - See: Path Markup Syntax(http://msdn.microsoft.com/en-us/library/cc189041(VS.95).aspx) - The string of path mini-languages for describing geometric paths. - A converted from the the path mini-languages. - - - - Flattens a and adds result points to a given . - - The input . - The point list to which result points will append. - A positive number specifying the maximum allowed error from the result points to the input path figure. A Value of zero allows the algorithm to pick the tolerance automatically. - - - - Gets the normalized arc in a (0,0)(1,1) box. - Zero degrees is mapped to [0.5, 0] (up), and clockwise. - - - - - Gets the absolute arc point in a given bound with a given relative radius. - - - - - Gets the angle on an arc relative to a (0,0)(1,1) box. - Zero degrees is mapped to [0.5, 0] (up), and clockwise. - - - - - Gets the angle on an arc from a given absolute point relative to a bound. - - - - - Computes the transform that moves "Rect from" to "Rect to". - - - - - Computes the transform from the coordinate space of one UIElement to another. - - The source element. - The destination element. - The transform between the UIElements, or null if it cannot be computed. - - - - Maps a relative point to an absolute point using the mapping from a given bound to a (0,0)(1,1) box. - - - - - Maps an absolute point to a relative point using the mapping from a (0,0)(1,1) box to a given bound. - - - - - Computes the bound after stretching within a given logical bound. - If stretch to uniform, use given aspectRatio. - If aspectRatio is empty, it's equivalent to Fill. - If stretch is None, it's equivalent to Fill or Uniform. - - - - - Returns the mid point of two points. - - The first point. - The second point. - The mid point between and . - - - - Returns the dot product of two vectors. - - The first vector. - The second vector. - The dot product of and . - - - - Returns the dot product of two points. - - - - - Returns the distance between two points. - - The first point. - The second point. - The distance between and . - - - - Returns the square of the distance between two points. - - The first point. - The second point. - The square of the distance between and . - - - - Determinant of the cross product. Equivalent to directional area. - - - - - Computes the normal direction vector of given line segments. - - - - - Computes the perpendicular vector, 90-degrees, counter-clockwise. - Vector to the right perpendicular results in a vector to up. - - - - - Returns whether the two geometries are identical. - - - - - Ensures the value is an instance of result type (T). If not, replace with a new instance of type (T). - - - - - Ensures the list[index] is an instance of result type (T). If not, replace with a new instance of type (T). - - - - - Helper class that provides static properties and methods related to floating point arithmetic. - - - - - The minimum distance to consider that two values are same. - Note: internal floating point in MIL/SL is float, not double. - - - - - The value of the angle of a full circle. - - - - - The inner radius for a pentagram polygon shape, at precision of three digits in percentage. - (1 - Sin36 * Sin72 / Sin54) / (Cos36) ^ 2, which is 0.47210998990512996761913067272407 - - - - - Determines whether a System.Double value is small enough to be considered - equivalent to zero. - - - True if value is smaller than DoubleTolerance; - otherwise, False. - - - - Returns the value that's within the given range. - A given min/max that is null equals no limit. - - - - - Computes the Euclidean norm of the vector (x, y). - - The first component. - The second component. - The Euclidean norm of the vector (x, y). - - - - Computes a real number from the mantissa and exponent. - - - - The value of x * 2^exp if successful. - - - - Tests a double. - - The double to test. - True if x is not a NaN and is not equal to plus or minus infinity; - otherwise, False. - - - - Helper class to work with PathFigure. - - - - - Flattens the given figure and adds result points to the given point list. - - The error tolerance. Must be positive. Can be zero. Fallback to default tolerance. - - - - Iterates all segments inside a given figure, and returns the correct start point for each segment. - - - - - Synchronizes the figure to the given list of points as a single polyline segment. - Tries to keep the change to a minimum and returns false if nothing has been changed. - - - - - Synchronizes the given figure to be a closed ellipse with two arc segments. - - - - - A Tuple data structure for PathSegment and the corresponding StartPoint. - - - - - Represents a polyline with a list of connecting points. - A closed polygon is represented by repeating the first point at the end. - The differences, normals, angles, and lengths are computed on demand. - - - - - Constructs a polyline with two or more points. - - - - - The forward difference vector of polyline. - Points[i] + Differences[i] = Points[i+1] - - - - Compute the normal vector of given location (lerp(index, index+1, fraction). - If the location is within range of cornerRadius, interpolate the normal direction. - - The range of normal smoothless. If zero, no smoothness and return the exact normal on index. - - - - The polyline is closed when the first and last points are repeated. - - - - - The count of points in this polyline. - - - - - The total arc length of this polyline. - - - - - The point array of this polyline. - - - - - The length between line segments, Points[i] to Points[i+1]. - - - - - The list of normal vectors for each segment. - Normals[i] is the normal of segment p[i] to p[i + 1]. - Normals[N-1] == Normals[N-2]. - - - - - The list of Cos(angle) between two line segments on point p[i]. - Note: The value is cos(angle) = Dot(u, v). Not in degrees. - - - - - The list of accumulated length from points[i] to points[0]. - - - - - The data structure to communicate with the PathMarch algorithm. - - - - - Gets the interpolated position of this MarchLocation on a given point list. - - - - - Get the interpolated normal direction of this MarchLocation on a given normal vector list. - - - - - Gets the arc length of this MarchLocation to the start of the entire polyline. - - - - - The reason why this location is sampled. - - - - - The index of the point on a polyline point list. - - - - - Ratio: [0, 1], which is always before / (before + after). - - - - - Arc length before a stop point. Non-negative and less than Length[index]. - - - - - Arc length after the stop point. Non-negative and less than Length[index]. - - - - - Remaining length within a step to hit next stop. Positive to go forward. Negative to go backward. - - - - - Helper class to work with list of points - - - - - March the given polyline with a given interval and output each stop through callback. - - The polyline points to march on. - The arc length to march before stopping at the first point. - The max angle between edges to be considered a corner vertex. - Callback when marching algorithm stop at a point. The callback returns the arc length for next stop. - If the asked length is negative, march backwards. If callback returns NaN, finish marching. - - - - Reorders the given list of polylines so that the polyline with a given arc length in the list is the first. - Polylines that preceded this line are concatenated to the end of the list, with the first polyline at the very end. - - A list of polylines. - The arc length in the entire list of polylines at which to find the start line. - The arc length into that line is returned in this variable. - The reordered and wrapped list. - - - - A random generator that supports uniform and Gaussian distributions. - - - - - Generates a pair of independent, standard, normally distributed random numbers, - zero expectation, unit variance, using polar form of the Box-Muller transformation. - - - - - Private constructor. Force to use factory methods. - - - - - Creates a line segment - - - - - Creates a cubic bezier segment from quatratic curve (3 control points) - - - - - Creates a cubic bezier segment with 4 control points. - - - - - Control points of path segment. Length is variant. - Line segment has 2 points, Cubic bezier has 4 points. - - - - - Compares two transforms for an exact match. Transforms with the same value but different structure (e.g. Translate(0,0) and Rotate(0) are not considered equivalent). - - The first transform. - The second transform. - - - - - Specifies the unit of thickness. - - - - - Unit in pixels. - - - - - Unit in percentage relative to the bounding box. - - - - - Provides the base class of a source of geometry. - Generates and caches the geometry based on the input parameters and the layout bounds. - - - A typical implementation will extend the UpdateCachedGeometry() to update this.cachedGeometry. - This base class will then handle the invalidation, pipeline to the geometry effects, and then cache relative to the layout bounds. - An implementation should try to reuse the cached geometry as much as possible to avoid reconstruction in the rendering thread. - An implementation can extend the ComputeLogicalBounds to handle Stretch differently. - - The type of geometry source parameter on which the base class is working on. - - - - Provides an interface to describe the source of a geometry. - - - This interface is designed to expose the geometry source in a non-generic way. - Typical implementation should subclass GeometrySource instead of implementing this interface directly. - - - - - Notifies that the geometry has been invalidated because of external changes. - - - Geometry is typically invalidated when parameters are changed. - If any geometry has been invalidated externally, the geometry will be recomputed even if the layout bounds change. - - - - - Update the geometry using the given parameters and the layout bounds. - Returns false if nothing has been updated. - - - - - Gets or sets the resulting geometry after the latest UpdateGeometry(). - - - - - Gets the bounding box where the geometry should stretch to. - The actual geometry might be smaller or larger than this. - should already take stroke thickness and stretch into consideration. - - - - - Gets the actual bounds of FrameworkElement. - includes logical bounds, stretch, and stroke thickness. - - - - - Specifics the geometry from the previous geometry effect process. - - - - - Notifies that the geometry has been invalidated because of external changes. - - - The geometry is typically invalidated when parameters are changed. - If any geometry has been invalidated externally, the geometry will be recomputed regardless if the layout bounds change. - - - - - Update the geometry based on the given parameters and layoutBounds. - Returns false if the geometry hasn't been changed. - - - - - Extends the way to provide geometry by implementing this function. - Returns true when any of the geometry is changed. - - - - - Extends the way to handle stretch mode. - The default is to always use Stretch.Fill and center stroke. - - - - - Apply the geometry effect when dirty or forced and update this.Geometry. - Otherwise, keep this.Geometry as this.cachedGeometry. - - - - - Gets or sets the resulting geometry after the latest UpdateGeometry(). - - - - - Gets the bounding box that the geometry should stretch to. - The actual geometry might be smaller or larger than this. - should already take stroke thickness and stretch into consideration. - - - - - - Gets the actual bounds of FrameworkElement. - includes logical bounds, stretch and stroke thickness. - - - - - - Arc recognizes Stretch.None as the same as Stretch.Fill, assuming aspect ratio = 1:1. - - - - - Normalize thickness, both relative to the bounding box and the absolute pixel. - Relative thickness = 0 -> full circle radius or clamped. - Relative thickness = 1 -> shrank to a dot, or degenerated. - - - - - The arc is degenerated to a line pointing to center / normal inward. - - - - - Compute a list of angle pairs, defining the ranges in which arc sample should locate. - The return value have 2, 4, or 6 double values, each pair defines a range and they are in the order - to span the angles from given start to end angles. The ranges will break at the self-intersect angle. - If input start/end are within the invalid range between self intersect angle, it will be moved to neighboring self intersect. - - - - - Move angle to 0-90 range. - - - - - Compute all pieces of inner curves with each pair of input angles, and connect them with poly Bezier segments. - The new segments are output to given figure.Segments list from the given index. The start point is output seperately. - - - - - Compute one piece of inner curve with given angle range, and output one piece of smooth curve in format of poly Beizer semgents. - - - - - Compute the parameter (angle) of the self-intersect point for given ellipse with given thickness. - The result is always in first quadrant, and might be 0 or 90 indicating no self-intersect. - Basic algorithm is to binary search for the angle that sample point is not in first quadrant. - - - - - Specifies the direction the arrow points. - - - - - The arrow points to the left. - - - - - The arrow points to the right. - - - - - The arrow points up. - - - - - The arrow points down. - - - - - B - /| - / C--D - A | - \ C--D - \| - B - Algorithm only uses Width/Height assuming top-left at 0,0. - - - - - Specifies the rendering style of a callout shape. - - - - - A rectangular callout. - - - - - A rectangular callout with rounded corners. - - - - - A oval-shaped callout. - - - - - A cloud-shaped callout. - - - - - Updates the edge line, and then connects to the anchor point if necessary. - - - - - Updates the polyline segment, and then connects start, anchor, and end points with the callout style. - - - - - Updates the line segment to a given point. - - - - - Computes the corner points in a clockwise direction, with eight points for the four corners. - - - - - The corner arc is always smaller than a 90-degree arc. - - - - - Provides the base class for GeometryEffect that transforms a geometry into another geometry. - - - This class provides the basic implementation of processing the rendered geometry of a IShape before it's passed to rendering. - A typical implementation will extend the virtual function to transform the input geometry. - is typically attached to as an attached property and activated when geometry is updated. - The of a will replace the rendered geometry in . - - - - - Gets the geometry effect as an attached property on a given dependency object. - - - - - Sets the geometry effect as an attached property on a given dependency object. - - - - - Makes a deep copy of the using its current values. - - - - - Makes a deep copy of the geometry effect. Implements CloneCurrentValue in Silverlight. - - A clone of the current instance of the geometry effect. - - - - Tests if the given geometry effect is equivalent to the current instance. - - A geometry effect to compare with. - Returns true when two effects render with the same appearance. - - - - Specifics the geometry from the previous geometry effect process. - - - - - Invalidates the geometry effect without actually computing the geometry. - Notifies all parent shapes or effects to invalidate accordingly. - - - - - Processes the geometry effect on a given input geometry. - Stores the result in GeometryEffect.OutputGeometry. - - Returns false if nothing has been changed. - - - - Extends the way of updating cachedGeometry based on a given input geometry. - - - - - Notified when detached from a parent chain. - - - - - Notified when attached to a parent chain. - - - - - Invalidates the geometry on a given dependency object when - the object is a valid parent type (IShape or GeometryEffect). - - - - - Implement the Freezable in WPF. - - - - - The default geometry effect that only passes through the input geometry. - - - - - Gets the output geometry of this geometry effect. - - - - - Parent can be either IShape or GeometryEffectGroup. - - - - - Provides the conversion between string and geometry effects. - - - This class enables the brief syntax in XAML like GeometryEffect="Sketch". - Creates a clone of the instance of the geometry effect so it can be used as a resource. - - - - - Builds a preset list of supported geometry effects. - - - - - A GeometryEffect that can be converted from a string type. - - - - - A GeometryEffect that can be converted to a string type. - - - - - Converts a string to a geometry effect. The fallback value is null. - - - - - Converts a geometry effect into a string. The fallback value is null. - - - - - Specifies the reason of being called. - - - - - Geometry has been invalidated because a property has been changed. - - - - - Geometry has been invalidated because a property is being animated. - - - - - Geometry has been invalidated because a child has been invalidated. - - - - - Geometry has been invalidated because a parent has been invalidated. - - - - - Geometry has been invalidated because a new template has been applied. - - - - - Provides helper extension methods to work with IGeometrySource and parameters. - - - - - Specifies the arrow head type. - - - - - No arrow head. - - - - - A triangle arrow head. - - - - - A stealth triangle arrow head. - - - - - An open triangle arrow head. - - - - - An oval arrow head. - - - - - Specifies the corner location. - - - - - On the top left of the bounding box. - - - - - On the top right of the bounding box. - - - - - On the bottom right of the bounding box. - - - - - On the bottom left of the bounding box. - - - - - Polygon recognizes Stretch.None as the same as Stretch.Fill. - - - - - A geometry effect that transforms any geometry into a Sketch style as in SketchFlow. - - - - - Makes a deep copy of the geometry effect. - - A clone of the current instance of the geometry effect. - - - - Tests if the given geometry effect is equivalent to the current instance. - - A geometry effect to compare with. - Returns true when two effects render with the same appearance. - - - - Updating cachedGeometry based on the given input geometry. - - An input geometry. - Returns true when anything on cachedGeometry has been updated. - - - - Use the same random seed on creation to keep visual flickering to a minimum. - - - - - Iterates all simple segments in given path figure including the closing chord. - - - - - Renders an arc shape supporting Arc, Ring, and Pie mode controlled by ArcThickness. - - - - - Platform-neutral implementation of Shape deriving from WPF:Shape or SL:Path. - - - Provides the WPF implementation of Shape that derives from the platform Shape. - - - - - Extends how the shape is drawn with creating geometry source. - - - - - Invalidates the geometry for a . After the invalidation, the will recompute the geometry, which will occur asynchronously. - - - - Provides the behavior for the Measure portion of Silverlight layout pass. Classes can override this method to define their own Measure pass behavior. - The size that this object determines it requires during layout, based on its calculations of child object allotted sizes, or possibly on other considerations such as fixed container size. - The available size that this object can provide to child objects. Infinity () can be specified as a value to indicate that the object will size to whatever content is available. - - In WPF, measure override works from Shape.DefiningGeometry which is not always as expected - see bug 99497 for details where WPF is not having correct measure by default. - - In Silverlight, measure override on Path does not work the same as primitive shape works. - - We should return the smallest size this shape can correctly render without clipping. - By default a shape can render as small as a dot, therefore returning the strokethickness. - - - - Provides the behavior for the Arrange portion of Silverlight layout pass. Classes can override this method to define their own Arrange pass behavior. - The actual size used once the element is arranged in layout. - The final area within the parent that this object should use to arrange itself and its children. - will recompute the Geometry when it's invalidated and update the RenderedGeometry and GeometryMargin. - - - - Occurs when RenderedGeometry is changed. - - - - - Gets the margin between logical bounds and actual geometry bounds. - This can be either positive (as in ) or negative (as in ). - - - - - Gets or sets the start angle. - - The start angle in degrees. Zero degrees is pointing up. - - - - Gets or sets the end angle. - - The end angle in degrees. Zero degrees is pointing up. - - - - Gets or sets the arc thickness. - - The arc thickness in pixels or percentage depending on "ArcThicknessUnit". - - - - Gets or sets the arc thickness unit. - - The arc thickness unit in pixels or percentage. - - - - Renders a block arrow shape that supports resizable arrow head and body. - - - - - Gets or sets the orientation. - - The orientation where the arrow is pointing to. - - - - Gets or sets the arrow head angle. - - The arrow head angle in degrees. - - - - Gets or sets the size of the arrow body. - - The size of the arrow body in pixels. - - - - Renders a regular polygon shape or corresponding star shape with variable number of points. - - - - - Gets or sets the number of points of the . - - - - - Gets or sets the the distance between the center and the innermost point. - - The distance between the center and the innermost point. - - - diff --git a/SCADA/dll/Microsoft.Expression.Controls.dll b/SCADA/dll/Microsoft.Expression.Controls.dll new file mode 100644 index 0000000..48e2331 Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Controls.dll differ diff --git a/SCADA/dll/Microsoft.Expression.Drawing.dll b/SCADA/dll/Microsoft.Expression.Drawing.dll new file mode 100644 index 0000000..d2a5f7b Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Drawing.dll differ diff --git a/SCADA/dll/Microsoft.Expression.Effects.dll b/SCADA/dll/Microsoft.Expression.Effects.dll new file mode 100644 index 0000000..c2b722f Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Effects.dll differ diff --git a/SCADA/dll/Microsoft.Expression.Interactions.dll b/SCADA/dll/Microsoft.Expression.Interactions.dll new file mode 100644 index 0000000..979c965 Binary files /dev/null and b/SCADA/dll/Microsoft.Expression.Interactions.dll differ diff --git a/SCADA/dll/System.Windows.Interactivity.dll b/SCADA/dll/System.Windows.Interactivity.dll new file mode 100644 index 0000000..0419e95 Binary files /dev/null and b/SCADA/dll/System.Windows.Interactivity.dll differ