Commit 591af1b4 authored by Claes Sjofors's avatar Claes Sjofors

Powerlink CN server work

parent 2662da47
#!/bin/bash
#
# Proview Open Source Process Control.
# Copyright (C) 2005-2012 SSAB EMEA AB.
#
# This file is part of Proview.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Proview. If not, see <http://www.gnu.org/licenses/>
#
# Linking Proview statically or dynamically with other modules is
# making a combined work based on Proview. Thus, the terms and
# conditions of the GNU General Public License cover the whole
# combination.
#
# In addition, as a special exception, the copyright holders of
# Proview give you permission to, from the build function in the
# Proview Configurator, combine Proview with modules generated by the
# Proview PLC Editor to a PLC program, regardless of the license
# terms of these modules. You may copy and distribute the resulting
# combined work under the terms of your choice, provided that every
# copy of the combined work is accompanied by a complete copy of
# the source code of Proview (the version used to produce the
# combined work), being distributed under the terms of the GNU
# General Public License plus this exception.
#
cnf=`which openCONFIGURATOR`
if [ -z "$cnf" ]; then
echo "** openCONFIGURATOR not installed"
exit
fi
export HOME=$pwrp_login
openCONFIGURATOR
include $(pwre_dir_symbols)
ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk
endif
vpath %.sh $(hw_source):$(os_source):$(co_source)
vpath %.pwr_com $(hw_source):$(os_source):$(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source)
sh_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.sh) \
), $(notdir $(file)) \
) \
)
pwr_com_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.pwr_com) \
), $(notdir $(file)) \
) \
)
export_sh := $(patsubst %.sh, $(exe_dir)/%.sh, $(sh_sources))
clean_sh := $(patsubst %.sh, clean_%.sh, $(sh_sources))
export_pwr_com := $(patsubst %.pwr_com, $(exe_dir)/%.pwr_com, $(pwr_com_sources))
clean_pwr_com := $(patsubst %.pwr_com, clean_%.pwr_com, $(pwr_com_sources))
.PHONY : all init copy lib exe clean realclean\
$(clean_sh)
all : init copy
init :
copy : $(export_sh) $(export_pwr_com)
lib :
exe :
clean :
realclean : clean $(clean_sh) $(clean_pwr_com)
$(export_sh) : $(exe_dir)/%.sh : %.sh
@ echo "Exporting $< ..."
@ $(cp) $(cpflags) $(source) $(target)
$(export_pwr_com) : $(exe_dir)/%.pwr_com : %.pwr_com
@ echo "Exporting $< ..."
@ $(cp) $(cpflags) $(source) $(target)
$(clean_sh) : clean_%.sh : %.sh
@ rm $(exe_dir)/$*.sh
$(clean_pwr_com) : clean_%.pwr_com : %.pwr_com
@ rm $(exe_dir)/$*.pwr_com
This source diff could not be displayed because it is too large. You can view the blob instead.
include $(pwre_dir_symbols)
ifndef variables_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/variables.mk
endif
ifndef variables_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/variables.mk
endif
ifndef rules_mk
-include $(pwre_kroot)/tools/bld/src/$(os_name)/$(hw_name)/rules.mk
endif
ifndef rules_mk
include $(pwre_kroot)/tools/bld/src/$(os_name)/rules.mk
endif
vpath %.xdd $(hw_source):$(os_source):$(co_source)
source_dirs = $(hw_source) $(os_source) $(co_source)
xdd_sources := $(sort \
$(foreach file, \
$(foreach dir, \
$(source_dirs), \
$(wildcard $(dir)/*.xdd) \
), $(notdir $(file)) \
) \
)
export_xdd := $(patsubst %.xdd, $(exe_dir)/%.xdd, $(xdd_sources))
clean_xdd := $(patsubst %.xdd, clean_%.xdd, $(xdd_sources))
.PHONY : all init copy lib exe clean realclean\
$(clean_xdd)
all : init copy
init :
copy : $(export_xdd)
lib :
exe :
clean :
realclean : clean $(clean_xdd)
$(export_xdd) : $(exe_dir)/%.xdd : %.xdd
@ echo "Exporting $< ..."
@ $(cp) $(cpflags) $(source) $(target)
$(clean_xdd) : clean_%.xdd : %.xdd
@ rm $(exe_dir)/$*.xdd
This diff is collapsed.
......@@ -61,7 +61,7 @@ static pwr_tStatus Configure (
ldh_sMenuCall *ip
)
{
pwr_tCmd cmd = "export HOME=$pwrp_login;openCONFIGURATOR";
pwr_tCmd cmd = "open_powerlink_configurator.sh &";
system( cmd);
......
#if OS_LINUX
Epl_MN
Epl_CNServer
#endif
\ No newline at end of file
0! DefaultWidth 0
0! DefaultHeight 0
199
!/**
! PressureSensor
! Group Components/BaseComponent
!
! <image> bcomp_pressuresensor_gs.gif
!
! <h1>Description
! Pressure sensor. Graphic symbol for basecomponent BasePressureSensor.
! Should be connected to an instance of BasePressureSensor, or a
! subclass to this class.
!
! <h1>Default dynamics
! HostObject <link>GeDynHostObject, ,$pwr_lang/man_geref.dat
!
! Dynamics for the symbol
! - flashing red when the high-high or low-low limits are exceeded.
! - colored yellow when the high or low limits are exceeded.
! - popupmenu with the methods of the connected object.
!
! DigFlash <t>$hostobject.IndError <link>GeDynDigFlash, ,$pwr_lang/man_geref.dat
! DigWarning <t>$hostobject.IndWarning <link>GeDynDigWarning, ,$pwr_lang/man_geref.dat
! PopupMenu <t>$hostobject <link>GeDynPopupMenu, ,$pwr_lang/man_geref.dat
!
! Default Cycle Slow
!
!*/
1
100 20
135 20
101 20
102 -269
103 -209
104 3.00792
136 3.00792
105 100
106 -40
107 -31
108 2
109 0
110 2
111 0
116 0
117 0
118 156
119 113
120 0
121 Claes context
122 0
126 0.5
127 0.5
128 0
129 0.3
130 1.5
131 0.8
132 3
133 2
137 4510
138 3
139 2
134
22
2200 8
2201 9
2202 mcomp_epl_cn
2203 300
2205 0
2204
2206 0
2207
2208
2209 0
2210 0
2211 0
2212 0
2213 4
2214
pwrp_pop:
pwrp_exe:
ssab_exe:
pwr_exe:
2215 67108864
2246 0
2236 0
2247 0
2216 0
2221 0
2237 0
2238 0
2239 1
2240 0
2241 0
2242 0
2217 0
2218 0
2219 1
2220
2230 0
2231 0
2222
2223 1
2224 0.5
2232 0.5
2225 0.5
2226 0
2227
2228 0
2229 0
2233 1
2234 1
2235 0
2243 0
2245 0
2244
1
100 33555457
105 0
101 3
106 0
102 33619964
103 0
12
1200 $hostobject.NodeId##UInt16
1201 %d
1202 1
1203 1
1204 0
99
31
3100 $hostobject.Status##Status
3101 44
99
50
5000 $hostobject
99
99
99
123
2
3
300 pwr_valuelong
301
2
19
1904
1900 26.6
1901 0
1902 0.7
1903 0
1908 0
1909 41
1910 41
1911 1
1915 0
1913 5
1916 2
1914 0
1918 0
1919 0
1920 0
1917 0
1921 0
1922 4
1923 0
1907 0
1906
1905
5
500 0
501 1
504 1
505 1
502
7
700 0
701 0
99
503
7
700 26.6
701 0.7
99
99
1912
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
29
2907
13
1300 1
1301 304
1306 0
1302 1
1305 1
1303
7
700 1
701 1.35
99
1304 0
1307 0
99
2908
28
2800 1
2801 0
2802 -0.715333
2803 0
2804 1
2805 -0.771778
2806 0
99
2901 2
99
99
302 0
304 0
303
305 0
306
307
308 1024
330 0
321 0
331 0
309 0
313 0
322 0
323 0
324 0
325 0
326 0
327 0
310 0
311 0
312
314
315 1
316 1
317 0
318 0
319 0
320 0
328 0
99
99
124
2
99
125
2
38
3804 O1
3800 2
3801 0
3802 2
3803 0
3808 0
3809 74
3810 74
3811 1
3813 15
3814 10
3816 0
3817 2
3815 0
3818 0
3819 0
3820 4
3821 0
3822 0
3807 0
3806
3805
5
500 0
501 1
504 1
505 1
502
7
700 0
701 0
99
503
7
700 2
701 2
99
99
3812
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
23
2304 O2
2300 1.33641
2301 1.03641
2302 1.67283
2303 1.37283
2305
9
900 4
901 303
904 0
902 A1
903
7
700 1.03641
701 1.67283
99
99
2306
5
500 2
501 1
504 1
505 0
502
7
700 1.03641
701 1.37283
99
503
7
700 1.33641
701 1.67283
99
99
2307
13
1300 1
1301 303
1306 0
1302 4
1305 1
1303
7
700 1
701 1
99
1304 0
1307 0
99
2308
28
2800 1
2801 0
2802 0.0364147
2803 0
2804 1
2805 0.672829
2806 0
99
2309 0
99
21
2104 O3
2100 1.3
2101 0.7
2102 0.3
2103 -0.3
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 4
1201 4
1202
7
700 1
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
21
2104 O4
2100 0.3
2101 -0.3
2102 1.3
2103 0.7
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 5
1201 2
1202
7
700 0
701 1
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
21
2104 O5
2100 1.3
2101 0.7
2102 2.3
2103 1.7
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 6
1201 3
1202
7
700 1
701 2
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
21
2104 O6
2100 2.3
2101 1.7
2102 1.3
2103 0.7
2105
8
802 0
803 2
800 0
801 360
806 0
804
7
700 -0.3
701 -0.3
99
805
7
700 0.3
701 0.3
99
99
2106
12
1200 7
1201 1
1202
7
700 2
701 1
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
23
2304 O7
2300 1.33641
2301 1.03641
2302 0.872829
2303 0.572829
2305
9
900 4
901 303
904 0
902 A2
903
7
700 1.03641
701 0.872829
99
99
2306
5
500 2
501 1
504 1
505 0
502
7
700 1.03641
701 0.572829
99
503
7
700 1.33641
701 0.872829
99
99
2307
13
1300 2
1301 303
1306 0
1302 4
1305 1
1303
7
700 1
701 1
99
1304 0
1307 0
99
2308
28
2800 1
2801 0
2802 0.0364147
2803 0
2804 1
2805 -0.127171
2806 0
99
2309 0
99
20
2004 O8
2000 2
2001 0
2002 1
2003 1
2009 0
2010 0
2005
6
600 0
601 1
602
7
700 2
701 1
99
603
7
700 0
701 1
99
99
2008
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
99
123
2
3
300 mcomp_epl_cn
301
2
38
3804 O1
3800 2
3801 0
3802 2
3803 0
3808 0
3809 74
3810 74
3811 1
3813 15
3814 10
3816 0
3817 2
3815 0
3818 0
3819 0
3820 4
3821 0
3822 0
3807 0
3806
3805
5
500 0
501 1
504 1
505 1
502
7
700 0
701 0
99
503
7
700 2
701 2
99
99
3812
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
29
2907
13
1300 1
1301 303
1306 0
1302 4
1305 1
1303
7
700 1
701 1
99
1304 0
1307 0
99
2908
28
2800 1
2801 0
2802 0.0364147
2803 0
2804 1
2805 0.672829
2806 0
99
2901 0
99
12
1200 4
1201 4
1202
7
700 1
701 0
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
12
1200 5
1201 2
1202
7
700 0
701 1
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
12
1200 6
1201 3
1202
7
700 1
701 2
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
12
1200 7
1201 1
1202
7
700 2
701 1
99
1203
1204 0
1205
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
29
2907
13
1300 2
1301 303
1306 0
1302 4
1305 1
1303
7
700 1
701 1
99
1304 0
1307 0
99
2908
28
2800 1
2801 0
2802 0.0364147
2803 0
2804 1
2805 -0.127171
2806 0
99
2901 0
99
20
2004 O8
2000 2
2001 0
2002 1
2003 1
2009 0
2010 0
2005
6
600 0
601 1
602
7
700 2
701 1
99
603
7
700 0
701 1
99
99
2008
28
2800 1
2801 0
2802 0
2803 0
2804 1
2805 0
2806 0
99
99
99
302 0
305 0
306
307
304 0
303
308 67108864
330 0
321 0
331 0
309 0
313 0
322 0
323 0
324 1
325 0
326 0
327 0
310 0
311 0
312
314
315 1
316 1
317 0
318 0
319 0
320 0
328 0
329
1
100 33555457
105 0
101 3
106 0
102 33619964
103 0
12
1200 $hostobject.NodeId##UInt16
1201 %d
1202 1
1203 1
1204 0
99
31
3100 $hostobject.Status##Status
3101 44
99
50
5000 $hostobject
99
99
99
99
99
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Volume OtherIO $ClassVolume 0.0.250.10
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X585"
Attr NextOix = "_X609"
Attr NextCix = "_X45"
Attr NextTix[0] = "_X17"
EndBody
......@@ -8796,8 +8796,9 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndObject
EndObject
Object Template Epl_CN 2157936640 01-JAN-1970 01:00:00.00
Body RtBody 04-JUL-2013 08:54:39.24
Body RtBody 25-JUL-2013 15:23:16.85
Attr Process = 128
Attr Timeout = 2
Attr ErrorSoftLimit = 25
Attr ErrorHardLimit = 50
EndBody
......@@ -8866,7 +8867,7 @@ Volume OtherIO $ClassVolume 0.0.250.10
Object RtBody $ObjBodyDef 1 01-JUL-2013 17:26:15.35
Body SysBody 04-JUL-2013 08:13:20.05
Attr StructName = "Epl_MN"
Attr NextAix = "_X51"
Attr NextAix = "_X52"
EndBody
!/**
! Used to add a short description of the master
......@@ -8878,6 +8879,13 @@ Volume OtherIO $ClassVolume 0.0.250.10
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Specification $Attribute 51 18-JUL-2013 10:41:25.41
Body SysBody 18-JUL-2013 10:41:25.41
Attr PgmName = "Specification"
Attr Size = 80
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! This attribute should contain a path to a cdc-file.
! Example: /home/pwrp/mnobd.cdc
......@@ -9144,12 +9152,14 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndObject
EndObject
Object Template Epl_MN 2158198784 01-JAN-1970 01:00:00.00
Body RtBody 05-JUL-2013 12:22:16.05
Body RtBody 25-JUL-2013 15:23:45.03
Attr CDCfile = "$pwrp_exe/mnobd.cdc"
Attr Device = "eth0"
Attr NodeId = 240
Attr Process = 128
Attr Priority = 20
Attr StartupTimeout = 30
Attr Timeout = 2
Attr ErrorSoftLimit = 25
Attr ErrorHardLimit = 50
EndBody
......@@ -9298,6 +9308,94 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndBody
EndObject
EndObject
Object ConfiguratorPosnn $Menu 586 17-JUL-2013 16:46:27.38
Object Pointed $Menu 587 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 588 17-JUL-2013 16:46:44.93
Body SysBody 17-JUL-2013 16:47:07.86
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPoscn $Menu 589 17-JUL-2013 16:46:27.38
Object Pointed $Menu 590 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 591 17-JUL-2013 16:47:26.79
Body SysBody 17-JUL-2013 16:47:34.61
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPosos $Menu 592 17-JUL-2013 16:46:27.38
Object Pointed $Menu 593 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 594 17-JUL-2013 16:47:43.47
Body SysBody 17-JUL-2013 16:48:02.26
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object ConfiguratorPoson $Menu 595 17-JUL-2013 16:46:27.38
Object Pointed $Menu 596 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 597 17-JUL-2013 16:48:17.47
Body SysBody 17-JUL-2013 16:48:29.42
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPosnn $Menu 598 17-JUL-2013 16:46:27.38
Object Pointed $Menu 599 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 600 17-JUL-2013 16:48:39.94
Body SysBody 17-JUL-2013 16:48:45.35
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPoscn $Menu 601 17-JUL-2013 16:46:27.38
Object Pointed $Menu 602 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 603 17-JUL-2013 16:48:59.97
Body SysBody 17-JUL-2013 16:49:09.08
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPosos $Menu 604 17-JUL-2013 16:46:27.38
Object Pointed $Menu 605 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 606 17-JUL-2013 16:49:15.98
Body SysBody 17-JUL-2013 16:49:24.44
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object NavigatorPoson $Menu 607 17-JUL-2013 16:46:27.38
Object Pointed $Menu 608 17-JUL-2013 16:46:27.38
Object GenerateXddFile $MenuButton 609 17-JUL-2013 16:49:30.45
Body SysBody 17-JUL-2013 16:49:37.26
Attr ButtonName = "GenerateXddFile"
Attr MethodName = "Epl_CNServer-GenerateXddFile"
Attr FilterName = "Epl_CNServer-GenerateXddFileFilter"
EndBody
EndObject
EndObject
EndObject
Object IoMethods $RtMethod 574 08-JUL-2013 10:17:49.38
Object IoRackInit $Method 575 08-JUL-2013 15:30:22.45
Body SysBody 08-JUL-2013 15:29:51.66
......@@ -9321,10 +9419,12 @@ Volume OtherIO $ClassVolume 0.0.250.10
EndObject
EndObject
Object Template Epl_CNServer 2158985216 01-JAN-1970 01:00:00.00
Body RtBody 08-JUL-2013 10:37:34.48
Body RtBody 25-JUL-2013 15:24:48.33
Attr Device = "eth0"
Attr Process = 128
Attr Priority = 20
Attr StartupTimeout = 30
Attr Timeout = 2
Attr ErrorSoftLimit = 25
Attr ErrorHardLimit = 50
EndBody
......
......@@ -51,6 +51,10 @@ spi_readerror <SPI read error> /error
spi_writeerror <SPI write error> /error
epl_oper <EPL Operational> /succ
epl_nooper <EPL Not in operational state> /error
epl_off <EPL Off> /error
epl_basicethernet <EPL Basic ethernet state> /error
epl_preoper1 <EPL Pre operational 1> /error
epl_preoper2 <EPL Pre operational 2> /error
.end
This diff is collapsed.
......@@ -605,6 +605,10 @@ menu Components
subgraph Pb_DP_Slave pwr_exe:mcomp_pb_dp_slave.pwsg 5
subgraph PnDevice pwr_exe:mcomp_pndevice.pwsg 5
}
menu Powerlink
{
subgraph Epl_CN pwr_exe:mcomp_epl_cn.pwsg 5
}
}
localsubgraphs Ssab ssab_exe:*.pwsg
menu Local
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment