S7协议抓包分析(附pcap数据包) |
您所在的位置:网站首页 › 西门子plc通信协议 › S7协议抓包分析(附pcap数据包) |
一、S7协议概述
1、S7协议简介
S7comm(S7 通信)是西门子专有协议,可在西门子 S7-300/400 系列的可编程逻辑控制器 (PLC) 之间运行。它用于 PLC 编程、PLC 之间的数据交换、从 SCADA(监控和数据采集)系统访问 PLC 数据以及诊断目的。 S7comm 数据作为 COTP 数据包的有效载荷出现,第一个字节总是 0x32 作为协议标识符。 要建立与 S7 PLC 的连接,有 3 个步骤: 通过 TCP 端口 102 连接到 PLC;在 ISO 层连接(COTP 连接请求);在 S7comm 层连接(s7comm.param.func = 0xf0,Setup 通信);步骤 1:使用 PLC/CP 的 IP 地址。 步骤 2:用作两个字节长度的目标 TSAP。目标 TSAP 的第一个字节编码通信类型(1=PG,2=OP)。目标 TSAP 的第二个字节编码机架和插槽号:这是 PLC CPU 的位置。插槽编号在位 0-4 中编码,机架编号在位 5-7 中编码。 步骤 3:用于协商 S7comm 的具体细节(如 PDU 大小)。 2、S7协议报文头解析1. TPKT协议 TPKT协议是一个传输服务协议,它为上层的COPT和下层TCP进行了过渡。我们常用的RDP协议(remote desktop protocol,windows的远程桌面协议)也是基于TPKT的,TPKT的默认TCP端口为102(RDP为3389),其实它本身为payload增加的数据并不多,主要就是以下几个: version,1byte,表明版本信息;reserved,1byte,保留;length,2byte,包括payload和这三部分在内的总长度;2. COTP COTP协议的全称是Connection-Oriented Transport Protocol,即面向连接的传输协议,从这个名字就可以看出,它的传输必然是依赖于连接的,所以在传输数据前必然有类似TCP握手建立链接的操作。 这里wireshark为我们标注出了CR和CC,后面的COTP包都是DT,这里的CR和CC其实分别是connect request和connet confirm的,也就是建立连接的过程,之后连接建立成功后,发送DT包,也就是data,是在发送数据。 接下来我们看一下COTP的连接包: 第一部分: 包含:length、PDU type、DST reference、SRC reference length :标识长度(但是length这个标识位不计入长度) PDU type:标识类型,常见的值有: 0x01: ED Expedited Data,加急数据;0x02: EA Expedited Data Acknowledgement,加急数据确认;0x04: UD,用户数据;0x05: RJ Reject,拒绝;0x06: AK Data Acknowledgement,数据确认;0x07: ER TPDU Error,TPDU错误;0x08: DR Disconnect Request,断开请求;0x0C: DC Disconnect Confirm,断开确认;0x0D: CC Connect Confirm,连接确认;0x0E: CR Connect Request,连接请求;0x0F: DT Data,数据传输;DST reference:目标标识。 SRC reference:源标识。 第二部分(option): 可以看到在wireshark中将这部分(1个byte拆成了前四位和后两位),其中: 前四位标识class,也就是标识类别;倒数第二位对应Extended formats,是否使用拓展样式;倒数第一位对应No explicit flow control,是否有明确的指定流控制;第三部分(parameter): 分为三部分:parameter code、parameter length、data。 parameter code:标识类型,主要有: 0xc0,tpdu的size,tpdu即传送协议数据单元,也就是传输的数据的大小;0xc1,src-tsap (源设备号);0xc2,dst-tsap (同上) parameter length:长度 data:对应数据COPT功能包: 可以看到COTP功能包的PDU type为0X0f,只有三部分:length,type,opt。 以上便是TPKT和COTP协议的解析过程。 3、S7COMMS7Comm数据作为COTP数据包的有效载荷,第一个字节总是0x32作为协议标识符。 S7Comm协议包含三部分: HeaderParameterData根据实现的功能不同,S7comm协议的结构会有所不同。 1. Header部分 在Header中最重要的字段就是ROSCTR,它决定了后续参数的结构。ROSCTR的类型常见有以下值: 0x01 - JOB(Request: job with acknowledgement):作业请求。由主设备发送的请求(例如,读/写存储器,读/写块,启动/停止设备,设置通信);0x02 - ACK(acknowledgement without additional field):确认响应,没有数据的简单确认(未遇到过由S7 300/400设备发送得);0x03 - ACK_DATA(Response: acknowledgement with additional field):确认数据响应,这个一般都是响应JOB的请求;0x07 - USERDATA:原始协议的扩展,参数字段包含请求/响应ID(用于编程/调试,读取SZL,安全功能,时间设置,循环读取...);2. Parameter部分 Parameter的第一个字段为function,根据Header中ROSCTR的类别和Parameter中function的不同,parameter的结构,目的也会有所不同。 下面根据不同的功能码(function的值)讲解parameter的字段的构成: 0XF0(建立通信)建立通信在每个会话开始时被发送,然后可以交换任何其他消息。它用于协商ACK队列的大小和最大PDU长度,双方声明它们的支持值。ACK队列的长度决定了可以同时启动而不需要确认的并行作业的数量。PDU和队列长度字段都是大端。 当PDU类型为Job(ROSCTR的值为0x01),function为0xf0时,Paramter的结构为: 具体的Parameter结构,如下: 1 (Unsigned integer, 1 byte): Parameter part: Reserved byte in communication setup pdu,保留字节;2 (Unsigned integer, 2 bytes): Max AmQ (parallel jobs with ack) calling;3 (Unsigned integer, 2 bytes): Max AmQ (parallel jobs with ack) called;4 (Unsigned integer, 2 bytes): Parameter part: Negotiate PDU length。协商PDU长度;从响应包可以看出ack队列为1,PDU最大长度为240(不同的function的值,parameter的结构不一样)。 0x04(读取值)当PDU类型为Job,function为0x04时,Parameter的结构为: 这三层不用管由计算机自行完成 重点是看S7comm这一层。 功能码附录: 0x00 CPU services CPU服务; 0xf0 Setup communication 建立通信; 0x04 Read Var 读取值; 0x05 Write Var 写入值; 0x1a Request download 请求下载; 0x1b Download block 下载块; 0x1c Download ended 下载结束; 0x1d Start upload 开始上传; 0x1e Upload 上传; 0x1f End upload 上传结束; 0x28 PI-Service 程序调用服务; 0x29 PLC Stop 关闭PLC; S7协议一般具有三层 header、parameter、data 根据事先功能不同,协议结构会有所不同。 1、0xF0 建立通信发送包: 回包: 红框内的与发送的一样不做描述了: Byte[10] 00 为错误类型;0x00 No error 没有错误;0x81 Application relationship 应用关系;0x82 Object definition 对象定义;0x83 No resources available 没有可用资源;0x84 Error on service processing 服务处理中错误;0x85 Error on supplies 请求错误;0x87 Access error 访问错误;Byte[11] 00 为错误码,最后会附录一下全部错误码;Header头地方与其他都较为一致,可自行对比,不在描述了。 重点是Parameter这个地方: Data部分: SZL部分: 前四位为操作的对象是什么 0000 为CPU 1100为cp 1000为fm 0100为im。 中间0000 0000 0000 0000是wireshark解析错了按照官方的应该为四位后八位,表明的是局部列表的序号,我们只需要关注最后两位就行(0x00)。 下面是各类的序号图: 回包: Header头部不做描述了,与之前都相同的。 Data部分: 后面的PDU就不在分析了都是做读取相关类的相关信息、只不过是指定的局部列表不同、index不同罢了。 3、0x04 读数据操作Header头部,与之前都一样的不再描述了。 Parameter,参数部分。 Item部分: 图示整体解析一下: 回包: Header部分: 除了红框内的其他都与发包一致。 Error class 即错误类型;Error code 即具体错误码 这两个在上面已经介绍了都有哪些错误类型,没有错误即0x00;Parameter部分: Byte[0] 04 功能码: Byte[1] 01 代表一个Item。 Data部分: Byte[0] FF 为返回码,返回码如下: 0x00 Reserved 未定义,预留;0x01 Hardware error 硬件错误;0x03 Accessing the object not allowed 对象不允许访问;0x05 Invalid address 无效地址,所需的地址超出此PLC的极限;0x06 Data type not supported 数据类型不支持;0x07 Data type inconsistent 日期类型不一致;0x0a Object does not exist 对象不存在;0xff Success 成功;Byte[1] 04 为数据传输大小,data数据传输大小值如下: 0 NULL 3 BIT bit access, len is in bits 4 BYTE/WORD/DWORD byte/word/dword access, len is in bits 5 INTEGER integer access, len is in bits 6 DINTEGER integer access, len is in bytes 7 REAL real access, len is in bytes 9 OCTET STRING octet string, len is in bytes Byte[2] Byte[3]为data数据的长度。 Byte[4] 即数据。 有时候会有填充数据 即在byte[4]之后、如果数据长度不满足length的话会填充0x00。例如 byte[2]byte[3] 的长度值为3 就会在byte[4]后填充两个0x00。 发包: Header 都与读取值一样的,就不在说了。 Parameter也一样,再说一次吧。 根据读取值对比写入值只比它多了个data部分: 回包: Header部分和parameter部分都一样。 data部分: Byte[0] FF 即为返回码。 上面介绍有返回码的类型,FF标识向0x000000地址写入成功。 5、0x1a 请求下载发包: 整个意思就是请求下载(请求的标识是 5f 、请求的块类型是 DB 块的编号是0001 、目标块文件系统是P、所以文件名为_0A00001P,用于将DB1复制到被动文件系统或从被动文件系统复制)。 回包: 参数部分只回复了1a 代表确认请求了 确认请求之后就会进行下载块(功能码为:1b)。 6、0x1b下载块发包: 红框内都一样(其他的也都一样) 从length开始加深一下吧。 Byte[0] 09 表示之后的数据长度。Byte[1] 5f 文件标识符。Byte[2] 30 41 块类型。Byte[3] 30 30 30 30 31 块编号。Byte[4] 50 请求目标的文件系统。回包: 与发包相比较只多了个data部分,介绍data部分就行了。 发包: 与0x1a和0x1b都一样 ,少了装载长度和MC7长度 意思就是结束下载了,这里就不做描述了。 回包: 也很简单,参数部分只回复了个1c 就是下载结束的意思了。 8、0x1d 开始上传发包: 可以看到,开始上传的结构和请求下载的前部分结构一致。 如上图所示的内容,其实就是告诉 PLC 一个文件名,文件标识是_ (Complete Module),块类型为0B(SDB),块的编号为00000,目标块的文件系统是A (Active embedded module),所以文件名为_0B00000A,基本与请求下载都一样 Fliename就是文件名长度UploadID即为会话ID的意思。 回包: 发包: 这个就不做介绍了UploadID与1d回应的ID是对照的。 回包: 如之前的一样、不做介绍了。 Length:数据内容长度。 Unknown byte(s) in blockcontrol:未知字节。 Data:数据。 10、0x1f 上传结束发包: 都一样不描述了,其中只是多了个错误代码Errorcode。 回包: 只回复了个1f 是上传结束了。 11、0x28 程序调用服务发包: 回包 : Header头不讲,parameter只回复了0x28就是说明确认请求成功。 12、0x29 关闭PLC这个跟之前的都一样、我再整体的图示一下吧,不一个字节一个字节说了。 发包: 回包: 时间设置 (包含读时间、写时间)。 读时间的发包: 可以看出,基本与读SZL状态是一样的,我在整体标记一下吧。 回包: Parameter: Data: 写时间。 发包: 与读时间是一样的,只不过data部分是在发包阶段 。 回包: 也都一样,只是返回码不一样。 0x0a Object does not exist 对象不存在;其他的也都大差不差,自己比对一下就OK了。 附录一:错误码具体含义。 0x0000 没有错误 0x0110 块号无效 0x0111 请求长度无效 0x0112 参数无效 0x0113 块类型无效 0x0114 找不到块 0x0115 块已存在 0x0116 块被写保护 0x0117 块/操作系统更新太大 0x0118 块号无效 0x0119 输入的密码不正确 0x011A PG资源错误 0x011B PLC资源错误 0x011C 协议错误 0x011D 块太多(与模块相关的限制) 0x011E 不再与数据库建立连接,或者S7DOS句柄无效 0x011F 结果缓冲区太小 0x0120 块结束列表 0x0140 可用内存不足 0x0141 由于缺少资源,无法处理作业 0x8001 当块处于当前状态时,无法执行请求的服务 0x8003 S7协议错误:传输块时发生错误 0x8100 应用程序,一般错误:远程模块未知的服务 0x8104 未在模块上实现此服务或报告了帧错误 0x8204 对象的类型规范不一致 0x8205 复制的块已存在且未链接 0x8301 模块上的内存空间或工作内存不足,或者指定的存储介质不可访问 0x8302 可用资源太少或处理器资源不可用 0x8304 无法进一步并行上传。存在资源瓶颈 0x8305 功能不可用 0x8306 工作内存不足(用于复制,链接,加载AWP) 0x8307 保持性工作记忆不够(用于复制,链接,加载AWP) 0x8401 S7协议错误:无效的服务序列(例如,加载或上载块) 0x8402 由于寻址对象的状态,服务无法执行 0x8404 S7协议:无法执行该功能 0x8405 远程块处于DISABLE状态(CFB)。该功能无法执行 0x8500 S7协议错误:帧错误 0x8503 来自模块的警报:服务过早取消 0x8701 寻址通信伙伴上的对象时出错(例如,区域长度错误) 0x8702 模块不支持所请求的服务 0x8703 拒绝访问对象 0x8704 访问错误:对象已损坏 0xD001 协议错误:非法的作业号 0xD002 参数错误:非法的作业变体 0xD003 参数错误:模块不支持调试功能 0xD004 参数错误:作业状态非法 0xD005 参数错误:作业终止非法 0xD006 参数错误:非法链路断开ID 0xD007 参数错误:缓冲区元素数量非法 0xD008 参数错误:扫描速率非法 0xD009 参数错误:执行次数非法 0xD00A 参数错误:非法触发事件 0xD00B 参数错误:非法触发条件 0xD011 调用环境路径中的参数错误:块不存在 0xD012 参数错误:块中的地址错误 0xD014 参数错误:正在删除/覆盖块 0xD015 参数错误:标签地址非法 0xD016 参数错误:由于用户程序错误,无法测试作业 0xD017 参数错误:非法触发号 0xD025 参数错误:路径无效 0xD026 参数错误:非法访问类型 0xD027 参数错误:不允许此数据块数 0xD031 内部协议错误 0xD032 参数错误:结果缓冲区长度错误 0xD033 协议错误:作业长度错误 0xD03F 编码错误:参数部分出错(例如,保留字节不等于0) 0xD041 数据错误:非法状态列表ID 0xD042 数据错误:标签地址非法 0xD043 数据错误:找不到引用的作业,检查作业数据 0xD044 数据错误:标签值非法,检查作业数据 0xD045 数据错误:HOLD中不允许退出ODIS控制 0xD046 数据错误:运行时测量期间非法测量阶段 0xD047 数据错误:“读取作业列表”中的非法层次结构 0xD048 数据错误:“删除作业”中的非法删除ID 0xD049 “替换作业”中的替换ID无效 0xD04A 执行'程序状态'时出错 0xD05F 编码错误:数据部分出错(例如,保留字节不等于0,...) 0xD061 资源错误:没有作业的内存空间 0xD062 资源错误:作业列表已满 0xD063 资源错误:触发事件占用 0xD064 资源错误:没有足够的内存空间用于一个结果缓冲区元素 0xD065 资源错误:没有足够的内存空间用于多个结果缓冲区元素 0xD066 资源错误:可用于运行时测量的计时器被另一个作业占用 0xD067 资源错误:“修改标记”作业过多(特别是多处理器操作) 0xD081 当前模式下不允许使用的功能 0xD082 模式错误:无法退出HOLD模式 0xD0A1 当前保护级别不允许使用的功能 0xD0A2 目前无法运行,因为正在运行的函数会修改内存 0xD0A3 I / O上活动的“修改标记”作业太多(特别是多处理器操作) 0xD0A4 '强制'已经建立 0xD0A5 找不到引用的作业 0xD0A6 无法禁用/启用作业 0xD0A7 无法删除作业,例如因为当前正在读取作业 0xD0A8 无法替换作业,例如因为当前正在读取或删除作业 0xD0A9 无法读取作业,例如因为当前正在删除作业 0xD0AA 处理操作超出时间限制 0xD0AB 进程操作中的作业参数无效 0xD0AC 进程操作中的作业数据无效 0xD0AD 已设置操作模式 0xD0AE 作业是通过不同的连接设置的,只能通过此连接进行处理 0xD0C1 访问标签时至少检测到一个错误 0xD0C2 切换到STOP / HOLD模式 0xD0C3 访问标记时至少检测到一个错误。模式更改为STOP / HOLD 0xD0C4 运行时测量期间超时 0xD0C5 块堆栈的显示不一致,因为块被删除/重新加载 0xD0C6 作业已被删除,因为它所引用的作业已被删除 0xD0C7 由于退出了STOP模式,因此作业被自动删除 0xD0C8 由于测试作业和正在运行的程序之间不一致,“块状态”中止 0xD0C9 通过复位OB90退出状态区域 0xD0CA 通过在退出前重置OB90并访问错误读取标签退出状态范围 0xD0CB 外设输出的输出禁用再次激活 0xD0CC 调试功能的数据量受时间限制 0xD201 块名称中的语法错误 0xD202 函数参数中的语法错误 0xD205 RAM中已存在链接块:无法进行条件复制 0xD206 EPROM中已存在链接块:无法进行条件复制 0xD208 超出模块的最大复制(未链接)块数 0xD209 (至少)模块上找不到给定块之一 0xD20A 超出了可以与一个作业链接的最大块数 0xD20B 超出了一个作业可以删除的最大块数 0xD20C OB无法复制,因为关联的优先级不存在 0xD20D SDB无法解释(例如,未知数) 0xD20E 没有(进一步)阻止可用 0xD20F 超出模块特定的最大块大小 0xD210 块号无效 0xD212 标头属性不正确(与运行时相关) 0xD213 SDB太多。请注意对正在使用的模块的限制 0xD216 无效的用户程序 - 重置模块 0xD217 不允许在模块属性中指定的保护级别 0xD218 属性不正确(主动/被动) 0xD219 块长度不正确(例如,第一部分或整个块的长度不正确) 0xD21A 本地数据长度不正确或写保护错误 0xD21B 模块无法压缩或压缩早期中断 0xD21D 传输的动态项目数据量是非法的 0xD21E 无法为模块(例如FM,CP)分配参数。系统数据无法链接 0xD220 编程语言无效。请注意对正在使用的模块的限制 0xD221 连接或路由的系统数据无效 0xD222 全局数据定义的系统数据包含无效参数 0xD223 通信功能块的实例数据块错误或超出最大背景数据块数 0xD224 SCAN系统数据块包含无效参数 0xD225 DP系统数据块包含无效参数 0xD226 块中发生结构错误 0xD230 块中发生结构错误 0xD231 至少有一个已加载的OB无法复制,因为关联的优先级不存在 0xD232 加载块的至少一个块编号是非法的 0xD234 块在指定的内存介质或作业中存在两次 0xD235 该块包含不正确的校验和 0xD236 该块不包含校验和 0xD237 您将要加载块两次,即CPU上已存在具有相同时间戳的块 0xD238 指定的块中至少有一个不是DB 0xD239 至少有一个指定的DB在装载存储器中不可用作链接变量 0xD23A 至少有一个指定的DB与复制和链接的变体有很大不同 0xD240 违反了协调规则 0xD241 当前保护级别不允许该功能 0xD242 处理F块时的保护冲突 0xD250 更新和模块ID或版本不匹配 0xD251 操作系统组件序列不正确 0xD252 校验和错误 0xD253 没有可用的可执行加载程序; 只能使用存储卡进行更新 0xD254 操作系统中的存储错误 0xD280 在S7-300 CPU中编译块时出错 0xD2A1 块上的另一个块功能或触发器处于活动状态 0xD2A2 块上的触发器处于活动状态。首先完成调试功能 0xD2A3 块未激活(链接),块被占用或块当前被标记为删除 0xD2A4 该块已被另一个块函数处理 0xD2A6 无法同时保存和更改用户程序 0xD2A7 块具有“未链接”属性或未处理 0xD2A8 激活的调试功能阻止将参数分配给CPU 0xD2A9 正在为CPU分配新参数 0xD2AA 当前正在为模块分配新参数 0xD2AB 当前正在更改动态配置限制 0xD2AC 正在运行的激活或取消激活分配(SFC 12)暂时阻止R-KiR过程 0xD2B0 在RUN(CiR)中配置时发生错误 0xD2C0 已超出最大工艺对象数 0xD2C1 模块上已存在相同的技术数据块 0xD2C2 无法下载用户程序或下载硬件配置 0xD401 信息功能不可用 0xD402 信息功能不可用 0xD403 服务已登录/注销(诊断/ PMC) 0xD404 达到的最大节点数。不再需要登录诊断/ PMC 0xD405 不支持服务或函数参数中的语法错误 0xD406 当前不可用的必需信息 0xD407 发生诊断错误 0xD408 更新已中止 0xD409 DP总线错误 0xD601 函数参数中的语法错误 0xD602 输入的密码不正确 0xD603 连接已合法化 0xD604 已启用连接 0xD605 由于密码不存在,因此无法进行合法化 0xD801 至少有一个标记地址无效 0xD802 指定的作业不存在 0xD803 非法的工作状态 0xD804 非法循环时间(非法时基或多个) 0xD805 不能再设置循环读取作业 0xD806 引用的作业处于无法执行请求的功能的状态 0xD807 功能因过载而中止,这意味着执行读取周期所需的时间比设置的扫描周期时间长 0xDC01 日期和/或时间无效 0xE201 CPU已经是主设备 0xE202 由于闪存模块中的用户程序不同,无法进行连接和更新 0xE203 由于固件不同,无法连接和更新 0xE204 由于内存配置不同,无法连接和更新 0xE205 由于同步错误导致连接/更新中止 0xE206 由于协调违规而拒绝连接/更新 0xEF01 S7协议错误:ID2错误; 工作中只允许00H 0xEF02 S7协议错误:ID2错误; 资源集不存在 附录二:程序服务调用名称。 服务名称 | 值(描述) | :----- | :-----| | UNKNOWN | PI-Service目前不详 | _INSE | PI-Service _INSE(激活PLC模块) | _DELE | PI-Service _DELE(从PLC的被动文件系统中删除模块) | P_PROGRAM | PI-Service P_PROGRAM(PLC启动/停止) | _MODU | PI-Service _MODU(PLC Copy Ram to Rom) | _GARB | PI-Service _GARB(压缩PLC内存) | _NLOGIN | PI-Service _NLOGIN(登录) | _N_LOGOUT | PI-Service _N_LOGOUT(退出) | _N_CANCEL | PI-Service _N_CANCEL(取消NC报警) | _N_DASAVE | PI-Service _N_DASAVE(用于将数据从SRAM复制到FLASH的PI-Service) | _N_DIGIOF P| I-Service _N_DIGIOF(关闭数字化) | _N_DIGION | PI-Service _N_DIGION(打开数字化) | _NDZERO | PI-Service _NDZERO(设置所有D nos。对于函数无效\“唯一D号。\”) | _N_ENDEXT | PI-Service _N_ENDEXT() | _N_F_OPER | PI-Service _N_F_OPER(以只读方式打开文件) | _N_OST_OF | PI-Service _N_OST_OF(Overstore OFF) | _N_OST_ON | PI-Service _N_OST_ON(Overstore ON) | _NSCALE | PI-Service _NSCALE(测量单位设置(公制< - > INCH)) | _N_SETUFR | PI-Service _N_SETUFR(激活用户帧) | _N_STRTLK | PI-Service _N_STRTLK(设置全局启动禁用) | _N_STRTUL | PI-Service _N_STRTUL(重置全局启动禁用) | _N_TMRASS | PI-Service _N_TMRASS(重置活动状态) | _N_F_DELE | PI-Service _N_F_DELE(删除文件) | _N_EXTERN | PI-Service _N_EXTERN(选择外部程序执行) | _N_EXTMOD | PI-Service _N_EXTMOD(选择外部程序执行) | _N_F_DELR | PI-Service _N_F_DELR(即使没有访问权限也删除文件) | _N_F_XFER | PI-Service _N_F_XFER(选择要上传的文件) | _NLOCKE | PI-Service _NLOCKE(锁定活动文件以进行编辑) | _N_SELECT | PI-Service _N_SELECT(选择要执行的程序) | _N_SRTEXT | PI-Service _N_SRTEXT(文件正在/ _N_EXT_DIR中标记) | _N_F_CLOS | PI-Service _N_F_CLOS(关闭文件) | _N_F_OPEN | PI-Service _N_F_OPEN(打开文件) | _N_F_SEEK | PI-Service _N_F_SEEK(定位文件搜索指针) | _N_ASUP | PI-Service _N_ASUP (分配中断) | _N_CHEKDM | PI-Service _N_CHEKDM(对D号码启动唯一性检查) | _N_CHKDNO | PI-Service _N_CHKDNO(检查工具是否具有唯一的D编号) | _N_CONFIG | PI-Service _N_CONFIG(重新配置机器数据) | _N_CRCEDN | PI-Service _N_CRCEDN(通过指定边数来创建切削刃) | _N_DELECE | PI-Service _N_DELECE(删除最前沿) | _N_CREACE | PI-Service _N_CREACE(创造最前沿) | _N_CREATO | PI-Service _N_CREATO(创建工具) | _N_DELETO | PI-Service _N_DELETO(删除工具) | _N_CRTOCE | PI-Service _N_CRTOCE(生成具有指定边数的工具) | _N_DELVAR | PI-Service _N_DELVAR(删除数据块) | _N_F_COPY | PI-Service _N_F_COPY(复制NCK中的文件) | _N_F_DMDA | PI-Service _N_F_DMDA(删除MDA内存) | _N_F_PROT | PI-Service _N_F_PROT(为文件指定保护级别) | _N_F_RENA | PI-Service _N_F_RENA(重命名文件) | _N_FINDBL | PI-Service _N_FINDBL(激活搜索) | _N_IBN_SS | PI-Service _N_IBN_SS(设置设置开关) | _N_MMCSEM | PI-Service _N_MMCSEM(MMC-Semaphore) | _N_NCKMOD | PI-Service _N_NCKMOD(正在设置NCK工作的模式) | _N_NEWPWD | PI-Service _N_NEWPWD(新密码) | _N_SEL_BL | PI-Service _N_SEL_BL(选择新块) | _N_SETTST | PI-Service _N_SETTST(激活替换工具组的工具) | _N_TMAWCO | PI-Service _N_TMAWCO(在一个杂志中设置有效磨损组) | _N_TMCRTC | PI-Service _N_TMCRTC(创建具有指定边数的工具) | _N_TMCRTO | PI-Service _N_TMCRTO(在工具管理中创建工具) | _N_TMFDPL | PI-Service _N_TMFDPL(搜索空白处加载) | _N_TMFPBP | PI-Service _N_TMFPBP(搜索空位) | _N_TMGETT | PI-Service _N_TMGETT(使用Duplono确定特定工具ID的T编号) | _N_TMMVTL | PI-Service _N_TMMVTL(加载或卸载工具) | _N_TMPCIT | PI-Service _N_TMPCIT(设置计件器的增量值) | _N_TMPOSM | PI-Service _N_TMPOSM(定位杂志或工具) | _N_TRESMO | PI-Service _N_TRESMO(重置监控值) | _N_TSEARC | PI-Service _N_TSEARC(通过搜索屏幕进行复杂搜索)附: S7协议Pcap数据包下载地址。 链接:百度网盘 请输入提取码 提取码:8djr |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |