Khalil,
it's possible you're familiar with S7-200 programming and in that case you wouldn't be familiar with the term know_how_protect. But that's because S7-200 is not a real S7, it's a descendant from the Texas-Instruments line bought by Siemens.
But everybody familiar with S7 (the real thing, meaning S7-300/400) must know about know_how_protection, because every single library block included in S7 is know_how_protected by Siemens. It means you can use the block, but you're not allowed to see or change the contents.
Know_how_protection is fairly easy to implement: you create a source file from the block(s) you want to protect and in the block header(s) (every single one of those you want to protect) you add the line KNOW_HOW_PROTECT. Subsequently you recompile the source and voila: the block(s) is (are) protected. Check this simple example:
FUNCTION "Start-Stop" : VOID
TITLE =
AUTHOR : jvdcande
FAMILY : Motor
NAME : StrtStop
VERSION : 0.1
KNOW_HOW_PROTECT
VAR_INPUT
Start : BOOL ;
Stop : BOOL ;
END_VAR
VAR_OUTPUT
Out : BOOL ;
END_VAR
BEGIN
NETWORK
TITLE =
A( ;
O #Start;
O #Out;
) ;
A #Stop;
= #Out;
END_FUNCTION
Removing the protection is as easy as implementing, provided you have the source file at hand: simply remove the line "KNOW_HOW_PROTECT" in the source file, recompile and it's done.
If, on the other hand, you don't have the source file (maybe you want to commit industrial espionage
or your software provider has gone bankrupt and left you with incomplete documentation) then it's not that easy. The only way I know of is indeed S7CanOpener to be found at
Runmode in the Runmode Tools section, as already mentioned.
So, I hope this gives everybody enough info.
Kind regards,
Jean Pierre Vandecandelaere