Porting to LogicLab: Difference between revisions

From Axel Public Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(49 intermediate revisions by the same user not shown)
Line 29: Line 29:
==Porting procedure to LogicLab 5.6.0.x :==
==Porting procedure to LogicLab 5.6.0.x :==
'''Script catalog changes'''
'''Script catalog changes'''
* If any target in your catalog has HTML pages that create or modify global PLC variables (like 'Parameters', 'Status variables', fieldbus configuration, etc...), make sure you have the latest version of the '''CheckGlobalVarsModified()''' function in LogicLab5\template\script.js
* If any target in your catalog has HTML pages that create or modify global PLC variables (like 'Parameters', 'Status variables', fieldbus configuration, etc...), you have to:
- Edit '''CheckGlobalVarsModified()''' function in '''LogicLab5\template\script.js''', and make sure the actual code is
function CheckGlobalVarsModified(group)
{
// se variabili globali già modificate e non salvate non permette l'operazione
if (app.CallFunction("extfunct.IsGlobalVarsModified", group))
{
var msg;
if(group)
msg = app.Translate("Global variables group %1 is modified.\nPlease save before continuing.").replace("%1", group)
else
msg = app.Translate("Global variables have been is modified but not saved.\nPlease save before continuing.")
app.MessageBox(msg, "", MSGBOX.MB_ICONEXCLAMATION)
return false
}
// ulteriore controllo se la dichiarazione testuale IEC è valida
else if (!app.CallFunction("extfunct.IsGlobalVarsIECDeclarationValid", group))
{
var msg;
if(group)
msg = app.Translate("Global variables group %1 has an invalid IEC declaration.\nPlease fix it before continuing.").replace("%1", group)
else
msg = app.Translate("Global variables have an invalid IEC declaration.\nPlease fix it before continuing.")
app.MessageBox(msg, "", MSGBOX.MB_ICONEXCLAMATION)
return false
}
else
return true
}
 
- Get the latest version of the script in '''Common\Script\PLCVars.js''' from [[http://www.axelsw.it/pwiki/pub/PLCVars.js here]]
 
==Porting procedure to LogicLab 5.8.0.x :==
* '''LLMakeCustomVersion.BAT''' must be changed, because internal resource IDs have been revised. Change:
set IDS_AXEL_VERSION=10525
set IDS_CUSTOM_EXT=10529
set IDS_CUSTOM_COPYPASTE=10530
set IDS_CUSTOM_ID=10531
To:
set IDS_AXEL_VERSION=1890
set IDS_CUSTOM_EXT=1893
set IDS_CUSTOM_ID=1895
 
* ISS setup script '''MakeCustomLL.ISS''' must be changed, because now LogicLab uses a new shared DLL
Download it from [[http://www.axelsw.it/pwiki/pub/ToolkitPro1801vc120U.dll here]] and put it in your ''Setup\Shared'' folder.
 
In the ISS script please add under ''[Files]'' section:
 
Source: Shared\ToolkitPro1801vc120U.dll; DestDir: {sys}; Flags: sharedfile
 
==Porting procedure to LogicLab 5.10.0.x :==
 
* '''ATCServer.exe''' is no longer present and not distributed in the LogicLab_xxx_Redist.zip.
Please remove any occurrence of "ATCServer" from the ISS script file.
 
==Porting procedure to LogicLab 5.12.0.x :==
 
* All files generated by the compilation are now saved inside a folder named "Build". All the targets that '''download the symbol table''' (tipically LLExec) will need some modifications to the scripts in the catalog
 
'''LLExec.js''' (or similar, maybe with a different name): add the functions
 
function GetBuildDir()
{
var prjDir = m_fso.GetParentFolderName(app.CallFunction("logiclab.get_ProjectPath")) + "\\";
if (m_fso.FolderExists(prjDir + "Build"))
return prjDir + "Build\\";  // le nuove versioni di LogicLab hanno la sottocartella "build" con tutti gli output di compilazione
else
return prjDir;  // vecchie versioni salvano tutto nella cartella di progetto
}
function GetSymbolTableFilename()
{
var prjpath = app.CallFunction("logiclab.get_ProjectPath");
var symtab = GetBuildDir() + "\\" + m_fso.GetBaseName(prjpath) + ".sym.xml";
return symtab;
}
function GetSymbolTableNameOnTarget()
{
return "PLC.sym.xml";
}
 
'''download_cfg.js''' (or similar): change the PreDownload() function, from
 
if (downloadSymTab)
{
// la symbol table ha il path completo del progetto con estensione .sym.xml
var prjpath = app.CallFunction("logiclab.get_ProjectPath")
var symtab = m_fso.GetParentFolderName(prjpath) + "\\" + m_fso.GetBaseName(prjpath) + ".sym.xml"
var result = app.CallFunction("GDBFileTransfer.GDBCopyFileToDevice", devlink, symtab, "PLC.sym.xml")
app.PrintMessage("Downloading Symbol table : " + (result ? "OK" : "FAILED"))
}
to
if (downloadSymTab)
{
var symtab = GetSymbolTableFilename();
var result = app.CallFunction("GDBFileTransfer.GDBCopyFileToDevice", devlink, symtab, GetSymbolTableNameOnTarget())
app.PrintMessage("Downloading Symbol table : " + (result ? "OK" : "FAILED"))
}
 
'''ISS changes'''
* Download this package [[http://www.axelsw.it/pwiki/pub/LogicLab_5_12_update.zip here]] and extract it on your ''Setup\Shared'' folder.
 
* Add these lines in the ISS file '''at the very beginning''' of the [Files] section
Source: Shared\redist\VC++\vc_redist.x86.exe; DestDir: {tmp}; Flags: deleteafterinstall; AfterInstall: RunSetup('Installing Visual C++ Redistributable...', '/install /quiet /norestart')
 
* Add these lines in the ISS file [Files] section
 
;-------------RESOURCE FILES FOR PROPERTIES VIEW-----------------------------------------------------
Source: "..\{#LLSrcDir}\htmlObjInfo.js"; DestDir: "{app}\{#LLDestDir}"; Flags: ignoreversion;
 
;-------------SHARED COMPONENTS----------------------------------
Source: shared\AlCatalogManager5.dll; DestDir: {cf}\AlComponents; Flags: regserver sharedfile uninsnosharedfileprompt
Source: Shared\ToolkitPro1850vc150U.dll; DestDir: {sys}; Flags: sharedfile
 
 
* Add this procedure on the [Code] section
procedure RunSetup(msg : String; params : String);
var
  ResultCode: Integer;
  begin
  if (Exec(ExpandConstant(CurrentFileName), params, <nowiki>''</nowiki>, SW_SHOW, ewWaitUntilTerminated, ResultCode)) then
    begin
    // handle success if necessary; ResultCode contains the exit code
    end
    else begin
        MsgBox('Error '+ msg + '. Please retry or contact system administrator. '+ SysErrorMessage(ResultCode), mbError, MB_OK);
        WizardForm.Close;
    // handle failure if necessary; ResultCode contains the error code
    end;
end;
 
==Porting procedure to LogicLab 5.14.0.x :==
* If you are using old TGT files (not XML format) and using task periods expressed in us, it is necessary to prefix the constant with LTIME specifier: e.g. lt#500us
 
==Porting procedure to LogicLab 5.16.0.x :==
* Nothing to be done from previous branch
 
==Porting procedure to LogicLab 5.18.0.x :==
* Nothing to be done from previous branch
 
==Porting procedure to LogicLab 5.20.0.x :==
* Nothing to be done from previous branch
 
==Porting procedure to LogicLab 5.22.0.x :==
* Nothing to be done from previous branch
 
==Porting procedure to LogicLab 6.0.0.x :==
 
'''IMPORTANT:''' Those steps are strictly required because LogicLab6 has a different file and folder organization (the folder name inside the redist has changed from LogicLab5 to LogicLab6)
 
'''ISS changes'''
* modify the application name (from LogicLab5 into LogicLab) in ISS (#define NameApp)
* modify the folder name (from LogicLab5 into LogicLab) in the ISS file (#define LLSrcDir)
* Remove the old version (LogicLab5) in  the ISS file with InstallDelete, if desired
[InstallDelete]
Name: {app}\LogicLab5; Type: filesandordirs
 
'''LLMakeCustomVersion.bat changes'''
* modify the path (from LogicLab5 into LogicLab) (set BUILDPATH)
 
'''PCT catalog changes'''
* Modify  the PCT file of every target of your catalog if they have any reference, e.g. "''<loadExternalTemplate>..\LogicLab5\templates\Catalog.pct</loadExternalTemplate>''" into "''<loadExternalTemplate>%APPPATH%\templates\Catalog.pct</loadExternalTemplate>''"
* Modify the relative path of system libraries in the catalog, e.g. "''<library>..\..\LogicLab5\Libraries\Standard.pll</library>''" into "''<library>%APPPATH%\Libraries\Standard.pll</library>''"
 
 
'''LogicLab is now compiled using Visual Studio 2022.'''
 
* Download last Microsoft Visual C++ runtime redist from [[https://aka.ms/vs/17/release/vc_redist.x86.exe here]] and overwrite the one you have in the ''Setup\Shared\redist\VC++'' folder of your setupkit.
* Download latest version of shared components from [[https://axelsoftware.sharepoint.com/:u:/s/AXELSrl/EQ893dNyD1JFv9QTyokYhQgBkfRC-06-CzcrAGUz33BPdw?e=I0OX37 here]] and communication libraries from your customer page and update all binaries on your ''Setup\Shared'' folder.
* Download latest version of ''GDBFileTransfer.dll'' and ''LLScanClientLib.dll'' from [[https://axelsoftware.sharepoint.com/:u:/s/AXELSrl/ERUTWgsmuK5Pr42sFQxqYRgBqwidHllKOKNon6wJLEO9tQ?e=y9fk7l here]] and overwrite the ones you have in the ''Templates'' folder of your setupkit.
* Add these lines in the ISS file [Files] section:
;-------------SHARED COMPONENTS----------------------------------
Source: shared\AlCatalogManager6.dll; DestDir: {cf}\AlComponents; Flags: regserver sharedfile uninsnosharedfileprompt
Source: Shared\ToolkitPro2210vc170U.dll; DestDir: {sys}; Flags: sharedfile
Source: Shared\AxEditGrid5.ocx; DestDir: {commoncf}\AlComponents; Flags: regserver sharedfile uninsneveruninstall
* Search in all your catalog html files the old GUID of ''AxEditGrid4.ocx'' component and replace it with the new one of ''AxEditGrid5.ocx''
OLD GUID: '''D62247DB-3391-4236-936F-80EF7F4EA476'''
NEW GUID: '''7E61CABD-EB07-425A-9315-B6B2D454BAC1'''
 
==Porting procedure to LogicLab 6.1.0.x BETA :==
* Nothing to be done from previous branch


[[Category:LogicLab]]
[[Category:LogicLab]]

Latest revision as of 18:29, 20 September 2023

Porting procedure from LogicLab 4 to LogicLab 5.0.0.x :

WARNING: Those steps are strictly required because LogicLab5 has a different file and folder organization (the folder name inside the redist has changed from LogicLab4 to LogicLab5, and the executable name from LogicLab4.exe to LogicLab.exe)

ISS changes

  • modify the application name (da LogicLab4 a LogicLab5) in ISS (#define NameApp)
  • modify the folder name (from LogicLab4 to LogicLab5) in the ISS file (#define LLSrcDir)
  • modify the executable file name (from LogicLab4.exe to LogicLab.exe) in the ISS file (#define LLNameExe)
  • Remove the old version (LogicLab4) in the ISS file with InstallDelete, if desired
[InstallDelete]
Name: {app}\LogicLab4; Type: filesandordirs
  • Add in the ISS file the copy of the LogicLab\styles folder
Source: ..\{#LLSrcDir}\Styles\*.*; DestDir: {app}\{#LLDestDir}\Styles; Flags: ignoreversion
  • Remove the AlUIExt.dll installation, not existing anymore
Source: ..\{#LLSrcDir}\AlUIExt.dll; DestDir: {app}\{#LLDestDir}; Flags: ignoreversion

LLMakeCustomVersion.bat changes

  • modify the path (from LogicLab4 to LogicLab5) (set BUILDPATH)
  • modify the executable file name (from LogicLab4.exe to LogicLab.exe) in the CustomVersions script (set SRC), in the :Init function

PCT catalog changes

  • Modify the PCT file of every target of your catalog if they have any reference <loadExternalTemplate> that points to LogicLab4 in LogicLab5
  • Modify the relative path of system libraries in the catalog, e.g. "<library>..\..\LogicLab5\Libraries\Standard.pll</library>"
  • Modify the templates\LogicLab.pct file substituting <extension><dll> LogicLab4.exe in %APPEXENAME%

PageLab changes

  • If you have Pagelab on your suite, modify the PLMakeCustomVersion.bat file and updating the NAMELLC and LOGICLAB_PATH variables

Porting procedure to LogicLab 5.6.0.x :

Script catalog changes

  • If any target in your catalog has HTML pages that create or modify global PLC variables (like 'Parameters', 'Status variables', fieldbus configuration, etc...), you have to:

- Edit CheckGlobalVarsModified() function in LogicLab5\template\script.js, and make sure the actual code is

function CheckGlobalVarsModified(group)
{
	// se variabili globali già modificate e non salvate non permette l'operazione
	if (app.CallFunction("extfunct.IsGlobalVarsModified", group))
	{
		var msg;		
		if(group)
			msg = app.Translate("Global variables group %1 is modified.\nPlease save before continuing.").replace("%1", group)
		else
			msg = app.Translate("Global variables have been is modified but not saved.\nPlease save before continuing.")
			
		app.MessageBox(msg, "", MSGBOX.MB_ICONEXCLAMATION)
		return false
	}
	// ulteriore controllo se la dichiarazione testuale IEC è valida
	else if (!app.CallFunction("extfunct.IsGlobalVarsIECDeclarationValid", group))
	{
		var msg;		
		if(group)
			msg = app.Translate("Global variables group %1 has an invalid IEC declaration.\nPlease fix it before continuing.").replace("%1", group)
		else
			msg = app.Translate("Global variables have an invalid IEC declaration.\nPlease fix it before continuing.")
			
		app.MessageBox(msg, "", MSGBOX.MB_ICONEXCLAMATION)
		return false
	}	
	else
		return true
}

- Get the latest version of the script in Common\Script\PLCVars.js from [here]

Porting procedure to LogicLab 5.8.0.x :

  • LLMakeCustomVersion.BAT must be changed, because internal resource IDs have been revised. Change:
set IDS_AXEL_VERSION=10525
set IDS_CUSTOM_EXT=10529
set IDS_CUSTOM_COPYPASTE=10530
set IDS_CUSTOM_ID=10531

To:

set IDS_AXEL_VERSION=1890
set IDS_CUSTOM_EXT=1893
set IDS_CUSTOM_ID=1895
  • ISS setup script MakeCustomLL.ISS must be changed, because now LogicLab uses a new shared DLL

Download it from [here] and put it in your Setup\Shared folder.

In the ISS script please add under [Files] section:

Source: Shared\ToolkitPro1801vc120U.dll; DestDir: {sys}; Flags: sharedfile

Porting procedure to LogicLab 5.10.0.x :

  • ATCServer.exe is no longer present and not distributed in the LogicLab_xxx_Redist.zip.

Please remove any occurrence of "ATCServer" from the ISS script file.

Porting procedure to LogicLab 5.12.0.x :

  • All files generated by the compilation are now saved inside a folder named "Build". All the targets that download the symbol table (tipically LLExec) will need some modifications to the scripts in the catalog

LLExec.js (or similar, maybe with a different name): add the functions

function GetBuildDir()
{
	var prjDir = m_fso.GetParentFolderName(app.CallFunction("logiclab.get_ProjectPath")) + "\\";
	if (m_fso.FolderExists(prjDir + "Build"))
		return prjDir + "Build\\";  // le nuove versioni di LogicLab hanno la sottocartella "build" con tutti gli output di compilazione
	else
		return prjDir;  // vecchie versioni salvano tutto nella cartella di progetto
}

function GetSymbolTableFilename()
{
	var prjpath = app.CallFunction("logiclab.get_ProjectPath");
	var symtab = GetBuildDir() + "\\" + m_fso.GetBaseName(prjpath) + ".sym.xml";
	return symtab;
}

function GetSymbolTableNameOnTarget()
{
	return "PLC.sym.xml";
}

download_cfg.js (or similar): change the PreDownload() function, from

	if (downloadSymTab)
	{
		// la symbol table ha il path completo del progetto con estensione .sym.xml
		var prjpath = app.CallFunction("logiclab.get_ProjectPath")
		var symtab = m_fso.GetParentFolderName(prjpath) + "\\" + m_fso.GetBaseName(prjpath) + ".sym.xml"
		
		var result = app.CallFunction("GDBFileTransfer.GDBCopyFileToDevice", devlink, symtab, "PLC.sym.xml")
		app.PrintMessage("Downloading Symbol table : " + (result ? "OK" : "FAILED"))
	}

to

	if (downloadSymTab)
	{
		var symtab = GetSymbolTableFilename();
		
		var result = app.CallFunction("GDBFileTransfer.GDBCopyFileToDevice", devlink, symtab, GetSymbolTableNameOnTarget())
		app.PrintMessage("Downloading Symbol table : " + (result ? "OK" : "FAILED"))
	}

ISS changes

  • Download this package [here] and extract it on your Setup\Shared folder.
  • Add these lines in the ISS file at the very beginning of the [Files] section
Source: Shared\redist\VC++\vc_redist.x86.exe; DestDir: {tmp}; Flags: deleteafterinstall; AfterInstall: RunSetup('Installing Visual C++ Redistributable...', '/install /quiet /norestart')
  • Add these lines in the ISS file [Files] section
;-------------RESOURCE FILES FOR PROPERTIES VIEW-----------------------------------------------------
Source: "..\{#LLSrcDir}\htmlObjInfo.js"; DestDir: "{app}\{#LLDestDir}"; Flags: ignoreversion;
;-------------SHARED COMPONENTS----------------------------------
Source: shared\AlCatalogManager5.dll; DestDir: {cf}\AlComponents; Flags: regserver sharedfile uninsnosharedfileprompt
Source: Shared\ToolkitPro1850vc150U.dll; DestDir: {sys}; Flags: sharedfile


  • Add this procedure on the [Code] section
procedure RunSetup(msg : String; params : String);
var
 ResultCode: Integer;
 begin
  if (Exec(ExpandConstant(CurrentFileName), params, '', SW_SHOW, ewWaitUntilTerminated, ResultCode)) then
   begin
    // handle success if necessary; ResultCode contains the exit code
   end
   else begin
        MsgBox('Error '+ msg + '. Please retry or contact system administrator. '+ SysErrorMessage(ResultCode), mbError, MB_OK);
        WizardForm.Close;
    // handle failure if necessary; ResultCode contains the error code
   end;
end;

Porting procedure to LogicLab 5.14.0.x :

  • If you are using old TGT files (not XML format) and using task periods expressed in us, it is necessary to prefix the constant with LTIME specifier: e.g. lt#500us

Porting procedure to LogicLab 5.16.0.x :

  • Nothing to be done from previous branch

Porting procedure to LogicLab 5.18.0.x :

  • Nothing to be done from previous branch

Porting procedure to LogicLab 5.20.0.x :

  • Nothing to be done from previous branch

Porting procedure to LogicLab 5.22.0.x :

  • Nothing to be done from previous branch

Porting procedure to LogicLab 6.0.0.x :

IMPORTANT: Those steps are strictly required because LogicLab6 has a different file and folder organization (the folder name inside the redist has changed from LogicLab5 to LogicLab6)

ISS changes

  • modify the application name (from LogicLab5 into LogicLab) in ISS (#define NameApp)
  • modify the folder name (from LogicLab5 into LogicLab) in the ISS file (#define LLSrcDir)
  • Remove the old version (LogicLab5) in the ISS file with InstallDelete, if desired
[InstallDelete]
Name: {app}\LogicLab5; Type: filesandordirs

LLMakeCustomVersion.bat changes

  • modify the path (from LogicLab5 into LogicLab) (set BUILDPATH)

PCT catalog changes

  • Modify the PCT file of every target of your catalog if they have any reference, e.g. "<loadExternalTemplate>..\LogicLab5\templates\Catalog.pct</loadExternalTemplate>" into "<loadExternalTemplate>%APPPATH%\templates\Catalog.pct</loadExternalTemplate>"
  • Modify the relative path of system libraries in the catalog, e.g. "<library>..\..\LogicLab5\Libraries\Standard.pll</library>" into "<library>%APPPATH%\Libraries\Standard.pll</library>"


LogicLab is now compiled using Visual Studio 2022.

  • Download last Microsoft Visual C++ runtime redist from [here] and overwrite the one you have in the Setup\Shared\redist\VC++ folder of your setupkit.
  • Download latest version of shared components from [here] and communication libraries from your customer page and update all binaries on your Setup\Shared folder.
  • Download latest version of GDBFileTransfer.dll and LLScanClientLib.dll from [here] and overwrite the ones you have in the Templates folder of your setupkit.
  • Add these lines in the ISS file [Files] section:
;-------------SHARED COMPONENTS----------------------------------
Source: shared\AlCatalogManager6.dll; DestDir: {cf}\AlComponents; Flags: regserver sharedfile uninsnosharedfileprompt
Source: Shared\ToolkitPro2210vc170U.dll; DestDir: {sys}; Flags: sharedfile
Source: Shared\AxEditGrid5.ocx; DestDir: {commoncf}\AlComponents; Flags: regserver sharedfile uninsneveruninstall
  • Search in all your catalog html files the old GUID of AxEditGrid4.ocx component and replace it with the new one of AxEditGrid5.ocx
OLD GUID: D62247DB-3391-4236-936F-80EF7F4EA476
NEW GUID: 7E61CABD-EB07-425A-9315-B6B2D454BAC1

Porting procedure to LogicLab 6.1.0.x BETA :

  • Nothing to be done from previous branch