Compare commits
459 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d3edf46c6 | |||
| 50c4d72464 | |||
| 870d525c41 | |||
| 0b0523cb28 | |||
| 34ab4d7adb | |||
| b5d1bc37cf | |||
| fdeb79c7e2 | |||
| cdc7b49387 | |||
| c5cd0b1c92 | |||
| a48ca84178 | |||
| fa9325c504 | |||
| 9a7c40e020 | |||
| 25444bf1a3 | |||
| 7a73cc4b08 | |||
| dc17731a5c | |||
| 32510556d6 | |||
| be747c7e39 | |||
| 7a48f34fb9 | |||
| 1fe26026b6 | |||
| 65ee4154f1 | |||
| 18bc2da627 | |||
| 20a829b50b | |||
| b287da9b95 | |||
| 688420c42b | |||
| 279dfb6bb0 | |||
| e6dcbf11ac | |||
| 5e4fecdc6f | |||
| c55f0eddcd | |||
| 92b9cea7d8 | |||
| 86370282ed | |||
| 6dcffeb72b | |||
| e17d5c25de | |||
| ad589992f3 | |||
| de4dfdcbb0 | |||
| 49e3242f3f | |||
| dafafbca13 | |||
| daf9c93309 | |||
| eedd1bee1f | |||
| 5aa519ea72 | |||
| a2efd0d3f3 | |||
| 62b0a6d481 | |||
| 20013ef3e4 | |||
| 4a4223957d | |||
| bbc5d131ad | |||
| 2741c56a22 | |||
| e12c5e6b62 | |||
| 1329b7d91f | |||
| 062aa0ad27 | |||
| 997f8fdfb4 | |||
| 6134047b61 | |||
| eb4ad92f3e | |||
| f54f96a42f | |||
| 8fcd50d47b | |||
| 23e8767604 | |||
| c11f9028db | |||
| ad196ad788 | |||
| f906a05969 | |||
| 8742cbee18 | |||
| 7ed56b3a68 | |||
| 54685853bb | |||
| fa060cb839 | |||
| 91872776f0 | |||
| 77d8a6dbac | |||
| d030f09709 | |||
| 8858602f9c | |||
| 3574dffaa6 | |||
| ed74fb9b37 | |||
| c0fdf9668b | |||
| 97c4ce8c26 | |||
| 12dc55ef8c | |||
| cc68908084 | |||
| 99279824ef | |||
| 36c5ff8def | |||
| d32f00bde6 | |||
| 8eed4ec2eb | |||
| c249d7a9be | |||
| 0b8f0adb96 | |||
| aae6aa8c09 | |||
| 3d9458002b | |||
| b84ca57735 | |||
| a6cdf864ae | |||
| 125532639a | |||
| fac2b5fa8d | |||
| 928c0d20f9 | |||
| d74f886a06 | |||
| 685c77e721 | |||
| 808e3f1223 | |||
| 3c2bc0a48e | |||
| ef98320bdc | |||
| 9094d3eb50 | |||
| a4c704fad6 | |||
| 7915adfc3c | |||
| be7f268d2f | |||
| 5064d30221 | |||
| f0ceb42b92 | |||
| a135ad689a | |||
| 29020bb948 | |||
| e0bd76d0b7 | |||
| 3a18b0e5d3 | |||
| 87703058ac | |||
| 6776a4894d | |||
| cd478f16e4 | |||
| 695d6841f0 | |||
| 6f81be6ebe | |||
| 41563cc332 | |||
| 2493f0117e | |||
| 8370141583 | |||
| 7fe7539fe8 | |||
| 8f7c780edd | |||
| 040eed1fcd | |||
| f5f41e4c65 | |||
| 2043417668 | |||
| 579fa79bb6 | |||
| d482a7551b | |||
| d3a9de2a3b | |||
| 9347ed95b7 | |||
| 0be93533d7 | |||
| 90e03e2160 | |||
| ec6ba38e8b | |||
| 6de2453bb4 | |||
| 935d7879e7 | |||
| 4c907a2474 | |||
| c0306d9644 | |||
| 80e67bb793 | |||
| ebd0921753 | |||
| fa54e5d1e9 | |||
| 55e1961cf2 | |||
| fe82ea006b | |||
| 1f110b009b | |||
| 6fafed419f | |||
| 4c5a61d69f | |||
| cd18c6a9d3 | |||
| 23df0dbc24 | |||
| fbe3f68397 | |||
| 0a1400389f | |||
| ae6767a89d | |||
| d3f48fdcdd | |||
| 903f1a9638 | |||
| 1155cf1680 | |||
| 6f51ff274a | |||
| 4030919f9e | |||
| e56a5daefc | |||
| 6d2ffff97b | |||
| 134aaf31d4 | |||
| 7b76ea602e | |||
| 108cd688cd | |||
| 06eb1a4bc8 | |||
| 08dd11701e | |||
| 2f5eaed707 | |||
| 7d072f9bd6 | |||
| cb72e13724 | |||
| 6e5bf0888f | |||
| 4fa253fd3b | |||
| 169c07fc1a | |||
| fbe619e498 | |||
| e3f9a09063 | |||
| 097de061bf | |||
| 1c623cf512 | |||
| cbaa4bb359 | |||
| 1e5fd252d4 | |||
| d8580afd77 | |||
| ce5869f90a | |||
| dd8793a31d | |||
| 5c17d598bb | |||
| 82a25ae070 | |||
| 614105c35a | |||
| fd6648432f | |||
| 4a17830c07 | |||
| 0b5a49122d | |||
| 407d95e8e3 | |||
| 6032712414 | |||
| 1fb1bba657 | |||
| 75b4337c75 | |||
| 40664d6136 | |||
| 73d5b93c59 | |||
| bb80dc5a38 | |||
| e070a6be6e | |||
| 34779f5a31 | |||
| c80cdb8644 | |||
| 50d0c4a948 | |||
| a5436bb717 | |||
| 2f9dbd8111 | |||
| 8abc6f00c0 | |||
| a282429e3c | |||
| 49c85f347a | |||
| f58068b4f7 | |||
| 11fb2c2355 | |||
| ba3a340815 | |||
| 8a1b28020e | |||
| 00dcc638fc | |||
| cd2f21fe01 | |||
| ebbaa76054 | |||
| 8324bcf297 | |||
| f9de12a971 | |||
| 2f8c6d643a | |||
| b14d506eb2 | |||
| ccf8cd265e | |||
| 82e400b08d | |||
| dd6f280c96 | |||
| ade296ce56 | |||
| 8dd26f73d1 | |||
| a03571793e | |||
| 1d77adc01c | |||
| 73be1bb58b | |||
| a5a76d35c4 | |||
| 782caef28a | |||
| 61a5c50476 | |||
| 9fac539cfd | |||
| d0276438a4 | |||
| 4f947f0b65 | |||
| c7b96e4d78 | |||
| 3a17e13224 | |||
| f28cbfe2ec | |||
| 3efcfef9d8 | |||
| e5961d7685 | |||
| cbfd2fe3c5 | |||
| 01ac4b071e | |||
| 06f85a3e3e | |||
| 2a51a1535d | |||
| d987cef604 | |||
| 5400408355 | |||
| 78c046f117 | |||
| 339c9e1220 | |||
| c3b211fa01 | |||
| eca0787248 | |||
| 0bda8aa748 | |||
| 2f8277924a | |||
| 1862fe641b | |||
| fd0c51a72d | |||
| 4a3dba9399 | |||
| eaff5729dc | |||
| aa2bd2d1a1 | |||
| 6586840f27 | |||
| 8b447ade4a | |||
| 20a864bfb5 | |||
| 819051002e | |||
| d2e0a4eb15 | |||
| c6a108d29a | |||
| 133bec82e4 | |||
| 9aff944b49 | |||
| d51c900173 | |||
| a87b2623e0 | |||
| 6d98d185f7 | |||
| 8743f1f924 | |||
| 0d042b8698 | |||
| e29358c4ef | |||
| 44bb957508 | |||
| 5f7941f479 | |||
| d21efcb78f | |||
| 6d52ccdc9c | |||
| c857cffbe5 | |||
| d71bfe36ba | |||
| b52c2d740f | |||
| 2fd2012dd3 | |||
| d7859a61fa | |||
| 835ba31638 | |||
| 1ea2f3182a | |||
| bdc0ce1aa5 | |||
| 31519c303b | |||
| 0cfbbe069a | |||
| 04f9a8155e | |||
| de8daee8f9 | |||
| 8ccd5fc06b | |||
| d653391253 | |||
| 7ba5090dd3 | |||
| 698fd47177 | |||
| 08c6ca521a | |||
| 8d661f0bda | |||
| a44813c8a4 | |||
| f48ee73ede | |||
| 3dedafd43f | |||
| 020d8304a5 | |||
| 2a66160e84 | |||
| a52d76bb5b | |||
| 112f6ed697 | |||
| 9798b5a993 | |||
| c28c77bec9 | |||
| 9232597888 | |||
| db7a6c39c3 | |||
| 3b3b6c424e | |||
| 90ef09785c | |||
| eba5920137 | |||
| 3d16c4d682 | |||
| d6ea0e7f9a | |||
| 8bd8144294 | |||
| e5daf52bb4 | |||
| 3120746f60 | |||
| 642026eadc | |||
| e3fb330264 | |||
| edfb4c4423 | |||
| 9294cecc15 | |||
| 14ed50b58d | |||
| 3d6e711bf0 | |||
| 79bf736201 | |||
| 3a39f20b5a | |||
| fa77cc11cb | |||
| 1a120db9e3 | |||
| d3f6dc4a77 | |||
| e216f9597d | |||
| d06f36edbe | |||
| b732e1514d | |||
| 2e84a57cfb | |||
| 100c030844 | |||
| c020a5588b | |||
| 1532898329 | |||
| f3b3028167 | |||
| d367532d11 | |||
| 302456b21b | |||
| 6dc2678ecb | |||
| 99ea0958cd | |||
| 2c578a7944 | |||
| 2237e78dd0 | |||
| 71e16325b9 | |||
| 5f2540210f | |||
| 42d162c029 | |||
| 3b1528fd07 | |||
| ef2f3d7874 | |||
| 16782271a4 | |||
| 955d52b977 | |||
| 439c70f70d | |||
| d86e6b053a | |||
| 36099630a9 | |||
| e42266ffc2 | |||
| d0fabaac69 | |||
| 22310fa8a7 | |||
| 0365bfd7b2 | |||
| 786a0b234d | |||
| 7a52c9ffa5 | |||
| eeded21849 | |||
| 414d8ab889 | |||
| a353a0f628 | |||
| 5ed8386e2b | |||
| bc0a33cf7f | |||
| dcb65ad4f3 | |||
| 74c85acd2b | |||
| 117a6288bb | |||
| 95484c7ee7 | |||
| a39cefbfba | |||
| 328d5f618e | |||
| ada12efca2 | |||
| 4db37d663f | |||
| 20a271290d | |||
| bbfe28edc7 | |||
| 180334822b | |||
| 63b09c1dfb | |||
| ea32e6b506 | |||
| 74a998696f | |||
| e65ba32e09 | |||
| 2e8f0f6066 | |||
| 2199c86229 | |||
| e93711fc96 | |||
| f4223d6de0 | |||
| 61ad9a934f | |||
| fcab3a8e3d | |||
| 769699a130 | |||
| 02a8dc4ef7 | |||
| 8efdf51863 | |||
| bbec4b5306 | |||
| 06d4dc316d | |||
| 1bf5534380 | |||
| 1fb1445677 | |||
| 39bd0a2eb8 | |||
| b41417da56 | |||
| 7d496ee811 | |||
| 426eaeea95 | |||
| 1a3f7972a1 | |||
| 535082d311 | |||
| ead2383084 | |||
| 627fd320ae | |||
| c14e24caa2 | |||
| 492836c2eb | |||
| fe3374c16a | |||
| 69767cf627 | |||
| f46e818d18 | |||
| 4b3b0b6228 | |||
| 2a030da24a | |||
| 98ecbe05de | |||
| 0c48eec85c | |||
| eb631908bf | |||
| a2fa132ee2 | |||
| 92380255a6 | |||
| 3532ef89f5 | |||
| 9a21aae816 | |||
| 4830160763 | |||
| 821f0276c7 | |||
| 4b2553056c | |||
| 026a85e5ff | |||
| 85a387cc86 | |||
| dfcaac23ba | |||
| 9c1928c7ae | |||
| 506c14f82a | |||
| 10835c555e | |||
| c1adb138e7 | |||
| f06dac3a7b | |||
| 6545727c2f | |||
| cf240405a5 | |||
| e377d7ece7 | |||
| 70011ed571 | |||
| e4d3c5559a | |||
| 7232f63094 | |||
| 581dade86d | |||
| 84033194a6 | |||
| 0cb7833480 | |||
| d9c892cb11 | |||
| f08b33ebf6 | |||
| bdbc136638 | |||
| 2d4ae4c0cc | |||
| 60e8f3da34 | |||
| a1aed17621 | |||
| add63366a3 | |||
| 4f9d26c536 | |||
| bfd963f8d7 | |||
| 16bda5b2a9 | |||
| c32f50070e | |||
| 0c03082ff8 | |||
| 11928ef3bf | |||
| f745084d44 | |||
| ec06bf016d | |||
| 7ed09443d9 | |||
| d99c7b52a6 | |||
| 6c0cef552c | |||
| 87976bea45 | |||
| 93544b93a7 | |||
| 20a059602f | |||
| f9586ce949 | |||
| 46b715dd3c | |||
| d926a504d5 | |||
| a30e50fe53 | |||
| 4fd3807875 | |||
| 7bee0f3e91 | |||
| b55569e608 | |||
| 684f595878 | |||
| 1ab581bd43 | |||
| fbc6e22bf7 | |||
| b86c338b14 | |||
| ad8681991b | |||
| f018da3a5f | |||
| 440abb4e51 | |||
| 8132da127e | |||
| 2dd6f93bd0 | |||
| 2be6c229d7 | |||
| 88257068ae | |||
| d4ca3f9f1a | |||
| c2f8441e8b | |||
| 6dfee4a431 | |||
| f3c040fb1a | |||
| 67644f38b9 | |||
| 49d7b45c67 | |||
| 189d5e200f | |||
| e99d3bdb0d | |||
| 747fe636be | |||
| 6c5d9ce68d | |||
| 08cecd01f5 | |||
| fce288f451 | |||
| 2c8227e1c2 | |||
| f4e9a85e51 | |||
| c8b21095a4 | |||
| cd20b0f117 | |||
| d1ddae1f61 |
@@ -0,0 +1,57 @@
|
||||
declare module Recipe{
|
||||
|
||||
interface IRange{
|
||||
min: number;
|
||||
max: number;
|
||||
}
|
||||
|
||||
interface IStatus{
|
||||
visible: boolean;
|
||||
enabled: boolean;
|
||||
hasError: boolean;
|
||||
}
|
||||
|
||||
interface IValue{
|
||||
range:IRange,
|
||||
status:IStatus,
|
||||
unitMeasure:string,
|
||||
valueAct: number
|
||||
}
|
||||
|
||||
interface IRecipe{
|
||||
vacuum_main_start?:IValue,
|
||||
vacuum_main_delay?:IValue,
|
||||
vacuum_main_max_time?:IValue,
|
||||
vacuum_main_1_chart_setpointx?:IValue,
|
||||
vacuum_main_1_chart_setpointy?:IValue,
|
||||
vacuum_main_2_chart_setpointx?:IValue,
|
||||
vacuum_main_2_chart_setpointy?:IValue,
|
||||
vacuum_main_3_chart_setpointx?:IValue,
|
||||
vacuum_main_3_chart_setpointy?:IValue,
|
||||
vacuum_main_manual?:IValue,
|
||||
vacuum_direct_enabled?:IValue,
|
||||
vacuum_direct_delay?:IValue,
|
||||
vacuum_direct_time?:IValue,
|
||||
vacuum_aux_enabled?:IValue,
|
||||
vacuum_aux_delay?:IValue,
|
||||
vacuum_aux_max_time?:IValue,
|
||||
vacuum_aux_1_chart_setpointx?:IValue,
|
||||
vacuum_aux_1_chart_setpointy?:IValue,
|
||||
vacuum_aux_2_chart_setpointx?:IValue,
|
||||
vacuum_aux_2_chart_setpointy?:IValue,
|
||||
vacuum_aux_3_chart_setpointx?:IValue,
|
||||
vacuum_aux_3_chart_setpointy?:IValue,
|
||||
vacuum_aux_manual?:IValue,
|
||||
vacuum_pre_enabled?:IValue,
|
||||
vacuum_pre_delay?:IValue,
|
||||
vacuum_pre_max_time?:IValue,
|
||||
vacuum_pre_1_chart_setpointx?:IValue,
|
||||
vacuum_pre_1_chart_setpointy?:IValue,
|
||||
vacuum_pre_2_chart_setpointx?:IValue,
|
||||
vacuum_pre_2_chart_setpointy?:IValue,
|
||||
vacuum_pre_3_chart_setpointx?:IValue,
|
||||
vacuum_pre_3_chart_setpointy?:IValue
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
declare module Recipe{
|
||||
|
||||
interface IRange{
|
||||
min: number;
|
||||
max: number;
|
||||
}
|
||||
|
||||
interface IStatus{
|
||||
visible: boolean;
|
||||
enabled: boolean;
|
||||
hasError: boolean;
|
||||
}
|
||||
|
||||
interface IValue{
|
||||
range:IRange,
|
||||
status:IStatus,
|
||||
unitMeasure:string,
|
||||
valueAct: number
|
||||
}
|
||||
|
||||
interface IRecipe{
|
||||
vacuum_main_start?:IValue,
|
||||
vacuum_main_delay?:IValue,
|
||||
vacuum_main_max_time?:IValue,
|
||||
vacuum_main_1_chart_setpointx?:IValue,
|
||||
vacuum_main_1_chart_setpointy?:IValue,
|
||||
vacuum_main_2_chart_setpointx?:IValue,
|
||||
vacuum_main_2_chart_setpointy?:IValue,
|
||||
vacuum_main_3_chart_setpointx?:IValue,
|
||||
vacuum_main_3_chart_setpointy?:IValue,
|
||||
vacuum_main_manual?:IValue,
|
||||
vacuum_direct_enabled?:IValue,
|
||||
vacuum_direct_delay?:IValue,
|
||||
vacuum_direct_time?:IValue,
|
||||
vacuum_aux_enabled?:IValue,
|
||||
vacuum_aux_delay?:IValue,
|
||||
vacuum_aux_max_time?:IValue,
|
||||
vacuum_aux_1_chart_setpointx?:IValue,
|
||||
vacuum_aux_1_chart_setpointy?:IValue,
|
||||
vacuum_aux_2_chart_setpointx?:IValue,
|
||||
vacuum_aux_2_chart_setpointy?:IValue,
|
||||
vacuum_aux_3_chart_setpointx?:IValue,
|
||||
vacuum_aux_3_chart_setpointy?:IValue,
|
||||
vacuum_aux_manual?:IValue,
|
||||
vacuum_pre_enabled?:IValue,
|
||||
vacuum_pre_delay?:IValue,
|
||||
vacuum_pre_max_time?:IValue,
|
||||
vacuum_pre_1_chart_setpointx?:IValue,
|
||||
vacuum_pre_1_chart_setpointy?:IValue,
|
||||
vacuum_pre_2_chart_setpointx?:IValue,
|
||||
vacuum_pre_2_chart_setpointy?:IValue,
|
||||
vacuum_pre_3_chart_setpointx?:IValue,
|
||||
vacuum_pre_3_chart_setpointy?:IValue
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
import Vue from 'vue';
|
||||
import Component from 'vue-class-component';
|
||||
import {Prop} from 'vue-property-decorator';
|
||||
import Slider from "@/app_modules_thermo/components/slider.vue"
|
||||
import Scheda from "@/app_modules_thermo/components/scheda.vue"
|
||||
|
||||
@Component({name:'vuotoprincipale', components: { slider:Slider, scheda:Scheda}})
|
||||
export default class VuotoPrincipale extends Vue{
|
||||
|
||||
Recipe:Recipe.IRecipe={
|
||||
vacuum_main_delay:{
|
||||
range:{
|
||||
min:8,
|
||||
max:105
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:57
|
||||
},
|
||||
vacuum_main_max_time:{
|
||||
range:{
|
||||
min:9,
|
||||
max:127
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:30
|
||||
},
|
||||
};
|
||||
|
||||
@Prop({default:0})
|
||||
ritardo:number;
|
||||
|
||||
@Prop({default:0})
|
||||
percentuale:number;
|
||||
|
||||
@Prop({default:0})
|
||||
durata:number;
|
||||
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
<template>
|
||||
<section>
|
||||
<aside class="scrollable auto">
|
||||
<div class="input-area">
|
||||
<label>Partenza</label>
|
||||
<select>
|
||||
<option value="Label partenza">Label partenza</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<img src="assets/icons/png/clessidra.png" />
|
||||
<label>Ritardo</label>
|
||||
<div class="rect">
|
||||
{{ritardo}} s
|
||||
</div>
|
||||
</div>
|
||||
<slider :min="0" :max="10" v-model="ritardo" unit-of-measure="s"></slider>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<label>Portata in manuale</label>
|
||||
<div class="rect">
|
||||
{{Recipe.vacuum_main_delay.valueAct}} %
|
||||
</div>
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_delay.range.min" :max="Recipe.vacuum_main_delay.range.max" v-model="Recipe.vacuum_main_delay.valueAct" :unit-of-measure="Recipe.vacuum_main_delay.unitMeasure"></slider>
|
||||
</aside>
|
||||
<hr>
|
||||
<div class="specific">
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
</div>
|
||||
<div class="specific">
|
||||
<div class="input-area">
|
||||
<label>Durata massima</label>
|
||||
<div class="rect">
|
||||
{{Recipe.vacuum_main_max_time.valueAct}} s
|
||||
</div>
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_max_time.range.min" :max="Recipe.vacuum_main_max_time.range.max" v-model="Recipe.vacuum_main_max_time.valueAct" :unit-of-measure="Recipe.vacuum_main_max_time.unitMeasure"></slider>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./vuoto-principale.ts"></script>
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
import Vue from 'vue';
|
||||
import Component from 'vue-class-component';
|
||||
import {Prop} from 'vue-property-decorator';
|
||||
import Slider from "@/app_modules_thermo/components/slider.vue"
|
||||
import Scheda from "@/app_modules_thermo/components/scheda.vue"
|
||||
|
||||
@Component({name:'vuotoprincipale', components: { slider:Slider, scheda:Scheda}})
|
||||
export default class VuotoPrincipale extends Vue{
|
||||
|
||||
Recipe:Recipe.IRecipe={
|
||||
vacuum_main_delay:{
|
||||
range:{
|
||||
min:8,
|
||||
max:105
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:57
|
||||
},
|
||||
vacuum_main_max_time:{
|
||||
range:{
|
||||
min:9,
|
||||
max:127
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:30
|
||||
},
|
||||
};
|
||||
|
||||
@Prop({default:0})
|
||||
ritardo:number;
|
||||
@Prop({default:0})
|
||||
percentuale:number;
|
||||
@Prop({default:0})
|
||||
durata:number;
|
||||
|
||||
mock_ritardo:number=this.ritardo;
|
||||
mock_percentuale:number=this.percentuale;
|
||||
mock_durata:number=this.durata;
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<section>
|
||||
<aside class="scrollable auto">
|
||||
<div class="input-area">
|
||||
<label>Partenza</label>
|
||||
<select>
|
||||
<option value="Label partenza">Label partenza</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<img src="assets/icons/png/clessidra.png" />
|
||||
<label>Ritardo</label>
|
||||
<input class="rect" v-model="Recipe.vacuum_main_delay.valueAct">
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_delay.range.min" :max="Recipe.vacuum_main_delay.range.max" v-model="Recipe.vacuum_main_delay.valueAct" :unit-of-measure="Recipe.vacuum_main_delay.unitMeasure"></slider>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<label>Portata in manuale</label>
|
||||
<input class="rect" v-model="mock_percentuale">
|
||||
</div>
|
||||
<slider :min="0" :max="100" v-model="mock_percentuale" :unit-of-measure="'%'"></slider>
|
||||
</aside>
|
||||
<hr>
|
||||
<div class="specific">
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
</div>
|
||||
<div class="specific">
|
||||
<div class="input-area">
|
||||
<label>Durata massima</label>
|
||||
<input class="rect" v-model="Recipe.vacuum_main_max_time.valueAct">
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_max_time.range.min" :max="Recipe.vacuum_main_max_time.range.max" v-model="Recipe.vacuum_main_max_time.valueAct" :unit-of-measure="Recipe.vacuum_main_max_time.unitMeasure"></slider>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./vuoto-principale.ts"></script>
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
import Vue from 'vue';
|
||||
import Component from 'vue-class-component';
|
||||
import {Prop} from 'vue-property-decorator';
|
||||
import Slider from "@/app_modules_thermo/components/slider.vue"
|
||||
import Scheda from "@/app_modules_thermo/components/scheda.vue"
|
||||
|
||||
@Component({name:'vuotoprincipale', components: { slider:Slider, scheda:Scheda}})
|
||||
export default class VuotoPrincipale extends Vue{
|
||||
|
||||
Recipe:Recipe.IRecipe={
|
||||
vacuum_main_delay:{
|
||||
range:{
|
||||
min:8,
|
||||
max:105
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:57
|
||||
},
|
||||
vacuum_main_max_time:{
|
||||
range:{
|
||||
min:9,
|
||||
max:127
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:30
|
||||
},
|
||||
vacuum_main_manual:{
|
||||
range:{
|
||||
min:4,
|
||||
max:115
|
||||
},
|
||||
status:{
|
||||
visible:true,
|
||||
enabled:true,
|
||||
hasError:false
|
||||
},
|
||||
unitMeasure:"",
|
||||
valueAct:8
|
||||
},
|
||||
};
|
||||
|
||||
@Prop({default:0})
|
||||
ritardo:number;
|
||||
@Prop({default:0})
|
||||
percentuale:number;
|
||||
@Prop({default:0})
|
||||
durata:number;
|
||||
|
||||
mock_ritardo:number=this.ritardo;
|
||||
mock_percentuale:number=this.percentuale;
|
||||
mock_durata:number=this.durata;
|
||||
|
||||
}
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<section>
|
||||
<aside class="scrollable auto">
|
||||
<div class="input-area">
|
||||
<label>Partenza</label>
|
||||
<select>
|
||||
<option value="Label partenza">Label partenza</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<img src="assets/icons/png/clessidra.png" />
|
||||
<label>Ritardo</label>
|
||||
<input class="rect" v-model="Recipe.vacuum_main_delay.valueAct">
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_delay.range.min" :max="Recipe.vacuum_main_delay.range.max" v-model="Recipe.vacuum_main_delay.valueAct" :unit-of-measure="Recipe.vacuum_main_delay.unitMeasure"></slider>
|
||||
|
||||
<hr />
|
||||
|
||||
<div class="input-area">
|
||||
<label>Portata in manuale</label>
|
||||
<input class="rect" v-model="Recipe.vacuum_main_manual.valueAct">
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_manual.range.min" :max="Recipe.vacuum_main_manual.range.max" v-model="Recipe.vacuum_main_manual.valueAct" :unit-of-measure="Recipe.vacuum_main_manual.unitMeasure"></slider>
|
||||
</aside>
|
||||
<hr>
|
||||
<div class="specific">
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
<scheda></scheda>
|
||||
</div>
|
||||
<div class="specific">
|
||||
<div class="input-area">
|
||||
<label>Durata massima</label>
|
||||
<input class="rect" v-model="Recipe.vacuum_main_max_time.valueAct">
|
||||
</div>
|
||||
<slider :min="Recipe.vacuum_main_max_time.range.min" :max="Recipe.vacuum_main_max_time.range.max" v-model="Recipe.vacuum_main_max_time.valueAct" :unit-of-measure="Recipe.vacuum_main_max_time.unitMeasure"></slider>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./vuoto-principale.ts"></script>
|
||||
@@ -10,7 +10,7 @@ namespace Client.Config.SubModels
|
||||
{
|
||||
public Boolean Enabled { get; set; }
|
||||
public Boolean FollowNcWindow { get; set; }
|
||||
public ushort Type { get; set; } /* 0: Demo - 1: Fanuc - 2: Siemens - 3: Osai */
|
||||
public ushort Type { get; set; } /* 0: Demo - 1: Fanuc - 2: Siemens - 3: Osai - 4: Siemens S7 */
|
||||
public string IpAddress { get; set; }
|
||||
public string Port { get; set; }
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<OutputPath>..\Thermo.Active\bin\Client_Debug\x64\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -44,7 +44,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<OutputPath>..\Thermo.Active\bin\Client\x64\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
|
||||
@@ -1283,6 +1283,21 @@ namespace Active_Client.View
|
||||
ncWindowHeight = HMI_WINDOW_HEIGHT_OSAI;
|
||||
ncWindowX = HMI_WINDOW_POS_X_OSAI;
|
||||
ncWindowY = HMI_WINDOW_POS_Y_OSAI;
|
||||
}; break;
|
||||
|
||||
// 4: Siemens S7
|
||||
case 4:
|
||||
{
|
||||
processname = DemoName;
|
||||
processpath = @"C:\CMS\ACTIVE\DEMO" + DemoPath;
|
||||
ncWindowWidth = 0;
|
||||
ncWindowHeight = 0;
|
||||
ncWindowX = 0;
|
||||
ncWindowY = 0; ;
|
||||
//ncWindowWidth = HMI_WINDOW_WIDTH_SIEMENS;
|
||||
//ncWindowHeight = HMI_WINDOW_HEIGHT_SIEMENS;
|
||||
//ncWindowX = HMI_WINDOW_POS_X_SIEMENS;
|
||||
//ncWindowY = HMI_WINDOW_POS_Y_SIEMENS;
|
||||
}; break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,6 +257,8 @@ namespace Active_Client.View
|
||||
Config.VendorHmiConfig.Type = 2;
|
||||
else if (ncVendorName.Equals("OSAI"))
|
||||
Config.VendorHmiConfig.Type = 3;
|
||||
else if (ncVendorName.Equals("S7NET"))
|
||||
Config.VendorHmiConfig.Type = 4;
|
||||
else
|
||||
{
|
||||
setStatus("Close the application!", "Errror in configuration, from server");
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<system.serviceModel>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
<binding name="OPENcontrol" />
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<client>
|
||||
<endpoint address="http://192.168.20.2:8080" binding="basicHttpBinding"
|
||||
bindingConfiguration="OPENcontrol" contract="OPENControl.OPENcontrolPortType"
|
||||
name="OPENcontrol" />
|
||||
</client>
|
||||
</system.serviceModel>
|
||||
</configuration>
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<modules>
|
||||
<block>
|
||||
<id>1</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">DiscesaCZ ENG</lang>
|
||||
<lang langKey="it">DiscesaCZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>MOVEMENT</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>2</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">MembDiscesaZ ENG</lang>
|
||||
<lang langKey="it">MembDiscesaZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>MOVEMENT</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>3</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">MembZ ENG</lang>
|
||||
<lang langKey="it">MembZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>MOVEMENT</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>4</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_MembSalitaZ ENG</lang>
|
||||
<lang langKey="it">Mod_MembSalitaZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>MOVEMENT</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>6</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_RiscaldoInf ENG</lang>
|
||||
<lang langKey="it">Mod_RiscaldoInf ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>HEATING</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>7</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_RiscaldoSup ENG</lang>
|
||||
<lang langKey="it">Mod_RiscaldoSup ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>HEATING</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>0</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>2</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>8</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_PirometroRisc ENG</lang>
|
||||
<lang langKey="it">Mod_PirometroRisc ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>HEATING</type>
|
||||
<section>HEATING</section>
|
||||
<idParam>80</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>true</showStatus>
|
||||
<priority>3</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>13</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_Imbutitura ENG</lang>
|
||||
<lang langKey="it">Mod_Imbutitura ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>DRAWING</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>99</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>true</showStatus>
|
||||
<priority>2</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>16</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_Raffreddamento ENG</lang>
|
||||
<lang langKey="it">Mod_Raffreddamento ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>COOLING</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>2</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>17</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_PirometroRaffr ENG</lang>
|
||||
<lang langKey="it">Mod_PirometroRaffr ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>COOLING</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>139</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>true</showStatus>
|
||||
<priority>3</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>19</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_Vuoto ENG</lang>
|
||||
<lang langKey="it">Mod_Vuoto ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>VACUUM</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>4</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>21</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_VuotoDiretto ENG</lang>
|
||||
<lang langKey="it">Mod_VuotoDiretto ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>VACUUM</type>
|
||||
<section>FORMING</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>5</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>36</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_EstrazioneZ ENG</lang>
|
||||
<lang langKey="it">Mod_EstrazioneZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>EXTRACTION</type>
|
||||
<section>EXTRACTION</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>true</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>2</priority>
|
||||
</block>
|
||||
<block>
|
||||
<id>42</id>
|
||||
<localizedLabels>
|
||||
<lang langKey="en">Mod_SalitaCZ ENG</lang>
|
||||
<lang langKey="it">Mod_SalitaCZ ITA</lang>
|
||||
</localizedLabels>
|
||||
<type>MOVEMENT</type>
|
||||
<section>EXTRACTION</section>
|
||||
<idParam>-1</idParam>
|
||||
<showDelay>false</showDelay>
|
||||
<showStatus>false</showStatus>
|
||||
<priority>1</priority>
|
||||
</block>
|
||||
</modules>
|
||||
@@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="modules">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<!-- Heads -->
|
||||
<xs:element name="block" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="id" type="xs:int"/>
|
||||
<xs:element name="localizedLabels">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="lang" type="langType" minOccurs="0" maxOccurs="unbounded">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="type" type="mblockType" />
|
||||
<xs:element name="section" type="mblockSection" />
|
||||
<xs:element name="idParam" type="xs:int" />
|
||||
<xs:element name="showDelay" type="xs:boolean" />
|
||||
<xs:element name="showStatus" type="xs:boolean" />
|
||||
<xs:element name="priority" type="xs:int" />
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!-- Language Type -->
|
||||
<xs:complexType name="langType">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="langKey" use="required" type="xs:string" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- ModBlock Type -->
|
||||
<xs:simpleType name="mblockType" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="HEATING" />
|
||||
<xs:enumeration value="DRAWING" />
|
||||
<xs:enumeration value="MOVEMENT"/>
|
||||
<xs:enumeration value="VACUUM"/>
|
||||
<xs:enumeration value="COOLING"/>
|
||||
<xs:enumeration value="EXTRACTION"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<!-- Section Type -->
|
||||
<xs:simpleType name="mblockSection" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="HEATING" />
|
||||
<xs:enumeration value="FORMING" />
|
||||
<xs:enumeration value="EXTRACTION"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="recipe">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<!-- Heads -->
|
||||
<xs:element name="parameter" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="id" type="xs:int"/>
|
||||
<xs:element name="category" type="param_type" />
|
||||
<xs:element name="subCategory_1" type="xs:string" />
|
||||
<xs:element name="subCategory_2" type="xs:string" />
|
||||
<xs:element name="name" type="xs:string" />
|
||||
<xs:element name="description" type="xs:string" />
|
||||
<xs:element name="format" type="xs:string" />
|
||||
<xs:element name="scaleFactor" type="xs:int" default="1"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<!-- Head Type -->
|
||||
<xs:simpleType name="param_type" final="restriction">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="General" />
|
||||
<xs:enumeration value="Positions" />
|
||||
<xs:enumeration value="Cycle"/>
|
||||
<xs:enumeration value="Heats"/>
|
||||
<xs:enumeration value="Pyrometer"/>
|
||||
<xs:enumeration value="Drawing"/>
|
||||
<xs:enumeration value="UpperPlate"/>
|
||||
<xs:enumeration value="Cooling"/>
|
||||
<xs:enumeration value="Vacuum"/>
|
||||
<xs:enumeration value="Extraction"/>
|
||||
<xs:enumeration value="Options"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,316 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<riscaldo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../APPOGGIO/risk2007.xsd" comPort="5" baudRate="19200" gainTc="0.5" addrTc="4D5">
|
||||
<riflettore tipo="0" dimensionScale="13000" slimScale="2" offsetTc="0">
|
||||
<resistenza tipo="21" riga="0" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="1" canale="1" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="2" termocoppiaAssociata="1" canale="6" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="3" termocoppiaAssociata="1" canale="26" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="4" termocoppiaAssociata="1" canale="46" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="5" termocoppiaAssociata="1" canale="66" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="6" termocoppiaAssociata="1" canale="86" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="0" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="1" canale="106" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="8" termocoppiaAssociata="1" canale="7" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="9" termocoppiaAssociata="1" canale="27" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="10" termocoppiaAssociata="1" canale="47" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="11" termocoppiaAssociata="1" canale="67" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="12" termocoppiaAssociata="1" canale="87" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="1" canale="107" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="2" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="1" canale="1" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="14" termocoppiaAssociata="1" canale="8" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="15" termocoppiaAssociata="1" canale="28" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="16" termocoppiaAssociata="1" canale="48" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="17" termocoppiaAssociata="1" canale="68" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="18" termocoppiaAssociata="1" canale="88" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="2" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="1" canale="106" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="19" termocoppiaAssociata="1" canale="9" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="20" termocoppiaAssociata="1" canale="29" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="21" termocoppiaAssociata="1" canale="49" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="22" termocoppiaAssociata="1" canale="69" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="23" termocoppiaAssociata="1" canale="89" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="24" termocoppiaAssociata="1" canale="108" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="4" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="1" canale="2" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="26" termocoppiaAssociata="1" canale="10" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="27" termocoppiaAssociata="1" canale="30" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="28" termocoppiaAssociata="1" canale="50" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="29" termocoppiaAssociata="1" canale="70" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="30" termocoppiaAssociata="1" canale="90" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="4" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="1" canale="109" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="32" termocoppiaAssociata="1" canale="11" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="33" termocoppiaAssociata="1" canale="31" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="34" termocoppiaAssociata="1" canale="51" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="35" termocoppiaAssociata="1" canale="71" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="36" termocoppiaAssociata="1" canale="91" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="37" termocoppiaAssociata="1" canale="110" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="6" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="1" canale="2" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="38" termocoppiaAssociata="1" canale="12" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="39" termocoppiaAssociata="1" canale="32" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="40" termocoppiaAssociata="1" canale="52" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="41" termocoppiaAssociata="1" canale="72" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="42" termocoppiaAssociata="1" canale="92" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="6" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="1" canale="109" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="43" termocoppiaAssociata="1" canale="13" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="44" termocoppiaAssociata="1" canale="33" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="45" termocoppiaAssociata="1" canale="53" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="46" termocoppiaAssociata="1" canale="73" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="47" termocoppiaAssociata="1" canale="93" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="48" termocoppiaAssociata="1" canale="111" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="8" idTermocoppia="0" idGruppo="49" termocoppiaAssociata="1" canale="3" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="50" termocoppiaAssociata="1" canale="14" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="51" termocoppiaAssociata="1" canale="34" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="52" termocoppiaAssociata="1" canale="54" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="53" termocoppiaAssociata="1" canale="74" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="54" termocoppiaAssociata="1" canale="94" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="8" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="1" canale="112" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="56" termocoppiaAssociata="1" canale="15" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="57" termocoppiaAssociata="1" canale="35" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="58" termocoppiaAssociata="1" canale="55" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="59" termocoppiaAssociata="1" canale="75" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="60" termocoppiaAssociata="1" canale="95" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="61" termocoppiaAssociata="1" canale="113" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="10" idTermocoppia="0" idGruppo="49" termocoppiaAssociata="1" canale="3" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="62" termocoppiaAssociata="1" canale="16" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="63" termocoppiaAssociata="1" canale="36" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="64" termocoppiaAssociata="1" canale="56" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="65" termocoppiaAssociata="1" canale="76" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="66" termocoppiaAssociata="1" canale="96" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="10" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="1" canale="112" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="67" termocoppiaAssociata="1" canale="17" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="68" termocoppiaAssociata="1" canale="37" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="69" termocoppiaAssociata="1" canale="57" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="70" termocoppiaAssociata="1" canale="77" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="71" termocoppiaAssociata="1" canale="97" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="1" canale="114" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="12" idTermocoppia="0" idGruppo="73" termocoppiaAssociata="1" canale="4" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="74" termocoppiaAssociata="1" canale="18" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="75" termocoppiaAssociata="1" canale="38" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="76" termocoppiaAssociata="1" canale="58" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="77" termocoppiaAssociata="1" canale="78" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="78" termocoppiaAssociata="1" canale="98" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="12" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="1" canale="115" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="80" termocoppiaAssociata="1" canale="19" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="81" termocoppiaAssociata="1" canale="39" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="82" termocoppiaAssociata="1" canale="59" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="83" termocoppiaAssociata="1" canale="79" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="1" canale="99" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="85" termocoppiaAssociata="1" canale="116" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="14" idTermocoppia="0" idGruppo="73" termocoppiaAssociata="1" canale="4" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="86" termocoppiaAssociata="1" canale="20" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="87" termocoppiaAssociata="1" canale="40" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="88" termocoppiaAssociata="1" canale="60" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="89" termocoppiaAssociata="1" canale="80" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="90" termocoppiaAssociata="1" canale="100" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="14" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="1" canale="115" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="91" termocoppiaAssociata="1" canale="21" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="92" termocoppiaAssociata="1" canale="41" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="93" termocoppiaAssociata="1" canale="61" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="94" termocoppiaAssociata="1" canale="81" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="95" termocoppiaAssociata="1" canale="101" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="1" canale="117" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="16" idTermocoppia="0" idGruppo="97" termocoppiaAssociata="1" canale="5" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="98" termocoppiaAssociata="1" canale="22" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="99" termocoppiaAssociata="1" canale="42" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="100" termocoppiaAssociata="1" canale="62" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="101" termocoppiaAssociata="1" canale="82" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="102" termocoppiaAssociata="1" canale="102" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="16" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="1" canale="118" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="104" termocoppiaAssociata="1" canale="23" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="105" termocoppiaAssociata="1" canale="43" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="106" termocoppiaAssociata="1" canale="63" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="107" termocoppiaAssociata="1" canale="83" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="108" termocoppiaAssociata="1" canale="103" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="109" termocoppiaAssociata="1" canale="119" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="18" idTermocoppia="0" idGruppo="97" termocoppiaAssociata="1" canale="5" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="110" termocoppiaAssociata="1" canale="24" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="111" termocoppiaAssociata="1" canale="44" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="112" termocoppiaAssociata="1" canale="64" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="113" termocoppiaAssociata="1" canale="84" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="114" termocoppiaAssociata="1" canale="104" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="18" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="1" canale="118" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="115" termocoppiaAssociata="1" canale="25" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="116" termocoppiaAssociata="1" canale="45" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="117" termocoppiaAssociata="1" canale="65" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="118" termocoppiaAssociata="1" canale="85" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="119" termocoppiaAssociata="1" canale="105" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="120" termocoppiaAssociata="1" canale="120" fast="false" softDelay="140" sfasamImp="false" />
|
||||
</riflettore>
|
||||
<riflettore tipo="1" dimensionScale="13000" slimScale="2" offsetTc="0">
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="1" termocoppiaAssociata="2" canale="134" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="2" termocoppiaAssociata="2" canale="154" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="3" termocoppiaAssociata="2" canale="174" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="4" termocoppiaAssociata="2" canale="194" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="5" termocoppiaAssociata="2" canale="214" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="0" idTermocoppia="0" idGruppo="6" termocoppiaAssociata="2" canale="234" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="1" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="2" canale="129" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="8" termocoppiaAssociata="2" canale="135" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="9" termocoppiaAssociata="2" canale="155" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="10" termocoppiaAssociata="2" canale="175" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="11" termocoppiaAssociata="2" canale="195" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="1" idTermocoppia="0" idGruppo="12" termocoppiaAssociata="2" canale="215" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="1" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="2" canale="235" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="14" termocoppiaAssociata="2" canale="136" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="15" termocoppiaAssociata="2" canale="156" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="16" termocoppiaAssociata="2" canale="176" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="17" termocoppiaAssociata="2" canale="196" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="18" termocoppiaAssociata="2" canale="216" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="2" idTermocoppia="0" idGruppo="19" termocoppiaAssociata="2" canale="236" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="3" idTermocoppia="0" idGruppo="7" termocoppiaAssociata="2" canale="129" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="20" termocoppiaAssociata="2" canale="137" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="21" termocoppiaAssociata="2" canale="157" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="22" termocoppiaAssociata="2" canale="177" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="23" termocoppiaAssociata="2" canale="197" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="3" idTermocoppia="0" idGruppo="24" termocoppiaAssociata="2" canale="217" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="3" idTermocoppia="0" idGruppo="13" termocoppiaAssociata="2" canale="235" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="25" termocoppiaAssociata="2" canale="138" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="26" termocoppiaAssociata="2" canale="158" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="27" termocoppiaAssociata="2" canale="178" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="28" termocoppiaAssociata="2" canale="198" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="29" termocoppiaAssociata="2" canale="218" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="4" idTermocoppia="0" idGruppo="30" termocoppiaAssociata="2" canale="237" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="5" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="2" canale="130" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="32" termocoppiaAssociata="2" canale="139" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="33" termocoppiaAssociata="2" canale="159" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="34" termocoppiaAssociata="2" canale="179" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="35" termocoppiaAssociata="2" canale="199" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="5" idTermocoppia="0" idGruppo="36" termocoppiaAssociata="2" canale="219" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="5" idTermocoppia="0" idGruppo="37" termocoppiaAssociata="2" canale="238" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="38" termocoppiaAssociata="2" canale="140" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="39" termocoppiaAssociata="2" canale="160" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="40" termocoppiaAssociata="2" canale="180" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="41" termocoppiaAssociata="2" canale="200" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="42" termocoppiaAssociata="2" canale="220" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="6" idTermocoppia="0" idGruppo="43" termocoppiaAssociata="2" canale="239" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="7" idTermocoppia="0" idGruppo="31" termocoppiaAssociata="2" canale="130" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="44" termocoppiaAssociata="2" canale="141" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="45" termocoppiaAssociata="2" canale="161" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="46" termocoppiaAssociata="2" canale="181" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="47" termocoppiaAssociata="2" canale="201" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="7" idTermocoppia="0" idGruppo="48" termocoppiaAssociata="2" canale="221" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="7" idTermocoppia="0" idGruppo="37" termocoppiaAssociata="2" canale="238" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="49" termocoppiaAssociata="2" canale="142" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="50" termocoppiaAssociata="2" canale="162" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="51" termocoppiaAssociata="2" canale="182" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="52" termocoppiaAssociata="2" canale="202" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="53" termocoppiaAssociata="2" canale="222" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="8" idTermocoppia="0" idGruppo="54" termocoppiaAssociata="2" canale="240" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="9" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="2" canale="131" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="56" termocoppiaAssociata="2" canale="143" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="57" termocoppiaAssociata="2" canale="163" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="58" termocoppiaAssociata="2" canale="183" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="59" termocoppiaAssociata="2" canale="203" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="9" idTermocoppia="0" idGruppo="60" termocoppiaAssociata="2" canale="223" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="9" idTermocoppia="0" idGruppo="61" termocoppiaAssociata="2" canale="241" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="62" termocoppiaAssociata="2" canale="144" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="63" termocoppiaAssociata="2" canale="164" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="64" termocoppiaAssociata="2" canale="184" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="65" termocoppiaAssociata="2" canale="204" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="66" termocoppiaAssociata="2" canale="224" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="10" idTermocoppia="0" idGruppo="67" termocoppiaAssociata="2" canale="242" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="11" idTermocoppia="0" idGruppo="55" termocoppiaAssociata="2" canale="131" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="68" termocoppiaAssociata="2" canale="145" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="69" termocoppiaAssociata="2" canale="165" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="70" termocoppiaAssociata="2" canale="185" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="71" termocoppiaAssociata="2" canale="205" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="11" idTermocoppia="0" idGruppo="72" termocoppiaAssociata="2" canale="225" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="11" idTermocoppia="0" idGruppo="61" termocoppiaAssociata="2" canale="241" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="73" termocoppiaAssociata="2" canale="146" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="74" termocoppiaAssociata="2" canale="166" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="75" termocoppiaAssociata="2" canale="186" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="76" termocoppiaAssociata="2" canale="206" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="77" termocoppiaAssociata="2" canale="226" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="12" idTermocoppia="0" idGruppo="78" termocoppiaAssociata="2" canale="243" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="13" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="2" canale="132" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="80" termocoppiaAssociata="2" canale="147" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="81" termocoppiaAssociata="2" canale="167" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="82" termocoppiaAssociata="2" canale="187" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="83" termocoppiaAssociata="2" canale="207" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="13" idTermocoppia="0" idGruppo="84" termocoppiaAssociata="2" canale="227" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="13" idTermocoppia="0" idGruppo="85" termocoppiaAssociata="2" canale="244" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="86" termocoppiaAssociata="2" canale="148" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="87" termocoppiaAssociata="2" canale="168" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="88" termocoppiaAssociata="2" canale="188" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="89" termocoppiaAssociata="2" canale="208" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="90" termocoppiaAssociata="2" canale="228" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="14" idTermocoppia="0" idGruppo="91" termocoppiaAssociata="2" canale="245" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="15" idTermocoppia="0" idGruppo="79" termocoppiaAssociata="2" canale="132" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="92" termocoppiaAssociata="2" canale="149" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="93" termocoppiaAssociata="2" canale="169" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="94" termocoppiaAssociata="2" canale="189" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="95" termocoppiaAssociata="2" canale="209" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="15" idTermocoppia="0" idGruppo="96" termocoppiaAssociata="2" canale="229" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="15" idTermocoppia="0" idGruppo="85" termocoppiaAssociata="2" canale="244" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="97" termocoppiaAssociata="2" canale="150" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="98" termocoppiaAssociata="2" canale="170" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="99" termocoppiaAssociata="2" canale="190" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="100" termocoppiaAssociata="2" canale="210" fast="false" softDelay="20" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="101" termocoppiaAssociata="2" canale="230" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="16" idTermocoppia="0" idGruppo="102" termocoppiaAssociata="2" canale="246" fast="false" softDelay="100" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="17" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="2" canale="133" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="104" termocoppiaAssociata="2" canale="151" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="105" termocoppiaAssociata="2" canale="171" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="106" termocoppiaAssociata="2" canale="191" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="107" termocoppiaAssociata="2" canale="211" fast="false" softDelay="40" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="17" idTermocoppia="0" idGruppo="108" termocoppiaAssociata="2" canale="231" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="17" idTermocoppia="0" idGruppo="109" termocoppiaAssociata="2" canale="247" fast="false" softDelay="120" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="110" termocoppiaAssociata="2" canale="152" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="111" termocoppiaAssociata="2" canale="172" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="112" termocoppiaAssociata="2" canale="192" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="113" termocoppiaAssociata="2" canale="212" fast="false" softDelay="60" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="114" termocoppiaAssociata="2" canale="232" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="18" riga="18" idTermocoppia="0" idGruppo="115" termocoppiaAssociata="2" canale="248" fast="false" softDelay="140" sfasamImp="false" />
|
||||
<resistenza tipo="21" riga="19" idTermocoppia="0" idGruppo="103" termocoppiaAssociata="2" canale="133" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="116" termocoppiaAssociata="2" canale="153" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="117" termocoppiaAssociata="2" canale="173" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="118" termocoppiaAssociata="2" canale="193" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="119" termocoppiaAssociata="2" canale="213" fast="false" softDelay="80" sfasamImp="true" />
|
||||
<resistenza tipo="18" riga="19" idTermocoppia="0" idGruppo="120" termocoppiaAssociata="2" canale="233" fast="false" softDelay="0" sfasamImp="true" />
|
||||
<resistenza tipo="21" riga="19" idTermocoppia="0" idGruppo="109" termocoppiaAssociata="2" canale="247" fast="false" softDelay="120" sfasamImp="true" />
|
||||
</riflettore>
|
||||
<riferimenti corrente="110" potenza="500" modello="Quarzo 500" dimensione="2">1</riferimenti>
|
||||
<riferimenti corrente="0" potenza="250" modello="Quarzo 250" dimensione="1">2</riferimenti>
|
||||
<riferimenti corrente="138" potenza="600" modello="HTS 600" dimensione="2">3</riferimenti>
|
||||
<riferimenti corrente="105" potenza="400" modello="HTS 400" dimensione="2">4</riferimenti>
|
||||
<riferimenti corrente="76" potenza="300" modello="HTS 300" dimensione="1">5</riferimenti>
|
||||
<riferimenti corrente="139" potenza="650" modello="FSR 650" dimensione="2">6</riferimenti>
|
||||
<riferimenti corrente="105" potenza="400" modello="FSR 400" dimensione="2">7</riferimenti>
|
||||
<riferimenti corrente="49" potenza="325" modello="FSR 325" dimensione="1">8</riferimenti>
|
||||
<riferimenti corrente="168" potenza="400" modello="HTS 400 coppia" dimensione="2">9</riferimenti>
|
||||
<riferimenti corrente="168" potenza="400" modello="FSR 400 coppia" dimensione="2">10</riferimenti>
|
||||
<riferimenti corrente="135" potenza="250" modello="Quarzo 250 coppia" dimensione="2">11</riferimenti>
|
||||
<riferimenti corrente="42" potenza="200" modello="HTS 200" dimensione="1">12</riferimenti>
|
||||
<riferimenti corrente="105" potenza="200" modello="HTS 200 coppia" dimensione="1">13</riferimenti>
|
||||
<riferimenti corrente="42" potenza="200" modello="FSR 200" dimensione="1">14</riferimenti>
|
||||
<riferimenti corrente="104" potenza="200" modello="FSR 200 coppia" dimensione="1">15</riferimenti>
|
||||
<riferimenti corrente="167" potenza="400" modello="Quarzo 400 coppia" dimensione="2">16</riferimenti>
|
||||
<riferimenti corrente="104" potenza="400" modello="Quarzo 400" dimensione="1">17</riferimenti>
|
||||
<riferimenti corrente="169" potenza="800" modello="Alogena 800" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="15" softStart="2" filtCycle="2" PctMin="153">18</riferimenti>
|
||||
<riferimenti corrente="232" potenza="800" modello="Alogena 800 coppia" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">19</riferimenti>
|
||||
<riferimenti corrente="78" potenza="300" modello="Alogena 300" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">20</riferimenti>
|
||||
<riferimenti corrente="141" potenza="300" modello="Alogena 300 coppia" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">21</riferimenti>
|
||||
<riferimenti corrente="141" potenza="700" modello="Quarzo 700" dimensione="2">22</riferimenti>
|
||||
<riferimenti corrente="173" potenza="500" modello="Quarzo 500 coppia" dimensione="2">23</riferimenti>
|
||||
<riferimenti corrente="205" potenza="300" modello="Alogena 300 gruppo da 5" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">24</riferimenti>
|
||||
<riferimenti corrente="177" potenza="400" modello="Quarzo 400 gruppo da 3" dimensione="2">25</riferimenti>
|
||||
<riferimenti corrente="206" potenza="400" modello="Quarzo 400 gruppo da 4" dimensione="2">26</riferimenti>
|
||||
<riferimenti corrente="201" potenza="400" modello="HTS 400 gruppo da 3" dimensione="2">27</riferimenti>
|
||||
<riferimenti corrente="171" potenza="300" modello="Alogena 300 gruppo da 3" dimensione="1" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">28</riferimenti>
|
||||
<riferimenti corrente="177" potenza="300" modello="Alogena 300 gruppo da 4" dimensione="1">29</riferimenti>
|
||||
<riferimenti corrente="78" potenza="350" modello="Quarzo 350" dimensione="1">30</riferimenti>
|
||||
<riferimenti corrente="100" potenza="700" modello="Quarzo 700 coppia" dimensione="2">31</riferimenti>
|
||||
<riferimenti corrente="100" potenza="350" modello="Quarzo 350 coppia" dimensione="1">32</riferimenti>
|
||||
<riferimenti corrente="100" potenza="250" modello="Quarzo 250 coppia" dimensione="1">33</riferimenti>
|
||||
<riferimenti corrente="100" potenza="400" modello="HTS 400" dimensione="1">34</riferimenti>
|
||||
<riferimenti corrente="213" potenza="500" modello="Quarzo 500 gruppo da 4" dimensione="2">35</riferimenti>
|
||||
<riferimenti corrente="100" potenza="700" modello="Alogena 700" dimensione="2" correnteMinima="4" tolleranzaCorrente="10" tolleranzaLettureON="10" softStart="2" filtCycle="2" PctMin="153">36</riferimenti>
|
||||
<riferimenti corrente="104" potenza="400" modello="Quarzo 400" dimensione="2">37</riferimenti>
|
||||
<corrente valore="64" sens1="144" sens2="190" sens3="265" sens4="380" sens5="533" sens6="800" sens7="1187" sens8="1700">1</corrente>
|
||||
<corrente valore="72" sens1="150" sens2="200" sens3="280" sens4="400" sens5="566" sens6="845" sens7="1250" sens8="1800">2</corrente>
|
||||
<corrente valore="80" sens1="156" sens2="210" sens3="295" sens4="420" sens5="600" sens6="890" sens7="1312" sens8="1900">3</corrente>
|
||||
<corrente valore="88" sens1="162" sens2="220" sens3="310" sens4="440" sens5="633" sens6="935" sens7="1375" sens8="2000">4</corrente>
|
||||
<corrente valore="96" sens1="168" sens2="230" sens3="325" sens4="460" sens5="666" sens6="980" sens7="1437" sens8="2100">5</corrente>
|
||||
<corrente valore="104" sens1="175" sens2="240" sens3="340" sens4="480" sens5="700" sens6="1025" sens7="1500" sens8="2200">6</corrente>
|
||||
<corrente valore="112" sens1="181" sens2="250" sens3="355" sens4="500" sens5="733" sens6="1070" sens7="1562" sens8="2300">7</corrente>
|
||||
<corrente valore="120" sens1="187" sens2="260" sens3="370" sens4="520" sens5="766" sens6="1115" sens7="1625" sens8="2400">8</corrente>
|
||||
<corrente valore="128" sens1="193" sens2="270" sens3="385" sens4="540" sens5="800" sens6="1160" sens7="1687" sens8="2500">9</corrente>
|
||||
<corrente valore="136" sens1="200" sens2="280" sens3="400" sens4="560" sens5="833" sens6="1205" sens7="1750" sens8="2600">10</corrente>
|
||||
<corrente valore="144" sens1="206" sens2="290" sens3="415" sens4="580" sens5="866" sens6="1250" sens7="1812" sens8="2700">11</corrente>
|
||||
<corrente valore="152" sens1="212" sens2="325" sens3="430" sens4="600" sens5="899" sens6="1295" sens7="1874" sens8="2800">12</corrente>
|
||||
</riscaldo>
|
||||
@@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- edited with XMLSpy v2006 U (http://www.altova.com) by fg (nn) -->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||
attributeFormDefault="unqualified">
|
||||
<xs:complexType name="resistenzaType">
|
||||
<xs:attribute name="tipo" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Id tipo resistenza. Corrisponde al'id riferimento</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="riga" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Numero riga di appartenenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="idTermocoppia" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Id della termocoppia installata. 0 = no termocoppia, altrimenti 1...</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="termocoppiaAssociata" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Id della termocoppia di riferimento</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="idGruppo" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Id del gruppo di appartenenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="canale" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Numero del canale assoluto</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="fast" type="xs:boolean" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>TRUE = duty cycle nuovo, altrimenti FALSE</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="leftConstraint" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Spazio da aggiungere prima della resistenza [pix]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="rightConstraint" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Spazio da aggiungere dopo la resistenza [pix]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sfasamImp" type="xs:boolean" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sfasamento per pilotaggio a impulsi:
|
||||
possibilità di far lavorare alcuni canali sfasati rispetto agli altri, in modo da avere un assorbimento istantaneo il più basso possibile.
|
||||
Default=FALSE
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="softDelay" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Ritardo per la partenza del soft-start ad impulsi per ogni singolo canale senza che questo abbia necessariamente finito la rampa
|
||||
Default=0
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="riflettoreType">
|
||||
<xs:sequence>
|
||||
<xs:element name="resistenza" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="resistenzaType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="riferimentoType" mixed="true">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Id tipo resistenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:attribute name="corrente" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Corrente riferimento specifico per il tipo resistenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="potenza" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Potenza nominale della resistenza espressa in Watt</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="modello" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Marca e modello resistenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="dimensione" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>1=250mm 2=125mm</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="correnteMinima" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Soglia bassa sotto cui considerare l'assorbimento un allarme</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="tolleranzaCorrente" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Usata in collaudo. Esprime la semiampiezza dell'intorno di corrente di lettura entro cui l'assorbimento è considerato coretto</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="tolleranzaLettureON" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Usata in lavoro. Esprime il numero di letture non buone oltre cui considerare allarme</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="softStart" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Impostazioni softstart.
|
||||
Bit0-4: definiscono la velocità del softstart. Il valore indica il numero di ripetizioni del singolo step della rampa. Più il valore è piccolo maggiore sarà la velocità del softstart. [default 3].
|
||||
Bit5: se = 0 il softstart lavora con tabella fissa (solo 50hZ), se = 1 il softstart lavora con i valori WaveMax e IntervalWidth, anche con frequenze diverse da 50hZ.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="filtCycle" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Numero di letture dell'allarme oltre cui considerare vero l'allarme</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="SoftLim" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Limite di percentuale per soft start
|
||||
Default=100
|
||||
Esempio: se pct target = 50% e SoftLim=35%, viene effettuato il soft start fino al 35% poi si salta alla pct target di 50%
|
||||
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="PctMin" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Percentuale minima per duty a impulsi
|
||||
Default=0
|
||||
Esempio: se PctMin=40% per pct target da 0-39% viene usato il pilataggio a parzializzazione di fase (alogeno) da 40% a 100% viene usato il pilotaggio a impulsi (quarzo)
|
||||
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="correnteType" mixed="true">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Record di configurazione correnti per tipo resistenza</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:attribute name="valore" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Boh!!!</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens1" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens2" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens3" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens4" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens5" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens6" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens7" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="sens8" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Sensibilità [W]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
<xs:element name="riscaldo">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Configurazione sistema di riscaldo NEW_Risk2007</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="riflettore" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="riflettoreType">
|
||||
<xs:attribute name="tipo" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>0 = riscaldo superiore, 1 = riscaldo inferiore, 2 = preriscaldo sup., 3 = preriscaldo inf.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="dimensionScale" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Fattore di scala per disegnare il riscaldo [TwinPix]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="slimScale" type="xs:double" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Fattore di proporzione fra larghezza e altezza [larghezza/altezza]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="offsetTc" type="xs:integer">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Offset di compensazione lettura termocoppia</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="rowOffset" type="xs:integer">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Interasse fra le righe di resistenza [mm]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="riferimenti" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="riferimentoType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="corrente" maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:complexType>
|
||||
<xs:complexContent>
|
||||
<xs:extension base="correnteType"/>
|
||||
</xs:complexContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="addrTc" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Indirizzo di memorizzazione termocoppie lato CPU: 4D5=R8TC8IO, D5=NEW_RISK2007</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="baudRate" type="xs:long" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Velocità di trasmissione [baud] (9600,19200)</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="comPort" type="xs:integer" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Porta seriale per comunicazione con CPU riscaldo</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="gainTc" type="xs:string" use="required">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Fattore di moltiplicazione della lettura della termocoppia: 0.5=R8TC8IO, 0.6=NEW_RISK2007</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="softStartParam" type="xs:boolean" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>TRUE = utilizzo la parametrizzazione per il softStart, FALSE = utilizzo il softstart cablato nel firmware delle res8CH</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="waveMax" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Numero di semionde massime in un secondo (50hZ = 120, 60hZ = 140)</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="intervalWidth" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Durata in tempo di 1/100 di semionda [microsec] (50hZ = 95, 60hZ = 82)</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="comTimeout" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Durata timeout per spegnimento riscaldo in caso di mancanza di comunicazione con la CPU. Trascorso il timout serve rimandare un comando di ON alla CPU per la riaccensione del riscaldo. Indicando 0 la CPU ignora lo spegnimento automatico su assenza di comunicazione. [sec]</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="intervalWidthQuarzo" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Durata in tempo di 1/100 di semionda [microsec] per lampade al quarzo</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="regFramePeriodQuarzo" type="xs:integer" use="optional">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Frequenza di invio dei frame di regolazione dalla cpu per lampade al quarzo</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
@@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<serverConfig>
|
||||
<ncConfig>
|
||||
<ncVendor>DEMO</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI -->
|
||||
<showNcHMI>true</showNcHMI>
|
||||
<ncIpAddress>localhost</ncIpAddress>
|
||||
<ncPort>8080</ncPort>
|
||||
<ncVendor>S7NET</ncVendor> <!-- NO_NC/DEMO/FANUC/SIEMENS/OSAI/S7NET -->
|
||||
<showNcHMI>false</showNcHMI>
|
||||
<ncIpAddress>192.168.0.102</ncIpAddress>
|
||||
<ncPort>102</ncPort>
|
||||
<machineModel>Ares 37 OF</machineModel>
|
||||
<sharedPath>C:\PartPrg\</sharedPath>
|
||||
<sharedName>//PARTPRG:/</sharedName>
|
||||
|
||||
@@ -1,78 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:element name="serverConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ncConfig">
|
||||
<xs:complexType>
|
||||
<xs:element name="serverConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ncVendor" type="ncType" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="showNcHMI" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="ncIpAddress" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="ncPort" type="xs:int" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="machineModel" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="sharedPath" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="sharedName" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="installationDate" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="mgiOption" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="siemensKeyboardOption" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="machineNumberHasLetters" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="ncConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="ncVendor" type="ncType" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="showNcHMI" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="ncIpAddress" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="ncPort" type="xs:int" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="machineModel" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="sharedPath" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="sharedName" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="installationDate" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="mgiOption" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="siemensKeyboardOption" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="machineNumberHasLetters" type="xs:boolean" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="softwareProdConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="path" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="serverConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="serverAddress" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverPort" type="xs:int" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="language" type="xs:language" minOccurs='1' maxOccurs='1' default="en"/>
|
||||
<xs:element name="enableDirectoryBrowsing" type="xs:boolean" default="false"/>
|
||||
<xs:element name="databaseAddress" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="autoOpenCmsClient" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="textEditorPath" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="MTCFolderPath" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="MTCApplicationName" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="maxAlarmsRows" type="xs:int" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="alarmToDelete" type="xs:int" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="CMSConnectReady" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="extSoftwares">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="software" minOccurs='0' maxOccurs='15'>
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="path" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="longName" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="shortName" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="arguments" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="inMainMenuBar" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="softwareProdConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="enabled" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="path" type="xs:string" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="serverConfig">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="serverAddress" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="serverPort" type="xs:int" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="language" type="xs:language" minOccurs='1' maxOccurs='1' default="en"/>
|
||||
<xs:element name="enableDirectoryBrowsing" type="xs:boolean" default="false"/>
|
||||
<xs:element name="databaseAddress" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="autoOpenCmsClient" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="textEditorPath" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="MTCFolderPath" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="MTCApplicationName" type="xs:string" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="maxAlarmsRows" type="xs:int" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="alarmToDelete" type="xs:int" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element name="CMSConnectReady" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="extSoftwares">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element name="software" minOccurs='0' maxOccurs='15'>
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="path" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="longName" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="shortName" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="arguments" minOccurs='1' maxOccurs='1'/>
|
||||
<xs:element name="inMainMenuBar" minOccurs='1' maxOccurs='1'/>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:simpleType name="ncType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEMO" />
|
||||
<xs:enumeration value="OSAI" />
|
||||
<xs:enumeration value="FANUC" />
|
||||
<xs:enumeration value="SIEMENS" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="ncType" final="restriction" >
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="DEMO" />
|
||||
<xs:enumeration value="OSAI" />
|
||||
<xs:enumeration value="FANUC" />
|
||||
<xs:enumeration value="SIEMENS" />
|
||||
<xs:enumeration value="S7NET" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:schema>
|
||||
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Config
|
||||
{
|
||||
/// <summary>
|
||||
/// Live data for Thermo Active
|
||||
/// </summary>
|
||||
public class LiveData
|
||||
{
|
||||
/// <summary>
|
||||
/// Current loaded recipe
|
||||
/// </summary>
|
||||
public string RecipeName = "current.json";
|
||||
/// <summary>
|
||||
/// Dictionary of all parameters and values
|
||||
/// </summary>
|
||||
public Dictionary<string, double> RecipeParameters;
|
||||
/// <summary>
|
||||
/// Dictionary of all channels and relative setpoints
|
||||
/// </summary>
|
||||
public Dictionary<int, int> ChannelSetpoints;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -32,6 +32,8 @@ namespace Thermo.Active.Config
|
||||
public static List<NcSoftKeysModel> NcSoftKeysConfig;
|
||||
public static List<AlarmsConfigModel> InitialAlarmsConfig;
|
||||
public static List<HeadsConfigModel> HeadsConfig;
|
||||
|
||||
|
||||
public static CmsConnectConfigModel CmsConnectConfig;
|
||||
|
||||
public static AreasConfigModel ProductionConfig;
|
||||
@@ -51,5 +53,16 @@ namespace Thermo.Active.Config
|
||||
public static List<string> MacrosConfig;
|
||||
|
||||
public static string CMSMainProgramContent;
|
||||
|
||||
|
||||
// Thermo
|
||||
public static List<RecipeConfigModel> RecipeConfig;
|
||||
public static List<ModBlockConfigModel> ModBlockConfig;
|
||||
public static List<RiskResistModel> RiskResistConfig;
|
||||
public static List<RiskChannelModel> RiskChannelConfig;
|
||||
public static List<RiskBoardModel> RiskBoardConfig;
|
||||
|
||||
public static LiveData RecipeLiveData = new LiveData();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,14 +13,15 @@ using System.Xml.Linq;
|
||||
using System.Xml.Schema;
|
||||
using System.Xml.Serialization;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Utils.SupportFunctions;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Thermo.Active.Config
|
||||
{
|
||||
public static class ServerConfigController
|
||||
{
|
||||
private static string actualFileName;
|
||||
private static string actualFileName;
|
||||
|
||||
public static void ReadStartupConfig()
|
||||
{
|
||||
@@ -33,15 +34,17 @@ namespace Thermo.Active.Config
|
||||
ReadUserSoftKeysConfig();
|
||||
ReadAlarmsConfig();
|
||||
ReadHeadsConfig();
|
||||
ReadRecipeConfig();
|
||||
ReadModBlockConfig();
|
||||
ReadRiskConfig();
|
||||
// ReadCMSConnectConfig();
|
||||
ReadMacros();
|
||||
ReadScadaFile();
|
||||
//ReadMainProgram();
|
||||
}
|
||||
catch (XmlException ex)
|
||||
{
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.FATAL,
|
||||
"Error while reading file: " + ex.SourceUri +
|
||||
"Error while reading file: " + ex.SourceUri +
|
||||
"\n Error: " + ex.Message,
|
||||
true
|
||||
);
|
||||
@@ -50,7 +53,29 @@ namespace Thermo.Active.Config
|
||||
{
|
||||
var message = ex.Message;
|
||||
if (ex.InnerException != null)
|
||||
message += "\n"+ex.InnerException.Message;
|
||||
message += "\n" + ex.InnerException.Message;
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.FATAL, message, true);
|
||||
}
|
||||
}
|
||||
public static void ReadLastRecipe()
|
||||
{
|
||||
try
|
||||
{
|
||||
ReadLiveData();
|
||||
}
|
||||
catch (XmlException ex)
|
||||
{
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.FATAL,
|
||||
"Error while reading file: " + ex.SourceUri +
|
||||
"\n Error: " + ex.Message,
|
||||
true
|
||||
);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var message = ex.Message;
|
||||
if (ex.InnerException != null)
|
||||
message += "\n" + ex.InnerException.Message;
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.FATAL, message, true);
|
||||
}
|
||||
}
|
||||
@@ -59,7 +84,7 @@ namespace Thermo.Active.Config
|
||||
{
|
||||
// Create new instance
|
||||
XmlSchemaSet readerSettings = new XmlSchemaSet();
|
||||
|
||||
|
||||
// Add Schema from Assembly
|
||||
Assembly myAssembly = Assembly.GetExecutingAssembly();
|
||||
using (Stream schemaStream = myAssembly.GetManifestResourceStream(configSchemaFilePath))
|
||||
@@ -69,11 +94,11 @@ namespace Thermo.Active.Config
|
||||
readerSettings.Add(null, schemaReader);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
actualFileName = configFilePath;
|
||||
|
||||
// Open file reader
|
||||
XDocument xmlConfigFile = XDocument.Load((!isFullPath ? BASE_PATH + "\\": "") + configFilePath);
|
||||
XDocument xmlConfigFile = XDocument.Load((!isFullPath ? BASE_PATH + "\\" : "") + configFilePath);
|
||||
// Validate file
|
||||
xmlConfigFile.Validate(readerSettings, ValidationHandler);
|
||||
|
||||
@@ -129,13 +154,13 @@ namespace Thermo.Active.Config
|
||||
break;
|
||||
|
||||
case AREAS.SCADA_KEY:
|
||||
SetAreaValue(ref ScadaConfig, element);
|
||||
SetAreaValue(ref ScadaConfig, element);
|
||||
break;
|
||||
|
||||
case AREAS.JOBEDITOR_KEY:
|
||||
SetAreaValue(ref JobEditorConfig, element);
|
||||
break;
|
||||
|
||||
|
||||
case AREAS.USERS_KEY:
|
||||
SetAreaValue(ref UsersConfig, element);
|
||||
break;
|
||||
@@ -157,20 +182,20 @@ namespace Thermo.Active.Config
|
||||
private static void ValidationHandler(object sender, ValidationEventArgs e)
|
||||
{
|
||||
if (e.Severity == XmlSeverityType.Warning)
|
||||
{
|
||||
{
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.WARNING, e.Message, true);
|
||||
}
|
||||
}
|
||||
else if (e.Severity == XmlSeverityType.Error)
|
||||
{
|
||||
{
|
||||
ExceptionManager.ManageError(ERROR_LEVEL.FATAL,
|
||||
// "Error while reading file: " + e.Exception.SourceUri +
|
||||
"Error while reading XML file \"" + actualFileName + "\" \n\n" + e.Message,
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckAreaStatus(string areaName)
|
||||
public static bool CheckAreaStatus(string areaName)
|
||||
{ // Get Area status ( enabled field) by name
|
||||
switch (areaName)
|
||||
{
|
||||
@@ -205,7 +230,7 @@ namespace Thermo.Active.Config
|
||||
}
|
||||
|
||||
private static void ReadScadaFile()
|
||||
{
|
||||
{
|
||||
DirectoryInfo d = new DirectoryInfo(SCADA_DIRECTORY);
|
||||
FileInfo[] files = d.GetFiles("*.xml");
|
||||
|
||||
@@ -217,7 +242,7 @@ namespace Thermo.Active.Config
|
||||
|
||||
StreamReader sr = new StreamReader(SCADA_DIRECTORY + file.Name);
|
||||
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ScadaSchemaModel));
|
||||
ScadaSchemaModel schema = xmlSerializer.Deserialize(sr) as ScadaSchemaModel;
|
||||
ScadaSchemaModel schema = xmlSerializer.Deserialize(sr) as ScadaSchemaModel;
|
||||
|
||||
|
||||
// Setup incremental ids
|
||||
@@ -230,7 +255,8 @@ namespace Thermo.Active.Config
|
||||
{
|
||||
Id = i++,
|
||||
Buttons = x.Buttons.Select(y => { y.Id = i++; return y; }).ToArray(),
|
||||
Images = x.Images.Select(y => {
|
||||
Images = x.Images.Select(y =>
|
||||
{
|
||||
y.Id = i++;
|
||||
y.Name = GetImageBase64String(SCADA_DIRECTORY + name, y.Name);
|
||||
return y;
|
||||
@@ -255,8 +281,6 @@ namespace Thermo.Active.Config
|
||||
|
||||
public static void ReadServerConfig()
|
||||
{
|
||||
//CalculateHash(SERVER_CONFIG_PATH);
|
||||
|
||||
// Get server file handler
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(SERVER_CONFIG_SCHEMA_PATH, SERVER_CONFIG_PATH);
|
||||
|
||||
@@ -276,7 +300,7 @@ namespace Thermo.Active.Config
|
||||
InstallationDate = x.Element("installationDate").Value,
|
||||
MgiOption = Convert.ToBoolean(x.Element("mgiOption").Value),
|
||||
SiemensKeyboardOption = Convert.ToBoolean(x.Element("siemensKeyboardOption").Value),
|
||||
MachineNumberHasLetters = Convert.ToBoolean(x.Element("machineNumberHasLetters").Value)
|
||||
MachineNumberHasLetters = Convert.ToBoolean(x.Element("machineNumberHasLetters").Value)
|
||||
}).FirstOrDefault();
|
||||
|
||||
// Read Prod Software Config with LINQ
|
||||
@@ -285,9 +309,9 @@ namespace Thermo.Active.Config
|
||||
.Descendants(PROD_SFT_CONFIG_KEY)
|
||||
.Select(x => new SoftwareProdConfigModel()
|
||||
{
|
||||
Enabled = Convert.ToBoolean(x.Element("enabled").Value),
|
||||
Enabled = Convert.ToBoolean(x.Element("enabled").Value),
|
||||
Path = x.Element("path").Value
|
||||
}).FirstOrDefault();
|
||||
}).FirstOrDefault();
|
||||
|
||||
// Read server config with LINQ and save into static config
|
||||
ServerStartupConfig = xmlConfigFile
|
||||
@@ -301,7 +325,7 @@ namespace Thermo.Active.Config
|
||||
EnableDirectoryBrowsing = Convert.ToBoolean(x.Element("enableDirectoryBrowsing").Value),
|
||||
DatabaseAddress = x.Element("databaseAddress").Value,
|
||||
AutoOpenCmsClient = Convert.ToBoolean(x.Element("autoOpenCmsClient").Value),
|
||||
TextEditorPath = x.Element("textEditorPath").Value,
|
||||
TextEditorPath = x.Element("textEditorPath").Value,
|
||||
MTCFolderPath = x.Element("MTCFolderPath").Value,
|
||||
MTCApplicationName = x.Element("MTCApplicationName").Value,
|
||||
MaxAlarmsRows = Convert.ToInt32(x.Element("maxAlarmsRows").Value),
|
||||
@@ -344,7 +368,7 @@ namespace Thermo.Active.Config
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
|
||||
|
||||
ReadAssistanceConfig();
|
||||
|
||||
|
||||
MaintenancesConfig = xmlConfigFile
|
||||
.Descendants("maintenances")
|
||||
.Elements("maintenance")
|
||||
@@ -373,11 +397,11 @@ namespace Thermo.Active.Config
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
|
||||
ReadAssistanceConfigFromXml(
|
||||
xmlConfigFile.Root.Descendants("cmsContacts").FirstOrDefault(),
|
||||
out CmsContactConfig,
|
||||
out CmsAuxContact1,
|
||||
out CmsContactConfig,
|
||||
out CmsAuxContact1,
|
||||
out CmsAuxContact2
|
||||
);
|
||||
|
||||
|
||||
xmlConfigFile = GetXmlHandlerWithValidator(MAINTENANCES_CONFIG_SCHEMA_PATH, MAINTENANCES_CONFIG_PATH);
|
||||
ReadAssistanceConfigFromXml(
|
||||
xmlConfigFile.Root.Descendants("scmContacts").FirstOrDefault(),
|
||||
@@ -544,7 +568,7 @@ namespace Thermo.Active.Config
|
||||
{
|
||||
AlarmId = Convert.ToInt32(x.Element("alarmId").Value),
|
||||
PlcId = Convert.ToInt32(x.Element("plcId").Value),
|
||||
RestoreIsActive = Convert.ToBoolean(x.Element("restoreIsActive").Value)
|
||||
RestoreIsActive = Convert.ToBoolean(x.Element("restoreIsActive").Value)
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
@@ -571,7 +595,202 @@ namespace Thermo.Active.Config
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Recipe Config setup from file
|
||||
/// </summary>
|
||||
private static void ReadRecipeConfig()
|
||||
{
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(RECIPE_CONFIG_SCHEMA_PATH, RECIPE_CONFIG_PATH);
|
||||
|
||||
// Read Recipe config from XML file
|
||||
RecipeConfig = xmlConfigFile
|
||||
.Root
|
||||
.Elements()
|
||||
.Select(x => new RecipeConfigModel()
|
||||
{
|
||||
Id = Convert.ToInt16(x.Element("id").Value),
|
||||
Category = GetTActParamType(x.Element("category").Value),
|
||||
SubCategory_1 = x.Element("subCategory_1").Value,
|
||||
SubCategory_2 = x.Element("subCategory_2").Value,
|
||||
Name = x.Element("name").Value,
|
||||
Description = x.Element("description").Value,
|
||||
Format = x.Element("format").Value,
|
||||
ScaleFactor = Convert.ToInt16(x.Element("scaleFactor").Value)
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Module config setup from file
|
||||
/// </summary>
|
||||
private static void ReadModBlockConfig()
|
||||
{
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(MODBLOCK_CONFIG_SCHEMA_PATH, MODBLOCK_CONFIG_PATH);
|
||||
|
||||
// Read head config from XML file
|
||||
ModBlockConfig = xmlConfigFile
|
||||
.Root
|
||||
.Elements()
|
||||
.Select(x => new ModBlockConfigModel()
|
||||
{
|
||||
Id = Convert.ToInt16(x.Element("id").Value),
|
||||
LocalizedLabels = x.Element("localizedLabels").Elements().ToDictionary(
|
||||
y => y.Attribute("langKey").Value, y => y.Value
|
||||
),
|
||||
Type = GetTActMB_Type(x.Element("type").Value),
|
||||
Section = GetTActMB_Section(x.Element("section").Value),
|
||||
IdParam = Convert.ToInt16(x.Element("idParam").Value),
|
||||
ShowDelay = Convert.ToBoolean(x.Element("showDelay").Value),
|
||||
Priority = Convert.ToInt16(x.Element("priority").Value)
|
||||
})
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Warmers config setup from file
|
||||
/// </summary>
|
||||
private static void ReadRiskConfig()
|
||||
{
|
||||
XDocument xmlConfigFile = GetXmlHandlerWithValidator(RISK_CONFIG_SCHEMA_PATH, RISK_CONFIG_PATH);
|
||||
|
||||
int i = 0;
|
||||
|
||||
List<RiskRiflettore> Riflettori = new List<RiskRiflettore>();
|
||||
List<RiskResistenza> Resistenze = new List<RiskResistenza>();
|
||||
List<RiskRiferimenti> Riferimenti = new List<RiskRiferimenti>();
|
||||
|
||||
// carico gli oggetti "nativi"
|
||||
Riferimenti = xmlConfigFile
|
||||
.Root
|
||||
.Elements("riferimenti")
|
||||
.Select(x => new RiskRiferimenti()
|
||||
{
|
||||
Id = Convert.ToInt16(x.Value),
|
||||
Dimensione = Convert.ToInt16(x.Attribute("dimensione").Value),
|
||||
Potenza = Convert.ToInt16(x.Attribute("potenza").Value),
|
||||
Modello = x.Attribute("modello").Value
|
||||
})
|
||||
.ToList();
|
||||
|
||||
|
||||
Riflettori = xmlConfigFile
|
||||
.Root
|
||||
.Elements("riflettore")
|
||||
.Select(x => new RiskRiflettore()
|
||||
{
|
||||
Tipo = Convert.ToInt16(x.Attribute("tipo").Value),
|
||||
Resistenze = x.Elements("resistenza")
|
||||
.Select(y => new RiskResistenza()
|
||||
{
|
||||
Canale = Convert.ToInt16(y.Attribute("canale").Value),
|
||||
Riga = Convert.ToInt16(y.Attribute("riga").Value),
|
||||
Tipo = Convert.ToInt16(y.Attribute("tipo").Value)
|
||||
}
|
||||
)
|
||||
.ToList()
|
||||
})
|
||||
.ToList();
|
||||
|
||||
// conversione da modelli RISK a modello Thermo...
|
||||
int numCol = -1;
|
||||
int ResistId = 0;
|
||||
int oldRow = 0;
|
||||
int currIdBoard = 0;
|
||||
RiskBoardConfig = new List<RiskBoardModel>();
|
||||
RiskResistConfig = new List<RiskResistModel>();
|
||||
RiskChannelConfig = new List<RiskChannelModel>();
|
||||
|
||||
// inizializzo le 64 schede a 0 canali...
|
||||
for (int idxBoard = 0; idxBoard < 64; idxBoard++)
|
||||
{
|
||||
RiskBoardConfig.Add(new RiskBoardModel()
|
||||
{
|
||||
IdBoard = idxBoard,
|
||||
NumChannels = 0
|
||||
});
|
||||
}
|
||||
|
||||
// ciclo x calcolare i canali
|
||||
foreach (var riflettore in Riflettori)
|
||||
{
|
||||
// ciclo sulle resistenze
|
||||
foreach (var resistenza in riflettore.Resistenze)
|
||||
{
|
||||
// cerco la scheda dato il canale... 16 ch x ogni scheda
|
||||
currIdBoard = (resistenza.Canale - 1) / 16;
|
||||
// cerco se ho già la scheda
|
||||
var boardFound = RiskBoardConfig.Find(item => item.IdBoard == currIdBoard);
|
||||
if (boardFound == null)
|
||||
{
|
||||
RiskBoardConfig.Add(new RiskBoardModel()
|
||||
{
|
||||
IdBoard = currIdBoard,
|
||||
NumChannels = 1
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
boardFound.NumChannels += 1;
|
||||
}
|
||||
|
||||
|
||||
// cerco se ho già il canale
|
||||
var chanFound = RiskChannelConfig.Find(item => item.IdChannel == resistenza.Canale);
|
||||
if (chanFound == null)
|
||||
{
|
||||
// cerco il TIPO...
|
||||
var riferimento = Riferimenti.Find(x => x.Id == resistenza.Tipo);
|
||||
if (riferimento != null)
|
||||
{
|
||||
RiskChannelConfig.Add(new RiskChannelModel()
|
||||
{
|
||||
IdChannel = resistenza.Canale,
|
||||
IdReflector = riflettore.Tipo,
|
||||
SetpointRecipe = 0,
|
||||
SetpointThermo = 0,
|
||||
MaxPower = riferimento.Potenza,
|
||||
NumResist = 1,
|
||||
CalcIchMin = riferimento.Modello.Contains("Quarzo")
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
chanFound.NumResist += 1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ciclo sui riflettori x recuperare le resistenze...
|
||||
foreach (var riflettore in Riflettori)
|
||||
{
|
||||
// ciclo sulle resistente
|
||||
foreach (var resistenza in riflettore.Resistenze)
|
||||
{
|
||||
if (oldRow != resistenza.Riga)
|
||||
{
|
||||
numCol = 0;
|
||||
oldRow = resistenza.Riga;
|
||||
}
|
||||
else
|
||||
{
|
||||
numCol++;
|
||||
}
|
||||
|
||||
// cerco il TIPO...
|
||||
var riferimento = Riferimenti.Find(x => x.Id == resistenza.Tipo);
|
||||
|
||||
RiskResistConfig.Add(new RiskResistModel()
|
||||
{
|
||||
Id = ResistId++,
|
||||
Row = resistenza.Riga,
|
||||
Column = numCol,
|
||||
IdChannel = resistenza.Canale,
|
||||
Dimension = riferimento.Dimensione
|
||||
}); ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void ReadCMSConnectConfig()
|
||||
{
|
||||
@@ -603,14 +822,14 @@ namespace Thermo.Active.Config
|
||||
Token = x.Element("token").Value
|
||||
})
|
||||
.FirstOrDefault();
|
||||
|
||||
|
||||
if (DecodeCMSConnectGatewayLogin(tempGatewayConfigModel.Token, out _tempUSR, out _tempPSW))
|
||||
{
|
||||
tempGatewayConfigModel.Username = _tempUSR;
|
||||
tempGatewayConfigModel.Password = _tempPSW;
|
||||
}
|
||||
else
|
||||
throw new Exception("Error while reading \""+ CMS_CONNECT_CONFIG_PATH + "\": Gateway Token not valid");
|
||||
throw new Exception("Error while reading \"" + CMS_CONNECT_CONFIG_PATH + "\": Gateway Token not valid");
|
||||
|
||||
CmsConnectConfig.Gateway = tempGatewayConfigModel;
|
||||
}
|
||||
@@ -627,14 +846,178 @@ namespace Thermo.Active.Config
|
||||
.Select(x => x.Value)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
|
||||
public static void ReadMainProgram()
|
||||
/// <summary>
|
||||
/// Try to load live data from json persistence file
|
||||
/// </summary>
|
||||
public static bool ReadLiveData()
|
||||
{
|
||||
if (File.Exists(MAIN_PROGRAM_CONFIG_PATH))
|
||||
bool answ = false;
|
||||
if (File.Exists(LIVE_RECIPE_PATH))
|
||||
{
|
||||
CMSMainProgramContent = File.ReadAllText(MAIN_PROGRAM_CONFIG_PATH);
|
||||
// load all text data
|
||||
var rawData = File.ReadAllText(LIVE_RECIPE_PATH);
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
answ = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// reload from template...
|
||||
var rawData = File.ReadAllText(RECIPE_TEMPLATE_PATH);
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// salva current
|
||||
SaveRecipeCurrent();
|
||||
answ = true;
|
||||
}
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to load selected recipe to live data (memory and json persistence file)
|
||||
/// </summary>
|
||||
public static bool LoadRecipe(string filePath)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
// check file extension
|
||||
string fileName = Path.GetFileName(filePath);
|
||||
if (!fileName.EndsWith(".json"))
|
||||
{
|
||||
fileName += ".json";
|
||||
filePath += ".json";
|
||||
}
|
||||
|
||||
// check filePath...
|
||||
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
{
|
||||
// aggiungo base path!
|
||||
filePath = RECIPE_DIRECTORY + filePath;
|
||||
}
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
answ = true;
|
||||
|
||||
// load all text data
|
||||
var rawData = File.ReadAllText(filePath);
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// update current live data!
|
||||
SaveRecipeCurrent();
|
||||
}
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to load template recipe
|
||||
/// </summary>
|
||||
public static bool LoadTemplate()
|
||||
{
|
||||
bool answ = false;
|
||||
// check filePath...
|
||||
if (File.Exists(RECIPE_TEMPLATE_PATH))
|
||||
{
|
||||
answ = true;
|
||||
|
||||
// load all text data
|
||||
var rawData = File.ReadAllText(RECIPE_TEMPLATE_PATH);
|
||||
try
|
||||
{
|
||||
// deserialize to object
|
||||
RecipeLiveData = JsonConvert.DeserializeObject<LiveData>(rawData);
|
||||
// update NAME
|
||||
RecipeLiveData.RecipeName = $"{DateTime.Now:yyyyMMss_HHmmss}.json";
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// update current live data!
|
||||
SaveRecipeCurrent();
|
||||
}
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to write live data to json persistence file
|
||||
/// </summary>
|
||||
public static bool SaveRecipeCurrent()
|
||||
{
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
answ = true;
|
||||
// serialize
|
||||
string rawData = JsonConvert.SerializeObject(RecipeLiveData);
|
||||
// save live!
|
||||
var dir = Path.GetDirectoryName(LIVE_RECIPE_PATH);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
}
|
||||
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to save live recipe as NEW template
|
||||
/// </summary>
|
||||
public static bool SaveRecipeTemplate()
|
||||
{
|
||||
|
||||
RecipeLiveData.RecipeName = "template.json";
|
||||
return SaveRecipe(RECIPE_TEMPLATE_PATH);
|
||||
}
|
||||
/// <summary>
|
||||
/// Try to save live recipe to selected filePath
|
||||
/// </summary>
|
||||
public static bool SaveRecipe(string filePath)
|
||||
{
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
answ = true;
|
||||
string fileName = Path.GetFileName(filePath);
|
||||
if (!fileName.EndsWith(".json"))
|
||||
{
|
||||
fileName += ".json";
|
||||
filePath += ".json";
|
||||
}
|
||||
// fix name!
|
||||
RecipeLiveData.RecipeName = fileName;
|
||||
// serialize
|
||||
string rawData = JsonConvert.SerializeObject(RecipeLiveData);
|
||||
// save live!
|
||||
File.WriteAllText(LIVE_RECIPE_PATH, rawData);
|
||||
// check filePath...
|
||||
if (!filePath.Contains(RECIPE_DIRECTORY) && filePath != RECIPE_TEMPLATE_PATH)
|
||||
{
|
||||
// aggiungo base path!
|
||||
filePath = RECIPE_DIRECTORY + filePath;
|
||||
}
|
||||
// save!
|
||||
File.WriteAllText(filePath, rawData);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// rendo se fatto
|
||||
return answ;
|
||||
}
|
||||
|
||||
public static string CalculateHash(string filename)
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@@ -52,9 +55,13 @@
|
||||
<SubType>Designer</SubType>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Compile Include="LiveData.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ServerConfig.cs" />
|
||||
<Compile Include="ServerConfigController.cs" />
|
||||
<Content Include="Recipes\.placeholder.txt">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<EmbeddedResource Include="Report\Programs.xml">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
@@ -69,6 +76,15 @@
|
||||
<Content Include="Config\customMainProgram.txt">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\moduleBlockConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\recipeConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\risk2007.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Config\userSoftKeyConfig.xml">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -83,7 +99,7 @@
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<EmbeddedResource Include="Config\headsConfigValidator.xsd">
|
||||
<EmbeddedResource Include="Config\recipeConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Config\maintenancesConfigValidator.xsd">
|
||||
@@ -151,5 +167,27 @@
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config\headsConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config\moduleBlockConfigValidator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Config\risk2007Validator.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
<Content Include="Config\Recipes\template.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
|
||||
</packages>
|
||||
@@ -32,9 +32,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library">
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
@@ -63,6 +60,10 @@
|
||||
<Compile Include="ThreadsSiemensHmi.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Config\Thermo.Active.Config.csproj">
|
||||
<Project>{3f5c2483-fc87-43ef-92a8-66ff7d0e440f}</Project>
|
||||
<Name>Thermo.Active.Config</Name>
|
||||
|
||||
@@ -21,20 +21,26 @@ using TeamDev.SDK.MVVM;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Utils.ExceptionManager;
|
||||
using static Thermo.Active.Utils.ExceptionManager;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThProd;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
|
||||
public static class ThreadsFunctions
|
||||
public static class ThreadsFunctions
|
||||
{
|
||||
public static int recipeRtCounter = 0;
|
||||
public static int modulesRtCounter = 0;
|
||||
public static bool reconnectionIsRunning = false;
|
||||
|
||||
private static ConcurrentDictionary<string, long> Timers = new ConcurrentDictionary<string, long>();
|
||||
private static ConcurrentDictionary<string, long> Counter = new ConcurrentDictionary<string, long>();
|
||||
|
||||
private static Thread ConnThread;
|
||||
|
||||
|
||||
#region Functions
|
||||
|
||||
public static void ManageWatchdog()
|
||||
public static void ManageWatchdog()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
@@ -47,15 +53,10 @@ public static class ThreadsFunctions
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
//if(errorCounter == MAX_NUM_OF_WATCHDOG_ERROR)
|
||||
//{
|
||||
|
||||
//}
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Manage watchdog
|
||||
libraryError = ncAdapter.ManageWatchdog();
|
||||
@@ -65,7 +66,7 @@ public static class ThreadsFunctions
|
||||
errorCounter++;
|
||||
}
|
||||
else if (libraryError == NO_ERROR)
|
||||
errorCounter = 0;
|
||||
errorCounter = 0;
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
@@ -85,6 +86,132 @@ public static class ThreadsFunctions
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Manage status/command words for actions
|
||||
/// </summary>
|
||||
public static void ManageStatusCommand()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Manage status command
|
||||
libraryError = ncAdapter.ManageStatusCommand();
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Manage action for conf request
|
||||
/// </summary>
|
||||
public static void ManageConfRequest()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Manage status command
|
||||
libraryError = ncAdapter.ManageConfRequest();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(2000, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Manage action for conf request
|
||||
/// </summary>
|
||||
public static void ManageProdUpdate()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
//// Manage status command
|
||||
//libraryError = ncAdapter.ManageProdUpdate();
|
||||
//if (libraryError.errorCode != 0)
|
||||
// ManageLibraryError(libraryError);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(1000, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException ex)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadAlarms()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
@@ -304,10 +431,13 @@ public static class ThreadsFunctions
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_EXPIRED_MAINTENANCES_DATA, null, expiredMaintenances);
|
||||
|
||||
// 2020.06.18 commentata da indicazione di Lucio Maranta (NON dovrebbe servire ora)
|
||||
#if false
|
||||
//Manage Candies
|
||||
libraryError = ncAdapter.ManageCandies();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
ManageLibraryError(libraryError);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
@@ -375,50 +505,6 @@ public static class ThreadsFunctions
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadHeadsData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get Data from config and PLC
|
||||
libraryError = ncAdapter.GetHeadsData(out List<DTOHeadModel> heads);
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_HEADS_DATA, null, heads);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadAxesNamesData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
@@ -507,99 +593,7 @@ public static class ThreadsFunctions
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadActiveProgramData()
|
||||
{
|
||||
NcFileAdapter ncAdapter = new NcFileAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get Data from config and PLC
|
||||
libraryError = ncAdapter.GetActiveProgramInfo(out DTOActiveProgramDataModel active);
|
||||
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
else
|
||||
// Send through signalR
|
||||
MessageServices.Current.Publish(SEND_ACTIVE_PROGRAM_DATA, null, active);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(400, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadPartProgramQueueData()
|
||||
{
|
||||
NcFileAdapter ncAdapter = new NcFileAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Read data
|
||||
libraryError = ncAdapter.UpdateQueue();
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
libraryError = ncAdapter.GetSelectedProcessQueue(out List<DTOQueueModel> queue);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_QUEUE_DATA, null, queue);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void ReadScadaData()
|
||||
public static void ReadScadaData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
@@ -643,7 +637,303 @@ public static class ThreadsFunctions
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadGaugeData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
|
||||
// Get new data from PLC
|
||||
libraryError = ncAdapter.ReadGaugeData(out ThermoModels.GaugeModel gaugeData);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_GAUGE_DATA, null, gaugeData);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadProdInfoData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC (and log if changed...)
|
||||
libraryError = ncAdapter.ReadProdInfoData(out ThermoModels.ProdInfoModel prodInfoData);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_PROD_INFO_DATA, null, prodInfoData);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadProdCycleData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC
|
||||
libraryError = ncAdapter.ReadProdCycleData(out ThermoModels.ProdCycleModel prodCycleData);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_PROD_CYCLE_DATA, null, prodCycleData);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
//Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadRecipeData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
// ogni n counter leggo anche dati NON RT
|
||||
recipeRtCounter--;
|
||||
bool onlyRt = recipeRtCounter > 0;
|
||||
//check reset...
|
||||
recipeRtCounter = recipeRtCounter < 0 ? 4 : recipeRtCounter;
|
||||
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC
|
||||
libraryError = ncAdapter.ReadRecipeData(onlyRt, false, out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadWarmersData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC
|
||||
libraryError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
// pubblico
|
||||
MessageServices.Current.Publish(SEND_THERMO_WARMERS_DATA, null, currWarmers);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(1800, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadAreaData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC... info x area lastra... la % di X / Y
|
||||
libraryError = ncAdapter.GetWarmMaterialArea(out Dictionary<string, double> currAreaPerc);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
// pubblico
|
||||
MessageServices.Current.Publish(SEND_THERMO_AREA_DATA, null, currAreaPerc);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(500, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadModulesData()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
Stopwatch sw = new Stopwatch();
|
||||
try
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
while (true)
|
||||
{
|
||||
sw.Restart();
|
||||
|
||||
// Check if client is connected
|
||||
if (ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Get new data from PLC
|
||||
libraryError = ncAdapter.ReadModulesBlock(out Dictionary<int, DTOModulesBlock> currModules);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
MessageServices.Current.Publish(SEND_THERMO_MODULE_DATA, null, currModules);
|
||||
}
|
||||
else
|
||||
RestoreConnection();
|
||||
|
||||
sw.Stop();
|
||||
|
||||
// Update thread timer
|
||||
UpdateStat(MethodBase.GetCurrentMethod().Name, sw.ElapsedMilliseconds);
|
||||
// Wait
|
||||
Thread.Sleep(CalcSleepTime(250, (int)sw.ElapsedMilliseconds));
|
||||
}
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
}
|
||||
public static void ReadM154Data()
|
||||
{
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
@@ -698,7 +988,7 @@ public static class ThreadsFunctions
|
||||
foreach (M154DataModel m154 in data)
|
||||
{
|
||||
//if (CmsConnectConfig.Enabled)
|
||||
if(ServerStartupConfig.CmsConnectReady)
|
||||
if (ServerStartupConfig.CmsConnectReady)
|
||||
{
|
||||
|
||||
if (m154.Parameters.Count() >= 2 && m154.Parameters[0] == "SOUR")
|
||||
@@ -827,18 +1117,18 @@ public static class ThreadsFunctions
|
||||
{
|
||||
List<DTOLanguageModel> availableLanguages = LanguageController.GetLanguageListFromDirectory();
|
||||
if (availableLanguages == null)
|
||||
return ;
|
||||
return;
|
||||
|
||||
ICollection<CultureInfo> cultureInfos = new List<CultureInfo>();
|
||||
|
||||
// Get nc available language
|
||||
CmsError cmsError = ncAdapter.numericalControl.NC_GetAvailableLanguages(ref cultureInfos);
|
||||
if (cmsError.IsError())
|
||||
ManageLibraryError(cmsError);
|
||||
CmsError libraryError = ncAdapter.numericalControl.NC_GetAvailableLanguages(ref cultureInfos);
|
||||
if (libraryError.IsError())
|
||||
ManageLibraryError(libraryError);
|
||||
|
||||
// Filter available language with
|
||||
availableLanguages = availableLanguages.Where(x => cultureInfos.Any(y => y.TwoLetterISOLanguageName == x.IsoId)).ToList();
|
||||
|
||||
|
||||
// Fill redis DB
|
||||
int count = 1;
|
||||
Dictionary<string, string> defAlarmsNamesEn = null;
|
||||
@@ -847,10 +1137,10 @@ public static class ThreadsFunctions
|
||||
{
|
||||
Dictionary<string, string> alarmsNames = GetPlcAlarmsTranslations(lang.IsoId);
|
||||
|
||||
if(lang.IsoId.ToLower() == "en")
|
||||
if (lang.IsoId.ToLower() == "en")
|
||||
{
|
||||
defAlarmsNamesEn = alarmsNames;
|
||||
if(!RedisController.WriteAlarmsConfigEn(alarmsNames))
|
||||
if (!RedisController.WriteAlarmsConfigEn(alarmsNames))
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
}
|
||||
else if (lang.IsoId.ToLower() == "it")
|
||||
@@ -861,7 +1151,7 @@ public static class ThreadsFunctions
|
||||
}
|
||||
else
|
||||
if (!RedisController.WriteAlarmsConfigCurr(alarmsNames))
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
|
||||
if (count == 3)
|
||||
break;
|
||||
@@ -871,10 +1161,10 @@ public static class ThreadsFunctions
|
||||
|
||||
if (availableLanguages.Count < 3 && defAlarmsNamesEn != null)
|
||||
if (!RedisController.WriteAlarmsConfigCurr(defAlarmsNamesEn))
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
else if (availableLanguages.Count < 3 && defAlarmsNamesIt != null)
|
||||
if (!RedisController.WriteAlarmsConfigCurr(defAlarmsNamesIt))
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
else if (availableLanguages.Count < 3 && defAlarmsNamesIt != null)
|
||||
if (!RedisController.WriteAlarmsConfigCurr(defAlarmsNamesIt))
|
||||
ManageError(ERROR_LEVEL.FATAL, CMS_CONNECT_SETUP_ALARM_MESSAGE);
|
||||
|
||||
}
|
||||
catch (ThreadAbortException)
|
||||
@@ -890,18 +1180,18 @@ public static class ThreadsFunctions
|
||||
private static void TryNcConnection()
|
||||
{
|
||||
// Stop all the NC threads
|
||||
ThreadsHandler.Stop();
|
||||
StatReset();
|
||||
ThreadsHandler.Stop();
|
||||
StatReset();
|
||||
NcAdapter ncAdapter = new NcAdapter();
|
||||
CmsError cmsError = NO_ERROR;
|
||||
CmsError libraryError = NO_ERROR;
|
||||
// Run loop until NC is connected
|
||||
while (!ncAdapter.numericalControl.NC_IsConnected())
|
||||
while (!ncAdapter.numericalControl.NC_IsConnected())
|
||||
{
|
||||
// Try reconnection
|
||||
cmsError = ncAdapter.Connect();
|
||||
if (cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || cmsError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING || cmsError.errorCode == CMS_ERROR_CODES.OSAI_TT_FOLDER_NOT_FOUND)
|
||||
ManageLibraryError(cmsError);
|
||||
else if (cmsError.errorCode != CMS_ERROR_CODES.OK)
|
||||
libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND || libraryError.errorCode == CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING || libraryError.errorCode == CMS_ERROR_CODES.OSAI_TT_FOLDER_NOT_FOUND)
|
||||
ManageLibraryError(libraryError);
|
||||
else if (libraryError.errorCode != CMS_ERROR_CODES.OK)
|
||||
{
|
||||
ncAdapter.Dispose();
|
||||
}
|
||||
@@ -912,7 +1202,7 @@ public static class ThreadsFunctions
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
|
||||
if (!cmsError.IsError())
|
||||
if (!libraryError.IsError())
|
||||
{
|
||||
if (ServerStartupConfig.AutoOpenCmsClient)
|
||||
StartCMSClient();
|
||||
@@ -944,12 +1234,12 @@ public static class ThreadsFunctions
|
||||
ConnThread.Abort();
|
||||
}
|
||||
|
||||
public static void ManageLibraryError(CmsError cmsError)
|
||||
public static void ManageLibraryError(CmsError libraryError)
|
||||
{
|
||||
switch (cmsError.errorCode)
|
||||
switch (libraryError.errorCode)
|
||||
{
|
||||
case CMS_ERROR_CODES.NC_PROD_ERROR:
|
||||
ManageError(ERROR_LEVEL.WARNING, cmsError.localizationKey);
|
||||
ManageError(ERROR_LEVEL.WARNING, libraryError.localizationKey);
|
||||
break;
|
||||
|
||||
case CMS_ERROR_CODES.NOT_CONNECTED:
|
||||
@@ -959,7 +1249,7 @@ public static class ThreadsFunctions
|
||||
case CMS_ERROR_CODES.SIEMENS_ENVIRONMENT_NOT_FOUND:
|
||||
case CMS_ERROR_CODES.OSAI_TT_FOLDER_NOT_FOUND:
|
||||
case CMS_ERROR_CODES.OPTION_NOT_CONSISTENT:
|
||||
ManageError(ERROR_LEVEL.FATAL, cmsError.localizationKey);
|
||||
ManageError(ERROR_LEVEL.FATAL, libraryError.localizationKey);
|
||||
break;
|
||||
|
||||
case CMS_ERROR_CODES.SIEMENS_HMI_NOT_RUNNING:
|
||||
@@ -967,15 +1257,15 @@ public static class ThreadsFunctions
|
||||
break;
|
||||
|
||||
case CMS_ERROR_CODES.SELECTED_PROCESS:
|
||||
ManageError(ERROR_LEVEL.WARNING, cmsError.localizationKey);
|
||||
ManageError(ERROR_LEVEL.WARNING, libraryError.localizationKey);
|
||||
break;
|
||||
|
||||
case CMS_ERROR_CODES.INTERNAL_ERROR:
|
||||
ManageException(ERROR_LEVEL.FATAL, cmsError.exception);
|
||||
ManageException(ERROR_LEVEL.FATAL, libraryError.exception);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal static void UpdateStat(string functionName, long timer)
|
||||
{
|
||||
if (!Timers.ContainsKey(functionName))
|
||||
@@ -994,16 +1284,16 @@ public static class ThreadsFunctions
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
foreach(var value in Counter)
|
||||
foreach (var value in Counter)
|
||||
{
|
||||
if(ThreadsHandler.RunningThreadStatus.ContainsKey(value.Key) && Counter[value.Key] != 0)
|
||||
if (ThreadsHandler.RunningThreadStatus.ContainsKey(value.Key) && Counter[value.Key] != 0)
|
||||
{
|
||||
ThreadsHandler.RunningThreadStatus[value.Key] = (Timers[value.Key] / Counter[value.Key]) + " mS";
|
||||
ThreadsHandler.RunningThreadStatus[value.Key] = $"{(Timers[value.Key] / Counter[value.Key])} ms x {Counter[value.Key]}";
|
||||
Timers[value.Key] = 0;
|
||||
Counter[value.Key] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MessageServices.Current.Publish(SEND_THREADS_STATUS, null, ThreadsHandler.RunningThreadStatus);
|
||||
|
||||
Thread.Sleep(2000);
|
||||
@@ -1107,7 +1397,7 @@ public static class ThreadsFunctions
|
||||
message = string.Format(NOT_FOUND_ALARM_MESSAGE, i);
|
||||
}
|
||||
// Add to dictionary
|
||||
returnValue.Add(i.ToString("D6") + "|900",message);
|
||||
returnValue.Add(i.ToString("D6") + "|900", message);
|
||||
}
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
@@ -11,21 +11,30 @@ namespace Thermo.Active.Core
|
||||
private static List<Action> ThreadsFunctionsList = new List<Action>
|
||||
{
|
||||
ThreadsFunctions.ManageWatchdog,
|
||||
ThreadsFunctions.ManageStatusCommand,
|
||||
ThreadsFunctions.ManageConfRequest,
|
||||
ThreadsFunctions.ReadAlarms,
|
||||
ThreadsFunctions.ReadPowerOnData,
|
||||
ThreadsFunctions.StatThread,
|
||||
ThreadsFunctions.ReadProcessesPPStatus,
|
||||
//ThreadsFunctions.ReadProcessesPPStatus,
|
||||
ThreadsFunctions.ReadEnabledFunctionality,
|
||||
ThreadsFunctions.ReadExpiredMaintenances,
|
||||
ThreadsFunctions.ReadAxesPositionsData,
|
||||
//ThreadsFunctions.ReadAxesPositionsData,
|
||||
ThreadsFunctions.ReadUserSoftKeysData,
|
||||
ThreadsFunctions.ReadHeadsData,
|
||||
ThreadsFunctions.ReadAxesNamesData,
|
||||
ThreadsFunctions.ReadActiveProgramData,
|
||||
//ThreadsFunctions.ReadHeadsData,
|
||||
//ThreadsFunctions.ReadAxesNamesData,
|
||||
//ThreadsFunctions.ReadActiveProgramData,
|
||||
//ThreadsFunctions.ReadPartProgramQueueData,
|
||||
ThreadsFunctions.ReadScadaData,
|
||||
ThreadsFunctions.ReadM154Data
|
||||
// ThreadsFunctions.ReadNcSoftKeysData,
|
||||
ThreadsFunctions.ReadGaugeData,
|
||||
ThreadsFunctions.ReadProdInfoData,
|
||||
ThreadsFunctions.ReadProdCycleData,
|
||||
ThreadsFunctions.ReadRecipeData,
|
||||
ThreadsFunctions.ReadWarmersData,
|
||||
ThreadsFunctions.ReadAreaData,
|
||||
ThreadsFunctions.ReadModulesData,
|
||||
ThreadsFunctions.ReadScadaData,
|
||||
ThreadsFunctions.ReadM154Data // levare?
|
||||
};
|
||||
private static Action ThreadSetupCmsConnect = ThreadsFunctions.SetupCmsConnect;
|
||||
|
||||
@@ -44,6 +53,7 @@ namespace Thermo.Active.Core
|
||||
{
|
||||
Thread t = new Thread(() => ThreadSetupCmsConnect());
|
||||
t.Start();
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +70,8 @@ namespace Thermo.Active.Core
|
||||
threadFunction()
|
||||
);
|
||||
t.Start();
|
||||
// aggiungo pausa x evitare sovrapposizioni chiamate
|
||||
Thread.Sleep(50);
|
||||
// Add thread to running threads list
|
||||
lock (RunningThreadsList)
|
||||
RunningThreadsList.Add(t);
|
||||
|
||||
@@ -0,0 +1,163 @@
|
||||
using Thermo.Active.Model.DatabaseModels;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using System.Collections.Generic;
|
||||
using CMS_CORE_Library.Models;
|
||||
|
||||
namespace Thermo.Active.Database.Controllers
|
||||
{
|
||||
public class ProdInfoController : IDisposable
|
||||
{
|
||||
private DatabaseContext dbCtx;
|
||||
|
||||
public ProdInfoController()
|
||||
{
|
||||
// Initialize database context
|
||||
dbCtx = new DatabaseContext();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// Clear database context
|
||||
dbCtx.Dispose();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get record by NumDone
|
||||
/// </summary>
|
||||
/// <param name="num"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel FindByNumDone(int num)
|
||||
{
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone == num)
|
||||
.SingleOrDefault();
|
||||
}
|
||||
/// <summary>
|
||||
/// Get historical paginated data from DB (DESC ordered
|
||||
/// </summary>
|
||||
/// <param name="numStart"></param>
|
||||
/// <param name="numRecord"></param>
|
||||
/// <returns></returns>
|
||||
public List<ProdInfoModel> GetPaginated(int numStart, int numRecord)
|
||||
{
|
||||
// cehck numEnd
|
||||
int numEnd = numStart - numRecord;
|
||||
if (numEnd < 0)
|
||||
numEnd = 0;
|
||||
// retrieve
|
||||
return dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.NumDone <= numStart && x.NumDone > numEnd)
|
||||
.OrderByDescending(x => x.DtEvent)
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Create new prodInfo record on DB
|
||||
/// </summary>
|
||||
/// <param name="NumTarget"></param>
|
||||
/// <param name="NumDone"></param>
|
||||
/// <param name="TimeWarm"></param>
|
||||
/// <param name="TimeVent"></param>
|
||||
/// <param name="TimeVacuum"></param>
|
||||
/// <param name="TimeCycleGross"></param>
|
||||
/// <param name="TimeCycleNet"></param>
|
||||
/// <param name="MaterialTempEndWarm"></param>
|
||||
/// <param name="MaterialTempEndVent"></param>
|
||||
/// <param name="MoldTemp"></param>
|
||||
/// <param name="VacuumReadVal"></param>
|
||||
/// <param name="MouldEnergyOUT"></param>
|
||||
/// <param name="MouldEnergyIN"></param>
|
||||
/// <returns></returns>
|
||||
public ProdInfoModel Create(short NumTarget, short NumDone, int TimeWarm, int TimeVent, int TimeVacuum, int TimeCycleGross, int TimeCycleNet, double MaterialTempEndWarm, double MaterialTempEndVent, double MoldTemp, double VacuumReadVal, double MouldEnergyOUT, double MouldEnergyIN)
|
||||
{
|
||||
// Create database machine model
|
||||
ProdInfoModel prodData = new ProdInfoModel()
|
||||
{
|
||||
DtEvent = DateTime.UtcNow,
|
||||
NumTarget = NumTarget,
|
||||
NumDone = NumDone,
|
||||
TimeWarm = TimeWarm,
|
||||
TimeVent = TimeVent,
|
||||
TimeVacuum = TimeVacuum,
|
||||
TimeCycleGross = TimeCycleGross,
|
||||
TimeCycleNet = TimeCycleNet,
|
||||
MaterialTempEndWarm = MaterialTempEndWarm,
|
||||
MaterialTempEndVent = MaterialTempEndVent,
|
||||
MoldTemp = MoldTemp,
|
||||
VacuumReadVal = VacuumReadVal,
|
||||
MouldEnergyOUT = MouldEnergyOUT,
|
||||
MouldEnergyIN = MouldEnergyIN
|
||||
};
|
||||
try
|
||||
{
|
||||
// Add to database
|
||||
dbCtx.ProdInfo.Add(prodData);
|
||||
// Commit changes
|
||||
dbCtx.SaveChanges();
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
|
||||
return prodData;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and keep only maxKeep most recent ones
|
||||
/// </summary>
|
||||
/// <param name="maxKeep"></param>
|
||||
/// <returns></returns>
|
||||
public bool PurgeOldest(int maxKeep)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
// check if purge needed
|
||||
int numRec = dbCtx.ProdInfo.Count();
|
||||
if (numRec > maxKeep)
|
||||
{
|
||||
ProdInfoModel firstToDelete = (ProdInfoModel)(from p in dbCtx.ProdInfo
|
||||
orderby p.DtEvent descending
|
||||
select p).Skip(maxKeep).Take(1);
|
||||
|
||||
// call deletion
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.RemoveRange(
|
||||
dbCtx
|
||||
.ProdInfo
|
||||
.Where(x => x.DtEvent <= firstToDelete.DtEvent)
|
||||
);
|
||||
|
||||
try
|
||||
{
|
||||
// save!
|
||||
dbCtx.SaveChanges();
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Process table and delete all record (truncate)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool PurgeAll()
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
try
|
||||
{
|
||||
dbCtx
|
||||
.Database
|
||||
.ExecuteSqlCommand("TRUNCATE TABLE prodInfo");
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -42,6 +42,10 @@ namespace Thermo.Active.Database
|
||||
public DbSet<AlarmNoteModel> AlarmsNotes { get; set; }
|
||||
public DbSet<AlarmFileModel> AlarmFiles { get; set; }
|
||||
|
||||
// thermo!
|
||||
public DbSet<ProdInfoModel> ProdInfo { get; set; }
|
||||
|
||||
|
||||
// Create migration string
|
||||
public static string CONNECTION_STRING = "Server = " + "localhost" + "; Database=" + DATABASE_NAME + ";Uid=" + DATABASE_USER + ";Pwd=" + DATABASE_PWD + ";";
|
||||
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
// <auto-generated />
|
||||
namespace Thermo.Active.Database.Migrations
|
||||
{
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Data.Entity.Migrations;
|
||||
using System.Data.Entity.Migrations.Infrastructure;
|
||||
using System.Resources;
|
||||
|
||||
[GeneratedCode("EntityFramework.Migrations", "6.2.0-61023")]
|
||||
public sealed partial class AddedProdInfoModel : IMigrationMetadata
|
||||
{
|
||||
private readonly ResourceManager Resources = new ResourceManager(typeof(AddedProdInfoModel));
|
||||
|
||||
string IMigrationMetadata.Id
|
||||
{
|
||||
get { return "202006170558519_AddedProdInfoModel"; }
|
||||
}
|
||||
|
||||
string IMigrationMetadata.Source
|
||||
{
|
||||
get { return null; }
|
||||
}
|
||||
|
||||
string IMigrationMetadata.Target
|
||||
{
|
||||
get { return Resources.GetString("Target"); }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
namespace Thermo.Active.Database.Migrations
|
||||
{
|
||||
using System;
|
||||
using System.Data.Entity.Migrations;
|
||||
|
||||
public partial class AddedProdInfoModel : DbMigration
|
||||
{
|
||||
public override void Up()
|
||||
{
|
||||
CreateTable(
|
||||
"dbo.ProdInfo",
|
||||
c => new
|
||||
{
|
||||
DtEvent = c.DateTime(nullable: false, precision: 0),
|
||||
NumTarget = c.Short(nullable: false),
|
||||
NumDone = c.Short(nullable: false),
|
||||
TimeWarm = c.Int(nullable: false),
|
||||
TimeVent = c.Int(nullable: false),
|
||||
TimeVacuum = c.Int(nullable: false),
|
||||
TimeCycleGross = c.Int(nullable: false),
|
||||
TimeCycleNet = c.Int(nullable: false),
|
||||
MaterialTempEndWarm = c.Double(nullable: false),
|
||||
MaterialTempEndVent = c.Double(nullable: false),
|
||||
MoldTemp = c.Double(nullable: false),
|
||||
VacuumReadVal = c.Double(nullable: false),
|
||||
MouldEnergyOUT = c.Double(nullable: false),
|
||||
MouldEnergyIN = c.Double(nullable: false),
|
||||
})
|
||||
.PrimaryKey(t => t.DtEvent);
|
||||
|
||||
}
|
||||
|
||||
public override void Down()
|
||||
{
|
||||
DropTable("dbo.ProdInfo");
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -30,7 +30,7 @@ namespace Thermo.Active.Database.Migrations
|
||||
new RoleModel() { RoleId = (int)ROLE_IDS.CUSTOMER_MAINTAINER, Level = 10, Name = "Maintainer" }
|
||||
);
|
||||
|
||||
context.FunctionsAccess.AddOrUpdate(
|
||||
context.FunctionsAccess.AddOrUpdate(x => x.Name,
|
||||
// General Function, if plcId is 0 then the functionality is not connected to the NC
|
||||
new FunctionAccessModel() { Name = GENERAL, Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
new FunctionAccessModel() { Name = USER_FUNCTIONS, Area = GENERAL_KEY, Enabled = true, WriteLevelMin = 1, ReadLevelMin = 1, PlcId = 0 },
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library">
|
||||
<Reference Include="CMS_CORE_Library, Version=1.1.1.0, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
@@ -112,6 +113,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Controllers\AlarmsController.cs" />
|
||||
<Compile Include="Controllers\FunctionsAccessController.cs" />
|
||||
<Compile Include="Controllers\ProdInfoController.cs" />
|
||||
<Compile Include="Controllers\MachinesController.cs" />
|
||||
<Compile Include="Controllers\MaintenancesController.cs" />
|
||||
<Compile Include="Controllers\QueueController.cs" />
|
||||
@@ -125,6 +127,10 @@
|
||||
<Compile Include="Migrations\202004241109233_Thermo-Start.Designer.cs">
|
||||
<DependentUpon>202004241109233_Thermo-Start.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\202006170558519_AddedProdInfoModel.cs" />
|
||||
<Compile Include="Migrations\202006170558519_AddedProdInfoModel.Designer.cs">
|
||||
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Migrations\Configuration.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Redis\redUtil.cs" />
|
||||
@@ -164,6 +170,9 @@
|
||||
<EmbeddedResource Include="Migrations\202004241109233_Thermo-Start.resx">
|
||||
<DependentUpon>202004241109233_Thermo-Start.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Migrations\202006170558519_AddedProdInfoModel.resx">
|
||||
<DependentUpon>202006170558519_AddedProdInfoModel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.ConfigModels
|
||||
{
|
||||
public class ModBlockConfigModel
|
||||
{
|
||||
public int Id;
|
||||
public Dictionary<string,string> LocalizedLabels { get; set; }
|
||||
public TACT_MBLOCK_TYPE Type { get; set; }
|
||||
public TACT_MBLOCK_SECTION Section { get; set; }
|
||||
public int IdParam{ get; set; }
|
||||
public bool ShowDelay { get; set; }
|
||||
public int Priority { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.ConfigModels
|
||||
{
|
||||
public class RecipeConfigModel
|
||||
{
|
||||
public int Id;
|
||||
public TACT_PARAM_TYPE Category { get; set; }
|
||||
public string SubCategory_1 { get; set; }
|
||||
public string SubCategory_2 { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string Format { get; set; }
|
||||
public int ScaleFactor { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.Collections.Generic;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.ConfigModels
|
||||
{
|
||||
public class RiskRiflettore
|
||||
{
|
||||
public int Tipo;
|
||||
public List<RiskResistenza> Resistenze;
|
||||
}
|
||||
public class RiskResistenza
|
||||
{
|
||||
public int Tipo;
|
||||
public int Riga;
|
||||
public int Canale;
|
||||
}
|
||||
public class RiskRiferimenti
|
||||
{
|
||||
public int Id;
|
||||
public int Potenza;
|
||||
public int Dimensione;
|
||||
public string Modello;
|
||||
}
|
||||
public class RiskResistModel
|
||||
{
|
||||
public int Id;
|
||||
public int IdChannel;
|
||||
public int Column;
|
||||
public int Row;
|
||||
public int Dimension;
|
||||
}
|
||||
public class RiskChannelModel
|
||||
{
|
||||
public int IdChannel;
|
||||
public int IdReflector;
|
||||
public int SetpointRecipe;
|
||||
public int SetpointThermo;
|
||||
public int MaxPower;
|
||||
public int NumResist;
|
||||
public bool CalcIchMin;
|
||||
}
|
||||
public class RiskBoardModel
|
||||
{
|
||||
public int IdBoard;
|
||||
public int NumChannels;
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace Thermo.Active.Model
|
||||
{
|
||||
public static class Constants
|
||||
{
|
||||
public static bool IS_BETA = false;
|
||||
public static bool IS_BETA = false;
|
||||
public static string NOT_FOUND_ALARM_MESSAGE = "Alarm_id_{0} : Message not found";
|
||||
public static string NOT_CONFIGURATED_ALARM_MESSAGE = "Alarm_id_{0} : Message not configurated";
|
||||
public static string CMS_CONNECT_SETUP_ALARM_MESSAGE = "Error during CMS-Connect setup: Redis Db Not Found";
|
||||
@@ -20,7 +20,7 @@ namespace Thermo.Active.Model
|
||||
public enum SCADA_ELEMENT_TYPE
|
||||
{
|
||||
BUTTON = 0,
|
||||
IMAGE = 1,
|
||||
IMAGE = 1,
|
||||
INPUT = 2,
|
||||
PROGRESS_BAR = 3,
|
||||
LABEL = 4,
|
||||
@@ -32,12 +32,12 @@ namespace Thermo.Active.Model
|
||||
public static string READ = "read";
|
||||
public static string WRITE = "write";
|
||||
}
|
||||
|
||||
|
||||
public const int MIN_CMS_ROLE = 100;
|
||||
public const int MIN_ADMIN_ROLE = 30;
|
||||
|
||||
public enum ROLE_IDS
|
||||
{
|
||||
{
|
||||
CMS_SERVICE = 1,
|
||||
CMS_UT = 2,
|
||||
CUSTOMER_ADMIN = 3,
|
||||
@@ -74,6 +74,41 @@ namespace Thermo.Active.Model
|
||||
LASER = 3
|
||||
}
|
||||
|
||||
public enum TACT_PARAM_TYPE
|
||||
{
|
||||
ND = 0,
|
||||
General,
|
||||
Positions,
|
||||
Cycle,
|
||||
Heats,
|
||||
Pyrometer,
|
||||
Drawing,
|
||||
UpperPlate,
|
||||
Cooling,
|
||||
Vacuum,
|
||||
Extraction,
|
||||
Options
|
||||
}
|
||||
|
||||
public enum TACT_MBLOCK_TYPE
|
||||
{
|
||||
ND = 0,
|
||||
HEATING,
|
||||
DRAWING,
|
||||
MOVEMENT,
|
||||
VACUUM,
|
||||
COOLING,
|
||||
EXTRACTION
|
||||
}
|
||||
|
||||
public enum TACT_MBLOCK_SECTION
|
||||
{
|
||||
ND = 0,
|
||||
HEATING,
|
||||
FORMING,
|
||||
EXTRACTION
|
||||
}
|
||||
|
||||
public enum MAINTENANCE_UNIT_OF_MEASURE
|
||||
{
|
||||
mm = 0,
|
||||
@@ -118,7 +153,7 @@ namespace Thermo.Active.Model
|
||||
public const string FANUC = "FANUC";
|
||||
public const string SIEMENS = "SIEMENS";
|
||||
public const string OSAI = "OSAI";
|
||||
public const string SIEMENS_S7 = "SIEMENS_S7";
|
||||
public const string S7NET = "S7NET";
|
||||
}
|
||||
|
||||
// Database config
|
||||
@@ -163,10 +198,11 @@ namespace Thermo.Active.Model
|
||||
}
|
||||
|
||||
// Config File Names
|
||||
public static readonly string BASE_PATH = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
public static readonly string BASE_PATH = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
|
||||
//public static readonly string BASE_PATH = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location).Replace("\\lib", "");
|
||||
|
||||
#if DEBUG
|
||||
public static readonly string CLIENT_PATH_64 = BASE_PATH + @"\Client_Debug\x64\" + CLIENT_EXE_NAME;
|
||||
public static readonly string CLIENT_PATH_64 = BASE_PATH + @"\Client_Debug\x64\" + CLIENT_EXE_NAME;
|
||||
public static readonly string CLIENT_PATH_86 = BASE_PATH + @"\Client_Debug\x84\" + CLIENT_EXE_NAME;
|
||||
public static string WEBSITE_DIRECTORY = Path.Combine(BASE_PATH, "..", "wwwroot");
|
||||
#else
|
||||
@@ -175,6 +211,9 @@ namespace Thermo.Active.Model
|
||||
public static string WEBSITE_DIRECTORY = BASE_PATH + "\\view";
|
||||
#endif
|
||||
public const string CONFIG_DIRECTORY = "Config\\";
|
||||
public const string RECIPE_DIRECTORY = "Recipes\\";
|
||||
public const string RECIPE_TEMPLATE_PATH = CONFIG_DIRECTORY + RECIPE_DIRECTORY + "template.json";
|
||||
public const string LIVE_RECIPE_PATH = TEMP_FOLDER + RECIPE_DIRECTORY + "current.json";
|
||||
public const string RESOURCE_DIRECTORY = @"Thermo.Active.Config.Config.";
|
||||
public const string SERVER_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + @"serverConfigValidator.xsd";
|
||||
public const string SERVER_CONFIG_PATH = CONFIG_DIRECTORY + "serverConfig.xml";
|
||||
@@ -182,7 +221,7 @@ namespace Thermo.Active.Model
|
||||
public const string AREAS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "areasConfigValidator.xsd";
|
||||
public const string AREAS_CONFIG_PATH = CONFIG_DIRECTORY + "areasConfig.xml";
|
||||
|
||||
public const string MAINTENANCES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "maintenancesConfigValidator.xsd";
|
||||
public const string MAINTENANCES_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "maintenancesConfigValidator.xsd";
|
||||
public const string CUSTOMER_CONTACTS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "customerContactConfigValidator.xsd";
|
||||
public const string MAINTENANCES_CONFIG_PATH = CONFIG_DIRECTORY + "maintenancesConfig.xml";
|
||||
public const string CUSTOMER_CONTACTS = CMS_FOLDER_PATH + "ContactInfo.xml";
|
||||
@@ -190,13 +229,22 @@ namespace Thermo.Active.Model
|
||||
|
||||
public const string USER_SOFTKEYS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "userSoftKeyConfigValidator.xsd";
|
||||
public const string USER_SOFTKEYS_CONFIG_PATH = CONFIG_DIRECTORY + "userSoftKeyConfig.xml";
|
||||
|
||||
|
||||
public const string ALARMS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "alarmsConfigValidator.xsd";
|
||||
public const string ALARMS_CONFIG_PATH = CONFIG_DIRECTORY + "alarmsConfig.xml";
|
||||
|
||||
public const string HEADS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "headsConfigValidator.xsd";
|
||||
public const string HEADS_CONFIG_PATH = CONFIG_DIRECTORY + "headsConfig.xml";
|
||||
|
||||
public const string RECIPE_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "recipeConfigValidator.xsd";
|
||||
public const string RECIPE_CONFIG_PATH = CONFIG_DIRECTORY + "recipeConfig.xml";
|
||||
|
||||
public const string MODBLOCK_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "moduleBlockConfigValidator.xsd";
|
||||
public const string MODBLOCK_CONFIG_PATH = CONFIG_DIRECTORY + "moduleBlockConfig.xml";
|
||||
|
||||
public const string RISK_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "risk2007Validator.xsd";
|
||||
public const string RISK_CONFIG_PATH = CONFIG_DIRECTORY + "risk2007.xml";
|
||||
|
||||
public const string NC_SOFTKEYS_CONFIG_SCHEMA_PATH = RESOURCE_DIRECTORY + "ncSoftKeyConfigValidator.xsd";
|
||||
public const string NC_SOFTKEYS_CONFIG_PATH = CONFIG_DIRECTORY + "ncSoftKeyConfig.xml";
|
||||
|
||||
@@ -208,6 +256,7 @@ namespace Thermo.Active.Model
|
||||
|
||||
public const string MAIN_PROGRAM_CONFIG_PATH = CONFIG_DIRECTORY + "customMainProgram.txt";
|
||||
|
||||
|
||||
public static string LANGUAGE_PACK_DIRECTORY = BASE_PATH + "\\languages\\";
|
||||
public static string LANGUAGE_SCHEMA_PATH = BASE_PATH + "\\LanguageValidator.xsd";
|
||||
|
||||
@@ -244,7 +293,16 @@ namespace Thermo.Active.Model
|
||||
public const string SEND_QUEUE_DATA = "SEND_QUEUE_DATA";
|
||||
public const string SEND_M155_DATA = "SEND_M155_DATA";
|
||||
public const string SEND_SCADA_DATA = "SEND_SCADA_DATA";
|
||||
public const string SEND_RECIPE_STATUS = "SEND_RECIPE_STATUS";
|
||||
|
||||
// MVVM Messages for Thermo active specs
|
||||
public const string SEND_THERMO_RECIPE_FULL = "SEND_THERMO_RECIPE_FULL";
|
||||
public const string SEND_THERMO_RECIPE_OVERWIEW = "SEND_THERMO_RECIPE_OVERWIEW";
|
||||
public const string SEND_THERMO_MODULE_DATA = "SEND_THERMO_MODULE_DATA";
|
||||
public const string SEND_THERMO_WARMERS_DATA = "SEND_THERMO_WARMERS_DATA";
|
||||
public const string SEND_THERMO_AREA_DATA = "SEND_THERMO_AREA_DATA";
|
||||
public const string SEND_THERMO_GAUGE_DATA = "SEND_THERMO_GAUGE_DATA";
|
||||
public const string SEND_THERMO_PROD_INFO_DATA = "SEND_THERMO_PROD_INFO_DATA";
|
||||
public const string SEND_THERMO_PROD_CYCLE_DATA = "SEND_THERMO_PROD_CYCLE_DATA";
|
||||
|
||||
public const string BROADCAST_DATA = "BROADCAST_DATA";
|
||||
|
||||
@@ -281,22 +339,22 @@ namespace Thermo.Active.Model
|
||||
public const string PASSWORD_IS_INVALID = "error_password_is_invalid";
|
||||
public const string IMPORT_FILE_NOT_VALID = "error_import_file_not_valid";
|
||||
public const string DUPLICATED_USERNAME = "error_duplicated_username";
|
||||
public const string CUSTOMER_FILE_INVALID = "contactinfo_error_customer_configfile";
|
||||
public const string CUSTOMER_FILE_INVALID = "contactinfo_error_customer_configfile";
|
||||
}
|
||||
|
||||
// File paths
|
||||
public const string CLIENT_EXE_NAME = @"Active_Client.exe";
|
||||
public const string CLIENT_EXE_NAME_NOEXT = @"Active_Client";
|
||||
public const string CLIENT_EXE_NAME_NOEXT = @"Active_Client";
|
||||
public const string MAINTENANCE_ATTACHMENT_PATH = @"C:\CMS\Active\attachment\maintenance\";
|
||||
public const string CMS_FOLDER_PATH = @"C:\CMS\";
|
||||
|
||||
public const string ALARM_ATTACHMENT_PATH = @"C:\CMS\Active\attachment\alarm\";
|
||||
public const string TEMP_FOLDER = @"C:\CMS\Active\TMP\";
|
||||
public const string TEMP_FOLDER = @"C:\CMS\ThermoActive\TMP\";
|
||||
public const string TEMP_PP_FOLDER = TEMP_FOLDER + @"pp\";
|
||||
public const string JOB_TMP_DIRECTORY = TEMP_PP_FOLDER + @"job\";
|
||||
public const string JOB_TMP_DIRECTORY = TEMP_PP_FOLDER + @"job\";
|
||||
public const string QUEUE_TMP_FOLDER = TEMP_PP_FOLDER + @"queue\";
|
||||
public const string PART_PRG_IMAGES = TEMP_FOLDER + @"pp_img\";
|
||||
|
||||
public const string PART_PRG_IMAGES = TEMP_FOLDER + @"pp_img\";
|
||||
|
||||
public const string SCADA_DIRECTORY = @"C:\CMS\Active\scada\";
|
||||
|
||||
public static readonly string[] VALID_FILE_EXTENSIONS = { "", ".txt", ".cnc", ".ini", ".mpf", ".spf" };
|
||||
@@ -324,7 +382,7 @@ namespace Thermo.Active.Model
|
||||
"dd/MM/yyyy",
|
||||
"MM/dd/yyyy",
|
||||
"dd.MM.yyyy",
|
||||
"MM.dd.yyyy"
|
||||
"MM.dd.yyyy"
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using System.Linq;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static CMS_CORE_Library.Models.ThermoModels;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels
|
||||
{
|
||||
public class DTOGaugeDataModel : GaugeModel
|
||||
{
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTOGaugeDataModel item))
|
||||
return false;
|
||||
|
||||
if (TimeAdv != item.TimeAdv)
|
||||
return false;
|
||||
if (Power != item.Power)
|
||||
return false;
|
||||
if (Vacuum != item.Vacuum)
|
||||
return false;
|
||||
if (Air != item.Air)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
{
|
||||
public class DTOModule
|
||||
{
|
||||
public int Id { get; set; } = 0;
|
||||
public int ActualDuration { get; set; } = 0;
|
||||
public int ActualDelay { get; set; } = 0;
|
||||
public int EstimDuration { get; set; } = 0;
|
||||
public int EstimDelay { get; set; } = 0;
|
||||
public List<int> PrevModId { get; set; } = new List<int>();
|
||||
public RBStatus Status { get; set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTOModule item))
|
||||
return false;
|
||||
|
||||
if (Id!= item.Id)
|
||||
return false;
|
||||
if (ActualDuration != item.ActualDuration)
|
||||
return false;
|
||||
if (ActualDelay != item.ActualDelay)
|
||||
return false;
|
||||
if (PrevModId != item.PrevModId)
|
||||
return false;
|
||||
if (EstimDelay != item.EstimDelay)
|
||||
return false;
|
||||
if (!Status.Equals(item.Status))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
public struct RBStatus
|
||||
{
|
||||
public bool Visible { get; set; }
|
||||
public bool Executing { get; set; }
|
||||
public bool HasError { get; set; }
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is RBStatus item))
|
||||
return false;
|
||||
|
||||
if (Visible != item.Visible)
|
||||
return false;
|
||||
if (Executing != item.Executing)
|
||||
return false;
|
||||
if (HasError != item.HasError)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
{
|
||||
public class DTOModuleConfigModel
|
||||
{
|
||||
public int Id;
|
||||
public string Label;
|
||||
public BlockType Type;
|
||||
public BlockSection Section;
|
||||
public int IdMainParam = -1; // -1 = non visibile
|
||||
public bool DelayVisible;
|
||||
public int VisualPriority;
|
||||
}
|
||||
|
||||
public enum BlockType
|
||||
{
|
||||
HEATING,
|
||||
DRAWING,
|
||||
MOVEMENT,
|
||||
VACUUM,
|
||||
COOLING,
|
||||
EXTRACTION
|
||||
}
|
||||
public enum BlockSection
|
||||
{
|
||||
HEATING,
|
||||
FORMING,
|
||||
EXTRACTION
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThModules
|
||||
{
|
||||
public class DTOModulesBlock
|
||||
{
|
||||
public int Id { get; set; } = 0;
|
||||
public string LocalizedLabel { get; set; } = "";
|
||||
public TACT_MBLOCK_TYPE Type { get; set; } = TACT_MBLOCK_TYPE.ND;
|
||||
public TACT_MBLOCK_SECTION Section { get; set; } = TACT_MBLOCK_SECTION.ND;
|
||||
public int IdParam { get; set; } = 0;
|
||||
public bool ShowDelay { get; set; } = false;
|
||||
public int Priority { get; set; } = 0;
|
||||
public int ActualDelay { get; set; } = 0;
|
||||
public int ActualDuration { get; set; } = 0;
|
||||
public int EstimatedDelay { get; set; } = 0;
|
||||
public int EstimatedDuration { get; set; } = 0;
|
||||
public List<short> PrecedingId { get; set; } = new List<short>();
|
||||
public bool Visible { get; set; } = false;
|
||||
public bool Running { get; set; } = false;
|
||||
public bool HasError { get; set; } = false;
|
||||
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTOModulesBlock item))
|
||||
return false;
|
||||
|
||||
if (Id!= item.Id)
|
||||
return false;
|
||||
if (LocalizedLabel != item.LocalizedLabel)
|
||||
return false;
|
||||
if (Type != item.Type)
|
||||
return false;
|
||||
if (Section != item.Section)
|
||||
return false;
|
||||
if (IdParam != item.IdParam)
|
||||
return false;
|
||||
if (ShowDelay != item.ShowDelay)
|
||||
return false;
|
||||
if (Priority != item.Priority)
|
||||
return false;
|
||||
if (ActualDelay != item.ActualDelay)
|
||||
return false;
|
||||
if (ActualDuration != item.ActualDuration)
|
||||
return false;
|
||||
if (EstimatedDelay != item.EstimatedDelay)
|
||||
return false;
|
||||
if (EstimatedDuration != item.EstimatedDuration)
|
||||
return false;
|
||||
if (!Enumerable.SequenceEqual(PrecedingId,item.PrecedingId))
|
||||
return false;
|
||||
if (Visible != item.Visible)
|
||||
return false;
|
||||
if (Running != item.Running)
|
||||
return false;
|
||||
if (HasError != item.HasError)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThProd
|
||||
{
|
||||
|
||||
public enum Status
|
||||
{
|
||||
ND = 0,
|
||||
IDLE,
|
||||
RUNNING,
|
||||
HOLD,
|
||||
ALARM
|
||||
}
|
||||
public enum Mode
|
||||
{
|
||||
ND = -1,
|
||||
NOT_READY,
|
||||
MANUAL,
|
||||
AUTO,
|
||||
SETUP
|
||||
}
|
||||
public enum SubMode
|
||||
{
|
||||
ND = 0,
|
||||
SHEET,
|
||||
CYCLE_EMPTY,
|
||||
PRE_WARM
|
||||
}
|
||||
|
||||
|
||||
public class DTOProdCycle
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
using Thermo.Active.Model.ConfigModels;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
{
|
||||
public class DTORecipeConfigModel
|
||||
{
|
||||
public int Id;
|
||||
public string Category;
|
||||
public string SubCategory_1;
|
||||
public string SubCategory_2;
|
||||
public string Name;
|
||||
public string Description;
|
||||
public string Format;
|
||||
public string Label;
|
||||
public int ScaleFactor;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
{
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum RecipeCatStatus
|
||||
{
|
||||
Unchanged = 0,
|
||||
ChangedOk,
|
||||
HasError
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThRecipe
|
||||
{
|
||||
public class DTORecipeParam
|
||||
{
|
||||
public int Id { get; set; } = 0;
|
||||
public double SetpointHMI { get; set; } = 0;
|
||||
public double SetpointPLC { get; set; } = 0;
|
||||
public RPRange Range { get; set; }
|
||||
public RPStatus Status { get; set; }
|
||||
public string UnitMeasure { get; set; }
|
||||
public double ValueAct { get; set; }
|
||||
public int ScaleFactor { get; set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTORecipeParam item))
|
||||
return false;
|
||||
|
||||
if (Id!= item.Id)
|
||||
return false;
|
||||
if (SetpointHMI != item.SetpointHMI)
|
||||
return false;
|
||||
if (SetpointPLC != item.SetpointPLC)
|
||||
return false;
|
||||
if (!Range.Equals(item.Range))
|
||||
return false;
|
||||
if (!Status.Equals(item.Status))
|
||||
return false;
|
||||
if (UnitMeasure != item.UnitMeasure)
|
||||
return false;
|
||||
if (ValueAct != item.ValueAct)
|
||||
return false;
|
||||
if (ScaleFactor != item.ScaleFactor)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
public struct RPRange
|
||||
{
|
||||
public double Min { get; set; }
|
||||
public double Max { get; set; }
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is RPRange item))
|
||||
return false;
|
||||
|
||||
if (Min != item.Min)
|
||||
return false;
|
||||
if (Max != item.Max)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
public struct RPStatus
|
||||
{
|
||||
public bool Visible { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public bool HasError { get; set; }
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is RPStatus item))
|
||||
return false;
|
||||
|
||||
if (Visible != item.Visible)
|
||||
return false;
|
||||
if (Enabled != item.Enabled)
|
||||
return false;
|
||||
if (HasError != item.HasError)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DTOModels.ThWarmers
|
||||
{
|
||||
public class DTOWarmers
|
||||
{
|
||||
public int IdChannel { get; set; } = 0;
|
||||
public int IdReflector { get; set; } = 0;
|
||||
public int SetpointHMI { get; set; } = 0;
|
||||
public int SetpointTermocam { get; set; } = 0;
|
||||
public int SetpointPLC { get; set; } = 0;
|
||||
public int ChannelStatus { get; set; } = 0;
|
||||
public double ActualCurrent { get; set; } = 0;
|
||||
public int ActualPerc { get; set; } = 0;
|
||||
public int MaxPower { get; set; } = 0;
|
||||
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (!(obj is DTOWarmers item))
|
||||
return false;
|
||||
|
||||
if (IdChannel != item.IdChannel)
|
||||
return false;
|
||||
if (IdReflector != item.IdReflector)
|
||||
return false;
|
||||
if (SetpointHMI != item.SetpointHMI)
|
||||
return false;
|
||||
if (SetpointTermocam != item.SetpointTermocam)
|
||||
return false;
|
||||
if (SetpointPLC != item.SetpointPLC)
|
||||
return false;
|
||||
if (ChannelStatus != item.ChannelStatus)
|
||||
return false;
|
||||
if (ActualCurrent != item.ActualCurrent)
|
||||
return false;
|
||||
if (ActualPerc != item.ActualPerc)
|
||||
return false;
|
||||
if (MaxPower != item.MaxPower)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Model.DatabaseModels
|
||||
{
|
||||
[Table("ProdInfo")]
|
||||
public class ProdInfoModel
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column("DtEvent", Order = 0)]
|
||||
public DateTime DtEvent { get; set; }
|
||||
|
||||
[Column("NumTarget")]
|
||||
public short NumTarget { get; set; }
|
||||
[Column("NumDone")]
|
||||
public short NumDone { get; set; }
|
||||
|
||||
[Column("TimeWarm")]
|
||||
public int TimeWarm { get; set; }
|
||||
[Column("TimeVent")]
|
||||
public int TimeVent { get; set; }
|
||||
[Column("TimeVacuum")]
|
||||
public int TimeVacuum { get; set; }
|
||||
[Column("TimeCycleGross")]
|
||||
public int TimeCycleGross { get; set; }
|
||||
[Column("TimeCycleNet")]
|
||||
public int TimeCycleNet { get; set; }
|
||||
|
||||
[Column("MaterialTempEndWarm")]
|
||||
public double MaterialTempEndWarm { get; set; }
|
||||
[Column("MaterialTempEndVent")]
|
||||
public double MaterialTempEndVent { get; set; }
|
||||
[Column("MoldTemp")]
|
||||
public double MoldTemp { get; set; }
|
||||
|
||||
[Column("VacuumReadVal")]
|
||||
public double VacuumReadVal { get; set; }
|
||||
|
||||
[Column("MouldEnergyOUT")]
|
||||
public double MouldEnergyOUT { get; set; }
|
||||
[Column("MouldEnergyIN")]
|
||||
public double MouldEnergyIN { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library">
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -66,6 +63,9 @@
|
||||
<Compile Include="ConfigModels\AlarmsConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\CmsConnectConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\ExtSoftwareModel.cs" />
|
||||
<Compile Include="ConfigModels\ModBlockConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\RiskConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\RecipeConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\HeadsConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\MaintenanceConfigModel.cs" />
|
||||
<Compile Include="ConfigModels\NcSoftKeysModel.cs" />
|
||||
@@ -89,6 +89,7 @@
|
||||
<Compile Include="DatabaseModels\NcOffsetModel.cs" />
|
||||
<Compile Include="DatabaseModels\NcFamilyModel.cs" />
|
||||
<Compile Include="DatabaseModels\PerformedMaintenanceModel.cs" />
|
||||
<Compile Include="DatabaseModels\ProdInfoModel.cs" />
|
||||
<Compile Include="DatabaseModels\QueueItemsModel.cs" />
|
||||
<Compile Include="DatabaseModels\RoleModel.cs">
|
||||
<Generator>DtsGenerator</Generator>
|
||||
@@ -97,12 +98,19 @@
|
||||
<Compile Include="DatabaseModels\MachineUserModel.cs" />
|
||||
<Compile Include="DatabaseModels\SessionModel.cs" />
|
||||
<Compile Include="DTOModels\AlarmModels\DTONewAlarmNoteModel.cs" />
|
||||
<Compile Include="DTOModels\DTOGaugeDataModel.cs" />
|
||||
<Compile Include="DTOModels\DTOActiveProgramInfoModel.cs" />
|
||||
<Compile Include="DTOModels\AlarmModels\DTOAlarmHistoricModel.cs" />
|
||||
<Compile Include="DTOModels\AlarmModels\DTOAlarmsModel.cs" />
|
||||
<Compile Include="DTOModels\DTOAxesModel.cs" />
|
||||
<Compile Include="DTOModels\DTOAxisNameModel.cs" />
|
||||
<Compile Include="DTOModels\DTOClientConfigurationModel.cs" />
|
||||
<Compile Include="DTOModels\ThModules\DTOModule.cs" />
|
||||
<Compile Include="DTOModels\ThModules\DTOModuleConfigModel.cs" />
|
||||
<Compile Include="DTOModels\ThModules\DTOModulesBlock.cs" />
|
||||
<Compile Include="DTOModels\ThWarmers\DTOWarmers.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\DTORecipeParam.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\DTORecipeConfigModel .cs" />
|
||||
<Compile Include="DTOModels\DTONetworkMonitor.cs" />
|
||||
<Compile Include="DTOModels\DTOCmsConnectGateway.cs" />
|
||||
<Compile Include="DTOModels\JobModels\DTOGenericParamModel.cs" />
|
||||
@@ -112,6 +120,7 @@
|
||||
<Compile Include="DTOModels\DTOQueueModel.cs" />
|
||||
<Compile Include="DTOModels\JobModels\DTOMetadataFieldsModel.cs" />
|
||||
<Compile Include="DTOModels\JobModels\DTOMetadataModel.cs" />
|
||||
<Compile Include="DTOModels\ThRecipe\DTORecipeOverview.cs" />
|
||||
<Compile Include="DTOModels\Scada\DTOScadaModel.cs" />
|
||||
<Compile Include="DTOModels\Scada\ScadaSchemaModel.cs" />
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTOExpiredMaintenanceModel.cs" />
|
||||
@@ -134,6 +143,7 @@
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTOMaintenanceNoteModel.cs" />
|
||||
<Compile Include="DTOModels\MaintenanceModels\DTONewMaintenanceModel.cs" />
|
||||
<Compile Include="DatabaseModels\MaintenanceNoteModel.cs" />
|
||||
<Compile Include="DTOModels\ThProd\DTOProdCycle.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="DatabaseModels\UserModel.cs">
|
||||
<Generator>DtsGenerator</Generator>
|
||||
@@ -152,6 +162,15 @@
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="DTOModels\Recipe\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
|
||||
+1131
-240
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,61 @@ namespace Thermo.Active.NC
|
||||
{
|
||||
public class NcFileAdapter : NcAdapter
|
||||
{
|
||||
/// <summary>
|
||||
/// Read file from local devices ad give back string content
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="fileContent"></param>
|
||||
/// <returns></returns>
|
||||
public CmsError ReadFileContent(string path, out string fileContent)
|
||||
{
|
||||
// init
|
||||
fileContent = "";
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
// check existing
|
||||
if (File.Exists(path))
|
||||
{
|
||||
// read all lines as string
|
||||
fileContent = File.ReadAllText(path);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FILE_NOT_FOUND_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FILE_NOT_FOUND_ERROR;
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
}
|
||||
/// <summary>
|
||||
/// Save string content to file
|
||||
/// </summary>
|
||||
/// <param name="path"></param>
|
||||
/// <param name="fileContent"></param>
|
||||
/// <returns></returns>
|
||||
public CmsError WriteFileContent(string path, string fileContent)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(fileContent))
|
||||
{
|
||||
File.WriteAllText(path, fileContent);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FILE_NOT_FOUND_ERROR;
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public CmsError GetFileList(string path, out List<PreviewFileModel> fileList)
|
||||
{
|
||||
fileList = new List<PreviewFileModel>();
|
||||
@@ -28,21 +83,20 @@ namespace Thermo.Active.NC
|
||||
public CmsError GetFileInfo(string path, out InfoFile fileInfo)
|
||||
{
|
||||
fileInfo = new InfoFile();
|
||||
// CmsError cmsError = NO_ERROR;
|
||||
|
||||
// if (FileExistWithNc(path))
|
||||
// cmsError = LocalPartProgramFileInfo(path, out fileInfo);
|
||||
// libraryError = LocalPartProgramFileInfo(path, out fileInfo);
|
||||
// else
|
||||
// cmsError = numericalControl.FILES_RGetFileInfo(path, ref fileInfo);
|
||||
// libraryError = numericalControl.FILES_RGetFileInfo(path, ref fileInfo);
|
||||
|
||||
|
||||
CmsError cmsError = numericalControl.FILES_RGetFileInfo(path, ref fileInfo);
|
||||
CmsError libraryError = numericalControl.FILES_RGetFileInfo(path, ref fileInfo);
|
||||
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
string [] names = fileInfo.Name.Split('/');
|
||||
if(names.Length > 0)
|
||||
string[] names = fileInfo.Name.Split('/');
|
||||
if (names.Length > 0)
|
||||
{
|
||||
string name = names.Last();
|
||||
if (!String.IsNullOrWhiteSpace(name))
|
||||
@@ -73,15 +127,15 @@ namespace Thermo.Active.NC
|
||||
fileInfo = new DTOActiveImageAndNameDataModel();
|
||||
|
||||
PROGRAM_TYPE_ENUM program = PROGRAM_TYPE_ENUM.NONE;
|
||||
CmsError cmsError = numericalControl.FILES_RGetProgramType(ref program);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.FILES_RGetProgramType(ref program);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// Get selected process
|
||||
ushort selectedProcess = 0;
|
||||
cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// JOB CASE
|
||||
if (program == PROGRAM_TYPE_ENUM.JOB)
|
||||
@@ -107,9 +161,9 @@ namespace Thermo.Active.NC
|
||||
else
|
||||
{
|
||||
string name = "";
|
||||
cmsError = numericalControl.PROC_RSelectedPPName(selectedProcess, ref name);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
libraryError = numericalControl.PROC_RSelectedPPName(selectedProcess, ref name);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
fileInfo = new DTOActiveImageAndNameDataModel()
|
||||
{
|
||||
@@ -164,13 +218,13 @@ namespace Thermo.Active.NC
|
||||
dtoData = new DTOActiveProgramDataModel();
|
||||
// Get selectedProcess process id
|
||||
ushort selectedProcess = 0;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// Read active program data
|
||||
ActiveProgramDataModel data = new ActiveProgramDataModel();
|
||||
cmsError = numericalControl.FILES_RActiveProgramData(selectedProcess, ref data);
|
||||
libraryError = numericalControl.FILES_RActiveProgramData(selectedProcess, ref data);
|
||||
|
||||
dtoData = new DTOActiveProgramDataModel()
|
||||
{
|
||||
@@ -179,7 +233,7 @@ namespace Thermo.Active.NC
|
||||
TimeLeft = data.TimeLeft
|
||||
};
|
||||
|
||||
return cmsError; // TODO FIX OSAI
|
||||
return libraryError; // TODO FIX OSAI
|
||||
}
|
||||
|
||||
public CmsError SetActiveProgramInfo(string path, out DTOActiveProgramDataModel dtoData)
|
||||
@@ -187,12 +241,12 @@ namespace Thermo.Active.NC
|
||||
dtoData = new DTOActiveProgramDataModel();
|
||||
// Get selectedProcess process id
|
||||
ushort selectedProcess = 1;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
//if (cmsError.IsError())
|
||||
// return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
//if (libraryError.IsError())
|
||||
// return libraryError;
|
||||
|
||||
ActiveProgramDataModel data = new ActiveProgramDataModel();
|
||||
cmsError = numericalControl.FILES_WSetActiveProgram(selectedProcess, path, ref data);
|
||||
libraryError = numericalControl.FILES_WSetActiveProgram(selectedProcess, path, ref data);
|
||||
|
||||
dtoData = new DTOActiveProgramDataModel()
|
||||
{
|
||||
@@ -201,7 +255,7 @@ namespace Thermo.Active.NC
|
||||
TimeLeft = data.TimeLeft
|
||||
};
|
||||
|
||||
return cmsError;
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
public CmsError DeactivateProgram(out DTOActiveProgramDataModel dtoData)
|
||||
@@ -209,12 +263,12 @@ namespace Thermo.Active.NC
|
||||
dtoData = new DTOActiveProgramDataModel();
|
||||
// Get selectedProcess process id
|
||||
ushort selectedProcess = 0;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
ActiveProgramDataModel data = new ActiveProgramDataModel();
|
||||
cmsError = numericalControl.FILES_WDeactivateProgram(selectedProcess);
|
||||
libraryError = numericalControl.FILES_WDeactivateProgram(selectedProcess);
|
||||
|
||||
dtoData = new DTOActiveProgramDataModel()
|
||||
{
|
||||
@@ -223,21 +277,21 @@ namespace Thermo.Active.NC
|
||||
TimeLeft = data.TimeLeft
|
||||
};
|
||||
|
||||
return cmsError;
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
public CmsError UploadPartProgram(string localPath, string fileName, out string newFilePath)
|
||||
{
|
||||
// Upload to NC
|
||||
newFilePath = "";
|
||||
CmsError cmsError = numericalControl.FILES_UploadPartProgram(localPath, fileName, ref newFilePath);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.FILES_UploadPartProgram(localPath, fileName, ref newFilePath);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// Delete local file
|
||||
File.Delete(localPath + "\\" + fileName);
|
||||
|
||||
return cmsError;
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
public CmsError UploadPartProgramAndActivate(string localPath, string fileName, out ActiveProgramDataModel programData)
|
||||
@@ -246,16 +300,16 @@ namespace Thermo.Active.NC
|
||||
|
||||
// Get selectedProcess id
|
||||
ushort selectedProcess = 0;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
if (!JOB_EXTENSIONS.Contains(Path.GetExtension(fileName)))
|
||||
{
|
||||
// Upload to NC
|
||||
cmsError = UploadPartProgram(localPath, fileName, out string newFilePath);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
libraryError = UploadPartProgram(localPath, fileName, out string newFilePath);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
// Custom part program management
|
||||
//if(String.IsNullOrEmpty(CMSMainProgramContent))
|
||||
@@ -280,9 +334,9 @@ namespace Thermo.Active.NC
|
||||
|
||||
// Get selectedProcess id
|
||||
ushort selectedProcess = 0;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
queueItem = new DTOQueueModel()
|
||||
{
|
||||
@@ -307,7 +361,7 @@ namespace Thermo.Active.NC
|
||||
queueController.UpdateQueue();
|
||||
}
|
||||
|
||||
return cmsError;
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
public CmsError UpdateQueue()
|
||||
@@ -315,7 +369,7 @@ namespace Thermo.Active.NC
|
||||
// Get queue data
|
||||
List<QueueStatusModel> queueData = new List<QueueStatusModel>();
|
||||
|
||||
CmsError cmsError = numericalControl.FILES_RQueueData(ref queueData);
|
||||
CmsError libraryError = numericalControl.FILES_RQueueData(ref queueData);
|
||||
|
||||
foreach (var item in queueData)
|
||||
{
|
||||
@@ -360,14 +414,14 @@ namespace Thermo.Active.NC
|
||||
}
|
||||
else
|
||||
// Upload & activate new part program
|
||||
cmsError = numericalControl
|
||||
libraryError = numericalControl
|
||||
.FILES_WLoadNextPartProgram(
|
||||
PartProgramQueue[item.ProcessId][QueueRunningIndexes[item.ProcessId]].AbsolutePath,
|
||||
QUEUE_FILE_NAME
|
||||
);
|
||||
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -396,9 +450,9 @@ namespace Thermo.Active.NC
|
||||
queueList = new List<DTOQueueModel>();
|
||||
// Get selected process
|
||||
ushort selectedProcess = 0;
|
||||
CmsError cmsError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (cmsError.IsError())
|
||||
return cmsError;
|
||||
CmsError libraryError = numericalControl.PROC_RSelectedProcess(ref selectedProcess);
|
||||
if (libraryError.IsError())
|
||||
return libraryError;
|
||||
|
||||
queueList = new List<DTOQueueModel>();
|
||||
// Check if there is already a pp queue
|
||||
|
||||
@@ -32,10 +32,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library, Version=1.1.0.0, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
@@ -70,6 +66,10 @@
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Config\Thermo.Active.Config.csproj">
|
||||
<Project>{3f5c2483-fc87-43ef-92a8-66ff7d0e440f}</Project>
|
||||
<Name>Thermo.Active.Config</Name>
|
||||
|
||||
+13
-13
@@ -40,6 +40,7 @@ namespace Thermo.Active.UI
|
||||
this.toolStripSeparator = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.StopServerItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.TXTstatus = new System.Windows.Forms.TextBox();
|
||||
@@ -67,7 +68,6 @@ namespace Thermo.Active.UI
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.resetSpindleHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetCountersToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.NotifyIconMenu.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
@@ -146,6 +146,14 @@ namespace Thermo.Active.UI
|
||||
this.resetCountersToolStripMenuItem.Visible = false;
|
||||
this.resetCountersToolStripMenuItem.Click += new System.EventHandler(this.resetCountersToolStripMenuItem_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
@@ -315,6 +323,7 @@ namespace Thermo.Active.UI
|
||||
this.columnHeader2});
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.LISTThreadStatus, 2);
|
||||
this.LISTThreadStatus.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.LISTThreadStatus.HideSelection = false;
|
||||
this.LISTThreadStatus.Location = new System.Drawing.Point(3, 3);
|
||||
this.LISTThreadStatus.Name = "LISTThreadStatus";
|
||||
this.LISTThreadStatus.Size = new System.Drawing.Size(438, 283);
|
||||
@@ -355,14 +364,14 @@ namespace Thermo.Active.UI
|
||||
// closeCMSServerToolStripMenuItem
|
||||
//
|
||||
this.closeCMSServerToolStripMenuItem.Name = "closeCMSServerToolStripMenuItem";
|
||||
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.closeCMSServerToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.closeCMSServerToolStripMenuItem.Text = "Close Active Server";
|
||||
this.closeCMSServerToolStripMenuItem.Click += new System.EventHandler(this.closeCMSServerToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(171, 6);
|
||||
//
|
||||
// serviceToolStripMenuItem
|
||||
//
|
||||
@@ -374,7 +383,7 @@ namespace Thermo.Active.UI
|
||||
this.resetCountersToolStripMenuItem1,
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1});
|
||||
this.serviceToolStripMenuItem.Name = "serviceToolStripMenuItem";
|
||||
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||
this.serviceToolStripMenuItem.Size = new System.Drawing.Size(174, 22);
|
||||
this.serviceToolStripMenuItem.Text = "Service";
|
||||
//
|
||||
// passwordToolStripMenuItem1
|
||||
@@ -416,14 +425,6 @@ namespace Thermo.Active.UI
|
||||
this.resetCountersToolStripMenuItem1.Visible = false;
|
||||
this.resetCountersToolStripMenuItem1.Click += new System.EventHandler(this.resetCountersToolStripMenuItem1_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Name = "resetMachineWorkingHoursToolStripMenuItem";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Size = new System.Drawing.Size(234, 22);
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Text = "Reset Machine Working Hours";
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Visible = false;
|
||||
this.resetMachineWorkingHoursToolStripMenuItem.Click += new System.EventHandler(this.resetMachineWorkingHoursToolStripMenuItem_Click);
|
||||
//
|
||||
// resetMachineWorkingHoursToolStripMenuItem1
|
||||
//
|
||||
this.resetMachineWorkingHoursToolStripMenuItem1.Name = "resetMachineWorkingHoursToolStripMenuItem1";
|
||||
@@ -440,7 +441,6 @@ namespace Thermo.Active.UI
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Margin = new System.Windows.Forms.Padding(2);
|
||||
|
||||
@@ -34,10 +34,6 @@
|
||||
<ApplicationIcon>Resources\CMS_Icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library, Version=1.1.0.0, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
@@ -139,6 +135,10 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Config\Thermo.Active.Config.csproj">
|
||||
<Project>{3f5c2483-fc87-43ef-92a8-66ff7d0e440f}</Project>
|
||||
<Name>Thermo.Active.Config</Name>
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Windows.Forms;
|
||||
using Thermo.Active.Model;
|
||||
using TeamDev.SDK.MVVM;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Utils.StepLogger;
|
||||
using static Thermo.Active.Utils.ThermoActiveLogger;
|
||||
|
||||
namespace Thermo.Active.Utils
|
||||
{
|
||||
|
||||
@@ -32,10 +32,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library, Version=1.1.0.0, Culture=neutral, processorArchitecture=x86">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\MySql.Data.6.10.4\lib\net452\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -73,7 +69,7 @@
|
||||
<Compile Include="ExceptionManager.cs" />
|
||||
<Compile Include="LanguageController.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="StepLogger.cs" />
|
||||
<Compile Include="ThermoActiveLogger.cs" />
|
||||
<Compile Include="SupportFunctions.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -146,6 +142,10 @@
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.Model\Thermo.Active.Model.csproj">
|
||||
<Project>{631375DD-06D3-49BB-8130-D9DDB34C429D}</Project>
|
||||
<Name>Thermo.Active.Model</Name>
|
||||
|
||||
@@ -4,7 +4,7 @@ using static Thermo.Active.Model.Constants;
|
||||
|
||||
namespace Thermo.Active.Utils
|
||||
{
|
||||
public static class StepLogger
|
||||
public static class ThermoActiveLogger
|
||||
{
|
||||
private static Logger Log = LogManager.GetCurrentClassLogger();
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Thermo.Active.Utils
|
||||
{
|
||||
private static readonly string CMSCONNECT_TOKEN = "59f1qik5PYfiJLiXZ4xZ05pjzx5E9FscQWtj4lmfLKXaF1OAxkvu7ziBzXFBuuVQ";
|
||||
|
||||
public static SOFTKEY_TYPE GetSoftKeyType(string type)
|
||||
public static SOFTKEY_TYPE GetSoftKeyType(string type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -39,6 +39,51 @@ namespace Thermo.Active.Utils
|
||||
default: return HEAD_TYPE.WJ;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Conversion string --> TACT_PARAM_TYPE
|
||||
/// </summary>
|
||||
/// <param name="strValue"></param>
|
||||
/// <returns></returns>
|
||||
public static TACT_PARAM_TYPE GetTActParamType(string strValue)
|
||||
{
|
||||
TACT_PARAM_TYPE answ = TACT_PARAM_TYPE.ND;
|
||||
try
|
||||
{
|
||||
answ = (TACT_PARAM_TYPE)Enum.Parse(typeof(TACT_PARAM_TYPE), strValue);
|
||||
}
|
||||
catch { }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Conversion string --> TACT_MBLOCK_TYPE
|
||||
/// </summary>
|
||||
/// <param name="strValue"></param>
|
||||
/// <returns></returns>
|
||||
public static TACT_MBLOCK_TYPE GetTActMB_Type(string strValue)
|
||||
{
|
||||
TACT_MBLOCK_TYPE answ = TACT_MBLOCK_TYPE.ND;
|
||||
try
|
||||
{
|
||||
answ = (TACT_MBLOCK_TYPE)Enum.Parse(typeof(TACT_MBLOCK_TYPE), strValue);
|
||||
}
|
||||
catch { }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Conversion string --> TACT_MBLOCK_SECTION
|
||||
/// </summary>
|
||||
/// <param name="strValue"></param>
|
||||
/// <returns></returns>
|
||||
public static TACT_MBLOCK_SECTION GetTActMB_Section(string strValue)
|
||||
{
|
||||
TACT_MBLOCK_SECTION answ = TACT_MBLOCK_SECTION.ND;
|
||||
try
|
||||
{
|
||||
answ = (TACT_MBLOCK_SECTION)Enum.Parse(typeof(TACT_MBLOCK_SECTION), strValue);
|
||||
}
|
||||
catch { }
|
||||
return answ;
|
||||
}
|
||||
|
||||
public static int GetPlcIdFromNcSoftKey(string softKey)
|
||||
{
|
||||
@@ -72,7 +117,7 @@ namespace Thermo.Active.Utils
|
||||
case "xTen": return 26;
|
||||
case "xHundred": return 27;
|
||||
case "xThousand": return 28;
|
||||
case "overstroke": return 30;
|
||||
case "overstroke": return 30;
|
||||
case "feedByPass": return 31;
|
||||
default: return -1;
|
||||
}
|
||||
@@ -153,7 +198,7 @@ namespace Thermo.Active.Utils
|
||||
|
||||
List<short> listOfPossibleIds = Enumerable.Range(1, objIds.Max() + 1).Select(x => (short)x).ToList();
|
||||
|
||||
IEnumerable<short> res = listOfPossibleIds.Except(objIds).ToList();
|
||||
IEnumerable<short> res = listOfPossibleIds.Except(objIds).ToList();
|
||||
|
||||
if (res.Count() > 0)
|
||||
return res.First();
|
||||
@@ -162,7 +207,7 @@ namespace Thermo.Active.Utils
|
||||
}
|
||||
|
||||
public static string GetImageBase64String(string directoryPath, string imageName)
|
||||
{
|
||||
{
|
||||
string fileName = Path.GetFileNameWithoutExtension(imageName);
|
||||
foreach (string ext in VALID_IMAGE_EXTENSIONS)
|
||||
{
|
||||
@@ -199,7 +244,7 @@ namespace Thermo.Active.Utils
|
||||
return null;
|
||||
|
||||
EmptyFolder(jobFolderPath);
|
||||
|
||||
|
||||
using (ZipArchive zipExtractor = ZipFile.OpenRead(filePath))
|
||||
{
|
||||
// Setup main job fields
|
||||
@@ -307,7 +352,7 @@ namespace Thermo.Active.Utils
|
||||
string filePath = JOB_TMP_DIRECTORY + "\\" + processId + "\\";
|
||||
if (!Directory.Exists(filePath))
|
||||
return null;
|
||||
|
||||
|
||||
// Setup main Fields
|
||||
DTOJobModel jobData = new DTOJobModel()
|
||||
{
|
||||
@@ -372,7 +417,7 @@ namespace Thermo.Active.Utils
|
||||
return SCADA_MEM_TYPE.WORD;
|
||||
|
||||
case "INT":
|
||||
return SCADA_MEM_TYPE.INT;
|
||||
return SCADA_MEM_TYPE.INT;
|
||||
|
||||
case "REAL":
|
||||
return SCADA_MEM_TYPE.REAL;
|
||||
@@ -407,7 +452,7 @@ namespace Thermo.Active.Utils
|
||||
|
||||
public static string GetSoftwareVersionAndBuildDate()
|
||||
{
|
||||
Version v = Assembly.GetEntryAssembly()?.GetName().Version;
|
||||
Version v = Assembly.GetEntryAssembly()?.GetName().Version;
|
||||
if (v != null)
|
||||
{
|
||||
// Get first 2 number of the version
|
||||
@@ -424,7 +469,7 @@ namespace Thermo.Active.Utils
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static Boolean DecodeCMSConnectGatewayLogin(string encryptedString, out string login, out string password)
|
||||
{
|
||||
@@ -496,7 +541,10 @@ namespace Thermo.Active.Utils
|
||||
{
|
||||
intMachineVal = 0;
|
||||
containsLetters = Regex.IsMatch(machineNumber, @".*?[a-zA-Z].*?");
|
||||
|
||||
if (string.IsNullOrEmpty(machineNumber))
|
||||
{
|
||||
machineNumber = "0000";
|
||||
}
|
||||
if (containsLetters)
|
||||
// Convert ASCII string to a single INT
|
||||
intMachineVal = SupportFunctions.ConvertAsciiStringToInt(machineNumber);
|
||||
|
||||
@@ -39,11 +39,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Client.Chromium", "Client.C
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Thermo.Active.CmsConnectGateway", "Thermo.Active.CmsConnectGateway\Thermo.Active.CmsConnectGateway.csproj", "{49B04D99-0ECD-4900-86D3-7098D61314D7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CMS_CORE_Library", "..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj", "{4ABF8EEF-2B23-483E-ACDC-53214FE28681}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Debug2|Any CPU = Debug2|Any CPU
|
||||
Debug2|x64 = Debug2|x64
|
||||
Debug2|x86 = Debug2|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
@@ -55,6 +60,12 @@ Global
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AFED34E1-77DB-4D81-830A-A8D0A190573D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -67,6 +78,12 @@ Global
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{631375DD-06D3-49BB-8130-D9DDB34C429D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -79,6 +96,12 @@ Global
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{20FC0937-E7CA-4693-95F9-7A948EFD173B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -91,6 +114,12 @@ Global
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{357D5EE1-FFC8-489B-9232-22CF474D9A6F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -103,6 +132,12 @@ Global
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F5C2483-FC87-43EF-92A8-66FF7D0E440F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -115,6 +150,12 @@ Global
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug|x64.Build.0 = Debug|x64
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug|x86.Build.0 = Debug|x86
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|x64.ActiveCfg = Debug|x64
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|x64.Build.0 = Debug|x64
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|x86.ActiveCfg = Debug|x86
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Debug2|x86.Build.0 = Debug|x86
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{66FA29DB-925A-402B-A4C7-D3D780FB1BC3}.Release|x64.ActiveCfg = Release|x64
|
||||
@@ -127,6 +168,12 @@ Global
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CBEB631B-ABFA-4042-9779-C0060B0DFEFE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -139,6 +186,12 @@ Global
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{205A6ADE-FB5A-45CB-9C51-9817E7BB8939}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -151,6 +204,12 @@ Global
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{34434B22-D546-4A5C-B575-49720C77643A}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -163,6 +222,12 @@ Global
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DE54FF4C-8390-4489-882A-1BC7D99EF185}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -175,6 +240,12 @@ Global
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B2366B08-96BD-4F6B-B748-B45089B87A14}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -187,6 +258,12 @@ Global
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F9F17F23-660E-488C-A7FA-6A5B35D64313}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
@@ -199,12 +276,36 @@ Global
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|Any CPU.Build.0 = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|x64.ActiveCfg = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|x64.Build.0 = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|x86.ActiveCfg = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Debug2|x86.Build.0 = Debug|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|x64.Build.0 = Release|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{49B04D99-0ECD-4900-86D3-7098D61314D7}.Release|x86.Build.0 = Release|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|x64.Build.0 = Debug|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug|x86.Build.0 = Debug|x86
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|Any CPU.ActiveCfg = Debug2|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|Any CPU.Build.0 = Debug2|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|x64.ActiveCfg = Debug2|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|x64.Build.0 = Debug2|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|x86.ActiveCfg = Debug2|x86
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Debug2|x86.Build.0 = Debug2|x86
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|x64.ActiveCfg = Release|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|x64.Build.0 = Release|x64
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|x86.ActiveCfg = Release|x86
|
||||
{4ABF8EEF-2B23-483E-ACDC-53214FE28681}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<appSettings>
|
||||
<add key="enableDirectoryBrowsing" value="true" />
|
||||
<add key="ClientSettingsProvider.ServiceUri" value="" />
|
||||
<add key="ServerServiceName" value="MariaDB"/>
|
||||
<add key="ServerServiceName" value="MariaDB" />
|
||||
</appSettings>
|
||||
<system.web>
|
||||
<compilation debug="true" targetFramework="4.6.2" />
|
||||
@@ -69,6 +69,11 @@
|
||||
<assemblyIdentity name="System.Web.Cors" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="System.Windows.Interactivity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
|
||||
</dependentAssembly>
|
||||
<probing privatePath="lib;libs" />
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<connectionStrings>
|
||||
@@ -81,4 +86,72 @@
|
||||
</provider>
|
||||
</providers>
|
||||
</entityFramework>
|
||||
<system.diagnostics>
|
||||
<sources>
|
||||
<source name="SignalR.SqlMessageBus">
|
||||
<listeners>
|
||||
<add name="SignalR-Bus" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.ServiceBusMessageBus">
|
||||
<listeners>
|
||||
<add name="SignalR-Bus" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.RedisMessageBus">
|
||||
<listeners>
|
||||
<add name="SignalR-Bus" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.ScaleoutMessageBus">
|
||||
<listeners>
|
||||
<add name="SignalR-Bus" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.WebSocketTransport">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.ServerSentEventsTransport">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.ForeverFrameTransport">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.LongPollingTransport">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.Transports.TransportHeartBeat">
|
||||
<listeners>
|
||||
<add name="SignalR-Transports" />
|
||||
</listeners>
|
||||
</source>
|
||||
<source name="SignalR.ReflectedHubDescriptorProvider">
|
||||
<listeners>
|
||||
<add name="SignalR-Init" />
|
||||
</listeners>
|
||||
</source>
|
||||
</sources>
|
||||
<!-- Sets the trace verbosity level -->
|
||||
<switches>
|
||||
<add name="SignalRSwitch" value="Verbose" />
|
||||
</switches>
|
||||
<!-- Specifies the trace writer for output -->
|
||||
<sharedListeners>
|
||||
<!-- Listener for transport events -->
|
||||
<add name="SignalR-Transports" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/transports.log" />
|
||||
<!-- Listener for scaleout provider events -->
|
||||
<add name="SignalR-Bus" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/bus.log" />
|
||||
<!-- Listener for hub discovery events -->
|
||||
<add name="SignalR-Init" type="System.Diagnostics.TextWriterTraceListener" initializeData="logs/init.log" />
|
||||
</sharedListeners>
|
||||
<trace autoflush="true" />
|
||||
</system.diagnostics>
|
||||
</configuration>
|
||||
@@ -64,7 +64,7 @@ namespace Thermo.Active.App_Start
|
||||
RequestPath = PathString.Empty,
|
||||
FileSystem = new PhysicalFileSystem(WEBSITE_DIRECTORY)
|
||||
};
|
||||
|
||||
|
||||
app.UseFileServer(options);
|
||||
if (!ServerPortIsAvailable(ServerStartupConfig.ServerPort))
|
||||
{
|
||||
@@ -106,7 +106,7 @@ namespace Thermo.Active.App_Start
|
||||
app.Map("/signalr", map =>
|
||||
{
|
||||
map.UseCors(CorsOptions.AllowAll);
|
||||
|
||||
|
||||
map.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()
|
||||
{
|
||||
Provider = new SignalROAuthBearerProvider(),
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace Thermo.Active
|
||||
// hold additional metadata for an API. Version and title are required but you can also provide
|
||||
// additional fields by chaining methods off SingleApiVersion.
|
||||
//
|
||||
c.SingleApiVersion("v1", "Step");
|
||||
c.SingleApiVersion("v1", "ThermoActive");
|
||||
|
||||
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
|
||||
//
|
||||
|
||||
@@ -218,9 +218,9 @@ namespace Thermo.Active.Controllers.SignalR
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.WriteM155Data(process, responseVal);
|
||||
if (cmsError.IsError())
|
||||
throw new HubException(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.WriteM155Data(process, responseVal);
|
||||
if (libraryError.IsError())
|
||||
throw new HubException(libraryError.localizationKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,9 +230,9 @@ namespace Thermo.Active.Controllers.SignalR
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.WriteScada(memIndex, memType, value);
|
||||
if (cmsError.IsError())
|
||||
throw new HubException(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.WriteScada(memIndex, memType, value);
|
||||
if (libraryError.IsError())
|
||||
throw new HubException(libraryError.localizationKey);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,9 +37,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
// Get list of maintenances with user's permission
|
||||
CmsError cmsError = ncAdapter.GetMaintenancesWithPermissions(out List<DTOMaintenanceModel> maintenances, Convert.ToInt32(userId.Value));
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetMaintenancesWithPermissions(out List<DTOMaintenanceModel> maintenances, Convert.ToInt32(userId.Value));
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(maintenances);
|
||||
}
|
||||
@@ -67,11 +67,11 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (cmsError.IsError())
|
||||
CmsError libraryError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
maintenancesController.Delete(dbMaint);
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
PerformedMaintenanceModel performed = maintenancesController.PerformeMaintenance(maintenance.OriginalPlcCounter / 60, dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), -2);
|
||||
@@ -81,9 +81,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
cmsError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel endMaintenance);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
libraryError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel endMaintenance);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(endMaintenance);
|
||||
|
||||
@@ -94,9 +94,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(maintenance);
|
||||
}
|
||||
@@ -139,9 +139,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetMaintenanceDataById(dbMaint.MaintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintenance);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(maintenance);
|
||||
}
|
||||
@@ -198,18 +198,18 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.GetMaintenanceDataById(maintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintData);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetMaintenanceDataById(maintenanceId, Convert.ToInt32(userId.Value), out DTOMaintenanceModel maintData);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
if (!maintData.CanPerform)
|
||||
return Unauthorized();
|
||||
|
||||
using (MaintenancesController maintenancesController = new MaintenancesController())
|
||||
{
|
||||
cmsError = ncAdapter.GetNcGenericData(out DTONcGenericDataModel data);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
libraryError = ncAdapter.GetNcGenericData(out DTONcGenericDataModel data);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
int controlWord = -1;
|
||||
if (maintData.CreatedByCms)
|
||||
@@ -225,9 +225,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
if (performed == null)
|
||||
return NotFound();
|
||||
|
||||
cmsError = ncAdapter.GetMaintenanceDataById(maintenanceId, Convert.ToInt32(userId.Value), out maintData);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
libraryError = ncAdapter.GetMaintenanceDataById(maintenanceId, Convert.ToInt32(userId.Value), out maintData);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(maintData);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Http;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
|
||||
namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
@@ -102,6 +103,25 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
return Ok(heads);
|
||||
}
|
||||
|
||||
[Route("recipe"), HttpGet]
|
||||
public IHttpActionResult GetRecipeConfig()
|
||||
{
|
||||
List<DTORecipeConfigModel> recipeConfig = RecipeConfig.Select(x => new DTORecipeConfigModel()
|
||||
{
|
||||
Id = x.Id,
|
||||
ScaleFactor = x.ScaleFactor,
|
||||
Category = x.Category.ToString(),
|
||||
SubCategory_1 = x.SubCategory_1,
|
||||
SubCategory_2 = x.SubCategory_2,
|
||||
Name = x.Name,
|
||||
Description = x.Description,
|
||||
Format = x.Format,
|
||||
Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower()
|
||||
}).ToList();
|
||||
|
||||
return Ok(recipeConfig);
|
||||
}
|
||||
|
||||
[Route("alarms"), HttpGet]
|
||||
public IHttpActionResult GetAlarmsConfig()
|
||||
{
|
||||
|
||||
@@ -27,9 +27,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
ICollection<CultureInfo> cultureInfos = new List<CultureInfo>();
|
||||
|
||||
// Get nc available language
|
||||
CmsError cmsError = ncAdapter.numericalControl.NC_GetAvailableLanguages(ref cultureInfos);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.numericalControl.NC_GetAvailableLanguages(ref cultureInfos);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
// Filter available language with
|
||||
availableLanguages = availableLanguages.Where(x => cultureInfos.Any(y => y.TwoLetterISOLanguageName == x.IsoId)).ToList();
|
||||
}
|
||||
@@ -114,6 +114,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
private static string GetValueFromLocalizationList(Dictionary<string, string> localizedNames, string language, string defaultString)
|
||||
{
|
||||
// Find text from names by language id
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.NC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Utils;
|
||||
|
||||
namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
[RoutePrefix("api/ModBlock")]
|
||||
public class ModulesController : ApiController
|
||||
{
|
||||
[Route("current"), HttpGet]
|
||||
public IHttpActionResult GetCurrentModules()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetCurrentModules | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
libraryError = ncAdapter.ReadModulesBlock(out Dictionary<int, DTOModulesBlock> currModules);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currModules);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.GetFileList(filePath, out List<PreviewFileModel> fileList);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetFileList(filePath, out List<PreviewFileModel> fileList);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(fileList);
|
||||
}
|
||||
@@ -40,9 +40,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.GetFileInfo(filePath, out InfoFile fileInfo);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetFileInfo(filePath, out InfoFile fileInfo);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(fileInfo);
|
||||
}
|
||||
@@ -55,9 +55,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.GetActiveFileInfo(filePath, out DTOActiveImageAndNameDataModel fileInfo);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.GetActiveFileInfo(filePath, out DTOActiveImageAndNameDataModel fileInfo);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(fileInfo);
|
||||
}
|
||||
@@ -70,9 +70,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.SetActiveProgramInfo(filePath, out DTOActiveProgramDataModel fileInfo);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.SetActiveProgramInfo(filePath, out DTOActiveProgramDataModel fileInfo);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(fileInfo);
|
||||
}
|
||||
@@ -85,9 +85,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.DeactivateProgram(out DTOActiveProgramDataModel fileInfo);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.DeactivateProgram(out DTOActiveProgramDataModel fileInfo);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(fileInfo);
|
||||
}
|
||||
@@ -114,9 +114,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
if (NcConfig.NcVendor == NC_VENDOR.OSAI)
|
||||
{
|
||||
// Clean upload folder only OSAI
|
||||
CmsError cmsError = ncFileHandler.CleanUploadFolder();
|
||||
if (cmsError.IsError() && cmsError.errorCode != CMS_ERROR_CODES.FILE_NOT_FOUND)
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncFileHandler.CleanUploadFolder();
|
||||
if (libraryError.IsError() && libraryError.errorCode != CMS_ERROR_CODES.FILE_NOT_FOUND)
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
ActiveProgramDataModel programData = new ActiveProgramDataModel();
|
||||
@@ -130,9 +130,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
programs.Add(item.FileName);
|
||||
|
||||
// Upload main program
|
||||
CmsError cmsError = ncFileHandler.UploadPartProgramAndActivate(TEMP_PP_FOLDER, item.FileName, out programData);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncFileHandler.UploadPartProgramAndActivate(TEMP_PP_FOLDER, item.FileName, out programData);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
mainPPName = Path.GetFileNameWithoutExtension(programData.Path);
|
||||
}
|
||||
@@ -142,9 +142,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
programs.Add(item.FileName);
|
||||
|
||||
// Upload files
|
||||
CmsError cmsError = ncFileHandler.UploadPartProgram(TEMP_PP_FOLDER, item.FileName, out string programPath);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncFileHandler.UploadPartProgram(TEMP_PP_FOLDER, item.FileName, out string programPath);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
else if (item.ParameterName == "image")
|
||||
{
|
||||
@@ -348,9 +348,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
if (repsParam == null || !int.TryParse(repsParam.Value, out int reps))
|
||||
return BadRequest();
|
||||
// Upload
|
||||
CmsError cmsError = ncAdapter.UploadPartProgramAndAddToQueue(QUEUE_TMP_FOLDER, item.FileName, reps, out queueItem);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.UploadPartProgramAndAddToQueue(QUEUE_TMP_FOLDER, item.FileName, reps, out queueItem);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
}
|
||||
else if (item.ParameterName == "image")
|
||||
@@ -370,9 +370,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.RemoveFromQueue(processId, itemId);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.RemoveFromQueue(processId, itemId);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok();
|
||||
@@ -383,9 +383,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
CmsError cmsError = ncAdapter.MoveQueueItems(processId, itemsPositions.ObjectId, itemsPositions.NewPosition, out List<DTOQueueModel> queue);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.MoveQueueItems(processId, itemsPositions.ObjectId, itemsPositions.NewPosition, out List<DTOQueueModel> queue);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(queue);
|
||||
}
|
||||
@@ -399,9 +399,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
if (reps.Reps < 1)
|
||||
return BadRequest(INCORRECT_PARAMETERS_ERROR.localizationKey);
|
||||
|
||||
CmsError cmsError = ncAdapter.EditQueueItemReps(processId, itemId, reps.Reps, out DTOQueueModel queueItem);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.EditQueueItemReps(processId, itemId, reps.Reps, out DTOQueueModel queueItem);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok(queueItem);
|
||||
}
|
||||
@@ -412,9 +412,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
CmsError cmsError = ncAdapter.EmptyQueue(processId);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.EmptyQueue(processId);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
@@ -427,9 +427,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.StartWorkingQueue(processId);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.StartWorkingQueue(processId);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
@@ -442,9 +442,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
|
||||
CmsError cmsError = ncAdapter.StopWorkingQueue(processId);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.StopWorkingQueue(processId);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,202 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.NC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
using Thermo.Active.Config;
|
||||
using Thermo.Active.Utils;
|
||||
|
||||
namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
[RoutePrefix("api/prod")]
|
||||
public class ProdController : ApiController
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Request mode SETUP
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("mode/manual"), HttpPut]
|
||||
public IHttpActionResult RequestManual()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | RequestManual | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.StrobeMode(Model.DTOModels.ThProd.Mode.MANUAL);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RequestManual error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Request mode AUTO
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("mode/auto"), HttpPut]
|
||||
public IHttpActionResult RequestAuto()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | RequestAuto | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.StrobeMode(Model.DTOModels.ThProd.Mode.AUTO);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RequestAuto error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Request mode SETUP
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("mode/setup"), HttpPut]
|
||||
public IHttpActionResult RequestSetup()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | RequestSetup | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.StrobeMode(Model.DTOModels.ThProd.Mode.SETUP);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RequestSetup error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Request start production
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("prod/start"), HttpPut]
|
||||
public IHttpActionResult StartProd(int requestQty, bool newWorkOrder)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | StartProd | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.UpdateProdInfoData((short)requestQty, newWorkOrder);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"StartProd error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Request production current data
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("prod/get"), HttpPut]
|
||||
public IHttpActionResult GetProd()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | StartProd | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.ReadProdInfoData(out ThermoModels.ProdInfoModel prodInfoDat);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetProd error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok(prodInfoDat);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Request production data from indexStart record for numRecord items (DESCENDING)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("prod/history"), HttpPut]
|
||||
public IHttpActionResult GetHistory(int indexStart, int numRecord)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | StartProd | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando strobe richiesta AUTO!
|
||||
libraryError = ncAdapter.GetHistProdInfoData(out List<ThermoModels.ProdInfoModel> prodInfoDataList, indexStart, numRecord);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetHistory error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok(prodInfoDataList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,525 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.NC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
using Thermo.Active.Config;
|
||||
using Thermo.Active.Utils;
|
||||
|
||||
namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
[RoutePrefix("api/recipe")]
|
||||
public class RecipeController : ApiController
|
||||
{
|
||||
[Route("overview"), HttpGet]
|
||||
public IHttpActionResult GetOverview()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetOverview | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
libraryError = ncAdapter.GetRecipeOverview(out Dictionary<string, RecipeCatStatus> currOverview);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currOverview);
|
||||
}
|
||||
}
|
||||
[Route("current"), HttpGet]
|
||||
public IHttpActionResult GetCurrentParameters()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetCurrentParameters | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currRecipe);
|
||||
}
|
||||
}
|
||||
|
||||
[Route("update"), HttpPut]
|
||||
public IHttpActionResult WriteParameters(Dictionary<string, double> parametersList)
|
||||
{
|
||||
if (parametersList != null)
|
||||
{
|
||||
if (RecipeLiveData != null)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | WriteParameters | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// read recipe!
|
||||
libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
Dictionary<string, DTORecipeParam> updtRecipe = new Dictionary<string, DTORecipeParam>();
|
||||
foreach (var item in parametersList)
|
||||
{
|
||||
if (prevRecipe.ContainsKey(item.Key))
|
||||
{
|
||||
// aggiorno il valore HMI nel parametro
|
||||
var currParam = prevRecipe[item.Key];
|
||||
currParam.SetpointHMI = item.Value;
|
||||
// salvo (1 parametro, potrei fare N...)
|
||||
updtRecipe.Add(item.Key, currParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteParameters error | key not found: {item.Key}");
|
||||
return NotFound();
|
||||
}
|
||||
}
|
||||
|
||||
// scrivo sul PLC
|
||||
ncAdapter.WriteRecipeParams(updtRecipe);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// non pronto!
|
||||
ThermoActiveLogger.LogError($"RecipeLiveData null | WriteParameters");
|
||||
return InternalServerError();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ThermoActiveLogger.LogError($"RecipeLiveData null | Empty Parameters");
|
||||
return BadRequest();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Confirm recipe modification (parameters: HMI --> PLC)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("confirm"), HttpPut]
|
||||
public IHttpActionResult ConfirmEdit()
|
||||
{
|
||||
if (RecipeLiveData != null)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Recipe ConfirmEdit | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando conferma!
|
||||
libraryError = ncAdapter.ConfirmRecipeData(true);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// recupero i dati LIVE dei parametri HMI della ricetta...
|
||||
libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// rileggo la ricetta
|
||||
var currParams = new Dictionary<string, double>();
|
||||
foreach (var item in currRecipe)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointHMI);
|
||||
}
|
||||
|
||||
SaveCurrentRecipeParams(currParams);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// non pronto!
|
||||
ThermoActiveLogger.LogError($"RecipeLiveData null | Empty");
|
||||
return InternalServerError();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cancel recipe modification (parameters: PLC --> HMI)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("cancel"), HttpPut]
|
||||
public IHttpActionResult CancelEdit()
|
||||
{
|
||||
if (RecipeLiveData != null)
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Recipe CancelEdit | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando annula!
|
||||
libraryError = ncAdapter.ConfirmRecipeData(false);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// recupero i dati LIVE dei parametri HMI della ricetta...
|
||||
libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
var currParams = new Dictionary<string, double>();
|
||||
foreach (var item in currRecipe)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointPLC);
|
||||
}
|
||||
|
||||
// ora salvo ANCHE i dati live...
|
||||
SaveCurrentRecipeParams(currParams);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// non pronto!
|
||||
ThermoActiveLogger.LogError($"RecipeLiveData null | Empty");
|
||||
return InternalServerError();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// load recipe from file and send to PLC
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("load"), HttpPut]
|
||||
public IHttpActionResult Load(string newName)
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Load | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// chiamo metodo di lettura...
|
||||
bool fatto = ServerConfigController.LoadRecipe(newName);
|
||||
if (!fatto)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"LoadRecipe error");
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
libraryError = WriteCurrentRecipeToPlc();
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load tempalte recipe from file and save as new current...
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("new"), HttpPut]
|
||||
public IHttpActionResult NewRecipe()
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
// chiamo metodo di lettura...
|
||||
bool fatto = ServerConfigController.LoadTemplate();
|
||||
|
||||
if (!fatto)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"LoadRecipe error");
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
CmsError libraryError = WriteCurrentRecipeToPlc();
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ConfirmEdit error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
}
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save current recipe from PLC to default
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("save"), HttpPut]
|
||||
public IHttpActionResult Save()
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
|
||||
// recupero i dati LIVE dei parametri HMI della ricetta...
|
||||
CmsError libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
var currParams = new Dictionary<string, double>();
|
||||
foreach (var item in currRecipe)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointPLC);
|
||||
}
|
||||
|
||||
// ora salvo ANCHE i dati live...
|
||||
SaveCurrentRecipeParams(currParams);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Save current recipe from PLC with new name
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("saveAs"), HttpPut]
|
||||
public IHttpActionResult SaveAs(string newName)
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
// recupero i dati LIVE dei parametri HMI della ricetta...
|
||||
CmsError libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"SaveAs error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
var currParams = new Dictionary<string, double>();
|
||||
foreach (var item in currRecipe)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointPLC);
|
||||
}
|
||||
|
||||
// ora salvo ANCHE i dati live...
|
||||
RecipeLiveData.RecipeParameters = currParams;
|
||||
// e salvo su disco
|
||||
ServerConfigController.SaveRecipe(newName);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Save current recipe from PLC to Template
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("saveTemplate"), HttpPut]
|
||||
public IHttpActionResult SaveTemplate()
|
||||
{
|
||||
using (NcFileAdapter ncAdapter = new NcFileAdapter())
|
||||
{
|
||||
// recupero i dati LIVE dei parametri HMI della ricetta...
|
||||
CmsError libraryError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> currRecipe);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"SaveTemplate error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
|
||||
// recupero i dati LIVE dei carichi load dei cahnnels di riscaldo...
|
||||
libraryError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ReadWarmers error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// uso i valopri HMI...
|
||||
var currParams = new Dictionary<string, double>();
|
||||
foreach (var item in currRecipe)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointHMI);
|
||||
}
|
||||
|
||||
// ora salvo nei dati live...
|
||||
RecipeLiveData.RecipeParameters = currParams;
|
||||
|
||||
// carico i dati dei riscaldi...
|
||||
var currChSet = new Dictionary<int, int>();
|
||||
foreach (var item in currWarmers)
|
||||
{
|
||||
currChSet.Add(item.Key, item.Value.SetpointHMI);
|
||||
}
|
||||
RecipeLiveData.ChannelSetpoints = currChSet;
|
||||
|
||||
|
||||
// e salvo su disco
|
||||
ServerConfigController.SaveRecipeTemplate();
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Do actual recipe parameters FileSave
|
||||
/// </summary>
|
||||
/// <param name="currParams"></param>
|
||||
private static void SaveCurrentRecipeParams(Dictionary<string, double> currParams)
|
||||
{
|
||||
try
|
||||
{
|
||||
// ora salvo ANCHE i dati live...
|
||||
RecipeLiveData.RecipeParameters = currParams;
|
||||
// e salvo su disco
|
||||
ServerConfigController.SaveRecipeCurrent();
|
||||
}
|
||||
catch(Exception exc)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Recipe | SaveCurrentRecipeParams exception | {exc}");
|
||||
}
|
||||
}
|
||||
|
||||
public static CmsError WriteCurrentRecipeToPlc()
|
||||
{
|
||||
CmsError checkError = NO_ERROR;
|
||||
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Load | {libraryError.exception}");
|
||||
return libraryError;
|
||||
}
|
||||
|
||||
|
||||
// copy data to PLC
|
||||
checkError = ncAdapter.ReadFullRecipe(out Dictionary<string, DTORecipeParam> prevRecipe);
|
||||
if (checkError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteCurrentRecipeToPlc | ReadFullRecipe error | {checkError.exception}");
|
||||
return checkError;
|
||||
}
|
||||
|
||||
// save parameters to PLC!!!
|
||||
Dictionary<string, DTORecipeParam> updtRecipe = new Dictionary<string, DTORecipeParam>();
|
||||
foreach (var item in RecipeLiveData.RecipeParameters)
|
||||
{
|
||||
if (prevRecipe.ContainsKey(item.Key))
|
||||
{
|
||||
// aggiorno il valore HMI nel parametro
|
||||
var currParam = prevRecipe[item.Key];
|
||||
currParam.SetpointHMI = item.Value;
|
||||
// salvo (1 parametro, potrei fare N...)
|
||||
updtRecipe.Add(item.Key, currParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
ThermoActiveLogger.LogError($"prevRecipe not found | key: {item.Key}");
|
||||
return NOT_FOUND_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// write to PLC
|
||||
checkError = ncAdapter.WriteRecipeParams(updtRecipe);
|
||||
if (checkError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteCurrentRecipeToPlc | WriteRecipeParams error | {checkError.exception}");
|
||||
return checkError;
|
||||
}
|
||||
|
||||
|
||||
// process ch load setup...
|
||||
Dictionary<int, int> newRisk = new Dictionary<int, int>();
|
||||
foreach (var item in RecipeLiveData.ChannelSetpoints)
|
||||
{
|
||||
newRisk.Add(item.Key, item.Value);
|
||||
}
|
||||
|
||||
// write to PLC
|
||||
checkError = ncAdapter.WriteRecipeWarmChSetpHMI(newRisk);
|
||||
if (checkError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteCurrentRecipeToPlc | WriteRecipeWarmChSetpHMI error | {checkError.exception}");
|
||||
return checkError;
|
||||
}
|
||||
|
||||
// enable recipe! scrivo sul PLC il comando conferma!
|
||||
libraryError = ncAdapter.ConfirmRecipeData(true);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"ReadWarmers error | {libraryError.exception}");
|
||||
return checkError;
|
||||
}
|
||||
}
|
||||
return checkError;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,9 +41,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
// Read the selected scada data
|
||||
CmsError cmsError = ncAdapter.ReadScadaData(selectedScadaSchema, out DTOScadaModel values);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.ReadScadaData(selectedScadaSchema, out DTOScadaModel values);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
// Add to the subscriber list
|
||||
SubscribedScada.Add(selectedScadaSchema);
|
||||
@@ -77,9 +77,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
using(NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
ncAdapter.Connect();
|
||||
CmsError cmsError = ncAdapter.ReadScadasData(ProductionScadaSchema, out List<DTOScadaModel> values);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.ReadScadasData(ProductionScadaSchema, out List<DTOScadaModel> values);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
|
||||
|
||||
ScadaDataAndSchema data = new ScadaDataAndSchema()
|
||||
@@ -150,9 +150,9 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
if (memIndex == "")
|
||||
return BadRequest(INCORRECT_PARAMETERS_ERROR.localizationKey);
|
||||
|
||||
CmsError cmsError = ncAdapter.WriteScada(memIndex, memType, value);
|
||||
if (cmsError.IsError())
|
||||
return BadRequest(cmsError.localizationKey);
|
||||
CmsError libraryError = ncAdapter.WriteScada(memIndex, memType, value);
|
||||
if (libraryError.IsError())
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok();
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace Thermo.Active.Controllers.WebApi
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.All.logout(new { id = userId.Value });
|
||||
|
||||
StepLogger.LogMessage("Logout: " + userId.Value + "Date:" + DateTime.Now, ERROR_LEVEL.INFO);
|
||||
ThermoActiveLogger.LogMessage("Logout: " + userId.Value + "Date:" + DateTime.Now, ERROR_LEVEL.INFO);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,272 @@
|
||||
using CMS_CORE_Library.Models;
|
||||
using Thermo.Active.Model.DTOModels;
|
||||
using Thermo.Active.NC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web.Http;
|
||||
using static CMS_CORE_Library.Models.DataStructures;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
using Thermo.Active.Config;
|
||||
using Thermo.Active.Utils;
|
||||
|
||||
namespace Thermo.Active.Controllers.WebApi
|
||||
{
|
||||
[RoutePrefix("api/warmers")]
|
||||
public class WarmersController : ApiController
|
||||
{
|
||||
[Route("channels"), HttpGet]
|
||||
public IHttpActionResult GetCurrentWarmersChannels()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetCurrentWarmersChannels | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
libraryError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetRecipeOverview error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currWarmers);
|
||||
}
|
||||
}
|
||||
[Route("resistances"), HttpGet]
|
||||
public IHttpActionResult GetCurrentWarmersResistances()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetCurrentWarmersResistances | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
libraryError = ncAdapter.GetWarmersResistances(out Dictionary<int, Model.ConfigModels.RiskResistModel> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetCurrentWarmersResistances error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currWarmers);
|
||||
}
|
||||
}
|
||||
|
||||
[Route("area"), HttpGet]
|
||||
public IHttpActionResult GetCurrentAreaPerc()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | GetCurrentAreaPerc | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// recupera aree % X / Y
|
||||
libraryError = ncAdapter.GetWarmMaterialArea(out Dictionary<string, double> currAreaPerc);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"GetCurrentAreaPerc error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
return Ok(currAreaPerc);
|
||||
}
|
||||
}
|
||||
|
||||
[Route("update"), HttpPut]
|
||||
public IHttpActionResult WriteSetpoints(Dictionary<int, int> channelsLoad)
|
||||
{
|
||||
// scrive su CHp da ricetta oppure da override x parametri utente...
|
||||
if (channelsLoad != null)
|
||||
{
|
||||
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | WriteSetpoints | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
// scrivo sul PLC
|
||||
libraryError = ncAdapter.WriteRecipeWarmChSetpHMI(channelsLoad);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"WriteSetpoints error | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Confirm recipe modification (parameters: HMI --> PLC)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("confirm"), HttpPut]
|
||||
public IHttpActionResult ConfirmEdit()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Warmers ConfirmEdit | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando conferma!
|
||||
libraryError = ncAdapter.ConfirmRecipeData(true);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers ConfirmEdit error | ConfirmRecipeData | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// recupero i dati LIVE dei parametri HMI dei riscaldi...
|
||||
libraryError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers ConfirmEdit error | ReadWarmers | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// rileggo la ricetta
|
||||
var currParams = new Dictionary<int, int>();
|
||||
foreach (var item in currWarmers)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointHMI);
|
||||
}
|
||||
|
||||
saveCurrentRecipeWarmers(currParams);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cancel recipe modification (parameters: PLC --> HMI)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[Route("cancel"), HttpPut]
|
||||
public IHttpActionResult CancelEdit()
|
||||
{
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | Recipe CancelEdit | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC il comando annula!
|
||||
libraryError = ncAdapter.ConfirmRecipeData(false);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers CancelEdit error | ConfirmRecipeData | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// recupero i dati LIVE dei parametri HMI dei riscaldi...
|
||||
libraryError = ncAdapter.ReadWarmers(out Dictionary<int, DTOWarmers> currWarmers);
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers ConfirmEdit error | ReadWarmers | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// rileggo la ricetta
|
||||
var currParams = new Dictionary<int, int>();
|
||||
foreach (var item in currWarmers)
|
||||
{
|
||||
currParams.Add(item.Key, item.Value.SetpointHMI);
|
||||
}
|
||||
|
||||
saveCurrentRecipeWarmers(currParams);
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
[Route("setConfig"), HttpPut]
|
||||
public IHttpActionResult SetConfig()
|
||||
{
|
||||
// scrive configurazioni RISK
|
||||
|
||||
using (NcAdapter ncAdapter = new NcAdapter())
|
||||
{
|
||||
// Try connection
|
||||
CmsError libraryError = ncAdapter.Connect();
|
||||
if (libraryError.errorCode != 0)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"NC Not connected! | SetConfig | {libraryError.exception}");
|
||||
return InternalServerError();
|
||||
}
|
||||
|
||||
// scrivo sul PLC
|
||||
libraryError = ncAdapter.WriteRecipeWarmConfig();
|
||||
if (libraryError.IsError())
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers SetConfig error | WriteRecipeWarmConfig | {libraryError.exception}");
|
||||
return BadRequest(libraryError.localizationKey);
|
||||
}
|
||||
|
||||
// ritorno solo fatto!
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Do actual recipe warmers setpoints FileSave
|
||||
/// </summary>
|
||||
/// <param name="chSetpoints"></param>
|
||||
private static void saveCurrentRecipeWarmers(Dictionary<int, int> chSetpoints)
|
||||
{
|
||||
try
|
||||
{
|
||||
// ora salvo ANCHE i dati live...
|
||||
RecipeLiveData.ChannelSetpoints = chSetpoints;
|
||||
// e salvo su disco
|
||||
ServerConfigController.SaveRecipeCurrent();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
ThermoActiveLogger.LogError($"Warmers | SaveCurrentRecipeParams exception | {exc}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -90,10 +90,41 @@ namespace Thermo.Active.Listeners
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_CMSCONNECT_GW_REBOOT_STATUS, (a, b) =>
|
||||
{
|
||||
SignalRListener.SetGatewayRebootStatus(a);
|
||||
}));
|
||||
}));
|
||||
|
||||
//////////////////////////// Database
|
||||
///// erano tooling...
|
||||
// add specific modules for THERMO
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_FULL, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoRecipeFullData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_RECIPE_OVERWIEW, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoRecipeOverviewData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_MODULE_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoModulesData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_WARMERS_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoWarmersData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_AREA_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoAreaData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_GAUGE_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoGaugeData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_INFO_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoProdInfoData(a);
|
||||
}));
|
||||
infos.Add(MessageServices.Current.Subscribe(SEND_THERMO_PROD_CYCLE_DATA, (a, b) =>
|
||||
{
|
||||
SignalRListener.SendThermoProdCycleData(a);
|
||||
}));
|
||||
|
||||
// Broadcast
|
||||
infos.Add(MessageServices.Current.Subscribe(BROADCAST_DATA, (a, b) =>
|
||||
@@ -103,7 +134,7 @@ namespace Thermo.Active.Listeners
|
||||
SignalRListener.BroadcastData();
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
public static void Stop()
|
||||
{
|
||||
MessageServices.Current.UnSubscribe(infos.ToArray());
|
||||
|
||||
@@ -14,6 +14,13 @@ using System.Threading;
|
||||
using static Thermo.Active.Listeners.SignalRStaticObjects;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThProd;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
using CMS_CORE_Library.Models;
|
||||
using static CMS_CORE_Library.Models.ThermoModels;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Thermo.Active.Listeners.SignalR
|
||||
{
|
||||
@@ -246,7 +253,179 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").scadaData(scadaVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoRecipeFullData(object recipeFull)
|
||||
{
|
||||
Dictionary<string, DTORecipeParam> currRecipeFull = recipeFull as Dictionary<string, DTORecipeParam>;
|
||||
Dictionary<string, DTORecipeParam> diffData = new Dictionary<string, DTORecipeParam>();
|
||||
|
||||
foreach (var item in currRecipeFull)
|
||||
{
|
||||
if (!LastRecipeFullData.ContainsKey(item.Key))
|
||||
{
|
||||
diffData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastRecipeFullData[item.Key]))
|
||||
{
|
||||
//diffData[item.Key] = item.Value;
|
||||
diffData.Add(item.Key, item.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (diffData.Count > 0)
|
||||
{
|
||||
// salvo update
|
||||
LastRecipeFullData = currRecipeFull;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").recipeFullData(diffData);
|
||||
}
|
||||
}
|
||||
public static void SendThermoRecipeOverviewData(object recipeOver)
|
||||
{
|
||||
Dictionary<string, RecipeCatStatus> currRecipeOver = recipeOver as Dictionary<string, RecipeCatStatus>;
|
||||
|
||||
if (!LastRecipeOverData.SequenceEqual(currRecipeOver))
|
||||
{
|
||||
LastRecipeOverData = currRecipeOver;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").recipeOverData(currRecipeOver);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoModulesData(object modules)
|
||||
{
|
||||
Dictionary<int, DTOModulesBlock> currModules = modules as Dictionary<int, DTOModulesBlock>;
|
||||
Dictionary<int, DTOModulesBlock> diffData = new Dictionary<int, DTOModulesBlock>();
|
||||
|
||||
foreach (var item in currModules)
|
||||
{
|
||||
if (!LastModulesData.ContainsKey(item.Key))
|
||||
{
|
||||
diffData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastModulesData[item.Key]))
|
||||
{
|
||||
diffData[item.Key] = item.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (diffData.Count > 0)
|
||||
{
|
||||
LastModulesData = currModules;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").modulesData(currModules);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoWarmersData(object warmers)
|
||||
{
|
||||
Dictionary<int, DTOWarmers> currWarmers = warmers as Dictionary<int, DTOWarmers>;
|
||||
Dictionary<int, DTOWarmers> diffData = new Dictionary<int, DTOWarmers>();
|
||||
|
||||
foreach (var item in currWarmers)
|
||||
{
|
||||
if (!LastWarmersData.ContainsKey(item.Key))
|
||||
{
|
||||
diffData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastWarmersData[item.Key]))
|
||||
{
|
||||
diffData[item.Key] = item.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (diffData.Count > 0)
|
||||
{
|
||||
LastWarmersData = currWarmers;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").warmersData(currWarmers);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void SendThermoAreaData(object area)
|
||||
{
|
||||
Dictionary<string, double> currArea = area as Dictionary<string, double>;
|
||||
Dictionary<string, double> diffData = new Dictionary<string, double>();
|
||||
|
||||
foreach (var item in currArea)
|
||||
{
|
||||
if (!LastAreaData.ContainsKey(item.Key))
|
||||
{
|
||||
diffData.Add(item.Key, item.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
// comparazione
|
||||
if (!item.Value.Equals(LastAreaData[item.Key]))
|
||||
{
|
||||
diffData[item.Key] = item.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (diffData.Count > 0)
|
||||
{
|
||||
LastAreaData = currArea;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").areaData(currArea);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendThermoGaugeData(object gaugeData)
|
||||
{
|
||||
GaugeModel currGauge = gaugeData as GaugeModel;
|
||||
|
||||
if (!LastGaugeData.Equals(currGauge))
|
||||
{
|
||||
LastGaugeData = currGauge;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").gaugeData(currGauge);
|
||||
}
|
||||
}
|
||||
public static void SendThermoProdInfoData(object prodInfoData)
|
||||
{
|
||||
ProdInfoModel currProdInfo = prodInfoData as ProdInfoModel;
|
||||
|
||||
if (!LastProdInfoData.Equals(currProdInfo))
|
||||
{
|
||||
LastProdInfoData = currProdInfo;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").prodInfoData(currProdInfo);
|
||||
}
|
||||
}
|
||||
public static void SendThermoProdCycleData(object prodCycleData)
|
||||
{
|
||||
ProdCycleModel currProdCycle = prodCycleData as ProdCycleModel;
|
||||
|
||||
if (!LastProdCycleData.Equals(currProdCycle))
|
||||
{
|
||||
LastProdCycleData = currProdCycle;
|
||||
|
||||
var context = GlobalHost.ConnectionManager.GetHubContext<NcHub>();
|
||||
context.Clients.Group("ncData").prodCycleData(currProdCycle);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SetGatewayRebootStatus(object status)
|
||||
@@ -286,32 +465,47 @@ namespace Thermo.Active.Listeners.SignalR
|
||||
group.expiredMaintenances(LastExpiredMaintenances);
|
||||
|
||||
// Send nc status
|
||||
context.Clients.Group("ncData").ncNetworkStatus(
|
||||
group.ncNetworkStatus(
|
||||
new
|
||||
{
|
||||
connected = LastIsNcConnected
|
||||
});
|
||||
|
||||
// Send softkeys Nc
|
||||
context.Clients.Group("ncData").ncSoftKeys(LastNcSoftKeysData);
|
||||
group.ncSoftKeys(LastNcSoftKeysData);
|
||||
// Send user softKeys
|
||||
context.Clients.Group("ncData").userSoftKeys(LastUserSoftKeysData);
|
||||
group.userSoftKeys(LastUserSoftKeysData);
|
||||
// Send heads data
|
||||
context.Clients.Group("ncData").headsData(LastHeadsData);
|
||||
group.headsData(LastHeadsData);
|
||||
// Send axesNames data
|
||||
context.Clients.Group("ncData").axesNames(LastAxesNamesData);
|
||||
group.axesNames(LastAxesNamesData);
|
||||
// Send positions
|
||||
context.Clients.Group("ncData").axesPositions(LastAxesPositions);
|
||||
group.axesPositions(LastAxesPositions);
|
||||
// Send active program data
|
||||
context.Clients.Group("ncData").activeProgramData(LastProgramData);
|
||||
group.activeProgramData(LastProgramData);
|
||||
// Send magazine is active data
|
||||
context.Clients.Group("ncData").magazineIsActive(LastNcMagazineIsActive);
|
||||
group.magazineIsActive(LastNcMagazineIsActive);
|
||||
// Send PP Queue
|
||||
context.Clients.Group("ncData").partProgramQueue(LastPartProgramQueue);
|
||||
group.partProgramQueue(LastPartProgramQueue);
|
||||
// Send m155 data
|
||||
context.Clients.Group("ncData").m155Data(LastM155Data);
|
||||
group.m155Data(LastM155Data);
|
||||
// Send Scada
|
||||
context.Clients.Group("ncData").scadaData(LastScadaData);
|
||||
group.scadaData(LastScadaData);
|
||||
|
||||
// Send THERMO Recipe data
|
||||
group.recipeFullData(LastRecipeFullData);
|
||||
group.recipeOverData(LastRecipeOverData);
|
||||
// Send THERMO Modules data
|
||||
group.modulesData(LastModulesData);
|
||||
// Send THERMO Warmers data
|
||||
group.warmersData(LastWarmersData);
|
||||
group.areaData(LastAreaData);
|
||||
// THERMO Gauges
|
||||
group.gaugeData(LastGaugeData);
|
||||
// THERMO prod info data
|
||||
group.prodInfoData(LastProdInfoData);
|
||||
// THERMO prod cycle data
|
||||
group.prodCycleData(LastProdCycleData);
|
||||
|
||||
Debug.WriteLine(string.Format("{0} {1} Broadcast..completed", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), DateTime.Now.Millisecond));
|
||||
Monitor.Exit(_broadcastlock);
|
||||
|
||||
@@ -2,6 +2,10 @@
|
||||
using Thermo.Active.Model.DTOModels.AlarmModels;
|
||||
using Thermo.Active.Model.DTOModels.Scada;
|
||||
using System.Collections.Generic;
|
||||
using Thermo.Active.Model.DTOModels.ThModules;
|
||||
using Thermo.Active.Model.DTOModels.ThRecipe;
|
||||
using Thermo.Active.Model.DTOModels.ThWarmers;
|
||||
using CMS_CORE_Library.Models;
|
||||
|
||||
namespace Thermo.Active.Listeners
|
||||
{
|
||||
@@ -23,11 +27,21 @@ namespace Thermo.Active.Listeners
|
||||
public static Dictionary<int, bool> LastNcMagazineIsActive = new Dictionary<int, bool>();
|
||||
public static List<DTOQueueModel> LastPartProgramQueue = new List<DTOQueueModel>();
|
||||
public static List<DTOM155InputModel> LastM155Data = new List<DTOM155InputModel>();
|
||||
public static List<DTOScadaModel> LastScadaData = new List<DTOScadaModel>();
|
||||
public static List<DTOScadaModel> LastScadaData = new List<DTOScadaModel>();
|
||||
|
||||
// FIXME TODO inserire oggetti corretti per THERMO
|
||||
public static Dictionary<string, DTORecipeParam> LastRecipeFullData = new Dictionary<string, DTORecipeParam>();
|
||||
public static Dictionary<string, RecipeCatStatus> LastRecipeOverData = new Dictionary<string, RecipeCatStatus>();
|
||||
public static Dictionary<int, DTOModulesBlock> LastModulesData = new Dictionary<int, DTOModulesBlock>();
|
||||
public static Dictionary<int, DTOWarmers> LastWarmersData = new Dictionary<int, DTOWarmers>();
|
||||
public static Dictionary<string, double> LastAreaData = new Dictionary<string, double>();
|
||||
public static ThermoModels.GaugeModel LastGaugeData = new ThermoModels.GaugeModel();
|
||||
public static ThermoModels.ProdCycleModel LastProdCycleData = new ThermoModels.ProdCycleModel();
|
||||
public static ThermoModels.ProdInfoModel LastProdInfoData = new ThermoModels.ProdInfoModel();
|
||||
|
||||
|
||||
|
||||
public static bool LastIsNcConnected = false;
|
||||
|
||||
|
||||
// aggiugere oggetti nuovi e levare quelli che non servono +...
|
||||
}
|
||||
}
|
||||
@@ -31,4 +31,4 @@ using System.Runtime.InteropServices;
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("0.1.1")]
|
||||
[assembly: AssemblyVersion("0.9.5")]
|
||||
|
||||
@@ -58,9 +58,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CMS_CORE_Library">
|
||||
<HintPath>..\Libs\CMS_CORE_Library.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -122,6 +119,8 @@
|
||||
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll</HintPath>
|
||||
</Reference>
|
||||
@@ -166,6 +165,10 @@
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.2.0.20505.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Windows.Interactivity">
|
||||
<HintPath>..\Libs\System.Windows.Interactivity.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Abstractions" />
|
||||
@@ -207,6 +210,7 @@
|
||||
<Reference Include="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.AspNet.WebPages.WebData.2.0.20505.0\lib\net40\WebMatrix.WebData.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="App_Start\SignalRContractResolver.cs" />
|
||||
@@ -218,6 +222,10 @@
|
||||
<Compile Include="Attributes\SignalRAuthorizeAttribute.cs" />
|
||||
<Compile Include="Controllers\SignalR\NcHub.cs" />
|
||||
<Compile Include="Controllers\WebApi\ApiAlarmController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ModulesController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ProdController.cs" />
|
||||
<Compile Include="Controllers\WebApi\WarmersController.cs" />
|
||||
<Compile Include="Controllers\WebApi\RecipeController.cs" />
|
||||
<Compile Include="Controllers\WebApi\AuthorizationController.cs" />
|
||||
<Compile Include="Controllers\WebApi\CmsConnectController.cs" />
|
||||
<Compile Include="Controllers\WebApi\ConfigurationController.cs" />
|
||||
@@ -16121,6 +16129,10 @@
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\cms_core_library\CMS_CORE_Library\CMS_CORE_Library.csproj">
|
||||
<Project>{4abf8eef-2b23-483e-acdc-53214fe28681}</Project>
|
||||
<Name>CMS_CORE_Library</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Thermo.Active.CmsConnectGateway\Thermo.Active.CmsConnectGateway.csproj">
|
||||
<Project>{49b04d99-0ecd-4900-86d3-7098d61314d7}</Project>
|
||||
<Name>Thermo.Active.CmsConnectGateway</Name>
|
||||
@@ -16425,6 +16437,7 @@
|
||||
<TypeScriptCompile Include="wwwroot\src\_base\utils.ts" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="logs\" />
|
||||
<Folder Include="wwwroot\src\router\" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
@@ -16461,4 +16474,10 @@
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target> -->
|
||||
<Target Name="AfterBuild">
|
||||
<ItemGroup>
|
||||
<MoveToLibFolder Include="$(OutputPath)*.dll ; $(OutputPath)*.pdb ; $(OutputPath)*.xml" />
|
||||
</ItemGroup>
|
||||
<Move SourceFiles="@(MoveToLibFolder)" DestinationFolder="$(OutputPath)lib" OverwriteReadOnlyFiles="true" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -33,6 +33,7 @@
|
||||
<package id="microsoft-web-helpers" version="2.1.20710.2" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="12.0.1" targetFramework="net462" />
|
||||
<package id="Owin" version="1.0" targetFramework="net462" />
|
||||
<package id="PrettyBin" version="1.1.0" targetFramework="net462" />
|
||||
<package id="Swashbuckle" version="5.6.0" targetFramework="net462" />
|
||||
<package id="Swashbuckle.Core" version="5.6.0" targetFramework="net462" />
|
||||
<package id="System.Security.Claims" version="4.0.1" targetFramework="net462" />
|
||||
|
||||
@@ -16,8 +16,9 @@ using System.Windows.Forms;
|
||||
using TeamDev.SDK.MVVM;
|
||||
using static Thermo.Active.Config.ServerConfig;
|
||||
using static Thermo.Active.Model.Constants;
|
||||
using static Thermo.Active.Utils.StepLogger;
|
||||
using static Thermo.Active.Utils.ThermoActiveLogger;
|
||||
using static Thermo.Active.Utils.ExceptionManager;
|
||||
using Thermo.Active.Controllers.WebApi;
|
||||
|
||||
namespace Thermo.Active
|
||||
{
|
||||
@@ -84,6 +85,11 @@ namespace Thermo.Active
|
||||
if (!string.IsNullOrWhiteSpace(ServerStartupConfig.ServerAddress.ToString()))
|
||||
opt.Urls.Add("http://" + ServerStartupConfig.ServerAddress.ToString() + ":" + ServerStartupConfig.ServerPort.ToString());
|
||||
|
||||
// read and save last CURRENT RECIPE data...
|
||||
ServerConfigController.ReadLastRecipe();
|
||||
RecipeController.WriteCurrentRecipeToPlc();
|
||||
|
||||
//starts threads
|
||||
using (WebApp.Start<App_Start.Startup>(opt))
|
||||
{
|
||||
if (databaseStatus)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user