wincc的n个经典问题解答之三

合集下载

WINCC问答_1

WINCC问答_1

1、WINCC在进入某一画面时出现Unhandled exception was raised.Lookfile"c:\program Files\semens\w incc\Diagnose\PDLRTSEH.LOG"for details.出现这种情况前只是删除了该画面的一个矩形图。

--------------------------------------------------------------简单的矩形图删除不会有这个问题的,打开记事本看看进一步的错误信息,有什么错误代码.才能进一步找到错误原因.2、在停电之后5611网卡通讯不上,硬件图标上有黄色的叹号,点测试显示“错误0x0382:未找到内部驱动程序信息(L2)”--------------------------------------------------------黄色的叹号或者感叹号说明没有给CP5611驱动,请手动查阅目录C:\WINDOWS\INF或者C:\WINNT\INF,驱动的信息(OEM**.INF)会在这些目录中,卸载CP5611重新安装即可.CP5611完全卸载方法步骤:1.设备管理器卸载.2.打开注册表WINDOWS START MENU->RUN->"REGEDIT",删除下面路径中的所有的条目:HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\SINEC\LOGDEVIES.3.重新启动计算机,再次安装5611驱动.WINCC组态服务器不可用,是否打开项目,将本地计算机作为服务器2011-11-21 15:07:56| 分类:iphone | 标签:|字号大中小订阅/leishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件.正确的复制方法:1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件.2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件,这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机.只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外).你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。

wincc实用问答

wincc实用问答

WinCC实用问题问答1、wincc Online Table control 监测的数值有中间划横线、有后面是u的是什么意思?确保WinCC运行正常和通讯没有故障的情况下,出现这种现象的原因:1、归档变量的归档时间点不同;2、归档变量在wincc 在线表格控件中显示时,使用了公共的时间列。

解决方法:1、将要在wincc 在线表格控件中的归档变量的归档周期系数设置成相同、归档/显示周期设置也设置成相同。

2、指定定时器(归档/显示周期所使用的定时器)的循环起始点(如都指定为 0)。

3、取消激活项目,再重新激活项目。

2、两个WINCC和一个PLC通信还是各控制各的如果是前者的话用一个交换机就可以了具体的你可以参考西门子工业网络通讯指南这本书很全面的3、wincc运行时间久了,速度变慢是很正常的。

做一下处理很有必要删除历史数据感觉影响不大,关键是删除归档数据。

先做个备份,然后再删除。

另外,你要注意,有没有配方等数据存在数据库里,如果没有,可以放心删除,如果有,一定要仔细点。

还有,项目的文件,不要放在c盘,否则,系统会更快变慢4、我在笔记本上运行WInCC项目,可以正常运行,可以完成一些组态开发功能,下面提示栏显示变量305/许可证1024,但是我想要激活项目时,进度条第一条显示45%,第二条显示0,不再运行,而且没有任何提示,是什么原因呢?检查:a.项目路径是否有中文名;b.错误的脚本;b.否安装了STEP7,且版本有冲突;c.安装了中文版杀毒软件及防火墙(尤其是瑞星和金山毒霸),建议将你的杀毒软件卸掉;d.更改或删除了项目文件夹内的文件;计算机名、项目存放的完整路径中不能有中文5、用按钮执行settag脚本只能实现一次绑定,当执行之后外部变量如果变化,中间变量就不变化了,怎么样才能实现始终绑定在全局脚本中使用周期脚本比如两秒一个周期,脚本内容:SetTagFLoat("内部变量",GetTagFLoat("外部变量"));6、我用的是内部变量,想用变量模拟器来模拟液位的变化,前几步做完后,到最后一步start simulation是灰色的,为什么?变量模拟器需要在wincc运行时使用,先激活项目,然后开始菜单->SIMATIC->WinCC->Tools->WinCC Tag Simulator ,打开之后edit----->new tag----->选择你需要的变量properties---->选择变量发生类型,有线性的、随机的、布尔型的等。

WinCC常见问题

WinCC常见问题
在 Alarm Logging 中,选择 Archive Configuration->Long-term archive,在长期归档快捷菜单栏 中生成或者删除归档数据。 Tag Logging 中,选择 Archive Configuration->TagLogging Fast 或者 TagLogging Slow,使用 快速或者慢速变量归档快捷菜单栏生成或者删除归档数据。
你也可以删除在 GraCS 子目录下的*.sav 文件。
如果报表布局未被改变,在 Prt 子目录在的文件也可以被删除。(标准报表布局在系统的报表编 辑器被重启动后重新产生。)
带有项目路径的项目数据库, (项目名称.ldf, 项目名称.mdf, 项目名称 RT.ldf, 项目名称 RT.mdf, 和项目名称.mcp),还有 GraCS, 库, Pas (如果不是空的)和 Prt (如果不是初始安装状态)目录非 常重要。
WinCC 常见问题(FAQs)集
更多内容请见
内容列表
常见 问题 网址 组态 直接 连接及 应用 消息 文本 的导出 ,编 辑及导 入 通过 按钮 实现登 录/退出 硬拷 贝功 能 无在 线归 档数据 的项 目存储 用动作”SetLanguage(ID) ”进行在线语言切换 点击鼠标将 WinCC 对话框调用到前景 在画 面中 显示用 户名 模式 窗口 消息框 V3.x 的不同日志文件的诊断信息 结合 “报警 回路 ”使用 各种 工程函 数 结合 “报警 回路 ”使用 各种 工程函 数 点击 鼠标 ,启动 报警 报表 点击 鼠标 ,停止 报警 报表 通过 鼠标 实现趋 势窗 口的标 尺显示 /消除 进一 步处 理趋势 窗口 的标尺 (趋势 窗口 ) SIEMENS 授权工具的信息 C 运算符 VB 运算符 WinCC V3.1 功能扩展 WinCC V4.0 功能扩展 WinCC V4.0 功能扩展 WinCC 4.0 版中的改变 WinCC V4.01 功能扩展 WinCC V4.02 功能扩展 WinCC V5.0 功能扩展 WinCC V5.0+SP1 功能扩展 WinCC V5.0+ SP2 扩展功能 WinCC V5.1 扩展功能 WinCC V6.0 功能扩展 使用 WinCC Scope 实现系统信息获取和诊断功能 SetTagxxx 工作流程 (异步方式) SetTagxxxWait 的工作流程 (同步方式) Get Tagxxx 在事件触发器方式下的工作流程

wincc的经典问题解答

wincc的经典问题解答

wincc的经典问题解答123421: WINCC--如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code("UseGen.dll") #i ncl"USEGENAP.H"#pragma code()LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代{ if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldp assword"),GetTagChar("password"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{ //密码修改成功后的操作,如给用户提示等 }}PWGENDisconnect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。

22:WinCC6.0 中归档时和5.1版本为什么不同了?WinCC V6.0 的后台数据库采用了MS SQL Server 2000,所以归档方式与V5.1 有所不同,它的运行数据存放在数据片段(segment)当中,工程师可以根据尺寸需求组态最大容量或根据时间周期启动新的数据库归档片段。

wincc冗余问题

wincc冗余问题

如果需要使用WinCC冗余系统时,请仔细阅读下面的文档,它将解决以下几个问题:(1)WinCC冗余有什么样的功能?(2)需要购买什么样的授权?(3)应该安装在怎么样的系统上?(4)如何为用户配置操作系统的权限?(5)如何创建WinCC的冗余服务器项目?(6)如何创建WinCC的客户机?(7)如何诊断冗余错误和识别冗余工作状态?除此之外,对于需要引申的内容,该文档还提供了相关内容的链接地址和帮助路径,方便用户更加系统地学习WinCC冗余内容。

1.冗余系统简介WinCC冗余是两台互联的WinCC并行工作,并基于事件进行同步,提高了系统的可靠性。

WinCC冗余具有下列功能:(1)故障自动识别,故障恢复后自动同步变量记录、报警消息、用户归档。

(2)在线同步变量记录、报警消息、用户归档。

(3)服务器故障时,客户端自动切换到可用的服务器。

(4)自动识别伙伴服务器的状态,并实时显现主备服务器的工作状态。

(5)自动生成系统故障信息,及时发现服务器软件故障。

如果项目中有上述需求,WinCC冗余可以方便项目的实施。

2.搭建WinCC冗余项目的必要条件2.1 软件和授权表 012.2 安装系统环境建议使用Windows Server 2003或者Windows Server 2003 R2对于单用户的冗余系统,也可使用Windows XP操作系统。

更详细的兼容性列表,可以参考:3.组态WinCC冗余系统3.1 创建Windows用户在两台服务器上,创建相同的用户名和密码。

步骤:(1)在Windows开始管理工具计算机管理里面打开本地用户和组图 01(2)创建一个新用户或者使用默认的Administrator(3)对于新建用户,在隶属于中,为用户分配Administrator,SIMATIC HMI和SQLServer2005MSSQLUSER$本地计算机名称$WinCC三个用户组。

对于默认Administrator用户,检查是否属于上述三个组。

WinCC 问题

WinCC 问题

转自西门子网站WinCC Panel IPC/PG论坛,作者西门子Lemon使用 WinCC 有很多禁忌,违反了它们,可能会导致 WinCC 运行不正常,而且通常没有挽救方案。

以下总结了一些常见的禁忌,引以为戒。

1、计算机名称,变量名称等不要含有特殊字符,包括中文字符这些特殊字符或中文字符在某些情况下,将无法被 WinCC 正常解释,可能会导致WinCC 运行异常。

在 WinCC 在线帮助的“使用 WinCC〉使用项目〉附录〉非法的字符”中可以找到那些不允许使用的字符。

2、安装 WinCC 后,不要修改系统时间或时区时间作为项目归档数据的重要参数,如果混乱,将导致数据库紊乱。

/WW/view/en/20423033、WinCC 安装完成后,不要再更改计算机名称因为 WinCC 使用 SQL Server,更改计算机名称后,并非数据库中关联计算机名称的所有参数都能自动更新,这将导致在某些访问下会出错。

如果 WinCC 安装后,发现计算机名称不符合要求,那就请先卸载 WinCC,再卸载 SQL Server,然后再重新安装 SQL Server 和 WinCC 吧。

4、项目名称及存储项目的路径中不要包含中文热线上经常接到 WinCC 项目无法激活的问题,其原因就是项目路径中包含中文字符。

此时只需将项目另存为到纯英文的路径下即可。

5、登录计算机的用户名不要使用中文,密码不要为空默认情况下密码为空的用户权限受限。

虽然可以按照如下设置取消受限,但不建议这么做。

在 Windows 控制面板的“管理工具〉本地安全设置〉本地策略〉安全选项”中,账户:限制密码为空的账户的访问权限。

6、不要轻易修改操作系统的安全设置,DCOM 设置等参数对于 WinCC 的分布式应用,以及 OPC 应用中,这些参数至关重要。

如果由于擅自改动无法正常运行,可以按照如下操作恢复即可(适用于 WinCC 6.2 sp2 以上的版本):开始〉程序〉SIMATIC〉SIMATIC Security Control〉创建设置,单击“应用”按钮即可。

winccn个经典问题解答之三

winccn个经典问题解答之三

wincc的n个经典问题解答之三作者:激情如火,2005-12-27 17:23:00 发表于:《Siemens自好友发送留言部分非本人原创,整理在一起旨在给大家提供方便!41:用C编程解决授权点数不够用的问题(acsun提供)当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需要购买更高的基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW1在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定在Global Script全局脚本中C语言编程如下Union{Long DwordInt Word[2]}unionUnion.Dword=GetTagDword("PackageTag")SetTagWord("LTN44001",Union.Word[0])SetTagWord("LTN44023",Union.Word[0])这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以传限制.42:如何在WinCC里用C语言调用SQL语言?1、创建一个SQL文件。

此文件在ISQL中创建,文件内容是所希望执行的SQL语句。

2、在WinCC的C Script中编写程序调用此SQL文件,如以下程序所示:#i nclude "apdefap.h"void OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags, int x, int y){char*a="C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql";printf("%s\r\n",a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select * from pde#hd#t#test;output to E:\\test2.txt FORMAT ascii注意:文件名及路径中不要带空格。

新建WINCC项目的一些相关问题

新建WINCC项目的一些相关问题

新建WINCC项目的一些相关问题
一、如何与PLC建立连接?
1、添加S7 的通讯协议
2、TCP/IP网线连接:在TCP/IP 中添加:新建驱动程序连接;属性,配置IP 地址
注意:PROFIBUS连接的,也是同样步骤。

IP地址如何查看:STEP 7—打开对应项目—硬件—打开对应的通信模块的属性—诊断
或者打开组态网络查看
3、如果没有通讯上,查看驱动的系统参数是否设置正确。

二、关于激活上的问题
1、项目的存储目录和项目名称不能有中文,否则在激活过程中回卡在50%一直不下去。

尤其在需要运行变量记录系统等记录性的系统。

2、当遇到WINCC卡死时,有不想重启电脑,按win+R键,输入CMD,回车,输入reset_wincc 回车。

三、关于趋势图没有标尺数值,没有数据问题
1、建立归档变量,选择趋势图里需要的变量,利用归档向导添加变量
2、新建趋势画面,并设置曲线相关属性,及对应变量
3、标尺的数字显示,winCC 7.0中的标尺读数时单独控件,需要单独添加的
4、趋势图中的变量,在输入/输出框里是显示数字,但趋势图里不显示数据。

则需要设置计
算机属性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

wincc的n个经典问题解答之三作者:激情如火,2005-12-27 17:23:00 发表于:《Siemens自动化软件论坛》共有15人回复,送留言部分非本人原创,整理在一起旨在给大家提供方便!41:用C编程解决授权点数不够用的问题(acsun提供)当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺参数打称重系统有146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个分成多个参数例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW1在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定LTN44023在 Global Script全局脚本中C语言编程如下Union{Long DwordInt Word[2]}unionUnion.Dword=GetTagDword("PackageTag")SetTagWord("LTN44001",Union.Word[0])SetTagWord("LTN44023",Union.Word[0])这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以版本外部Tag数目的限制.42:如何在WinCC里用C语言调用SQL语言?1、创建一个SQL文件。

此文件在ISQL中创建,文件内容是所希望执行的SQL语句。

2、在WinCC的C Script中编写程序调用此SQL文件,如以下程序所示:#i nclude "apdefap.h"void OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags, int x, int y){char*a="C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql";printf("%s\r\n",a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select * from pde#hd#t#test;output to E:\\test2.txt FORMAT ascii注意:文件名及路径中不要带空格。

43:如何整点启动归档?在"Global Script"下的Project functions编写函数:cyclicarchive BOOL cyclicarchive(){#pragma code ("kernel32.dll");void GetLocalTime (SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;Int t1;GetLocalTime(&time);t1=time.wMinute;if(t1==00){SetTagBit("startarchive",1);return(BOOL)(GetTagBit("startarchive"));}}在Tagloging中的"Properties of process tag"中的"Archive Tag"tab下的Archiving type选标签下的"Start Event"内选择cyclicarchive函数。

44:如何在按键组合被禁用的情况下,从WinCC运行环境进入WinCC Control Center?最好是做一个按钮,该按钮需要用用户权限保护,在该钮中编写如下C-action:低于WinCC 5.0版本:#pragma code ("user32.dll");BOOL SetForegroundWindow(HWND);#pragma code();HWND handle;handle=FindWindow("MCPFrameWndClass",NULL);If (!SetForegroundWindow(handle))Printf ("\r\n SetForeground fails");WinCC 5.0版本以及更高的版本:#pragma code("user32.dll");BOOL SetForegroundWindow(HWND);#pragma code();HWND handle;handle=FindWindow("WinCCExplorerFrameWndClass",NULL);If (!SetForegroundWindow(handle))Printf ("\r\n SetForeground fails");45:WinCC如何实现鼠标OnMouseOVer事件?用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值对位置。

用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与己定义的动作。

#i nclude "apdefap.h"int gscAction( void ){#pragma code("user32.dll");BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置-对应屏幕分辨率)BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位置#pragma code();POINT pPos;RECT rRec;HWND hwnd;BOOL bRet,bRet2;long lLeft,lTop,lWidth,lHeight;long lX,lY;char szStr[100];hwnd=FindWindow(NULL,"WinCC-Runtime - "); //如语言为中文应为"WinCC 运行系统-"if (hwnd==0) {printf("\r\nError! WinCc Handle is %d",hwnd);goto over;}bRet=GetCursorPos(&pPos);if (bRet==0) goto over;bRet2=GetWindowRect(hwnd,&rRec);if (bRet2==0) goto over;lX=pPos.x-rRec.left; //鼠标对{置lY=pPos.y-rRec.top; //鼠标位置//如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度//printf("The Current Cusor Pos is x:%d,y:%d\r\n",pPos.x,pPos.y);//printf("The Cusor Pos in Window is x:%d,y:%d\r\n",pPos.x-lLeft2,pPos.y-lTop2); lLeft=GetLeft("NewPdl0.Pdl","Text1"); //Return - Type :long intlTop=GetTop("NewPdl0.Pdl","Text1"); //Return - Type :long intlWidth=GetWidth("NewPdl0.Pdl","Text1"); //Return - Type :long intlHeight=GetHeight("NewPdl0.Pdl","Text1"); //Return - Type :long intif ((lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&&(lY<=lTop+lHeight)) {sprintf(szStr,"%d,%d",lX,lY);SetText("NewPdl0.Pdl","Text1",szStr); //Return - Type :char*}//printf("The Text1 Pos is x:%d,y:%d\r\n",lLeft2,lTop-lTop2);over:return 0;}46:如何实现ASP与WinCC V6数据库sql server 2000的连接?WinCC V6用ODK获取DSN名,{后生成网址字符串,再用shellExecuteA函数打开网页//----------------------------------------------------------------------------------#pragma code("shell32.dll")long ShellExecuteA(HWND,LPCTSTR,LPCTSTR,LPCTSTR,LPCTSTR,int);#pragma code()char dsnStr[100];HWND hwnd;sprintf(dsnStr,"http://dcount/test.asp?dsnStr=%s",GetDSN(1)); //Return-Type: LP printf("\r\n%s",dsnStr);hwnd=FindWindow(NULL,"WinCC - Runtime ");ShellExecuteA(hwnd,"open",dsnStr,NULL,"C:\\",SW_SHOWNORMAL);//----------------------------------------------------------------------------------ASP方面需要注意的是连接字符串的形式与普通acess ODBC不太一样,而且需要用户名和密码由于WINCC封装的sa用户的密码暂时不知道,所以必须用SQL Server EnterPrise Manager建立system Administrator权限就可以了!否则会出现错误提示Microsoft OLE DB Provider for SQL Server 错误 '80040e4d'Login failed for user 'sa'.'-----------------------------------------------------------------------------------dsnStr=request("dsnStr")set conn=server.createobject("adodb.connection")set rs=server.createobject("adodb.recordset")conn.Provider = "sqloledb"conn.open "Server=DCOUNT\WINCC;Database=" & dsnStr & ";UID=dcount;pwd=;"rs.open "select * from test",conn,1,1response.write rs.recordcountdo while not rs.eofresponse.write rs("f1") & "---" & rs("f2") & "---" & rs("f3")rs.movenextlooprs.closeconn.close47:如何在退出WINCC监控时直接关闭电脑?1.利用动态向导2.在脚本中加入 DMExitWinCCEx (DM_SDMODE_SYSTEM);也可以48:如何通过WINCC API函数读出当前报警消息?1、使用GMsgFunction中读出当前报警信息的ID(dwMsgNr);2、使用MSRTGetMsgCSData函数读出该报警信息ID对应文本库TEXTLIB中的文本ID(dwTex3、使用MSRTGetMsgText函数读出该文本ID的文本。

相关文档
最新文档