n
对于OEM设备制造商,如何防止自已的产品被别人抄袭复制是一个重要的问题。虽然在SIMOTION产品中对设备的项目及程序提供了上传保护功能,以防止其他人得到原程序文件。但是若将原CF卡的内容完全拷贝到另一张新的CF卡中,将新卡插入到另一台SIMOTION设备上也可运行程序,因此不能完全杜绝产品被别人抄袭复制的可能性。在此介绍一种解决问题的方法,即通过在程序中增加读取当前使用的SIMOTION 设备及其上使用CF卡的硬件序列号,只有读取的硬件序列号正确才允许设备工作,否则设备不工作,以实现SIMOTION设备与CF卡的绑定。n
1 、函数介绍
使用两个系统函数来读取SIMOTION 设备及其上使用CF卡的硬件序列号:n
l _getMemoryCardId
此功能块用于读取CF卡指定的硬件标识符(硬件序列号) 。
返回值:n
为结构类型变量,变量类型为: StructRetGetMemoryCardId ,说明如下:
结构 | 名称 | 数据类型 | 单位 |
functionResult | 结果 | UDINT | - |
id | 读取的ID | STRING | - |
n
返回值描述:n
16#00000000 读出CF卡指定的硬件标识符完成,无错误。n
16#FFFFFFFD 内部错误。n
16#FFFFFFF8 无效参数。n
参数idType :n
为枚举类型变量,变量类型为:EnumMemoryCardIdType ,默认值为“” Memorycard serial number ”n
l _getDeviceId
此功能块用于读取Simotion CPU指定的硬件标识符(硬件序列号)。
返回值:
为结构类型变量,变量类型为: StructRetGetDeviceId ,说明如下:
结构 | 名称 | 数据类型 | 单位 |
functionResult | 结果 | UDINT | - |
id | 读取的ID | STRING | - |
n
返回值描述:n
16#00000000:读出CPU指定的硬件标识符完成,无错误。n
16#FFFF80C3:信息无效。n
16# 16#FFFF8090:不正确的传输参数。n
16#FFFF8099:内部错误。n
参数idType :n
为枚举类型变量,变量类型为:EnumDeviceIdType ,说明如下:
SERIAL_NUMBER (0) | CPU 序列号 |
HW_TYPE (1) | 模块类型 |
SPECIFIC_NUMBER (2) | 指定的 OEM 号码 |
ORDER_ID (3) | 模块订货号 |
n
2 、程序创建
l 创建程序单元“getmemorycardid”,调用“_getMemoryCardId”系统函数:
n
调用“_getdeviceId”系统函数:
l 将程序分配至BackgroudTask中:n
l 读取的SIMOTION设备及CF卡的硬件序列号:
l 读出当前使用CPU及CF卡的硬件序列号看是否与指定的序列号相一致,如果一致则将标志位“RunConditionOK”置1,此标志位做为设备运行或程序运行的条件:
关键词
SIMOTION,CF 卡
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc328916.html