CODESYS - the IEC 61131-3 automation software

Welcome to the official CODESYS Forum
Deutsche Version English version russian version 
It is currently Wed Oct 18, 2017 8:42 am

All times are UTC+01:00




Post new topic  Reply to topic  [ 33 posts ]  Go to page Previous 1 2 3 Next
Author Message
PostPosted: Mon Sep 29, 2014 9:12 pm 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
This should work on your SD too. copy CODESYSControl.cfg and 3S.dat to the new location of your redirected path
If you are already readonly with your system, are you sure you have changed CODESYSControl.cfg in /etc_org/ ?
This was in my case the mistake.
so remount to rw and change /etc_org/CODESYSControl.cfg and /etc_org/init.d/codesyscontrol these two path changes
-> reboot


Top
   
PostPosted: Mon Sep 29, 2014 9:33 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Hi

With copy of CODESYS Control.cfg and 3S.dat it works.

Now i try the same with usb device.
Do you think it needs all of them changes?

Regards


Top
   
PostPosted: Mon Sep 29, 2014 9:48 pm 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
Hi,

change the path settings in /etc/init.d/codesycontrol
then move the files of /root to /media
and move /etc/CODESYSControl.cfg and move /etc/3S.dat to /media
After this works -> the make it RO part should follow.
Regards
Edwin


Top
   
PostPosted: Tue Sep 30, 2014 12:58 am 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Hi.
I'm newbe in Linux but I tthink after many many tests that problems
begins from permissions of folders type "/etc" ,"/var" and "/media".

Finally I get it run and from third partition of sd card and from usb storage.

Regards

*The watchdog works ok.


Top
   
PostPosted: Tue Sep 30, 2014 6:27 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
I see green led of Raspberry Pi B+ flashes ( little flash ) continuously 1 time per second.
Is this normal?
Is this bad for sd card?


Top
   
PostPosted: Tue Sep 30, 2014 6:42 pm 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
Hi,

would propose to install:

apt-get install nmon

or iotop

then check if there is any write activity.

BR
Edwin


You do not have the required permissions to view the files attached to this post.


Top
   
PostPosted: Tue Sep 30, 2014 7:13 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Nmon don't show any activity at Disk I/O.
Only my Raspberry do this flashing?


Top
   
PostPosted: Tue Sep 30, 2014 9:28 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Some times after reboots from watchdog i lose the webvisu connection and codesys visualization.
Any idea?


You do not have the required permissions to view the files attached to this post.


Top
   
PostPosted: Tue Sep 30, 2014 10:16 pm 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
Hi,

please check the plc log for more information.

BR
Edwin


Top
   
PostPosted: Tue Sep 30, 2014 10:45 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Do you mean "codesyscontrol.log" from "tmp" folder?
I can't understand it.

Code:
Linux version 3.12.22+ (dc4@dc4-arm-01) (gcc version 4.7.2 20120731 (prerelease) (crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08) ) #691 PREEMPT Wed Jun 18 18:29:58 BST 2014

********* CoDeSysControl DEMO VERSION - runs 2 hours*********


machine: armv6l
timer resolution: 1nsec

=======================================================================
1412029351: Cmp=CM, Class=1, Error=0, Info=4, pszInfo= CODESYS Control V3
1412029351: Cmp=CM, Class=1, Error=0, Info=5, pszInfo= Copyright (c) 3S - Smart Software Solutions GmbH
1412029351: Cmp=CM, Class=1, Error=0, Info=6, pszInfo= <version>3.5.5.0</version> <builddate>Jul 31 2014</builddate>
=======================================================================
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>CM</cmp> init, <id>0x00000001</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>CmpMemPool</cmp> init, <id>0x0000001e</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>CmpLog</cmp> init, <id>0x00000013</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>CmpSettings</cmp> init, <id>0x0000001a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysFile</cmp> init, <id>0x00000104</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysCpuHandling</cmp> init, <id>0x00000101</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysOut</cmp> init, <id>0x0000010b</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysModule</cmp> init, <id>0x00000109</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysCom</cmp> init, <id>0x00000100</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysDir</cmp> init, <id>0x0000011b</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysEvent</cmp> init, <id>0x00000102</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>_</cmp> init, <id>0x00000103</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysInternalLib</cmp> init, <id>0x00000107</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysMem</cmp> init, <id>0x00000108</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysSem</cmp> init, <id>0x0000010f</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysSocket</cmp> init, <id>0x00000111</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysTarget</cmp> init, <id>0x00000112</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysTask</cmp> init, <id>0x00000114</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysTime</cmp> init, <id>0x00000115</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysTimeRtc</cmp> init, <id>0x00000127</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysTimer</cmp> init, <id>0x00000116</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysFileStream</cmp> init, <id>0x00000120</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysShm</cmp> init, <id>0x00000110</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysMsgQ</cmp> init, <id>0x0000010a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysSemProcess</cmp> init, <id>0x00000119</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysEthernet</cmp> init, <id>0x0000011c</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= System: <cmp>SysProcess</cmp> init, <id>0x0000010e</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpApp</cmp> init, <id>0x00000002</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpAppBP</cmp> init, <id>0x00000073</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpAppForce</cmp> init, <id>0x00000074</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpAsyncMgr</cmp> init, <id>0x0000005f</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChecksum</cmp> init, <id>0x0000000b</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpDevice</cmp> init, <id>0x0000000e</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpEventMgr</cmp> init, <id>0x0000005b</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpFileTransfer</cmp> init, <id>0x0000005e</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIecStringUtils</cmp> init, <id>0x0000007f</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIecTask</cmp> init, <id>0x00000011</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpMonitor</cmp> init, <id>0x00000014</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpMonitor2</cmp> init, <id>0x00000032</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIoDrvC</cmp> init, <id>0x00000066</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIoDrvIec</cmp> init, <id>0x0000005a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIoMgr</cmp> init, <id>0x00000012</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRetain</cmp> init, <id>0x00000017</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRouter</cmp> init, <id>0x00000018</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpSchedule</cmp> init, <id>0x00000019</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpSrv</cmp> init, <id>0x0000001c</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBlkDrvTcp</cmp> init, <id>0x00000030</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBlkDrvUdp</cmp> init, <id>0x00000007</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBinTagUtil</cmp> init, <id>0x00000004</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelMgr</cmp> init, <id>0x00000009</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelServer</cmp> init, <id>0x0000000a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceServer</cmp> init, <id>0x00000016</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCommunicationLib</cmp> init, <id>0x0000000c</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCoreDump</cmp> init, <id>0x00000083</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpIecVarAccess</cmp> init, <id>0x00000060</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpPlcShell</cmp> init, <id>0x00000128</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpTraceMgr</cmp> init, <id>0x00000070</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceClient</cmp> init, <id>0x00000015</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelClient</cmp> init, <id>0x00000008</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAAsyncMan</cmp> init, <id>0x00004007</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAABehaviourModel</cmp> init, <id>0x00004015</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAACallback</cmp> init, <id>0x00004001</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAADTUtil</cmp> init, <id>0x00004013</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAFile</cmp> init, <id>0x00004008</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAMemBlockMan</cmp> init, <id>0x00004003</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAANetBaseServices</cmp> init, <id>0x00004018</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAARealTimeClock</cmp> init, <id>0x00004014</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAASegBufferMan</cmp> init, <id>0x00004019</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAASerialCom</cmp> init, <id>0x00004012</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATick</cmp> init, <id>0x00004009</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATickUtil</cmp> init, <id>0x00004010</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAATypes</cmp> init, <id>0x00004006</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpChannelClientIec</cmp> init, <id>0x0000005d</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpNameServiceClientIec</cmp> init, <id>0x0000011d</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBinTagUtilIec</cmp> init, <id>0x0000005c</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpUserDB</cmp> init, <id>0x00000064</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpUserMgr</cmp> init, <id>0x00000061</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCryptMD5</cmp> init, <id>0x0000006a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCharDevice</cmp> init, <id>0x00000300</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpRasPi</cmp> init, <id>0x00002345</id> <ver>3.5.4.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpBitmapPool</cmp> init, <id>0x00000050</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpDynamicText</cmp> init, <id>0x00000051</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpVisuHandler</cmp> init, <id>0x00000054</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpVisuServer</cmp> init, <id>0x00000057</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpWebServer</cmp> init, <id>0x00000071</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpWebServerHandlerV3</cmp> init, <id>0x00000072</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCAAStorage</cmp> init, <id>0x0000007e</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpAlarmManager</cmp> init, <id>0x0000007c</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpGateway</cmp> init, <id>0x0000000f</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpGwCommDrvTcp</cmp> init, <id>0x00000010</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= <cmp>CmpCodeMeter</cmp> init, <id>0x0000007a</id> <ver>3.5.5.0</ver>
1412029351: Cmp=CM, Class=1, Error=0, Info=7, pszInfo= Dynamic: <cmp>CmpOpenSSL</cmp> init, <id>0x00000033</id> <ver>3.5.5.0</ver>
1412029354: Cmp=CmpBlkDrvUdp, Class=1, Error=0, Info=6, pszInfo= Network interface: <ipaddress>192.168.1.123</ipaddress>, subnetmask <su


Top
   
PostPosted: Wed Oct 01, 2014 5:04 am 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
Hi,

please access the webvisu in your browser and then give me a screenshot of the logger in codesys (if you do at in /tmp/codesyscontol.log - this is only flushed from time to time)

BR
Edwin


You do not have the required permissions to view the files attached to this post.


Top
   
PostPosted: Wed Oct 01, 2014 7:05 am 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Log.


You do not have the required permissions to view the files attached to this post.


Top
   
PostPosted: Wed Oct 01, 2014 7:09 am 
Offline
Site Admin

Joined: Mon Sep 05, 2005 9:42 am
Posts: 2159
hi,
seems to work from logger messages... is that the case where you do not have a connection in the browser?
The error case screenshot is needed.

BR
Edwin


Last edited by Edwin Schwellinger on Wed Oct 01, 2014 9:50 am, edited 1 time in total.

Top
   
PostPosted: Wed Oct 01, 2014 7:15 am 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
No.
I try to send a new log when the problem exists.

Regards


Top
   
PostPosted: Thu Oct 02, 2014 8:14 pm 
Offline

Joined: Thu Sep 18, 2014 12:10 am
Posts: 87
Hi Edwin.

1000 watchdog reboots in 12 hours with sd card read only and usb drive as run time host without problem!

Regards.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 33 posts ]  Go to page Previous 1 2 3 Next

All times are UTC+01:00


Who is online

Users browsing this forum: No registered users and 4 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited