-
Notifications
You must be signed in to change notification settings - Fork 5
/
DoseL.scl
3271 lines (3226 loc) · 158 KB
/
DoseL.scl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// Name: FB1809
// Symbolic Name: DoseL
// Symbol Comment: Dose measurement - Large
// Family: Dosage
// Version: 4.0
// Author: AdvLib82
// Last modified: 11/19/2015
// Use: SFB35,FC260,FC369,SFC20,SFC6
// Size: 23178 bytes
// Signature: generiert vom SCL Ьbersetzer Version: SCLCOMP K05.03.08.02_01.02.00.01 release
{
Scl_ResetOptions ;
Scl_OverwriteBlocks:= 'y' ;
Scl_GenerateReferenceData := 'y' ;
Scl_S7ServerActive:= 'n' ;
Scl_CreateObjectCode:= 'y' ;
Scl_OptimizeObjectCode:= 'y' ;
Scl_MonitorArrayLimits:= 'n' ;
Scl_CreateDebugInfo := 'n' ;
Scl_SetOKFlag:= 'n' ;
Scl_SetMaximumStringLength:= '254'
}
FUNCTION_BLOCK FB11809
TITLE ='Dose Measurement - Large'
{ S7_m_c := 'true'; S7_alarm_ui := '1'; S7_tasklist := 'OB100' }
AUTHOR : AdvLib82
FAMILY : Dosage
NAME : DoseL
VERSION : '4.0'
VAR_INPUT
MeterType { S7_visible := 'false' }: BOOL ; //Upsizing/Downsizing Metering: 0=Upsizing 1=Downsizing
Gain { S7_edit := 'para'; S7_visible := 'false' }: STRUCT //Adjustable Factor
Value : REAL := 1.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
NumSample { S7_visible := 'false' }: INT ; //No. of Samples for Moving Average
TI { S7_edit := 'para'; S7_dynamic := 'true' }: STRUCT //Integral Time Constant [s]
Value : REAL := 1.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
StandStill { S7_dynamic := 'true' }: STRUCT //Feedback from Dose Device
Value : BOOL := TRUE; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
DribbIn { Op_Level := '2'; S7_m_c := 'true'; S7_visible := 'false' }: REAL ; //Dribble Value
DribbMax { Op_Level := '2'; S7_m_c := 'true'; S7_visible := 'false' }: REAL := 100.0; //Dribble Value Maximum
DCF { Op_Level := '2'; S7_visible := 'false'; S7_m_c := 'true' }: REAL := 2.500000e+001; //Dribbling Correction Factor [%]
DribbCor { Op_Level := '2'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL ; //Dribbling Correction On/Off
RelaxTime { Op_Level := '2'; S7_edit := 'para'; S7_visible := 'false'; S7_m_c := 'true' }: REAL := 3.0; //Relax Time [s]
SP_LiOp { S7_edit := 'para'; S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Select: 1=Linking, 0=Operator Active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_ExtOp { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //Operator Input to Select External Setpoint
SP_IntOp { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //Operator Input to Select Internal Setpoint
SP_ExtLi { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Linkable Input to Select External Setpoint
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_IntLi { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Linkable Input to Select Internal Setpoint
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_TrkExt { Op_Level := '3'; S7_edit := 'para'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL := TRUE; //1: Internal SPs tracks to external SPs in external mode
DQ_Int { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //Quantity setpoint internal
DQ_Ext { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Quantity setpoint external
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_HiLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint high limit
Value : REAL := 100.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
DQ_LoLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint low limit
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_Int { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //Quantity setpoint factor internal (fine dose)
DQ2_Ext { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Quantity setpoint factor external (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_HiLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint factor high limit (fine dose)
Value : REAL := 100.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
DQ2_LoLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint factor low limit (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_AH_Tol { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: REAL ; //Quantity high alarm tolerance band (overdose)
DQ_AL_Tol { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: REAL ; //Quantity lower alarm tolerance band (underdose)
DQ_A_DC { S7_visible := 'false'; S7_edit := 'para' }: REAL ; //Quantity alarm delay time coming [s]
DQ_A_DG { S7_visible := 'false'; S7_edit := 'para' }: REAL ; //Quantity alarm delay time going [s]
DQ_AH_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Quantity high alarm enable (overdose)
DQ_AL_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Quantity low alarm enable (underdose)
DQ_AH_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Message enable for quantity high alarm (overdose)
DQ_AL_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Message enable for quantity low alarm (underdose)
DQ_Unit { S7_m_c := 'true'; S7_unit := ''; S7_edit := 'para' }: INT := 1088; //Engineering units of dosing quantity
SP_Int { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: REAL ; //Flow rate internal setpoint
SP_Ext { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Flow rate external setpoint (coarse dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_HiLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Flow rate setpoint high limit (coarse dose)
Value : REAL := 100.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
SP_LoLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Flow rate setpoint low limit (coarse dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2_Int { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //Flow rate internal setpoint (fine dose)
SP2_Ext { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Flow rate external setpoint (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2_HiLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Flow rate setpoint high limit (fine dose)
Value : REAL := 100.0; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
SP2_LoLim { Op_Level := '2'; S7_edit := 'para'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Flow rate setpoint low limit (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Process value (Analog input)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_Unit { S7_m_c := 'true'; S7_unit := ''; S7_edit := 'para' }: INT := 1349; //Engineering units of PV
SimPV { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //PV Simulation Value, tracks when not in simulation
SimPV_Li { S7_visible := 'false' }: STRUCT //Linkable simulation value PV
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SimDQ { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //Dosing quantity simulation value, tracks when not in simulation
SimDQ_Li { S7_visible := 'false' }: STRUCT //Linkable simulation value DQ
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_AH_Lim { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL := 100.0; //PV - Flow rate high alarm limit (coarse dose)
PV_AL_Lim { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL ; //PV - Flow rate low alarm limit (coarse dose)
PV_Hyst { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL := 1.0; //PV - Flow rate hysteresis (coarse dose)
PV_AH2_Lim { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL := 100.0; //PV - Flow rate high alarm limit (fine dose)
PV_AL2_Lim { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL ; //PV - Flow rate low alarm limit (fine dose)
PV_Hyst2 { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL := 1.0; //PV - Flow rate hysteresis (fine dose)
PV_A_DC { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //PV - Flow rate alarm delay time coming (coarse dose)[s]
PV_A_DG { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //PV - Flow rate alarm delay time going (coarse dose)[s]
PV_A2_DC { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //PV - Flow rate alarm delay time coming (fine dose)[s]
PV_A2_DG { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //PV - Flow rate alarm delay time going (fine dose)[s]
PV_AH_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate high alarm enable (coarse dose)
PV_AL_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate low alarm enable (coarse dose)
PV_AH2_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate high alarm enable (fine dose)
PV_AL2_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate low alarm enable (fine dose)
PV_AH_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate high alarm message enable (coarse dose)
PV_AL_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate low alarm message enable (coarse dose)
PV_AH2_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate high alarm message enable (fine dose)
PV_AL2_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: PV - Flow rate low alarm message enable (fine dose)
CR_AH_Lim { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL ; //Creep flow - High alarm limit
CR_Hyst { Op_Level := '2'; S7_visible := 'false'; S7_edit := 'para'; S7_m_c := 'true' }: REAL ; //Creep flow - Hysteresis
CR_A_DC { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //Creep flow - Alarm delay time coming [s]
CR_A_DG { S7_visible := 'false'; S7_edit := 'para' }: REAL := 3.0; //Creep flow - Alarm delay time going [s]
CR_AH_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Creep flow - High alarm enable
CR_AH_MsgEn { Op_Level := '2'; S7_m_c := 'true'; S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Creep flow - High alarm message enable
PV_OpScale { S7_m_c := 'true'; S7_xm_c := 'High,true;Low,true;'; S7_edit := 'para'; S7_xedit := 'High,para;Low,para;' }: STRUCT //PV - Bar display limits for OS
High : REAL := 100.0; // High Value
Low : REAL ; // Low Value
END_STRUCT ;
DQ_OpScale { S7_m_c := 'true'; S7_xm_c := 'High,true;Low,true;'; S7_edit := 'para'; S7_xedit := 'High,para;Low,para;' }: STRUCT //Dose Quantity SP - Bar display limits for OS
High : REAL := 100.0; // High Value
Low : REAL ; // Low Value
END_STRUCT ;
StartAut { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Start: Start Command in Auto Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
CancelAut { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Cancel: Cancel Command in Auto Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PauseAut { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Pause: Pause Command in Auto Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ContAut { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Continue: Continue Command in Auto Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
StartMan { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Start: Start Command in Manual Mode
CancelMan { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Cancel: Cancel Command in Manual Mode
PauseMan { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Pause: Pause Command in Manual Mode
ContMan { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Continue: Continue Command in Manual Mode
ModLiOp { S7_edit := 'para'; S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Link/Auto,0=Manual: Input to auto/manual commands
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
AutModOp { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL ; //1=Auto mode: auto mode by operator
ManModOp { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL := TRUE; //1=Manual mode: manual mode by operator
AutModLi { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1=Auto mode: Auto mode by linked or SFC
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ManModLi { S7_dynamic := 'true' }: STRUCT //1=Manual mode: Manual mode by linked or SFC
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
LocalLi { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //1=Local Mode: Local operation by field signal
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
LocalOp { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Local Mode: Local operation by operator
MS_RelOp { Op_Level := '3'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //Operator input for MS Release, 1: MS release requirement
OosOp { Op_Level := '2'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //1=Oos mode: Oos mode by operator
OosLi { S7_dynamic := 'true' }: STRUCT //1=Oos mode: Oos mode by field signal
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
StartLocal { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //1=Start: Start Command in Local Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
CancelLocal { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //1=Cancel: Cancel Command in Local Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PauseLocal { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //1=Pause: Pause Command in Local Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ContLocal { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //1=Continue: Continue Command in Local Mode
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
LocalSetting { S7_visible := 'false' }: INT ; //Local mode behavior
PulseWidth { S7_edit := 'para'; S7_visible := 'false' }: REAL := 3.0; //Control output pulse width [s]
P_DoseTime { Op_Level := '2'; S7_edit := 'para'; S7_visible := 'false'; S7_m_c := 'true' }: REAL ; //Post dose time [s]
DosCancelMsgEn { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1: Dose cancelled message enable
RstLi { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Linked reset signal
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
RstOp { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL ; //Operator reset signal
RstDQ_Li { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Linked signal to reset dosed quantity
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
RstDQ_Op { Op_Level := '1'; S7_m_c := 'true'; S7_visible := 'false' }: BOOL ; //Operator signal to reset dosed quantity
U_AckLi { S7_visible := 'false'; S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Over- and underdose acknowledge link
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
U_AckOp { Op_Level := '1'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL ; //Over- and underdose acknowledge operator
BypProt { S7_edit := 'para'; S7_visible := 'false' }: BOOL ; //Bypass protection in simulation/local modes
Permit { BLK_Jump := '1'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_read_back := 'never' }: STRUCT //1=Permit is OK, 0=Not allowed to activate the dosage
Value : BOOL := TRUE; //Value
ST : BYTE := B#16#FF; //Signal Status
END_STRUCT ;
Permit_b AT Permit : ARRAY[0..15] OF BOOL;
Perm_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1=Permit enabled, 0=Permit disabled
Intlock { BLK_Jump := '1'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_read_back := 'never' }: STRUCT //1=Dosage is not interlocked ,0=Dosage is interlocked (no reset is required)
Value : BOOL := TRUE; //Value
ST : BYTE := B#16#FF; //Signal Status
END_STRUCT ;
Intlock_b AT Intlock : ARRAY[0..15] OF BOOL;
Intl_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1=Interlock enabled, 0=Interlock disabled
Protect { BLK_Jump := '1'; S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_read_back := 'never' }: STRUCT //0=Protection is active, 1= Protection is not active
Value : BOOL := TRUE; //Value
ST : BYTE := B#16#FF; //Signal Status
END_STRUCT ;
Protect_b AT Protect : ARRAY[0..15] OF BOOL;
Prot_En { S7_edit := 'para'; S7_visible := 'false' }: BOOL := TRUE; //1=Protection enabled, 0=Protection disabled
StartForce { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //1=Start: Start Command in forced operation
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
CancelForce { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //1=Cancel: Cancel Command in forced operation
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PauseForce { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //1=Pause: Pause Command in forced operation
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ContForce { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //1=Continue: Continue Command in forced operation
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
UserAna1 { S7_visible := 'false'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_xshortcut := 'Value,;'; S7_read_back := 'never' }: STRUCT //User analog input 1
Value : REAL ; // Value
ST : BYTE := B#16#FF; // Signal status
END_STRUCT ;
UA1unit { S7_visible := 'false'; S7_m_c := 'true'; S7_unit := '' }: INT ; //Unit of UserAna1
UserAna2 { S7_visible := 'false'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_xshortcut := 'Value,;'; S7_read_back := 'never' }: STRUCT //User analog input 2
Value : REAL ; // Value
ST : BYTE := B#16#FF; // Signal status
END_STRUCT ;
UA2unit { S7_visible := 'false'; S7_m_c := 'true'; S7_unit := '' }: INT ; //Unit of UserAna2
CtrlChnST { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Output channel state of Ctrl
Value : BOOL ; // Value
ST : BYTE := B#16#FF; // Signal status
END_STRUCT ;
Ctrl2ChnST { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Output channel state of Ctrl2
Value : BOOL ; // Value
ST : BYTE := B#16#FF; // Signal status
END_STRUCT ;
MsgLock { S7_visible := 'false' }: STRUCT //Inhibit process message
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SampleTime { S7_visible := 'false'; S7_link := 'false'; S7_sampletime := 'true'; S7_param := 'false' }: REAL := 1.000000e-001; //Sampling time [s]
SimLiOp { S7_edit := 'para'; S7_visible := 'false' }: STRUCT //Simulation on/off via 0 = Operator, 1 = Interconnection or SFC
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SimOnLi { S7_visible := 'false' }: STRUCT //1 = Simulation activated by interconnection or SFC (controlled by SimLiOp = 1)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SimOn { Op_Level := '3'; S7_visible := 'false'; S7_m_c := 'true' }: BOOL ; //Simulation on/off
RunUpCyc { S7_visible := 'false' }: INT := 3; //Number of cycles for which all messages are suppressed
MsgEvId1 { S7_visible := 'false'; S7_param := 'false'; S7_link := 'false'; S7_server := 'alarm_archiv'; S7_a_type := 'alarm_8p' }: DWORD ; //Message Event ID
MsgEvId2 { S7_visible := 'false'; S7_link := 'false'; S7_param := 'false'; S7_server := 'alarm_archiv'; S7_a_type := 'alarm_8p' }: DWORD ; //Message Event ID
BatchEn { S7_visible := 'false' }: BOOL ; //Enable remote operation of controller by Batch recipe
BatchID { S7_visible := 'false'; S7_m_c := 'true' }: DWORD ; //Current Batch ID (number)
BatchName { S7_visible := 'false'; S7_m_c := 'true' }: STRING [32 ]; //Current Batch name
BatchName_ar AT BatchName : ARRAY[1..32] OF BYTE;
StepNo { S7_visible := 'false'; S7_m_c := 'true' }: DWORD ; //Batch step number
Occupied { S7_visible := 'false' }: BOOL ; //Occupied by Batch
FaultExt { S7_dynamic := 'true' }: STRUCT //External Error
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
CSF { S7_dynamic := 'true' }: STRUCT //Control system fault message - External error
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ExtMsg1 { S7_visible := 'false' }: STRUCT //External message 1
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ExtMsg2 { S7_visible := 'false' }: STRUCT //External message 2
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ExtMsg3 { S7_visible := 'false' }: STRUCT //External message 3
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ExtVa106 { S7_visible := 'false' }: ANY ; //External value 6 MsgEvId1
ExtVa107 { S7_visible := 'false' }: ANY ; //External value 7 MsgEvId1
ExtVa108 { S7_visible := 'false' }: ANY ; //External value 7 MsgEvId1
ExtVa204 { S7_visible := 'false' }: ANY ; //External value 4 MsgEvId2
ExtVa205 { S7_visible := 'false' }: ANY ; //External value 5 MsgEvId2
ExtVa206 { S7_visible := 'false' }: ANY ; //External value 6 MsgEvId2
ExtVa207 { S7_visible := 'false' }: ANY ; //External value 7 MsgEvId2
ExtVa208 { S7_visible := 'false' }: ANY ; //External value 8 MsgEvId2
UserStatus { S7_m_c := 'true'; S7_visible := 'false' }: BYTE ; //User status bits
SelFp1 { BLK_Jump := '1'; S7_visible := 'false' }: ANY ; //Select Faceplate 1
SelFp2 { BLK_Jump := '1'; S7_visible := 'false' }: ANY ; //Select Faceplate 2
OS_Perm { S7_visible := 'false' }: STRUCT //Operator permissions
Bit0 : BOOL := TRUE; //1 = Operator can shift to automatic mode
Bit1 : BOOL := TRUE; //1 = Operator can shift to manual mode
Bit2 : BOOL := TRUE; //1 = Operator can shift to local mode
Bit3 : BOOL := TRUE; //1 = Operator can shift to out of service mode
Bit4 : BOOL := TRUE; //1 = Operator can start dosage
Bit5 : BOOL := TRUE; //1 = Operator can pause dosage
Bit6 : BOOL := TRUE; //1 = Operator can continue dosage
Bit7 : BOOL := TRUE; //1 = Operator can cancel dosage
Bit8 : BOOL := TRUE; //1 = Operator can reset protection and flow rate alarm
Bit9 : BOOL := TRUE; //1 = Operator can reset dosage quantity
Bit10 : BOOL := TRUE; //1 = Operator can acknowledge over- and underdosage
Bit11 : BOOL := TRUE; //1 = Operator can switch the setpoint to external
Bit12 : BOOL := TRUE; //1 = Operator can switch the setpoint to internal
Bit13 : BOOL := TRUE; //1 = Operator can change the setpoint quantity
Bit14 : BOOL := TRUE; //1 = Operator can change the setpoint quantity factor (fine dosage)
Bit15 : BOOL := TRUE; //1 = Operator can change the setpoint flow rate
Bit16 : BOOL := TRUE; //1 = Operator can change the setpoint flow rate factor (fine dosage)
Bit17 : BOOL := TRUE; //1 = Operator can activate the bumpless changeover from ext. to int. funct.
Bit18 : BOOL := TRUE; //1 = Operator can enable function simulation
Bit19 : BOOL := TRUE; //1 = Operator can enable function maintenance release
Bit20 : BOOL := TRUE; //Reserved
Bit21 : BOOL := TRUE; //1 = Operator can change the dribble value
Bit22 : BOOL := TRUE; //1 = Operator can change the dribble value maximum
Bit23 : BOOL := TRUE; //1 = Operator can switch the dribble correction on/off
Bit24 : BOOL := TRUE; //1 = Operator can change the dribble weighting factor
Bit25 : BOOL := TRUE; //1 = Operator can change the simulation value SimPV
Bit26 : BOOL := TRUE; //1 = Operator can change the simulation value SimDQ
Bit27 : BOOL := TRUE; //Reserved
Bit28 : BOOL := TRUE; //Reserved
Bit29 : BOOL := TRUE; //Reserved
Bit30 : BOOL := TRUE; //Reserved
Bit31 : BOOL := TRUE; //Reserved
END_STRUCT ;
OS_Perm_b AT OS_Perm : ARRAY[0..3] OF BYTE;
OS_Perm_dw AT OS_Perm : DWORD;
OS1Perm { S7_visible := 'false' }: STRUCT //Operator Permissions 2
Bit0 : BOOL := TRUE; //1 = Operator can change the limit value for the H alarm of PV_Out (coarse d.)
Bit1 : BOOL := TRUE; //1 = Operator can change the LIMIT value FOR the L alarm OF PV_Out (coarse d.)
Bit2 : BOOL := TRUE; //1 = Operator can change the limit value for the hyst. of PV_Out (coarse dos.)
Bit3 : BOOL := TRUE; //1 = Operator can change the limit value for the H alarm of PV_Out (fine dos.)
Bit4 : BOOL := TRUE; //1 = Operator can change the limit value for the L alarm of PV_Out (fine dos.)
Bit5 : BOOL := TRUE; //1 = Operator can change the limit value for the hyst. of PV_Out (fine dosage)
Bit6 : BOOL := TRUE; //1 = Operator can change maximum usage limit of setpoint quantity
Bit7 : BOOL := TRUE; //1 = Operator can change minimum usage limit of setpoint quantity
Bit8 : BOOL := TRUE; //1 = Operator can change maximum usage limit of SP quantity factor (fine dos.)
Bit9 : BOOL := TRUE; //1 = Operator can change minimum usage limit of SP quantity factor (fine dos.)
Bit10 : BOOL := TRUE; //1 = Operator can change the limit value for overdose quantity
Bit11 : BOOL := TRUE; //1 = Operator can change the limit value for underdose quantity
Bit12 : BOOL := TRUE; //1 = Operator can change maximum usage limit of setpoint flow rate
Bit13 : BOOL := TRUE; //1 = Operator can change minimum usage limit of setpoint flow rate
Bit14 : BOOL := TRUE; //1 = Operator can change maximum usage limit of SP flow rate factor (fine dos.)
Bit15 : BOOL := TRUE; //1 = Operator can change minimum usage limit of SP flow rate factor (fine dos.)
Bit16 : BOOL := TRUE; //1 = Operator can change the relax time
Bit17 : BOOL := TRUE; //1 = Operator can change the post dose time
Bit18 : BOOL := TRUE; //1 = Operator can change the limit value for the H alarm of PV_Out (creep flow)
Bit19 : BOOL := TRUE; //1 = Operator can change the limit value for the hyst. of PV_Out (creep flow)
Bit20 : BOOL := TRUE; //1 = Operator can activate/deactivate message over DQ_AH_MsgEn
Bit21 : BOOL := TRUE; //1 = Operator can activate/deactivate message over DQ_AL_MsgEn
Bit22 : BOOL := TRUE; //1 = Operator can activate/deactivate message over PV_AH_MsgEn
Bit23 : BOOL := TRUE; //1 = Operator can activate/deactivate message over PV_AL_MsgEn
Bit24 : BOOL := TRUE; //1 = Operator can activate/deactivate message over PV_AH2_MsgEn
Bit25 : BOOL := TRUE; //1 = Operator can activate/deactivate message over PV_AL2_MsgEn
Bit26 : BOOL := TRUE; //1 = Operator can activate/deactivate message over CR_AH_MsgEn
Bit27 : BOOL := TRUE; //Reserved
Bit28 : BOOL := TRUE; //Reserved
Bit29 : BOOL := TRUE; //Reserved
Bit30 : BOOL := TRUE; //Reserved
Bit31 : BOOL := TRUE; //Reserved
END_STRUCT ;
OS1Perm_byte AT OS1Perm : ARRAY[0..3] OF BYTE;
OpSt_In { BLK_Jump := '1'; S7_visible := 'false' }: DWORD ; //Enabled operator stations
Feature { S7_visible := 'false' }: STRUCT //Status of various features
Bit0 : BOOL ; //0 = Start up with defined initializing in OB100; 1 = keep last stored values
Bit1 : BOOL ; //1 = OosLi can switch to Out of Service
Bit2 : BOOL ; //1 = Resetting the commands for changing the mode
Bit3 : BOOL ; //1 = Enabling resetting of commands for the control settings
Bit4 : BOOL ; //0 = Button mode; 1 = Switch mode
Bit5 : BOOL ; //0 = Measurement type: Flow; 1 = Measurement type: Weight
Bit6 : BOOL ; //1 = Reset dose quantity on dose start
Bit7 : BOOL ; //1 = Calculation of flow rate in measurement type Weight
Bit8 : BOOL ; //1 = Display and input of fine quantity absolute
Bit9 : BOOL ; //1 = Resetting interlock via automatic input signals in automatic mode
Bit10 : BOOL ; //1 = Switch to the last setting of Auto/Man mode when local mode is exited
Bit11 : BOOL ; //1 = Stop metering on flow rate alarm
Bit12 : BOOL ; //1 = Perform postdose if underdose detected
Bit13 : BOOL ; //1 = Creep flow is always calculated into the quantity
Bit14 : BOOL ; //Reserved
Bit15 : BOOL ; //1 = Display in OS flow rate setpoints as percent
Bit16 : BOOL ; //Reserved
Bit17 : BOOL ; //1 = Enabling bumpless changeover to automatic mode
Bit18 : BOOL ; //1 = Motor, valve or dosage switch to External error if CSF is active
Bit19 : BOOL ; //Reserved
Bit20 : BOOL ; //Reserved
Bit21 : BOOL ; //1 = Enabling bumpless changeover to automatic mode only for operator
Bit22 : BOOL ; //1 = Enable message state actualization
Bit23 : BOOL ; //1 = Bad PV.ST switch off dosage
Bit24 : BOOL ; //1 = Local authorization active
Bit25 : BOOL ; //1 = Suppress all messages if MsgLock = 1
Bit26 : BOOL ; //1 = Reset switching points if switching to Out of Service
Bit27 : BOOL ; //1 = Enable the parameterization of the dribbling quantity
Bit28 : BOOL ; //1 = Disable switching points if MsgLock =1
Bit29 : BOOL ; //1 = Signal value =0 (0 active) if limit is violated
Bit30 : BOOL ; //1 = Resetting interlock via input signal in autom. via faceplate in manual mode
Bit31 : BOOL ; //1 = Resetting Protection/Errors in manual mode
END_STRUCT ;
Feature2 { S7_visible := 'false' }: STRUCT //Status of various features
Bit0 : BOOL ; //Reserved
Bit1 : BOOL ; //Reserved
Bit2 : BOOL ; //1 = Separate evaluation of bypassed and simulated interlock signals
Bit3 : BOOL ; //1 = In case of invalid input command the control changes to rest position
Bit4 : BOOL ; //Reserved
Bit5 : BOOL ; //1 = Ignore bad signal state in interlock signals
Bit6 : BOOL ; //Reserved
Bit7 : BOOL ; //Reserved
Bit8 : BOOL ; //Reserved
Bit9 : BOOL ; //Reserved
Bit10 : BOOL ; //Reserved
Bit11 : BOOL ; //Reserved
Bit12 : BOOL ; //Reserved
Bit13 : BOOL ; //Reserved
Bit14 : BOOL ; //Reserved
Bit15 : BOOL ; //Reserved
Bit16 : BOOL ; //Reserved
Bit17 : BOOL ; //Reserved
Bit18 : BOOL ; //Reserved
Bit19 : BOOL ; //Reserved
Bit20 : BOOL ; //Reserved
Bit21 : BOOL ; //Reserved
Bit22 : BOOL ; //Reserved
Bit23 : BOOL ; //Reserved
Bit24 : BOOL ; //1 = with acknowledge overdosage
Bit25 : BOOL ; //Reserved
Bit26 : BOOL ; //Reserved
Bit27 : BOOL ; //Reserved
Bit28 : BOOL ; //Reserved
Bit29 : BOOL ; //Reserved
Bit30 : BOOL ; //Reserved
Bit31 : BOOL ; //Reserved
END_STRUCT ;
EventTsIn { S7_visible := 'false' }: ANY ; //Timestamp parameters
EventTsIn_st AT EventTsIn : STRUCT
b0 : BYTE;
b1 : BYTE;
w2 : WORD;
W3 : WORD;
dw4 : DWORD;
END_STRUCT;
END_VAR
VAR_OUTPUT
MS_Release : STRUCT //1: Maintenance status release
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
Ctrl { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Control output coarse dosing
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
P_Ctrl { S7_visible := 'false' }: STRUCT //Pulsive control output coarse dosing
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
Ctrl2 { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //Control output fine dosing
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
P_Ctrl2 { S7_visible := 'false' }: STRUCT //Pulsive control output fine dosing
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosStart { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing have started
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosEnd { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing have completed
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosOn { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing is on
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosRelax { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing relax
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosOff { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing is off
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DosPause { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Dosing pauses
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
LockAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //1: Interlock (Permit, Interlock or Protect) is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
GrpErr { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1 = Group error is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
RdyToStart { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1 = ready to start
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
RdyToReset { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1 = ready to reset via RstLi or automatic commands
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
OosAct { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;' }: STRUCT //Out of service is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
P_Rst { S7_dynamic := 'true'; S7_visible := 'false' }: STRUCT //Reset Impulse
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
LocalAct { S7_dynamic := 'true' }: STRUCT //1: Local operation mode is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
AutAct { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: Automatic mode is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
ManAct { S7_dynamic := 'true' }: STRUCT //1: Manual mode is active
Value : BOOL := TRUE; //Value
ST : BYTE := B#16#80; //Signal Status
END_STRUCT ;
SP_ExtAct { S7_dynamic := 'true'; S7_contact := 'true' }: STRUCT //1: External setpoint is active, 0: Internal setpoint is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_SP { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_xtrend := 'Value,DQ_OpScale.Low,DQ_OpScale.High;'; S7_edit := 'para' }: STRUCT //Quantity active setpoint
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ1_SP { S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint (coarse dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_SP { S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_SP_Tol { S7_visible := 'false'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity setpoint to calculate the tolarance limits
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_ExtOut { S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;' }: STRUCT //Quantity Setpoint External - Limited
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_ExtOut : STRUCT //Quantity Setpoint External(fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_ExHiAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - External setpoint high limit is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_ExLoAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - External setpoint low limit is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_ExHiAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - External setpoint high limit is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ2_ExLoAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - External setpoint low limit is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_Out { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_xtrend := 'Value,DQ_OpScale.Low,DQ_OpScale.High;'; S7_edit := 'para' }: STRUCT //Quantity dosed output
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_AH_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - Overdosed
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_AL_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Quantity - Underdosed
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DribbOut { S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_dynamic := 'true' }: STRUCT //Quantity - Calculated dribble value
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
DQ_Tare { S7_visible := 'false' }: STRUCT //Tare memory in weight measurement
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP { S7_dynamic := 'true'; S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_xtrend := 'Value,PV_OpScale.Low,PV_OpScale.High;'; S7_edit := 'para' }: STRUCT //Flow rate active setpoint
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP1 : STRUCT //Flow rate setpoint (coarse dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2 : STRUCT //Flow rate setpoint (fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_ExtOut : STRUCT //Flow rate Setpoint External(coarse dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2_ExtOut : STRUCT //Flow rate Setpoint External(fine dose)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_ExHiAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - External setpoint high limit is active (coarse dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP_ExLoAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - External setpoint low limit is active (coarse dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2_ExHiAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - External setpoint high limit is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SP2_ExLoAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - External setpoint low limit is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_Out { S7_m_c := 'true'; S7_xm_c := 'Value,true;'; S7_xqc := 'Value,true;'; S7_dynamic := 'true'; S7_contact := 'true'; S7_xtrend := 'Value,PV_OpScale.Low,PV_OpScale.High;'; S7_edit := 'para' }: STRUCT //Flow rate - Process value (analog output)
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_AH_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - PV alarm high is active (coarse dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_AL_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - PV - alarm low is active (coarse dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_AH2_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - PV alarm high is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
PV_AL2_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Flow rate - PV - alarm low is active (fine dose)
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
CR_AH_Act { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Creep flow rate - PV - alarm high is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SumMsgAct { S7_visible := 'false'; S7_dynamic := 'true' }: STRUCT //Summary message, 1 = Any of the process, external or system messages is active
Value : BOOL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
Status1 { S7_visible := 'false'; S7_dynamic := 'true'; S7_m_c := 'true' }: DWORD ; //Status Word 1, defined in the online help
Status2 { S7_visible := 'false'; S7_dynamic := 'true'; S7_m_c := 'true' }: DWORD ; //Status Word 2, defined in the online help
Status3 { S7_visible := 'false'; S7_dynamic := 'true'; S7_m_c := 'true' }: DWORD ; //Status Word 3, defined in the online help
Status4 { S7_visible := 'false'; S7_dynamic := 'true'; S7_m_c := 'true' }: DWORD ; //Status Word 4, defined in the online help
Status5 { S7_visible := 'false'; S7_dynamic := 'true' }: DWORD ; //Status Word 5, defined in the online help
ErrorNum { S7_visible := 'false'; S7_dynamic := 'true' }: INT := -1; //Error defined in the online help
OS_PermOut { S7_visible := 'false'; S7_m_c := 'true' }: DWORD := DW#16#FFFFFFFF; //Operator permissions OS_Perm
OS_PermLog { S7_visible := 'false'; S7_m_c := 'true' }: DWORD := DW#16#FFFFFFFF; //Operator permissions OS_Perm with changes from FB algorithm
OS1PermOut { S7_visible := 'false'; S7_m_c := 'true' }: DWORD := DW#16#FFFFFFFF; //Operator permissions OS1Perm
OS1PermLog { S7_visible := 'false'; S7_m_c := 'true' }: DWORD := DW#16#FFFFFFFF; //Operator permissions OS1Perm with changes from FB algorithm
OpSt_Out { S7_visible := 'false'; S7_m_c := 'true' }: DWORD ; //Enabled operator stations
ST_Worst { S7_visible := 'false'; S7_m_c := 'true' }: BYTE := B#16#80; //Worst Quality Code
MsgErr1 { S7_visible := 'false' }: BOOL ; //1=Messaging error occurs
MsgStat1 { S7_visible := 'false' }: WORD ; //Message status
MsgAckn1 { S7_visible := 'false' }: WORD ; //Message acknowledgement status
MsgErr2 { S7_visible := 'false' }: BOOL ; //1=Messaging error occurs
MsgStat2 { S7_visible := 'false' }: WORD ; //Message status
MsgAckn2 { S7_visible := 'false' }: WORD ; //Message acknowledgement status
END_VAR
VAR
ALARM_8P_1 : SFB35; //Multiple instances of ALARM_8P
ALARM_8P_2 : SFB35; //Multiple instances of ALARM_8P
SarBatchName : ARRAY [1 .. 32 ] OF BYTE := 32 (B#16#0) ;
//SarBatchName_str AT SarBatchName : STRING[32];
SarPV : ARRAY [1 .. 17 ] OF STRUCT
Value : REAL ; // Value
ST : BYTE := B#16#80; // Signal Status
END_STRUCT ;
SnErr : INT ; //Error information
SnRunUpCyc : INT ; //Counters of run-up-cycle
SnPrevCmd : INT := 7; //Previous command input
SnCurrPointer : INT ; //Variable for pulse measurement
SdwPrevBatchId : DWORD ; //Previous BA_ID
SdwStepNoLoc : DWORD ; //Variable for StepNo
SdwBatchId : DWORD ; //Variable for BatchId
SrPrevDQ_Out : REAL ; //Previous DQ_Out.Value in flow measurement
SrDQ_Out : REAL ; //Auxiliary variable in flow measurement
SrPVOut : REAL ; //Auxiliary variable in flow measurement
srPulseTime1 : REAL ; //Counter for pulse width
srPulseTime2 : REAL ; //Counter for pulse width
SrPrevCoarseSetPt : REAL ; //Variable for coarse quantity dosing
SrPrevFineSetPt : REAL ; //Variable for fine quantity dosing
SrPrevFlowSetPt : REAL ; //Variable for flow rate quantity dosing
SrPrevFineFlowSetPt : REAL ; //Variable for fine flow rate quantity dosing
SrRelaxTimeLeft : REAL ; //Variable for relax time left
SrRelaxTime : REAL ; //Variable for relax time
SrPostDoseTimer : REAL ; //Variable for post dose timer
SrPrevPostDoseTime : REAL ; //Variable for previous post dose time
SrPV_Quant : REAL ; //Variable for mean value quantity
SrDQ_AH_Tol : REAL ; //Variable for quantity alarm high limit(overdose)
SrDQ_AL_Tol : REAL ; //Variable for quantity alarm low limit(underdose)
SrDQ_AH_OnTimer : REAL ; //Variable for on Timer for Alarm High
SrDQ_AH_OffTimer : REAL ; //Variable for off Timer for Alarm High
SrDQ_AL_OnTimer : REAL ; //Variable for on Timer for Alarm Low
SrDQ_AL_OffTimer : REAL ; //Variable for off Timer for Alarm Low
SrDQ_A_DC : REAL ; //AV Alarm Delay Time Coming [s]
SrDQ_A_DG : REAL ; //AV Alarm Delay Time Going [s]
SrPV_AH_OnTimer : REAL ; //Variable for on Timer for Alarm High
SrPV_AH_OffTimer : REAL ; //Variable for off Timer for Alarm High
SrPV_AL_OnTimer : REAL ; //Variable for on Timer for Alarm Low
SrPV_AL_OffTimer : REAL ; //Variable for off Timer for Alarm Low
SrPV_A_DC : REAL ; //AV Alarm Delay Time Coming [s]
SrPV_A_DG : REAL ; //AV Alarm Delay Time Going [s]
SrPV_AH2_OnTimer : REAL ; //Variable for on Timer for Alarm High
SrPV_AH2_OffTimer : REAL ; //Variable for off Timer for Alarm High
SrPV_AL2_OnTimer : REAL ; //Variable for on Timer for Alarm Low
SrPV_AL2_OffTimer : REAL ; //Variable for off Timer for Alarm Low
SrPV_A2_DC : REAL ; //AV Alarm Delay Time Coming [s]
SrPV_A2_DG : REAL ; //AV Alarm Delay Time Going [s]
SrCR_AH_OnTimer : REAL ; //Variable for on Timer for Alarm High
SrCR_AH_OffTimer : REAL ; //Variable for off Timer for Alarm High
SrCR_A_DC : REAL ; //AV Alarm Delay Time Coming [s]
SrCR_A_DG : REAL ; //AV Alarm Delay Time Going [s]
SrPrevSimDQ : REAL ; //Previous value SimDQ
SbMsgEff1 : BYTE ; //Effective message signal
SbMsgEff1_b AT SbMsgEff1 : ARRAY[0..7] OF BOOL;
SbMsgEff1Old : BYTE ; //Effective message signal (Last cycle)
SbMsgEff2 : BYTE ; //Effective message signal
SbMsgEff2_b AT SbMsgEff2 : ARRAY[0..7] OF BOOL;
SbMsgEff2Old : BYTE ; //Effective message signal (Last cycle)
SnMsgToggle : INT ; //Reduce frequencey of call of ALARM_8P waiting for ACK
SxShowAlarm1 : BOOL := TRUE; //Call instance of ALARM_8P
SxShowAlarm2 : BOOL := TRUE; //Call instance of ALARM_8P
SxFirstStart : BOOL := TRUE; //Initial run
SxRstLi : BOOL ; //Previous value of ResetLi
SxOosLi : BOOL ; //Rising edge of OosLi
SxStartAut : BOOL ; //Previous value of StartAut
SxContAut : BOOL ; //Previous value of ContAut
SxPauseAut : BOOL ; //Previous value of PauseAut
SxStartLocal : BOOL ; //Previous value of StartLocal
SxPauseLocal : BOOL ; //Previous value of PauseLocal
SxCancelLocal : BOOL ; //Previous value of CancelLocal
SxContLocal : BOOL ; //Previous value of ContLocal
SxReset : BOOL ; //Variable for reset operation
SxUAckLi : BOOL ; //Variable for acknowledged the underdose
SxChkDose : BOOL ; //Variable for checking overdosing/underdosing
SxResetNeededProtect : BOOL ; //1 = Reset is needed for protect signal
SxResetNeededFlowErr : BOOL ; //1 = Reset is needed for flow error
SxPostDose : BOOL ; //Variable for post dosing
SxResetDQLi : BOOL ; //Previous RstDQ_Li.Value
SxCoarseFlowAlarms : BOOL ; //Variable for coarse dose flow rate alarm
SxFineFlowAlarms : BOOL ; //Variable for fine dose flow rate alarm
SxLastMode : BOOL ; //Last Mode before switched to Local Mode 0 = Manual, 1 = Auto
SxForceInputActive : BOOL ; //Forcing is active
SxEnableDribCor : BOOL := TRUE; //1 = Enable dribbling correction after main dosing (not after post dosing)
SxTareDone : BOOL ; //Remember if taring was done for dosing phase
SxStandstillDribble : BOOL ; //Remember if StandStill was come in dribbling phase
SxFeat_SwiPoiFalseActOld : BOOL ; //Old value of Feature Bit29
SxResetQuantityDone : BOOL := TRUE; //Reset quantity is done in state "End"
SxSPExtAct : BOOL ; //Previous value of SP_ExtAct.Value
SxResetNeededFaultExtCSF : BOOL ; //1 = Reset is needed for FaultExt or CSF
SxChkDoseUntilRdy : BOOL ; //1 = check dose monitoring until ready
SxDosEndWithAckn : BOOL ; //1 = Dosing ended with acknowledge over-/underdose
SxUnderdosage : BOOL ; //Underdosage indicated
SxOverdosage : BOOL ; //Overdosage indicated
_reserve : ARRAY [0 .. 15 ] OF //16 bytes reserve
BYTE ; //16 bytes reserve
END_VAR
VAR_TEMP
stcTOP_SI : STRUCT
EV_CLASS : BYTE ; // Bits 0 to 3: Event ID· Bits 4 to 7: Event class
EV_NUM : BYTE ; // Event number
PRIORITY : BYTE ; // Number of the priority class (meaning OF B#16#FE: OB NOT available or locked)
NUM : BYTE ; // OB number.
TYP2_3 : BYTE ; // Data ID 2_3: identifies the information entered in ZI2_3
TYP1 : BYTE ; // Data ID 1 : identifies the information entered in ZI1
ZI1 : WORD ; // Additional information 1
ZI2_3 : DWORD ; // Additional information 2_3
END_STRUCT ;
stcSTART_UP_SI : STRUCT
EV_CLASS : BYTE ; // Bits 0 to 3: Event ID· Bits 4 to 7: Event class
EV_NUM : BYTE ; // Event number
PRIORITY : BYTE ; // Number of the priority class (meaning OF B#16#FE: OB NOT available or locked)
NUM : BYTE ; // OB number.
TYP2_3 : BYTE ; // Data ID 2_3: identifies the information entered in ZI2_3
TYP1 : BYTE ; // Data ID 1 : identifies the information entered in ZI1
ZI1 : WORD ; // Additional information 1
ZI2_3 : DWORD ; // Additional information 2_3
END_STRUCT ;
avInit : STRUCT //Auxiliary variable for initialization
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
dvInit : STRUCT //Auxiliary variable for initialization
Value : BOOL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avPV : STRUCT //Auxiliary variable for PV_OUT
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avTotalPV : STRUCT //Auxiliary variable to average PV for PV_OUT
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avQuantPV : STRUCT //Auxiliary variable to PV quantity for weight mode
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avDQ2 : STRUCT //Setpoint quantity fine dosing [%] or absolute
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avSPDoseFlow : STRUCT //Setpoint flow rate coarse dose
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
avSP2DoseFlow : STRUCT //Setpoint flow rate fine dose
Value : REAL ; // Value
ST : BYTE ; // Signal Status
END_STRUCT ;
rOut : REAL ; //Auxiliary variable in flow measurement
rTI : REAL ; //Auxiliary variable in flow measurement
rTITemp : REAL ; //Auxiliary variable in flow measurement
rDcf : REAL ; //Limited DCF
rDQ1SP : REAL ; //Auxiliary variable for DQ1_SP
nInfErr : INT ; //Variable for pvout in case of infinity error
nCount : INT ; //Variable for FOR-statement
xErrorNum : INT ; //Variable for classification ErrorNum
nCmd : INT ; //Variable for command inputs
byTemp : BYTE ; //Variable for temp byte
stcInST : STRUCT //Input 0..15 Signal Status
b0 : BYTE ;
b1 : BYTE ;
b2 : BYTE ;
b3 : BYTE ;
b4 : BYTE ;
b5 : BYTE ;
b6 : BYTE ;
b7 : BYTE ;
b8 : BYTE ;
b9 : BYTE ;
b10 : BYTE ;
b11 : BYTE ;
b12 : BYTE ;
b13 : BYTE ;
b14 : BYTE ;
b15 : BYTE ;
END_STRUCT ;
dwStatus1 : DWORD ; //Variable for status1
dwStatus1_b AT dwStatus1 : ARRAY[0..31] OF BOOL;
dwStatus2 : DWORD ; //Variable for status2
dwStatus2_b AT dwStatus2 : ARRAY[0..31] OF BOOL;
dwStatus3 : DWORD ; //Variable for status3
dwStatus3_b AT dwStatus3 : ARRAY[0..31] OF BOOL;
dwStatus4 : DWORD ; //Variable for status4
dwStatus4_b AT dwStatus4 : ARRAY[0..31] OF BOOL;
dwStatus4_byte AT dwStatus4 : ARRAY[0..3] OF BYTE;
dwStatus5 : DWORD ; //Variable for status5
dwStatus5_b AT dwStatus5 : ARRAY[0..31] OF BOOL;
dwStatus5_byte AT dwStatus5 : ARRAY[0..3] OF BYTE;
wEventTsIn : WORD ; //Variable for EventTsIn value
wEventTsIn_b AT wEventTsIn : ARRAY[0..1] OF BYTE;
wTranferData : WORD ; //Tranfer data between techn. block and EventTs
EvtTs_Mode : STRUCT //EventTs Mode bits
Connected : BOOL ;
MS_Release : BOOL ;
MsgLock : BOOL ;
OosAct : BOOL ;
BatchEn : BOOL ;
Occupied : BOOL ;
Bit6 : BOOL ;
Bit7 : BOOL ;
Bit8 : BOOL ;
Bit9 : BOOL ;
Bit10 : BOOL ;
Bit11 : BOOL ;
Bit12 : BOOL ;
Bit13 : BOOL ;
Bit14 : BOOL ;
Bit15 : BOOL ;
END_STRUCT ;
EvtTs_Mode_w AT EvtTs_Mode : WORD;
diOffset : DINT ;
tempANY : ANY ;
tempANY_st AT tempANY : STRUCT
b0 : BYTE;
b1 : BYTE;
w2 : WORD;
w3 : WORD;
dw4 : DWORD;
END_STRUCT;
dwOS_Perm : DWORD ; //Temporary variable for the value of OS_PermOut/OS_PermLog
dwOS_Perm_byte AT dwOS_Perm : ARRAY[0..3] OF BYTE;
dwOS_Perm_b AT dwOS_Perm : ARRAY[0..31] OF BOOL;
xOSPerAuto : BOOL ; //1 = Operator enabled to switch to automatic mode
xOSPerMan : BOOL ; //1 = Operator enabled to switch to manual mode
xOSPerLocal : BOOL ; //1 = Operator enabled to switch motor to local mode
xOSPerOOS : BOOL ; //1 = Operator enabled to switch to OOS mode
xOSPerSPExt : BOOL ; //1 = Operator enabled to set setpoint to external
xOSPerSPInt : BOOL ; //1 = Operator enabled to set setpoint to internal
xOSPerSPQuantity : BOOL ; //1 = Operator enabled to set setpoint quantity
xOSPerSPQuantityFine : BOOL ; //1 = Operator enabled to set setpoint quantity (fine dosage)
xOSPerSPFlowRate : BOOL ; //1 = Operator enabled to set setpoint flow rate
xOSPerSPFlowRateFine : BOOL ; //1 = Operator enabled to set setpoint flow rate (fine dosage)
xOSPerStart : BOOL ; //1 = Operator enabled to start dosage
xOSPerPause : BOOL ; //1 = Operator enabled to pause dosage
xOSPerContinue : BOOL ; //1 = Operator enabled to continue dosage
xOSPerCancel : BOOL ; //1 = Operator enabled to cancel dosage
xOSPerResetProtect : BOOL ; //1 = Operator enabled to reset protection and flow rate alarm
xOSPerResetQuantity : BOOL ; //1 = Operator enabled to reset dosage quantity
xOSPerAcknOverUnderdose : BOOL ; //1 = Operator enabled to acknowledge underdose
xOSPerSim : BOOL ; //1 = Operator enabled to simulate mode
xOSPerMSRel : BOOL ; //1 = Operator enabled to switch to MS_Release
xOSPerDribbIn : BOOL ; //1 = Operator enabled to set DribbIn
xOSPerSimPV : BOOL ; //1 = Operator can change SimPV
xOSPerSimDQ : BOOL ; //1 = Operator can change SimDQ
xAutoAct : BOOL ; //Variable for AUTO mode
xManAct : BOOL ; //Variable for Man mode
xBumpLessTransfer : BOOL ; //Variable to check whether Bumpless is enabled but not allowed
xInvalidMode : BOOL ; //Variable for Invalid mode
xInvalidCommand : BOOL ; //Variable for Invalid command.
xFrcInvalidCommand : BOOL ; //Variable for Invalid Force command.
xOutStatusWord1x15 : BOOL ; //Temporary variable for StatusWord1 Bit 21 (Mode switch fail)
xStartCmd : BOOL ; //Variable for start command
xContCmd : BOOL ; //Variable for continue command
xInterlocked : BOOL ; //Variable to check if dose is interlocked