-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
147 lines (119 loc) · 6.34 KB
/
README
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
Bx9000_MBT is the EPICS driver and device support for Beckhoff Bx9000 and BK9050 couplers.
Bx9000 so far could be BC9000/BK9000/BX9000.
This driver talks to Bx9000 through ModBusTCP protocol. So you also need the
module called ModBusTCPClnt.
This driver and device support are OSI based, so your have to EPICS base 3.14
or above to use it.
Before using the Beckhoff controller, you must configure it for IP address.
For DHCP server based configuration, set DIP switch 9 to OFF and DIP switch 10 to ON.
Please follow the way described below to use this module:
!!!!!!!!!!!!!!!!!!!!!!!!!! WARNING WARNING WARNING WARNING WARNING WARNING !!!!!!!!!!!!!!!!!!!!!!!!!
There are watchdog timers in the Beckhoff. The driver will keep sending echo packets to Beckhoff
@2Hz to make one watchdog timer happy to maintain TCP connection.
Another watchdog timer will cause write failed then output turns to fail safe mode.
There are three solutions:
1. Turn off this watchdog timer in Beckhoff KS2000 software:
a. Disable write-protection by going to Online / Coupler / Services / Write Protection Abolished.
b. Set Table 100, Register 24 to 0 (default 1000 ms) by going to Pos 0 (controller) / Tables / 100 / Offset 24
2. If you have input modules installed with same coupler, you keep scanning then you are ok.
3. If you have output modules only, then you have to make one output record scanned @ 10Hz
!!!!!!!!!!!!!!!!!!!!!!!!!! WARNING WARNING WARNING WARNING WARNING WARNING !!!!!!!!!!!!!!!!!!!!!!!!!
1. Add the following lines into your configure/RELEASE
MODBUSTCPCLNT=$(EPICS_MODULES)/ModBusTCPClnt/$(MODBUSTCPCLNT_MODULE_VERSION)
BX9000_MBT=$(EPICS_MODULES)/Bx9000_MBT/$(BX9000_MBT_MODULE_VERSION)
2. Add the following lines to your XXXApp/src/Makefile
XXX_DBD += Bx9000_MBT.dbd
XXX_LIBS += Bx9000_MBT
XXX_LIBS += ModBusTCPClnt
3. Copy the following files to your XXXApp/Db directory
and customize them to match your needs
Bx9000.substitutions
# For a KL3314 module (substitute modules as needed)
KL3314.substitutions
4. Add the following lines to your XXXApp/Db/Makefile
EPICS will create these files from your substitutions files.
DB += Bx9000.db
# For a KL3314 module (substitute modules as needed)
DB += KL3314.db
5a. For VxWorks, add the following lines into your st.cmd (see 6b for EPICS)
# Disclaimer: This is from prior version of README and is vxWorks specific,
# however, I have not tested this on vxWorks.
# ------------------------------------------------------------------------
# --------- Load ModBusTCPClnt + Bx9000_MBT Library ---------------------
# ------------------------------------------------------------------------
cd modbustcpclntbin
ld < ModBusTCPClntLib.munch
cd modbustcpclnt
dbLoadDatabase("dbd/ModBusTCPClnt.dbd",0,0)
ModBusTCPClnt_registerRecordDeviceDriver(pdbbase)
cd bx9000_mbtbin
ld < Bx9000_MBTLib.munch
cd bx9000_mbt
dbLoadDatabase("dbd/Bx9000_MBT.dbd",0,0)
Bx9000_MBT_registerRecordDeviceDriver(pdbbase)
......
# Add coupler
# Bx9000_Coupler_Add( UINT8 * cplrname, UINT8 * ipaddr, UINT8 * init_string)
# Substitute your COUPLER hostname for ics-test-bh3
Bx9000_Coupler_Add("ics-test-bh3","160.91.229.182",0)
# Add terminals to the coupler
# Bx9000_Terminal_Add( UINT8 * cplrname, UINT16 slot, UINT8 * btname, UINT8 * init_string)
Bx9000_Terminal_Add("ics-test-bh3", 1, "KL4002", 0)
Bx9000_Terminal_Add("ics-test-bh3", 2, "KL3468", 0)
Bx9000_Terminal_Add("ics-test-bh3", 3, "KL3408", 0)
Bx9000_Terminal_Add("ics-test-bh3", 4, "KL2408", 0)
Bx9000_Terminal_Add("ics-test-bh3", 5, "KL1104", 0)
# ...
# Be sure to finish with a KL9010!
Bx9000_Terminal_Add("ics-test-bh3", 16, "KL9010", 0)
......
# Substitute your COUPLER hostname and COUPLER_LOC EPICS prefix
dbLoadRecords("db/beckhoff-ics-test-ioc1.db", "COUPLER=ics-test-bh3,COUPLER_LOC=AMO:R01:BHC:07")
5b. For EPICS, add the following lines into your st.cmd (see 6a for VxWorks)
# Add coupler
# Bx9000_Coupler_Add( UINT8 * cplrname, UINT8 * ipaddr, UINT8 * init_string)
# Substitute your COUPLER hostname for ics-test-bh3
Bx9000_Coupler_Add("ics-test-bh3","160.91.229.182",0)
# Add terminals to the coupler
# Bx9000_Terminal_Add( UINT8 * cplrname, UINT16 slot, UINT8 * btname, UINT8 * init_string)
Bx9000_Terminal_Add("ics-test-bh3", 1, "KL9505", 0)
Bx9000_Terminal_Add("ics-test-bh3", 2, "KL3314", 0)
Bx9000_Terminal_Add("ics-test-bh3", 3, "KL3312", 0)
# ...
# Be sure to finish with a KL9010!
Bx9000_Terminal_Add("ics-test-bh3", 16, "KL9010", 0)
......
# Substitute your COUPLER hostname and COUPLER_LOC EPICS prefix
dbLoadRecords("db/Bx9000.db", "COUPLER=ics-test-bh3,COUPLER_LOC=AMO:R01:BHC:07")
dbLoadRecords("db/KL3314.db", "COUPLER=ics-test-bh3,COUPLER_LOC=AMO:R01:BHC:07")
dbLoadRecords("db/KL3064.db", "COUPLER=ics-test-bh3,COUPLER_LOC=AMO:R01:BHC:07")
...
IN THE CASE OF THE KL9020 AND KL9050 BUS COUPLERS:
Bx9000_Coupler_Add("bkhf-b34-cd02","134.79.219.106",0)
Bx9000_Terminal_Add("bkhf-b34-cd02", 1, "KL3408", 0)
Bx9000_Terminal_Add("bkhf-b34-cd02", 2, "KL9020", 0)
Bx9000_Terminal_Add("bkhf-b34-cd02", 3, "KL3204", 0)
Bx9000_Terminal_Add("bkhf-b34-cd02", 4, "KL9010", 0)
Note that there is no Bx9000_Terminal_Add entry for KL9050. See
documentation/BeckhoffExtendedExample.png and
documentation/BeckhoffTopology.png for more info.
6. There is no screen built for each terminal in SHARE area,
you should build your own one according to your application.
But we do have two screens in SHARE area,
they show the Bx9000 coupler status and installed bus terminals.
You can run them like this, substituting your COUPLER_LOC EPICS name
edm -x -m "COUPLER_LOC=AMO:R01:BHC:07" Bx9000Info.edl
edm -x -m "COUPLER_LOC=AMO:R01:BHC:07" Bx9000InstalledBTs.edl
Bx9000Info.edl shows the coupler connections' status and some other info.
Bx9000InstalledBTs.edl shows the installed bus terminals on slot 0~16,
if you need more, you should build your own one.
7. Optional signal averaging has been added for RTD and thermocouple signals,
KL3314, KL3202, KL3222. Averaging is done in record processing. Two new
macros are used to configure this as follows:
If no averaging is desired,
set $(NSAM) to "1"
set $(SCAN) to "1 second"
If averaging is desired,
set $(NSAM) to number of samples to average
set $(SCAN) to rate to poll Beckhoff at (high-level PVs still update at 1 Hz)
This is also described in Bx9000_MBTApp/Db/KL****-lcls.template