如何使用预定义数据类型UDT1“FILE_DB_HEADER”进行S7-300和S7-400的FTP通信
说明
S7-300和S7-400可以通过Advanced/IT以太网CP卡使用多种FTP功能。可以在以下三种模式中选择: - FTP客户端:
通过“FTP_CMD”指令块触发FTP指令。CP卡访问远程FTP服务器。 - 使用CPU数据的FTP服务器:
远程FTP客户端访问CP,CP将文件访问转发到CPU。例如,一个文件被存储在CP中,之后CP会将文件内容保存在CPU中的相应数据块中。 - 使用CP文件系统的FTP服务器:
远程FTP客户端访问CP。文件只被存储在CP的文件系统中而不会转发到CPU。
除了最后一个模式之外的所有模式必须使用CPU中的一个指定结构的数据块。在每个文件DB的开始必须使用预定义的数据类型UDT1 “FILE_DB_HEADER”,该数据类型可以从SIMATIC_NET_CP指令库中找到。 预定义的数据类型UDT1 “FILE_DB_HEADER”的结构
表格 01列出了如下内容: - 预定义的数据类型UDT1 “FILE_DB_HEADER”的参数。
- 如何使用这些参数。
- 这些参数如何通过系统自动设置。
参数 | 说明 | EXIST | 该位指示用户数据是否包含有效值。使用CPU数据的FTP服务器: - 只有当EXIST=1时,FTP指令 “FTP_RETRIEVE” 处理作业。
- FTP指令“FTP_DELETE”设置EXIST=0。
- FTP指令“FTP_STORE”设置EXIST=1。
| LOCKED | 该位保护数据块不被访问。使用CPU数据的FTP服务器: - 只有当LOCKED=0时“FTP_STORE” 和 “FTP_RETRIEVE”才能处理作业。
- “FTP_STORE” 和 “FTP_RETRIEVE”在操作过程中设置"FTP_STORE"LOCKED=1,在操作完成后设置LOCKED=0 。
为避免数据不一致,获取数据之前,在用户程序中始终关注LOCKED位的状态。如果在DB块中获取数据,处理如下: - 确保LOCKED=0。
- 设置LOCKED=1(如果WRITE_ACCESS=1可以设置WRITE_ACCESS=0)
| NEW | 该位指示文件DB中的数据已经通过外部方式修改。通过使用CPU数据的FTP服务器: - 只有当NEW=0时“FTP_STORE”处理作业。
- 当作业完成时“FTP_STORE”设置NEW=1。
NEW不会自动复位。必须在用户程序中手动复位该位以激活新的外部访问。 | WRITE_ACCESS | 用于远程FTP客户端的写访问。使用CPU数据的FTP服务器: - 当WRITE_ACCESS=0,远程FTP客户端无写访问权限(只有“FTP_RETRIEVE”被激活)。
- 当WRITE_ACCESS=0,远程FTP客户端有写访问权限(“FTP_STORE“和“FTP_DELETE”被激活)。
| ACT_LENGTH | 用户数据的实际长度。当EXIST=1时该值有效。使用CPU数据的FTP服务器: - 当 “FTP_STORE”完成时ACT_LENGTH更新。
- “FTP_DELETE”只设置EXIST=0。 ACT_LENGTH不会发生变化,因此当EXIST=0时该值无效。
| MAX_LENGTH | 用户数据的最大长度:DB的长度减去20字节的预定义数据类型UDT1 “FILE_DB_HEADER”的长度。在组态DB时设置最大数据长度。 | FTP_REPLY_CODE | 该值只在FTP客户端模式时有效。FTP服务器的 check-back信号存储在该值中;例如在“FTP_RETRIEVE” 或 “FTP_STORE”的情况下。 | DATE_TIME | 最后一次对文件进行修改的日期和时间。仅当EXIST=1时该值有效。使用CPU数据的FTP服务器: - 当 "FTP_STORE" 完成时DATE_TIME更新。
- “FTP_DELETE”只设置EXIST=0。DATE_TIME不会发生变化,因此当EXIST=0时该值无效。
如果CP的时间延迟功能激活,DATE_TIME的输入值即为延迟时间。
如果CP的时间延迟功能没有被激活,输入的是一个相对时间。时间参考点是CP卡的启动时间。
|
|