审查修改
This commit is contained in:
@@ -1 +0,0 @@
|
||||
[]
|
||||
@@ -1 +0,0 @@
|
||||
False
|
||||
@@ -1 +0,0 @@
|
||||
a72eaac3-7110-48bb-bc6c-159ffe62ed7f
|
||||
@@ -1 +0,0 @@
|
||||
False
|
||||
@@ -1 +0,0 @@
|
||||
fd3d99f4-a3ef-4ed8-b7b7-3493e2b14b38
|
||||
@@ -1 +0,0 @@
|
||||
847d0066-d303-4e8e-9b9c-db834a0d74be
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACnRUXW/jNhD8KwJfKyr8lES95ewcGgQ5B2ejLfrGj1XCRqYMikoaBP7vB8pOz8GhL4Kw4HBmZ2f5joLeA+rQ9eFw8wIhTahEyS8lRliNicC03pG2k6KToqo5J03b/I1K5O/gDXWoEdZSqwBzqAELRyQ2vLfYOVCUUEeYFPlO/Tih7h1pXzl48RaqcfoD4uTHgDr0pw9ufM3c2ld2GGdXxXGA2zAlHWwWs77Z3u02D3glKFltvpxOTjDlCyrvUIcs9LVRjmLrbI2FpgYbyTh23BmqW9pYsCeYDwli0EM1ueefGtyYAiTbsYqximClGnQskdNJZ91GT7B7O2Qpi0/rXC+X8vLbvaMXiKhj5Yejp/uu7OCv9pOZ/eCuli8q0SGOB4jJw2LJ0uUw6OTHUJw5VoOHkFCJvmTIdrYWpgl1aBdn+KjehEcf4GvUe3gd4/O3E2317WaHSvQQx3/ApgednlCHuBS24ZIyKwyzvOnbWnIhlWha2rfagLFSNLXWIDhAD5S0wtK2B6mAgDWoRJtt8TDo1I9x/2lg2+vVTdBmgDyDr3qY/tO30/EREuoQcEOsEEy1vaWWCqV70wvbKlX3RjHBGg2CgqiFMooLq4WSSlHTtJKZVkpUonttn3yA4naNOtSKxhFS19hxwrGAFrAyymJnWi40cY0wWcRqDMmHeZyn4jYkeIyLwxcqN9viOtonn8CmOWbz/qpzVh/i6Gabip/ZUBWpOGUZM6fDnIrv4HwEm5auz0PZbC8QlFSkYjUjJCuZY4SQijyN4nc95ZHoVhlJQBrtGKvrXjWicdBwBgqklUxx21LRM6s4UZwYKaXMu8Z6cARIjhHkIBZL+JVltnWKYWKUw8Jxjg3tGeaaSi0ALCj4ZGOxGTKud9wp1QusOfRYgGuxaUyDuVAcmKHC8PZz3i5abCoqKsGrhhB6Yds5wiID7yAGGC58ufc2jtPYp+IcoeKTUxdEaz8dBv32K99vTBMwTWv4B2D1BPb51xR+n0N+yorbXHz1Af+7jHc92meIRY6H9iEv7RlxLNEe9DRH2C8v4bKbAeLCsZ5P+bkN934Y/AR2DG5CHZNCkIpLJs5i/v9gLUTVEF4fj8fjDwAAAP//AwB8oHo1eQUAAA==
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACnSU3W7jNhCFX0XgtahQJCWZutu1d9EgTRNs3G3RO/6MHCI0aZBUtkHgdy8oexsbRe+EEefM4TdHekde7gGN6NPh8OUVfE6oRtkuJUpojwnHbb9t25F1I2ENZW1PBfkL1cjewRsa0cC1brUAzKAHzA3psGKTxsaAaElrCO140ZS7hMZ3JG1j4NVqaEL6DjHZ4NGI/rDehB9ltrSNdmE2TQwObn3K0utiZvPl6W778IjXvCXrh8+nkwlSEWisQSNaETpA23cYesYw573GK7lq8dSxrtfKsKlXpzbrM0QvXZPMy4cHE7KHrEfaUNoQLMSAjjUyMsviW8kE27dDsbJw2pR6vZSXx/EdvUJEI61/Ej3p3Whnb/ZJzdaZGxd2O+t36+Anu5ujzGVyjQ4xHCBmCwuhz9bL+PZr2O2KHvoqXQJUoy3EvfXSnV5sYJKzy09hjgueZF5QjdbBp+DgdOTs9iCjdA7c/0mgEck5B1SjhbZzi6vq3L12Fnz+T++Fr4en6tHJPIW4v1rkvdTP1kN1uym74YMhpO+xYYRhDivAQgmNjVoxLokZuCpa6+Cz9XOYU3XrM+zOhK6GfYr62WbQeY7F4J99SddjDGbWufrYpmhIw1paeuZ8mHP1DYyNoDOUrGzjfJb76GhJQxraU0JQjb7anxgvpq/nGMHn6lHm5+oXmZ4Lu5VQHYFOSUNp309i4IOBgVEQ0OmOCqZXLZ+oFowIRlTXdV35ZOgEhgAxqEZQ8lQtGebaiFZQgrkCiflAeqxgEFgI1XZkkEa05Ipt9eBK32SYEWLiWDKYMAezwmpQA2ZcMKCq5YqtLjCdl8tL7TJuvycw51j8dgrxv1e/TNZ3iCokm8vnf2+93cuSrqsjH4zvIHpwF5zvrY4hhSlX57BUV+S/zb78f6rbcq8f1uO/lw1vgn6BWJWESOsv1nI8Ho//AAAA//8DAGqaeb3GBAAA
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAAClSUW2/cNhCF/4rAZ1Hm/aK3xE5RwwjWiI22yBsvo5iIllpQ1KaBsf+9oLyFkzdhwBkefudoXlF2R0Aj+nA6fTpDrivqUU17iRGmMBGYqmdKRy5HwgfKiTLcfkU9Sg/wE41IixBosIA5KMAiEok9nwKOESwlNBImRZvpvq1ofEUuDRHOKcCwrH9BWdOS0Yj+TjkuP9rdLg1hXrY4lGWG+7xWl0MTc/fp6eH58IhvBSW3h49vJ1dY24AhRTQiQ5gGqiQGxTkWQgVsnKF4klyq4COflH9rS7lCyW4e1vj9XUNcaoYaRjYwNhBsrUaXHkVXXdPt3QrPP09Nys7prtX7vbx/jq/oDAWNrP+f6Nu8mzCnm3XzM5xhPrmyQrkJy/HockQ9OpXlBKUm2NmcofhlTbVhDUE7YyiNxmkhdTRcMq4jJxAN0TLaaJ0SamJByil6Y7WYRGRURAVCeI16tNObZ1fTkrur9ts5Qa6oR4en7nF2dVrK8Tf+TQMaESeSK61BcM6dVZ4RiFoFpZgPjujJM6ABiLRCW6oJ5ZYRy6XSRkdHbEA9+uzCS8rQ3d81c4SOhCiFIyccCzCArbcBR2+4cCRq4QH16HbJNeVt2dbuPlf4VnbxaER/uHltBw5P3YcSXlKFULfSXvSPavF6LEvcQu3e7bQDGThlrWerp612XyCmAqFCC8tz2a7j3jsoGcjAFCOkKdlKgVy7R1dfuj/d+oJG5Iz1koD0LjKm1GS10BE0Z2BBBsksD4aKiQXLieXESyll+z3YBJEAaYZDy06359VGNTnOPPbaKSwYJdg7z7GYjIYp+jCJlrB3jN1hbn1T5NHaSWDHYcICosFee425sByYp8Jz8wuRq/Gi1R6gZJh/efLnFMqyLlPtrgnofoPwZcttF3T37d4fKeN/d9h3S/gOpWtmuZRb6q/+XHp0BLduBY77Khlf0WOLfPe8bxQuBkqt6tFTdaVup2tZqsFwfblcLv8BAAD//wMAZI9vIo4EAAA=
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACqxUyW7dOBD8FYHnR4X7olvGTjBGJrARexbMjexuxkJk6UHicyYI/O8BZXvs3HMTGuzq6qpqfWdzuiM2sLfH47t7muvGDqyOe0kJ5bgwXLobKQdtB6F756SxMvzLDmz8QN/YwLwBkBCJa3LEDQrLsy7AESlKIVEoaxpm+ryx4TtLY490PwL1y/YXrdu4zGxgf48zLl/b7DT2MC0n7Ndloot5q2mGRub83fWHm8srfmakOLv87fHlRlsD6EdkAwtCeZLOcnJac2Mc8JCC5MVq6yCjLi4/to1zpXVOU7/hlxcOuNSZKgyqV6oXPEbPHg4MU02Nd04b3Xw7Niq7TuetftjL++fwnd3TygZ1eFb0Ee8NTOObuy2fxgnf1LR+plrWdEdfl/UL3aeJHdhxXY601pF2gfadpynVcZm7p4ln00hzZQd2swO8fwZ4IU8aEkGMEEu2irLRQZZSlE2CSkrZeRskKoeQo49Bh2SAtNYhQSLEJszldXc1pVqW9e4nR65pKmfLXNM4U9PZkFU62UQ2G6cdeBuFzD6WVDLqKBUZieBj8EYaciFkEdFko10pSmXNDuxjgttxpu7ivPlmPArhHEctNDcUiMccgWMO2iSB3mRiB9YojPNpOW3dxVzp87orxAb2Pk1be/DnRm/XOpYEdbs81eOpsoGVrFUUQigVAGxSBpQzYL3UESnkEqwpEFwBGXKRIEzKTiaVLWSTo5KPurxd4XasBPW0Njv+cS3RV+uCJ6jdiwmxF72WqvXs87tPhONKUHfdbtZTo3l5/apDil70yikh2IH9z/4q1ds/FtgXfErAL9jj7LSuNNeuoXe/p+2WDSyFmK0gmxMq5VyJ3ngkrxVFsmBV1BCkKQqiFlGLbK217eBVIRQkkB0YtWvo9guMWlEQCjn5VLiJJHkyJnBFUcWIVpSofnK/u5xaX0GNMRbDk6bCDWHg2WfPtYmaVJYm6/BK8CdJTKt9Os3tb3WBNNexjO0Cf4nnp+bf86AcEmEMFpSKRRnKxQBSRAAhlEDySipLXkdrhDVkvBdCCxmhlIAI7MA+0DrT9Mr4jyOsy7aU2j0dWvdTFJ7W6i6aPF/Hmf+3R+58gS+0ds/X2JZ9nf7j8XbZWuqxUAgiCrCEPoEqWlkviygQlCqYDAZAFWQBL3UAD+gwO+uKI4UiSPbw8PDwAwAA//8DACJANSYbBgAA
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAAClSUW2/cNhCF/4rAZ1HmnaLeEjtFDSPYRbxoi7zxMoqJaCmBojYNjP3vBeUtnLwJA87wzHcO9YqSPQMa0Idl+XSBVFbUohL3EiNMYSIwVSdKBy4HwjsiJOVcfEUtik/wEw1IC++pN4A5KMAiEIkdHz0OAQwlNBAmRZ1pv61oeEU2dgEu0UM3r39BXuOc0ID+jinMP+rdNnZ+mrfQ5XmCx7QWm3wV8/Dp+el0OOJ7Qcn94ePbyRXWOqCLAQ2oJ0wDVRKD4hwLoTzubU/xKLlU3gU+KvfWFlOBnOzUreH7u4YwlwTFD6xjrCPYGI2uLQq22Krb2RVOP5cqZef0UOvtXt4/h1d0gYwG1v5P9G3enZ/iXZmXCS4wLTavkO/8fD7bFFCLljwvkEuEnc2+7jTZEufU3C67nyKkglp0eG6Oky3jnM+/AbtAdmhAnEiutAbBObdGOUYgaOWVYs5bokfHgHog0ghtqCaUG0YMl0r3OlhiPGrRZ+tfYoLm8aHSFDoQohQOnHAsoAdsnPE4uJ4LS4IWDlCL7udUYtrmbW0eU4FveRePBvSHndZ64PDcfMj+JRbwZct1o39UzcMxz2HzpXnnbzrSccpqz1aWrTRfIMQMvkB195S327j3Dko60jHFCKlKtpwhleZoy0vzp11f0IBsb5wkIJ0NjCk1Gi10AM0ZGJBeMsN9T8XIvOHEcOKklLLmmY0QCJDqEFSzmz1gxErupFEYlHNYkIrEsIA1k0oHKXrSV4nvGJvDVPvGwIMxo8CWw4gFhB477TTmwnBgjgrH+1+I3IwXtfYEOcH0y8qfo8/zOo+luSWg+Q3Cly3Vx9s81nt/xIT/3WE/zP475KaaZWOqMb35c23RGey6ZTjvb394Rcea0ea0/wK46Cg1qkXPxeayLbeyVF3P9fV6vf4HAAD//wMAbVOITj8EAAA=
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACnRUXW/jNhD8KwJfayr8lEi95ewcGgQ5B+egLfrGj1XCRqYMikoaBP7vBypOz8GhL4Kw4HBnZ2b5hqLZA+rQ5eFw9QwxT2iFclhKjLAGE4Fpc09px2VHVC2JIlLRv9EKhRt4RR1qhXPUacAcGsDCE4kt7x32HjQl1BMmRbnTPEyoe0Mm1B6eg4N6nP6ANIUxog79GaIfX0pvE2o3jLOv0zjAdZyyia6Q2Vztbu63d3gtKFlvv7yfnGAqF9TBow4pwlqgjcTQcI6FaBxWRlHcSy4bZz3vG/sOCzFDimaoJ//0k4Mfc4TsOlYzVhOsdYuOK+RNNoW3NRPcvx4KlUWnTamvlvLy272hZ0ioY6sPRd/vu3BDuNhPdg6Dv1i+aIUOaTxAygEWSZYph8HkMMbq1GM9BIgZrdCXAtnNzsE0oQ7dpxk+qlfxIUT4msweXsb09O29bf3t6h6t0F0a/wGX70x+RB3iUriWS8qcsMzxtleN5EJq0SraK2PBOinaxhgQHKAHSpRwVPUgNRBwRbftrrobTO7HtP9k2O5yfRWNHaB48NUM03/87k16gIw6BNwSJwTTqnfUUaFNb3vhlNZNbzUTrDUgKIhGaKu5cEZoqTW1rZLMKinRCt0a9xgiVNeb4rRoPSFNgz0nHAtQgLXVDnuruDDEt8IWEusx5hDncZ6q65jhIS0Kn7Hc7qrL5B5DBpfnVMT7qylZvUujn12ufmZD16TmlBXMnA9zrr6DDwlcXqY+mbLdnSEoqUnNGkZIYTKnBDFXxY3qdzMVS4zSVhKQ1njGmqbXrWg9tJyBBukk09wpKnrmNCeaEyullGXXWA+eACkxghLEagm/tKKRlPS46XuDBVcSq9ZZTLhUUjopDYNPMlbboeB6z73WvcCGQ48FeIVta1vMhebALBWWq895OxuxramoBa9bQuiZbKcIiwK8gRRhONPlNrg0TmOfq1OEqk9KnTXahOkwmNdf+/3GDAHbKss/AOtHcE+/pvD7HMtTVl2X4kuI+N/F3s3oniBVJR4mxLK0J8RxhfZgpjnBfnkJl92MkJYem/k9P9fxNgxDmMCN0U+ok0yLmkt1ovK/x0TL61ZQeTwejz8AAAD//wMAZk65p3YFAAA=
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACnRUXW/jNhD8KwJfKyoUP0RRbzk7hwZBzsHZaIu+8WOVsJEpg6KSBoH/+4Gy03Nw6IsgLDic2dlZvqOg94A6dH043LxASBMqUfJLiRLaYMJx3exI24m6E7KiLZOKNH+jEvk7eEMdktza2irADBrA3BGBDestdg5UTWpHqOD5Tv04oe4daV85ePEWqnH6A+Lkx4A69KcPbnzN3NpXdhhnV8VxgNswJR1sFrO+2d7tNg94xWuy2nw5nZxgyhdU3qEOaaUpl5xiobjEvHYMKykNFrwlTBNLiexPMB8SxKCHanLPPzW4MQVItqMVpRXBSkl0LJHTSWfdRk+weztkKYtP61wvl/Ly272jF4ioo+WHo6f7ruzgr/aTmf3grpYvKtEhjgeIycNiydLlMOjkx1CcOVaDh5BQib5kyHa2FqYJdWgXZ/io3oRHH+Br1Ht4HePztxNt9e1mh0r0EMd/wKYHnZ5Qh5jgVjJRU8sNtUz2bSMYz0a1dd9qA8YKLhutgTOAHmrSclu3PQgFBKxBJdpsi4dBp36M+08D216vboI2A+QZfNXD9J++nY6PkFCHgBliOaeq7W1ta650b3puW6Wa3ijKqdTAa+ANV0YxbjVXQqnayFZQ0wqBSnSv7ZMPUNyuUYdaLh0hTYMdIwxzaAEroyx2pmVcEye5ySJWY0g+zOM8FbchwWNcHL5QudkW19E++QQ2zTGb91eTs/oQRzfbVPzMhqpIxWqaMXM6zKn4Ds5HsGnp+jyUzfYCUZOKVLShhGQlc4wQUpGnUfyupzwS3SojCAijHaVN0yvJpQPJKCgQVlDFbFvznlrFiGLECCFE3jXagyNAcowgB7E4hV8Qoqzrse1bgrmTGitdS+x6Q4AwAb2Tn2wsNkPG9Y45pXqONYMec3AtNtJIzLhiQE3NDWs/5+2iRVnVvOKskoTUF7adI8wz8A5igOHCl3tv4ziNfSrOESo+OXVBtPbTYdBvv/L9RjUBI1vDPgCrJ7DPv6bw+xzyU1bc5uKrD/jfZbzr0T5DLHI8tA95ac+IY4n2oKc5wn55CZfdDBAXjvV8ys9tuPfD4CewY3AT6iRnvGobwc9a/vdc0/JKKSGOx+PxBwAAAP//AwDTkE/cdwUAAA==
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACnRUXW/jNhD8KwJfayr8FEm95ewcGgQ5B+egLfrGj1XCRqYMiUoaBP7vBypOz8GhL4Kw4HBmZ2f5hpLdA2rR5eFw9QwpT2iFclxKjLAGE4Fpc09JS3RLmppKzaQUf6MVijfwilqkhPfUG8AcGsAiEIkd7zwOAQwlNBAmRbnTPkyofUM21gGeo4d6mP6AcYpDQi36M6YwvBRuG2vfD3Oox6GH6zRlm3wRs7na3dxv7/BaULLefnk/OcFULqhjQC0iQDhVQWPdCMBCNxa7zirMnZKcNkEF6N5hMWUYk+3rKTz91BCGnCD7ltWM1QQbo9BxhYLNtuh2doL710ORsvi0KfXVUl5+2zf0DCNq2erD0ff7LnwfL/aTm2MfLpYvWqHDOBxgzBEWS5Yu+97mOKTqxLHuI6SMVuhLgexm72GaUIvuxxk+qlfpISb4Oto9vAzj07d32vrb1T1aobtx+Ad8vrP5EbWIS+EVl5R54ZjnqtON5EIaoTTttHXgvBSqsRYEB+iAEi081R1IAwS8Qyu03VV3vc3dMO4/DWx3ub5K1vVQZvDV9tN/+u7t+AAZtQi4I14IZnTnqafC2M51wmtjms4ZJpiyICiIRhhnuPBWGGkMdUpL5rSUaIVurX+MCarrDWqRFioQ0jQ4cMKxAA3YOONxcJoLS4ISrohYDynHNA/zVF2nDA/j4vCZyu2uuhz9Y8zg8zwW8/5qSlbvxiHMPlc/s2FqUnPKCmbOhzlX3yHEEXxeuj4NZbs7Q1BSk5o1jJCiZB5HSLkq06h+t1MZidXGSQLS2cBY03RGCRVAcQYGpJfMcK+p6Jg3nBhOnJRSll1jHQQCpMQIShCrJfxUaBANF1g02mMhHcdGeoONF8KRrtHWqU82Vtu+4LrAgzGdwJZDhwUEjZ1yCnNhODBHheP6c97OWlQ1FbXgtSKEntl2irAowBsYE/RnvtxGPw7T0OXqFKHqk1NnRJs4HXr7+ivfb8wScEo7/gFYP4J/+jWF3+dUnrLquhRfYsL/LuPdDP4JxqrEw8ZUlvaEOK7QHuw0j7BfXsJlNxOMC8dmfs/PdbqNfR8n8EMKE2qloqxm2qiTlv89ZyivGRPseDwefwAAAP//AwCjQ6DOdwUAAA==
|
||||
@@ -1,5 +0,0 @@
|
||||
https://dc.services.visualstudio.com/v2/track
|
||||
Content-Type:application/x-json-stream
|
||||
Content-Encoding:gzip
|
||||
|
||||
H4sIAAAAAAAACpRTy27bMBD8FWHPpsKnJOqW2ikaBIGDxmiL3ihylRBRKIOi8kDgfy8ou0jSWy+EsOLOzswO3yCYR4QWzvf7iycMaYIVJL+UOOUVoZKwakebllWtYCXjklNR/YYV+Ct8hRZqaS2zGonACol0VJFO9JY4h5pR5ihXMmOauwnaNzC+dPjkLZbj9APj5McALfz0wY3PebbxpR3G2ZVxHPAyTMkEm8lsLm6vdtsbspaMrrdfjjcnnDJA6R20IHprUClKhHaWyL5nRDvKiOt6YepKO9OLY5sPCWMwQzm5h3cObkwBk215yUVJCddwWIEzyWTanZlw97rPTBabNrm+WsrLZ/sGTxih5au/hh7hzuzgzx6nbvaDOzueyUwPWek+jnuMyePiyyJ1GEzyYyhOk9aDx5BgBdvb4mYwqR/j4yezbo/6L/9D/i5Pv3hBOyd063EOCVqQ+c+1sfc+YHG5gRYaWTtKq4o4QQWR2CDRnbbEdY2QhrpadggrWI8h+TCP81RchoR3ceEPLXw1w5QvbG+L82jvfUKb5phF/apyHG7i6Gabinf7GS1pySnLTXPaz6n4js5HtAmzvF2cT3j/tlSc0kxljhFDKm5Mui++mekeWjCN7hRF1RnHeVX1upa1w1pw1Kis4lrYhsmeWy2oFrRTSqmcZ96jo0gdrADztoslYHWjBapekarrHJGVZkQ3jBLWK+2sUbpjzScfi+2Q+0zN0RgrSM0YJbLpOtLZyhKmdN9jxdHV/QdLTsuXGesKY8Dhg+Rrb+M4jX0qTikoPpnwfQ758RZLIp59IC+L25vRPmAs8raMDzmnpwUdDofDHwAAAP//AwDdeJ7GAwQAAA==
|
||||
@@ -1,213 +0,0 @@
|
||||
# ASTM D1894-24 工控屏软件实现方案
|
||||
|
||||
## 1. 目标边界
|
||||
|
||||
本方案面向塑料薄膜/片材摩擦系数测试设备的人机界面与控制软件,聚焦 ASTM D1894-24 涉及的软件职责:
|
||||
|
||||
- 维护测试配方与样品信息。
|
||||
- 记录试验模式、接触材料、方向、速度、行程、滑块质量、环境条件与台面温度。
|
||||
- 在测试过程中采集力值并计算静摩擦系数与动摩擦系数。
|
||||
- 输出批次级判定、原始曲线、试验留痕、校准点检与设备事件。
|
||||
|
||||
不在本轮原型内的内容:
|
||||
|
||||
- PLC、伺服、温控器、力值采集卡的真实驱动。
|
||||
- ASTM 原文逐条合规审查。
|
||||
- 报表打印、条码、MES、LIMS、用户权限、电子签名。
|
||||
|
||||
## 2. 标准要求到软件需求的映射
|
||||
|
||||
基于 ASTM D1894-24 官方题名、公开范围摘要与公开行业说明,可稳定抽取出以下软件需求:
|
||||
|
||||
1. 软件必须区分静摩擦与动摩擦。
|
||||
静摩擦来自起滑峰值,动摩擦来自稳定滑动段平均值。
|
||||
|
||||
2. 软件必须允许两类机构形式。
|
||||
标准允许滑块静止/台面移动,或滑块移动/台面静止;软件设计应抽象为统一的“相对运动”模型,而不是把算法写死到单一机构上。
|
||||
|
||||
3. 软件必须保留试验条件。
|
||||
包括样品组合、环境温湿度、速度、行程、滑块质量、方向、台面温度。
|
||||
|
||||
4. 软件必须支持非 23°C 测试。
|
||||
标准公开摘要说明非 23°C 测试可只对台面加热,滑块保持环境温度;因此软件界面必须单独显示台面温度,而不是只给一个“箱体温度”。
|
||||
|
||||
5. 软件必须输出可追溯记录。
|
||||
至少保留时间戳、批次、轮次、参数、结果、判定、事件与校准状态。
|
||||
|
||||
## 3. 推荐软件架构
|
||||
|
||||
### 3.1 分层
|
||||
|
||||
- `View`
|
||||
WPF 工控屏页面,负责展示状态、配方、曲线、结果与事件。
|
||||
- `ViewModel`
|
||||
状态机、命令、试验流程、实时计算、联锁校验。
|
||||
- `Service`
|
||||
与 PLC、DAQ、温控器、条码枪、数据库、MES 的适配层。
|
||||
- `Model`
|
||||
配方、试验记录、采样点、校准项、系统事件。
|
||||
|
||||
### 3.2 设备抽象接口
|
||||
|
||||
正式量产版本建议补齐以下接口:
|
||||
|
||||
- `IMotionController`
|
||||
负责速度设定、位置回零、起停、状态读取。
|
||||
- `ILoadCellReader`
|
||||
负责力值零点、实时采样、标定系数、超量程报警。
|
||||
- `ITemperatureController`
|
||||
负责台面温度设定与反馈。
|
||||
- `IEnvironmentSensor`
|
||||
负责环境温湿度采样。
|
||||
- `IRecipeRepository`
|
||||
负责配方、记录、校准结果的落库。
|
||||
|
||||
## 4. 工控屏页面规划
|
||||
|
||||
### 4.1 主运行页
|
||||
|
||||
- 左侧为配方与环境输入区。
|
||||
- 顶部为运行按钮、当前批次、轮次与进度。
|
||||
- 中部为力值曲线与实时数值卡片。
|
||||
- 右侧为当前静摩擦/动摩擦结果与校准点检。
|
||||
- 底部为试验记录表和系统事件表。
|
||||
|
||||
### 4.2 校准页
|
||||
|
||||
量产版建议独立页面,包含:
|
||||
|
||||
- 力值零点、量程、线性校准。
|
||||
- 位移回零与行程限位校验。
|
||||
- 速度闭环误差校验。
|
||||
- 台面温度偏差与稳态时间校验。
|
||||
- 校准证书编号、执行人、复核人、到期提醒。
|
||||
|
||||
### 4.3 报表页
|
||||
|
||||
- 单次报告。
|
||||
- 批次平均报告。
|
||||
- 原始采样导出 CSV。
|
||||
- PDF 报告打印。
|
||||
|
||||
## 5. 控制流程
|
||||
|
||||
推荐状态机:
|
||||
|
||||
1. `Idle`
|
||||
待机,可装样、改参数、做点检。
|
||||
2. `Interlock`
|
||||
参数不合法、校准缺失、急停、门禁、超温、过载时进入。
|
||||
3. `Conditioning`
|
||||
等待环境/台面温度到位及预调时间结束。
|
||||
4. `Running`
|
||||
采集位移、速度、力值、温湿度。
|
||||
5. `Paused`
|
||||
人工暂停或异常暂挂。
|
||||
6. `Completed`
|
||||
保存记录并生成判定。
|
||||
7. `Aborted`
|
||||
人工停止或异常终止。
|
||||
|
||||
本轮原型已实现 `Idle / Running / Paused / Interlock` 的软件态。
|
||||
|
||||
## 6. 算法建议
|
||||
|
||||
### 6.1 实时采样
|
||||
|
||||
- 采样周期建议 `10-20 ms`。
|
||||
- 力值数据需要时间戳与位移轴同步。
|
||||
- 原始采样与滤波采样分开保存,避免后期无法复核。
|
||||
|
||||
### 6.2 静摩擦系数
|
||||
|
||||
- 在起滑窗口内提取最大力值 `Fmax`。
|
||||
- `μs = Fmax / N`
|
||||
- `N` 为法向载荷,工程实现中通常由滑块重力换算。
|
||||
|
||||
### 6.3 动摩擦系数
|
||||
|
||||
- 排除起滑瞬态后,在稳定滑动区取平均力 `Favg`。
|
||||
- `μk = Favg / N`
|
||||
- 稳定段识别建议支持三种策略:
|
||||
1. 固定百分比窗口。
|
||||
2. 固定位移窗口。
|
||||
3. 自动稳定段识别。
|
||||
|
||||
本轮原型使用固定百分比窗口,便于先打通主流程。
|
||||
|
||||
## 7. 数据落库建议
|
||||
|
||||
### 7.1 主表 `test_run`
|
||||
|
||||
- `id`
|
||||
- `batch_no`
|
||||
- `product_code`
|
||||
- `test_mode`
|
||||
- `counterface`
|
||||
- `direction`
|
||||
- `sled_mass_g`
|
||||
- `speed_mm_min`
|
||||
- `travel_mm`
|
||||
- `ambient_temp_c`
|
||||
- `humidity_rh`
|
||||
- `plate_temp_c`
|
||||
- `mu_static`
|
||||
- `mu_kinetic`
|
||||
- `peak_force_n`
|
||||
- `avg_force_n`
|
||||
- `judgement`
|
||||
- `operator_id`
|
||||
- `started_at`
|
||||
- `completed_at`
|
||||
|
||||
### 7.2 子表 `test_sample_point`
|
||||
|
||||
- `run_id`
|
||||
- `sequence_no`
|
||||
- `elapsed_ms`
|
||||
- `displacement_mm`
|
||||
- `force_n`
|
||||
- `speed_mm_min`
|
||||
- `plate_temp_c`
|
||||
- `humidity_rh`
|
||||
|
||||
### 7.3 事件表 `device_event`
|
||||
|
||||
- `timestamp`
|
||||
- `level`
|
||||
- `code`
|
||||
- `message`
|
||||
- `run_id`
|
||||
|
||||
## 8. 联锁与报警
|
||||
|
||||
最低需要实现:
|
||||
|
||||
- 批次号为空禁止启动。
|
||||
- 滑块质量、速度、行程非法禁止启动。
|
||||
- 温度未到位禁止启动。
|
||||
- 校准过期禁止启动。
|
||||
- 力值过载立即停机。
|
||||
- 行程超限立即停机。
|
||||
- 通讯中断立即报警并终止本次试验。
|
||||
|
||||
本轮原型先实现了参数联锁,真实设备联锁需在 PLC 和上位机双侧同时做。
|
||||
|
||||
## 9. 与现有原型代码的对应关系
|
||||
|
||||
- `MainWindow.xaml`
|
||||
主工控屏界面。
|
||||
- `ViewModels/MainViewModel.cs`
|
||||
状态机、命令、计算与记录汇总。
|
||||
- `Services/FrictionTestSimulator.cs`
|
||||
仿真引擎,后续可替换成真实设备适配层。
|
||||
- `Models/*.cs`
|
||||
配方、记录、校准项、系统事件。
|
||||
|
||||
## 10. 下一阶段建议
|
||||
|
||||
1. 把 `FrictionTestSimulator` 替换成真实 PLC/DAQ 通讯层。
|
||||
2. 引入 SQLite,保存原始采样和报表元数据。
|
||||
3. 拆分为主运行页、校准页、报表页、系统页。
|
||||
4. 增加用户权限、电子签名、审计追踪。
|
||||
5. 对 ASTM D1894-24 正文逐条做合规矩阵,补齐每个字段和流程的证据链。
|
||||
Reference in New Issue
Block a user