SF1011是一个能够对文件夹和文件进行开、关、读、写等操作的异步文件组件,通过该组件可以对工智机内的文件夹和文件执行一系列的操作。
下表概述了各个产品组件
产品组件 | 描述说明 |
---|---|
cmpsysfile_0.0.1-rc.3_amd64.deb | 异步文件的ACP客户端组件 |
asyncfile-service_0.0.3_amd64.deb | 异步文件的ACP服务端组件 |
SysFilePLC.library | PLC工程库文件 |
SysFileLib.project | PLC快速启动工程 |
Sinsegye.Ide.DeviceManager_0.0.1.9 | 工智机设备管理系统 |
安装要求
中科时代出厂的工智机;
个人电脑安装中科时代IDE MetaFacture软件;
工智机设备管理系统Sinsegye.Ide.DeviceManager
安装过程
1、安装异步文件的ACP客户端、服务端和ACP服务组件
上传deb包到工智机Linux环境的/home/sinsegye目录下
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
sudo dpkg -i cmpsysfile\_0.0.1-rc.3\_amd64.deb
sudo dpkg -i asyncfile-service\_0.0.3\_amd64.deb
sudo dpkg -i libacp\_0.2.0-rc.3\_amd64.deb
sudo vim /usr/local/etc/SinsegyeRTE/SinsegyeRTE.cfg
[ComponentManager]
Component.0=CmpCanBusUtils
Component.1=CmpLedManager
Component.2=CmpSinsegyeLibs
Component.3=retainDeamon
Component.4=SE4100&
Component.5=sf1011\_sysfile
sudo systemctl restart sinsegyerte.service
sudo systemctl start asyncfile-service.service
sudo systemctl status asyncfile-service.service
2、IDE侧部署SF1011_SysFile的library
MetaFacture中点击最上面的菜单栏 ”工具“ -- ”库存储“ ;
弹出的对话窗中点击”安装“ -- 选中SysFileLib.library -- 点击“打开”;
工程中双击“库管理器” -- “添加库” --点击杂项 --双击“SysFileLib” ,加载库完成
更新安装
1、升级异步文件的ACP客户端、服务端
上传升级版deb包到工智机Linux环境的/home/sinsegye目录下,上传方法参考附录;
上传完成后在工智机上执行命令安装(参考下方截图,如果模块文件名发生变化则命令行中的文件名做相应更改)
sudo dpkg -i cmpsysfile\_0.0.1-rc.3\_amd64.deb
sudo dpkg -i asyncfile-service\_0.0.3\_amd64.deb
sudo systemctl restart sinsegyerte.service
2、升级IDE侧SF1011_SysFile的library
MetaFacture中点击最上面的菜单栏 ”工具“ -- ”库存储“ ;
弹出的对话窗中点击”安装“ -- 选中SysFileLib.library -- 点击“打开”;
工程中双击“库管理器” -- “添加库” --点击杂项 --双击“SysFileLib” ,加载库完成;
卸载过程
1、卸载异步文件的ACP客户端、服务端
sudo dpkg -r cmpsysfile\_0.0.1-rc.3\_amd64.deb
sudo dpkg -r asyncfile-service\_0.0.3\_amd64.deb
sudo vim /usr/local/etc/SinsegyeRTE/SinsegyeRTE.cfg
sudo systemctl restart sinsegyerte.service
2、卸载IDE侧SF1011_SysFile的library
MetaFacture界面点击“工具” -- “库存储”
对话框中选中安装的SysFileLib库,点击“卸载”
一、本例软、硬件配置
硬件: | 软件: |
---|---|
1.SX20 | 1.MetaFacutre V1.0.6.3 |
2.Win11PC | 2. Sinsegye.Ide.DeviceManager0.0.1.9 |
二、本例实验操作步骤
1.实验要求
a.工智机成功安装相关组件
b.MetaFacture成功安装库文件SysFileLib.library
可以参考产品组件中的SysFileLib.project项目来进行本次实验
2.实验内容
DirOpen
打开一个目录,返回的句柄后续使用的时候都需要用到,如果需要获得目录内的条目,需要调用DirList,一个一个获得
DirClose
关闭一个目录
DirList
读取目录条目,每次读取一条,读取的内容存储在结构体中
设置的机制是每次读取只会读取到一个目录信息(如果需要读取到所有的就得遍历)
DirCreate
创建一个子目录
DirCopy
拷贝目录,可以通过参数指定是否拷贝子目录或者是否覆盖
xRecursive (递归复制)
TRUE: 复制所有子目录及其内容
FALSE: 不复制子目录
xOverWrite (覆盖文件)
TRUE: 会覆盖已存在的文件
FALSE: 保留已存在的文件不变
xRecursive=false xOverWrite=false
xRecursive=true xOverWrite=false
xRecursive=true xOverWrite=true
DirRename
重命名一个目录(不建议用此功能移动文件,可以使用Rename)
DirRemove
删除一个目录(可能有文件已经被Open打开)
目录中有内容且不选择xRecursive=true就会提示错误NOT_EMPTY
FileOpen
打开一个文件,生成一个句柄,可以用于Read、Write、Close(xExclusive参数codesys不支持)
打开后返回的句柄数字很大,但结果还是正常的
MREADPLUS模式下关闭才会保留文本中原有的数据,而默认的MODE会覆盖导致数据为空
FileClose
关闭文件句柄
FileRead
读取数据到buffer中
FileWrite
将buffer写入文件中
打开文件(模式一定要选mreadplus,否则无法写入,会报错)
写入
关闭
成功写入
FileCopy
拷贝文件,如果不存在则创建,存在根据参数可以选择覆盖
如果文件已存在并且不选择覆盖,那么会返回对应的error code;如果文件已存在并且选择覆盖,那么就会对文件进行覆盖的操作
已存在报错
成功
FileDelete
删除文件,如果Open也会被删除
FileRename
重命名文件,也可以用于移动文件,不能用于移动目录
FileSetPos
移动当前打开文件的读写位置
在打开文件以后设置POS
FileGetPos
读取当前打开文件的读写位置
基于上述的SETPOS以后再次GET获取到一致的POS
FileEOF
用于判断当前读写位置是否已经到文件末尾
只有在调用完FileRead功能块以后再次调用该接口才会返回EOF的状态,需要配合FileRead一起使用
FileFlush
强制将缓冲区内的数据写入到磁盘中
默认情况下write以后数据并没有直接进入(还处于缓冲区中)使用该功能块后不需要close也就立马看到写入的数据
FileGetAttribute
获得当前打开文件的文件属性,文件属性的定义位于枚举变量ATTRIB
FileGetSize
获取文件名指向文件的文件大小
FileGetTime
获取文件名指向文件的最新修改日期
备注:默认获取的就是UTC时间,如果需要本地时间则需要进行手动做时间的转换
证明:使用codesys的CAA File功能测试结果是一致的