承诺的笺言
承诺的笺言
关注数: 30
粉丝数: 49
发帖数: 661
关注贴吧数: 68
实验室吧吧主竞选:NO.0001号候选人
实验室智能化控制系统(Laboratory Intelligent Control System, LICS)是现代实验室进化的核心,它远不止是简单的自动化。 核心定义 实验室智能化控制系统是一个集成了物联网(IoT)、人工智能(AI)、大数据、云计算和自动化技术的综合性管理平台。它充当实验室的“数字大脑”和“自主神经系统”,实现对实验室的人、机、料、法、环五大要素的全面感知、互联互通、智能分析、精准控制和决策支持。 --- 与传统实验室管理的根本区别 特性 传统实验室 智能化控制系统下的实验室控制方式 人工手动、分散、经验驱动 系统自动、集中、数据驱动数据记录 纸质笔记本、碎片化电子记录、易出错 自动采集、电子化、结构化、全程可追溯决策依据 依靠人员的经验和直觉 依靠大数据分析和AI算法问题响应 事后处理、被动响应 事前预警、主动干预资源管理 粗放式、利用率不透明 精细化、可视化、优化调度 --- 系统的核心组成部分与功能 一个完整的LICS通常包含以下层次和功能: 1. 感知层(物联网层) · 功能: 是系统的“神经末梢”,负责采集一切数据。· 包括: 各种传感器(温湿度、压差、VOCs、烟雾)、智能门禁、视频监控、设备状态采集器、RFID标签(用于样品和试剂追踪)、智能电表、智能水表等。 2. 网络层 · 功能: 是系统的“神经网络”,负责可靠、安全地传输数据。· 包括: 有线/无线网络(Wi-Fi, 5G)、工业以太网、协议转换网关(将不同设备的通信协议统一)。 3. 平台层(云/服务器与大数据中心) · 功能: 是系统的“大脑”,负责存储、处理、分析数据并做出决策。· 包括: · 数据仓库: 存储海量实验室数据。 · AI算法引擎: 进行数据建模、趋势预测、异常诊断、优化调度。 · 数字孪生: 创建实验室的虚拟镜像,用于模拟和仿真。 · 统一管理平台: 所有功能集成的软件操作界面。 4. 应用层(具体智能应用) 这是用户能直接感受到的智能功能,主要体现在以下几个方面: · 环境智能管控: · 自动维持恒温恒湿、洁净度、压差,超标自动报警并联动空调净化系统调节。 · 智能通风:根据VOCs或有害气体浓度,自动调节通风柜风速和排风量,实现安全与节能。· 设备智能运维: · 远程监控与控制: 远程开关机、设置参数、查看运行状态。 · 预测性维护: 分析设备运行数据,提前预警潜在故障,避免非计划停机。 · 共享与调度: 在线预约设备,系统自动调度,提高昂贵设备的使用率。· 样品与试剂智能管理: · 全生命周期追踪: 从入库、存储、领用到废弃,全程RFID或二维码管理,一目了然。 · 智能冰箱: 实时监控冰箱温度,记录试剂存取日志,库存过低自动预警补货。 · 智能称量: 称量数据自动记录并传输到系统,无需手动抄写,避免错误。· 安全与安防智能保障: · 人员准入: 门禁系统与人员权限绑定,未经授权或培训无法进入特定区域。 · 行为识别: AI视频分析能否识别不安全行为(如未穿实验服、违规操作)、人员跌倒、火情并报警。 · 应急响应: 发生泄漏或火情时,系统可自动关闭气阀、启动应急排风、打开逃生通道指引。· 流程与数据智能融合: · 电子实验记录本(ELN)与实验室信息管理系统(LIMS)集成: 实验数据自动从设备采集并填入ELN,生成标准报告,确保数据真实、不可篡改、符合合规要求(如FDA 21 CFR Part 11)。 · AI辅助决策: 分析历史实验数据,为研究人员优化实验方案、预测实验结果提供数据支持。 --- 带来的核心价值 1. 提升效率与生产力: 自动化繁琐任务,缩短实验周期,释放科研人员精力专注于创新。2. 保障数据完整性与可靠性: 全过程无纸化、自动记录,杜绝人为差错,满足严格审计要求。3. 增强安全性与合规性: 从“人防”到“技防”,构建主动式安全防护体系,降低风险。4. 降低运营成本: 节能降耗(智能通风)、提高设备利用率、减少试剂浪费、优化人力配置。5. 赋能科研创新: 通过大数据分析挖掘隐藏规律,启发新的科研思路,加速研发进程。
WINCC 冗余系统的设置与实现 WINCC 冗余系统的设置与实现 三、WINCC 冗余系统的设置与实现 一般情况下WINCC 都采用Server-Clients的模式,如图1没有Server2时的网络拓扑:Server1是HMI服务器,它一方面和PLC直接通讯采集、设定数据;另一方面和Clients通讯发布画面和数据给Clients;而Clients上的所有画面和数据全部来自Server1。这样的优势是做系统开发时只需要在Server1开发一套系统,既可以发布给所有的Clients共享,而且数据管理和维护更合理和方便,可以把管理级和过程级清晰的分开。但是缺点也是很明显的,那就是一旦Server1发生故障,则整个控制级就无法正常工作。如果能象图中增加Server2,使其和Server1互为热备,则可以大大的降低系统的运行风险。WINCC就提供了这样的解决方案即WINCC冗余系统。 (图1) WINCC冗余系统采用两台连接到一起的服务器协同工作,运行期间,两台服务器相互监控,可以及时的发现对方是否进入故障状态,如果一台服务器发生故障,则所有的客户端自动切换到仍然正常的服务器,从而保证所有客户端总可以进行对自动化系统的监视和操作。 在一台发生故障期间,正常的服务器继续完成系统内的信息、过程数据归档和记录;当故障服务器正常投入后,故障期间的归档记录会自动复制到恢复后的服务器,从而保证了服务器数据的完整和连续。这一过程也称作恢复后同步。 冗余系统的基本需求:如下 1.服务器需要安装Windows 2000 Server版,WINCC项目配置为多用户模式(Multi-user) 2.系统要求工作在时钟同步方式下。最好整个系统包括过程级和控制级都进行时钟同步,最少要在过程级进行时钟同步。如果控制级也要进行时钟同步,则需要安装WINCC的“Time synchronization”选项。 3.从PLC来的报警信息必须包含时间帧信息,在PLC程序内用报警块触发信息就包含时间帧信息。 4.两个Server必须分别连接到PLC,这样下级的过程数据和信息可以并行的传送到Server 5.两个Server都需要安装WINCC “Redundancy”选项 6.两个Server在功能的配置上需要完全相同 7.每一个用户归档都要指定唯一的字段用来保存最后变化的时间 时钟同步,简单的说就是在一个系统内所有的具有时钟的站点都工作在相同的时间系统上。时钟同步系统内任一时刻只存在一个主时钟,其他站点都是从时钟,从时钟接受主时钟的时钟同步帧信号进行时钟同步,这个主时钟可以是WINCC Server,也可以是PLC的CPU。WINCC的时钟同步可以用WINCC的“Time synchronization”选项方便的进行设置;PLC的CPU可以在STEP7的硬件组态里进行设置。 冗余系统的组态: 冗余系统的前期开发和多用户系统的开发是完全一样的,只是在系统投入运行时要进行适当的组态。 具体的设置过程如下: 1.右击WINCC 的Redundancy点击OPEN,打开冗余组态界面(图2),激活冗余配置,进行相关设置,而后点击OK退出。 (图2) ² 打开Redundancy配置环境时,在“server:”的输入框内系统会自动输入当前计算机名;除“Active Redundancy”外其他都不可以操作。 ² 激活“Active Redundancy”选择框,其他选项都可以操作了。各项含义如表1: 根据自己项目的实际使用要求和情况进行相关的设置即可。 Ø 2两项必须要进行设置。 Ø 3~8项的设置都会影响到服务器恢复后的系统同步内容,建议采用默认设置,不过为了减少恢复后服务器系统的负担可以根据实际需要适当地减少同步内容。 Ø 9项是指当客户端连接到指定服务器的网络发生故障(此时服务器未必发生故障)时是否自动切换到冗余服务器,建议激活此项。 Ø 10项实际上是为服务器相互监控提供了另外一种检测手段,如果激活此项,则需要在服务器的串口间连接一根串口电缆,此时除了网络路径外,服务器间多了一条专用的状态检测链路,冗余系统的监控更可靠。需要说明的是串口连接只用作状态监控,而不进行数据同步。 (表1) 当冗余功能设定完毕后,系统会自动生成内部标签组“Redundancy”,该组内有四个标签,用户可以直接用它们进行状态诊断及信息显示。 Ø @RM_MASTER:如果当前服务器是主机,则置位为1;否则为0。 Ø @RM_MASTER_NAME:当前主机服务器的设备名。 Ø @RM_SERVER_NAME:客户端当前访问的服务器名。 Ø @RM_OFFLINE_US_NAME:服务器恢复在线后,正在同步的用户归档名。 2.为客户机指定首选服务器。配置好计算机和冗余功能,生产了服务器数据(Server Data)后,右击“Server Data”然后点击“Client-specific Setting”,打开客户机服务器指定界面(如图3),为每个客户机指定首选服务器,然后点击OK退出。 (图3) 为客户端指定首选服务器是为了更好的平衡服务器的负担,指定了首选服务器的客户端会自动的优先连接到指定的服务器,没有指定的则始终连接到主服务器上。 3.退出WINCC管理器,点击“开始”、“SIMATIC”、“WINCC”、“TOOLS”下的“Project Duplicator”复制出冗余项目到冗余服务器。用“Project Duplicator”复制冗余项目的好处是可以自动的完成另外一台服务器的冗余配置同时生产完全相同的项目。 至此WINCC冗余项目已经设置生成完毕,可以投入运行了。 冗余系统的工作过程: 当服务器都正常时整个系统的运行拓扑如图4所示,每台客户端PC都连接到自己的首选服务器。此时服务器A是主机;B为从机;客户端1、2连接当服务器A,客户端3连接到服务器B。 当其中一台(如服务器A)发生故障,所有的客户端PC都自动切换到另一台(如服务器B)上工作, HMI系统可以正常的运行,而不影响使用。切换完的运行拓扑入图5所示。 当服务器A在线后,客户机1连接回服务器A,客户机2、3仍然连接到服务器B。从这里我们也能看出为客户机指定首选服务器的作用。 四、项目的运行及应用体会 2005年11月,WINCC冗余系统已经在涟源钢铁公司冷轧厂连续镀锌生产线调试完成并且顺利投入运行。WINCC标签总量超过6万,画面170余幅,报警信息2万多条,变量归档130多个,经过一年多的实际运行,用户反映良好,没有因为WINCC服务器故障而造成生产线停车。而且WINCC冗余系统除了增加一套服务器的软硬件外,不需要增加系统开发的成本,从而用非常小的投入,能够极大地提高系统的可靠性,对于当前越来越庞大和复杂的自动化控制系统是一种非常好的解决方案。 wincc的服务器-客户机模式具体做法 一、原来的工作方式: 在同一工作组中4台计算机其windows名分别为A、B、C、D且都已安装好wincc5.0+sp2,原来在每台计算机上运行的均是单用户,4台计算机上实际运行的是一个相同的项目,最先这个项目就是在其中一台计算机A上做好的,在然后拷贝到另3台计算机B、C、D上,在另3台计算机上运行该项目时提示组态的计算机无效,是否启用本地服务器,回答是后,要重启wincc,重启后,以计算机B为例,在wincc管理器的计算机一项下面有一计算机名A,类型是服务器,将它改为B后,该项目即能在计算机B上成功运行。C、D计算机按B相同的方法操作。 二、改为多用户模式的优点: 1、4台计算机上各自独立运行单用户项目,当你在其中任意一台上对项目进行了修改后,即与其他3台的项目不同步了,在某些情况下还可能出现冲突,改为多用户的服务器-客户机模式就没有这个问题了。 2、我们的组态中有一型号较老的s7-300的PLC,其允许的最大连接数只有3个,造成4台wincc计算机同一时刻总只有3台可以连到该PLC,总是有一台连不上,改为多用户的服务器-客户机模式也能解决这个问题。 3、多用户的服务器-客户机模式有以上两个优点,但也有一个大缺点:原来4台wincc独立运行,等于有4台沉余服务器,任何一台出问题都问题不大。改为服务器-客户机模式后运行故障的风险增大了,所以在我后来的实际改动中,我把这4台计算机中的2台运行为单用户模式,2台组成服务器-客户机模式。 三、服务器-客户机模式的操作方法: 1、服务器端的操作(以将A计算机作为wincc服务器,B为客户机为例): 在A计算机上运行wincc,选择项目(项目树的根),右击鼠标,选择属性,在项目的属性页上可看到现在项目还是单用户,点下拉箭头,更改为多用户,确定,会提示重启wincc,重启后,在项目树的计算机一项下现在还只有计算机A,属性为服务器,右击鼠标选择新建计算机,添加计算机B,属性选择为客户机(如果你还想有更多的客户机,均要在此添加),对添加的计算机B,右击它设置属性,设定方法和单用户下相同,要注意的是添加的客户机计算机其语言一般默认为德语,一定要改为和服务器相同,不然在客户端运行后画面上的文字会显示为“?”。接下来再看项目树的最下端,会发现比单用户时多了一个“服务器数据”一项,右击它后选择创建服务器数据,数据会创建和保存,服务器端设定就完成了。 2、客户端操作有几种方法: a、运行wincc管理器,不要激活原来单用户时的项目,选择打开项目,一路浏览到网上邻居->计算机A->已改为多用户的项目,打开它并激活,客户端就激活运行了,B计算机上就可看到和A计算机上一模一样的东西。(A计算机一旦启用多用户模式,项目所在的目录会自动启动网络共享) b、直接从网上邻居上找到A计算机上的多用户项目,将该项目发送到桌面快捷方式,在B计算机的桌面上双击该快捷方式,客户端也会激活运行。 c、在B计算机的wincc的autostart程序中装入A计算机上的项目,并设置启动时激活,B计算机启动时客户端就会激活运行,这种方法下wincc管理器不会运行 d、在客户端启动时,如果服务端还没有运行,服务端会自动运行;关闭客户端时会要你选择是“关闭该计算机上激活的项目”还是“关闭整个项目”,前者只关闭客户端,后者将客户端、服务端一起关闭。 e、在A计算机上创建多用户项目时,如果项目保存的路径不在A计算机本机上,甚至保存在一台没有安装wincc的计算机上,以上操作也能完成,只是注意服务器和客户机在打开项目时都要通过网上邻居定向到该单独存放的项目上。 f、如在A计算机上创建和保存的多用户项目,在B客户机上只能通过网上邻居打开和运行,把A计算机上的项目原版拷贝到B计算机上也不能运行为客户端模式,只能修改服务器名和客户机名后成为一个运行在B计算机上的新的多用户项目。在服务器-客户机模式下项目只能有唯一的一个保存路径。 更多案例参考请点击 污水处理实例 污水处理行业自控设计方案 一、概述 随着电子信息技术及污水处理行业自身的迅速发展,自控系统逐渐应用到污水处理过程检测过程中,并取得了良好的效果。采用自控系统后,不仅大量节约了生产运营成本、节约了资源,更主要的是由于自控系统采用了“集中管理、分散控制”的原则以及先进的PID算法、模糊控制等理论,使得污水处理运营起来更容易做到精确控制,有效的避免了很多失误,这都使得它在污水行业有更广阔的发展空间,同时也给我们自动化公司带来良好的发展机遇。 城市污水的处理方法,按原理可分为物理处理法、化学处理法和生物处理法三类。 物理处理法:利用物理作用分离污水中呈悬浮状态的固体污染物质的处理方法,主要有筛滤法(格栅、筛网)、沉淀法(沉砂池、沉淀池)、气浮法、过滤法(快滤池、慢滤池等)和反渗透法(有机高分子半渗透膜)等。 化学处理法:利用化学反应分离污水中的污染物质的处理方法,主要有中和、电解、氧化还原和电渗析、气提、吸附、吹脱、萃取等。 生物处理法:利用微生物的代谢作用,使污水中呈溶解性、胶体状态的有机污染物转化为稳定的无害物质的处理方法。主要可分为两大类:利用好氧微生物作用的好氧氧化法和利用厌氧微生物作用的厌氧还原法。好氧氧化法广泛用于处理城市污水,主要有活性污泥法(氧化沟、曝气池等),生物膜法(生物转盘、生物滤池、接触氧化法等);厌氧还原法主要有厌氧塘,污泥的厌氧消化池等。 污水处理工艺流程一般包括机械处理系统、污水生化处理、深度处理系统和污泥处理系统4部分。 1、机械处理系统:机械(一级)处理工段包括格栅、沉砂池、初沉池等构筑物,以去除粗大颗粒和悬浮物为目的,处理的原理在于通过物理法实现固液分离,将污染物从污水中分离,这是普遍采用的污水处理方式。机械(一级)处理是所有污水处理工艺流程必备工艺(尽管有时有些工艺流程省去初沉池),城市污水一级处理BOD5和SS的典型去除率分别为25%和50%。在生物除磷脱氮型污水处理厂,一般不推荐曝气沉砂池,以避免快速降解有机物的去除;在原污水水质特性不利于除磷脱氮的情况下,初沉的设置与否以及设置方式需要根据水质特性的后续工艺加以仔细分析和考虑,以保证和改善除磷除脱氮等后续工艺的进水水质。 2、污水生化处理:污水生化处理属于二级处理,以去除不可沉悬浮物和溶解性可生物降解有机物为主要目的,其工艺构成多种多样,可分成活性污泥法、AB法(生物吸附氧化法)、A/O法(生物脱氮工艺)、A/A/O法(生物除磷脱氮工艺)、SBR法(序列间歇式活性污泥法)、曝气池法、氧化沟法、稳定塘法(通过水塘中的“藻菌共生系统”进行废水净化)、土地处理法等多种处理方法。石家庄桥西污水处理厂16万吨/日污水处理项目采用的是微型曝气池法;而安国污水处理厂采用奥贝尔氧化沟处理工艺。 生物处理的原理是通过生物作用,尤其是微生物的作用,完成有机物的分解和生物体的合成,将有机污染物转变成无害的气体产物(CO2)、液体产物(水)以及富含有机物的固体产物(微生物群体或称生物污泥);多余的生物污泥在沉淀池中经沉淀池固液分离,从净化后的污水中除去。 A/O法生物去除氨氮原理:污水中的氨氮,在充氧的条件下(O段),被硝化菌硝化为硝态氮,大量硝态氮回流至A段,在缺氧条件下,通过碱性厌氧反硝化菌作用,以污水中有机物作为电子供体,硝态氮作为电子受体,使硝态氮被还原为无污染的氮气,逸入大气从而达到最终脱氮的目的。 硝化反应:NH4++2O2→NO3-+2H++H2O 反消化反应:6NO3-+5CH3OH(有机物)→5CO2↑+7H2O+6OH-+3N2↑ 在污水生化处理过程中,影响微生物活性的因素可分为基质类和环境类两大类。基质类包括营养物质,如以碳元素为主的有机化合物即碳源物质、氮源、磷源等营养物质、以及铁、锌、锰等微量元素;另外,还包括一些有毒有害化学物质如酚类、苯类等化合物、也包括一些重金属离子如铜、镉、铅离子等。环境类影响因素主要有: ◆温度:温度对微生物的影响是很广泛的,尽管在高温环境(50℃~70℃)和低温环境(-5~0℃)中也活跃着某些类的细菌,但污水处理中绝大部分微生物最适宜生长的温度范围是20-30℃。在适宜的温度范围内,微生物的生理活动旺盛,其活性随温度的增高而增强,处理效果也越好。超出此范围,微生物的活性变差,生物反应过程就会受影响。一般控制反应的进程最高和最低限值分别为35℃和10℃。 ◆PH值:活性污泥系统微生物最适宜的PH值范围是6.5-8.5,酸性或碱性过强的环境均不利于微生物的生存和生长,严重时会使污泥絮体遭到破坏,菌胶团解体,处理效果急剧恶化。 ◆溶解氧:对好氧生物反应来说,保持混合液中一定浓度的溶解氧至关重要。当环境中的溶解氧高于0.3mg/l时,兼性菌和好氧菌都进行好氧呼吸;当溶解氧低于0.2-0.3mg/l接近于零时,兼性菌则转入厌氧呼吸,绝大部分好氧菌基本停止呼吸,而有部分好氧菌(多数为丝状菌)还可能生长良好,在系统中占据优势后常导致污泥膨胀。一般的,曝气池出口处的溶解氧以保持2mg/l左右为宜,过高则增加能耗,经济上不合算。 在所有影响因素中,基质类因素和PH值决定于进水水质,对这些因素的控制,主要靠日常的监测和有关条例、法规的严格执行。对一般城市污水而言,这些因素大都不会构成太大的影响,各参数基本能维持在适当范围内。温度的变化与气候有关,对于万吨级的城市污水处理厂,特别是采用活性污泥工艺时,对温度的控制难以实施,在经济上和工程上都不是十分可行的。因此,一般是通过设计参数的适当选取来满足不同温度变化的处理要求,以达到处理目标。因此,工艺控制的主要目标就落在活性污泥本身以及可通过调控手段来改变的环境因素上,控制的主要任务就是采取合适的措施,克服外界因素对活性污泥系统的影响,使其能持续稳定地发挥作用。 实现对生物反应系统的过程控制关键在于控制对象或控制参数的选取,而这又与处理工艺或处理目标密切相关。 溶解氧是生物反应类型和过程中一个非常重要的指示参数,它能直观且比较迅速地反映出整个系统的运行状况,运行管理方便,仪器、仪表的安装及维护也较简单,这也是近十年我国新建的污水处理厂基本都实现了溶解氧现场和在线监测的原因。 3、深度处理系统:三级处理是对水的深度处理,现在的我国的污水处理厂投入实际应用的并不多。它将经过二级处理的水进行脱氮、脱磷处理,用活性炭吸附法或反渗透法等去除水中的剩余污染物,并用臭氧或氯消毒杀灭细菌和病毒,然后将处理水送入中水道,作为冲洗厕所、喷洒街道、浇灌绿化带、工业用水、防火等水源。 4、污泥处理系统:污水处理工艺的作用仅仅是通过生物降解转化作用和固液分离,在使污水得到净化的同时将污染物富集到污泥中,包括一级处理工段产生的初沉污泥、二级处理工段产生的剩余活性污泥以及三级处理产生的化学污泥。由于这些污泥含有大量的有机物和病原体,而且极易腐败发臭,很容易造成二次污染,消除污染的任务尚未完成。污泥必须经过一定的减容、减量和稳定化无害化处理井妥善处置。污泥处理处置的成功与否对污水厂有重要的影响,必须重视。如果污泥不进行处理,污泥将不得不随处理后的出水排放,污水厂的净化效果也就会被抵消掉。所以在实际生产过程中,污水处理过程中的污泥处理也是相当关键的。污泥问题必将成为中国下一阶段重要的环境问题,各界应加强对污泥处理处置问题的重视,并使污泥处理处置的若干认识误区得以澄清,进而帮助和促进有关技术路线和技术政策的制定,使城市污水处理行业得以健康发展。 二、控制方案 城市污水处理厂一般有以下几个检测参数:BOD(生化需氧量)、COD(化学需氧量)、SS(固体悬浮物)、NH3-N(氨基氮检测)、MLSS(污泥浓度)、DO(溶解氧)、PH值、温度、流量、液位等等。 以安国污水处理厂3万吨/日自控系统为例:全厂分为两级控制系统,即现场控制级和中央监控管理级。根据“集中监测,分散控制”的控制原则,由厂级中央监控工作站和现场分散控制站通过工业以太网络共同组成全厂控制系统网。 现场PLC控制系统与中央监控系统采用光纤为介质的工业以太网络通过交换机连接,通讯速率为100MB/S。通讯网络采用开放式的结构及目前国际上主流的TCP/IP通讯规约,可以非常方便地与其他标准网络相兼容。 污水处理控制系统设置1台厂级中央控制操作站和1台工程师站,互为冗余配置,全部通过工业冗余交换机接入核心光纤网络。为整个系统的监控和管理核心。现场控制站一共3套PLC站,分别负责污水预处理、氧化沟转碟曝气、出水参数检测等工作。 污水处理工艺主要包括粗/细格栅控制、提升泵房控制、氧化沟转碟曝气机控制、污泥处理(一般有独立的控制系统)等。 格栅控制 主要是粗格栅和细格栅的控制。自动控制情况下,根据格栅前后的超声波液位计检测到的液位差值,和用户设定的差值进行比较,当检测到的差值大于用户设定的差值时开启格栅运行,否则则关闭格栅运行。在检测差值和设定差值之间相差不多或波动状态下通过死区处理的方式保证格栅状态不变。另外,格栅还可以根据时间控制,用户设定的等待时间到后启动格栅,运行时间到后停止格栅。在手动控制情况下通过确认用户可以直接启动或停止设备。 提升泵控制 根据提升泵房液位的检测值自动控制多台泵组的轮值运行。当物位升高至某一设定值时,自动增加泵的运行台数;当物位降低到某一设定值时,逐台减少泵的运行台数。同时,检测各提升泵泵的累积运行时间,本着累积运行时间最短优先运行的原则顺序启停,以保证各提升泵累积运行时间大致相等,、延长了提升泵的维护周期。当物位降到干运转保护位置时,自动停止全部泵的运行,以保证各泵的安全。 为了保证泵的自动轮询程序开始自动计算并分配一个标识号给每一个泵,按照对等使用的原则进行处理,也可以指定泵处于检修状态不参与自控。程序实时检测控制参考值的状态,并有严格的保护连锁程序和报警机制,以保证系统运行的安全性。 氧化沟转碟曝气控制 安国污水处理厂项目采用的是奥贝尔氧化沟,每个氧化沟均分为外沟、中沟、内沟三部分,分别对应一个溶氧探头检测氧化沟中污水的溶解氧含量。当其溶氧含量低于某一设定值时,自动增加开启的转碟台数;当其溶氧含量高于某一设定值时,自动减少开启的转碟台数。为了适应生产工艺及日后设备维护的需要,我们采用了先进的轮询控制理论,即通过对每台转碟定义其启停顺序ID,根据其ID标识的先后,依次顺序启停。 需要说明的是,每个氧化沟对应的10个转碟中,8#、9#、10#三个转碟为双速转碟,分为低速启动和高速启动;在轮询过程时,根据电气控制原则,不允许同时出现高、低速启动同一台转碟。在下位PLC程序中要考虑增加保护措施。 安国污水处理厂每个氧化沟均装有10台转碟曝气机,其中外沟装有6台,中沟及内沟共用4台。根据现场工艺的需要,外沟6台转碟采用的是“四用两备”的控制模式,中(内)沟4台转碟采用了“两用两备”的控制方式。
Wincc常用的脚本文档,希望对大家有帮助 Wincc脚本文档 .用户注销: #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogout(); 2.用户登录: #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogin('c'); 3.关闭项目并退出wincc: ExitWinCC (); 4.退出运行到wincc资源管理器: DeactivateRTProject (); 按钮变三种颜色 #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma option(mbcs) if(GetTagWord("TX/ZSH001")==1) return 0x0000ff00; else if(GetTagWord("TX/ZSL001")==1) return 0x000000ff; else return 0x00c0c0c0; } 一个调用按钮变色 #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma option(mbcs) if(GetTagWord("NewTag")==0) return 0x0000ff00; else return 0x00ffffff; } 5.结束监控并关闭计算机(会弹出确认对话框) HWND hWnd = NULL;//Author:Smartsys int iRet; hWnd = FindWindow(NULL,"WinCC-运行系统 - "); iRet=MessageBox(hWnd,"结束监控并关闭计算机", "关闭操作站",MB_YESNO|MB_ICONWARNING|MB_APPLMODAL); if(iRet==IDYES) DMExitWinCCEx (DM_SDMODE_POWEROFF); 6.点击事件弹出对话框,通过点击弹出对话框的确定和取消按钮实现对变量的置位或取消: int r; r=MessageBox(NULL, "YES为开,NO为关", "确定开命令:", MB_YESNO |MB_SYSTEMMODAL); if (r==IDYES) SetTagBit("TAGNAME",TRUE); else SetTagBit("TAGNAME",FALSE); 7.开显示关显示:(要在内部变量中建立三个二进制变量COLSE_DISPLAY、DISPLAY_NO和DISPLAY_COMMENT) // Funktion: Bit in Doppelwort setzen; if (GetTagBitWait("COLSE_DISPLAY")==1 ) {SetTagBit("COLSE_DISPLAY",0); SetTagBit("DISPLAY_NO",0); //Return-Type: BOOL SetTagBit("DISPLAY_COMMENT",0); } else {SetTagBit("COLSE_DISPLAY",1); SetTagBit("DISPLAY_NO",1); //Return-Type: BOOL SetTagBit("DISPLAY_COMMENT",0); } 8.开阀确认: BOOL a; a=GetTagBit("30T制水启动"); //Return-Type :short int if (a==0) { if(MessageBox(NULL,"真的要启动制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水启动",1); //Return-Type :BOOL } } else {if(MessageBox(NULL,"真的要停止制水吗?","操作提示",MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND|MB_SYSTEMMODAL) == 6) { SetTagBit("30T制水停止",1); }} 9.将WinCC运行画面最小化 HWND WinCCHwnd; WinCCHwnd=FindWindow(NULL,"WinCC-Runtime - "); //如果运行语言为英文 if (WinCCHwnd==0) WinCCHwnd=FindWindow(NULL,"WinCC-运行系统 - "); //如果运行语言为中文 CloseWindow(WinCCHwnd); 10.显示或不显示(其中hiddVtext为内部的二进制变量) if(GetTagBit("hiddVtext")==0) //Return-Type: BOOL { SetTagBit("hiddVtext",TRUE); //Return-Type: BOOL //Return-Type: BOOL } else {SetTagBit("hiddVtext",FALSE); } 10.打开编辑画面的脚本 #pragma option(mbcs) #ifdef RUN_ON_WEBNAVIGATOR #else HWND hExplorerWindow= NULL; HWND hRuntimeWindow= NULL; hExplorerWindow= FindWindow("WinCCExplorerFrameWndClass",NULL); hRuntimeWindow= FindWindow("PDLRTisAliveAndWaitsForYou",NULL); if(hExplorerWindow) { ShowWindow(hExplorerWindow, SW_MINIMIZE); // This entry is only necessary for Windows 2000 ShowWindow(hExplorerWindow, SW_SHOWNORMAL); SetForegroundWindow(hExplorerWindow); } else printf("rn SetForeground failed"); #endif 11.如何在WINCC中制作一个保持型按钮 方法1: if( GetTagBit("M10") ) SetTagBit("M10",0); else SetTagBit("M10",1); 方法2: SetTagBit("M1.0",(SHORT)!GetTagBit("M1.0")); 求反指令,如果为1点击变为0, 如果为0点击变为1 方法3: 或者做两个按钮, 按钮一:显示,直接连接m1.0,是--不显示,否--显示 。事件,直接连接,源,常数1,变量M1.0; 按钮二:事件,直接连接,源,常数0,变量M1.0; 用按钮一覆盖按钮二 12变量每秒加1 DWORD a; a=GetTagDWord("Tank"); a+=1; if(a>100) (a=0); SetTagDWord("Tank",a); return 0; } WINCC动画脚本 电机风扇旋转(几何---起始角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD f=20; if (GetTagBit("DI电机运行信号")) { f= f+30; if (f==360) (f=0); } return f; } 电机风扇旋转(几何---结束角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD i=80; if (GetTagBit("DI电机运行信号")) { i = i+30; if (i==360) (i=0); } return i; } **物料水平右移动(几何---位置X)(停车后,物料回到原点)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } if (!GetTagBit("DI电机运行信号")) (a=350); return a; } 物料水平右移动(几何---位置X)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } return a; } 物料向上移动(几何---位置Y)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int b=450; if (GetTagBit("DI电机运行信号") && (b>=290)) { b-=10; if (b<=280) (b=450); } return b; } 年月日(静态文本) #include "apdefap.h" char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { time_t timer ; struct tm *ptm; char *p; time(&timer); ptm =localtime(&timer); p =SysMalloc(9); sprintf(p,"%04d/%02d/%02d",ptm->tm_year-100+2000,ptm->tm_mon+1,ptm->tm_mday); return(p); } 时分秒(静态文本) #include "apdefap.h" char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { time_t timer ; struct tm *ptm; char *p; time(&timer); ptm =localtime(&timer); p =SysMalloc(9); sprintf(p,"%02d:%02d:%02d",ptm->tm_hour,ptm->tm_min,ptm->tm_sec); return(p); } 登陆到指定的用户名无须手动输入(按钮操作) #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() PWRTSilentLogin("用户名", "口令"); } **显示登陆对话框无须热键(按钮操作)** #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code( ) PWRTLogin('c'); } 退出WINCC运行(按钮操作) #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { { DeactivateRTProject (); } } 单位递增按钮(到上限不提示出错) #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; value=GetTagDWord("AI标签"); if (value>90) (value=上限); else value=value+10; SetTagDWord("AI标签",value); } 单位递减按钮(到下限不提示出错) #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; value=GetTagDWord("AI标签"); if (value<10) (value=下限); else value=value-10; SetTagDWord("AI标签",value); } **单位递增按钮(到上限提示出错)** #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; HWND hWnd=NULL ; hWnd=FindWindow(NULL,"Wincc-运行系统- "); value=GetTagDWord("AI标签"); if (value<=90) (value=value+10); else MessageBox(hWnd,"已到达上限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL); SetTagDWord("AI标签",value); } **单位递减按钮(到下限提示出错)** #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { DWORD value; HWND hWnd=NULL ; hWnd=FindWindow(NULL,"Wincc-运行系统- "); value=GetTagDWord("AI标签"); if (value>0) (value=value-10); else MessageBox(hWnd," 已到达下限值!"," 错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL); SetTagDWord("AI标签",value); } **自动登陆到指定的用户(画面属性--其它—授权)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() PWRTSilentLogin("用户名", "口令"); return(0X0); } **询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)** #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { HWND hWnd=NULL; int 上位启动信号; hWnd=FindWindow(NULL,"WinCC C-Course"); if (GetTagBit("DI备妥")) { 上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!", MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL); printf("\r\nExample 3\r\n"); if (上位启动信号==IDNO) (printf("User selected NO button \r\n")); else (SetTagByte("上位启动信号",1)); } else MessageBox(hWnd,"电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL); } **询问框(最好用于单机启动,组启也可,3个按钮,NO复位)** #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { HWND hWnd=NULL; int上位启动信号; hWnd=FindWindow(NULL,"WinCC C-Course"); if (GetTagBit("DI备妥")) { 上位启动信号=MessageBox(hWnd," 电源已备妥,您现在确定要启动吗?","启动!", MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPLMODAL); if (上位启动信号==IDCANCEL) (printf("User selected NO button \r\n")); else { if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1)); else (SetTagByte("上位启动信号",0)); } } else MessageBox(hWnd," 电源未备妥,请查证后重试!","启动!", MB_OK|MB_ICONHAND|MB_APPLMODAL); } **搅拌器左侧扇页(几何—宽度)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int h=50; static int u=0; if (GetTagBit("DI电机运行信号")) { if ((h>0)&&(h<=50)) { (h-=2); return h; } if ((u>=0)&&(u<50)) { (u+=2); return u; } u=0; h=50; return h; return u; } if (!GetTagBit("DI电机运行信号")){ h=50; u=0; return h; return u; } } **搅拌器左侧扇页(几何—位置X,右侧扇页没有位置变化)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int h=75; static int u=125; if (GetTagBit("DI电机运行信号")) { if ((h>=75)&&(h<125)) { (h+=2); return h; } if ((u<=125)&&(u>75)) { (u-=2); return u; } u=125; h=75; return h; return u; } if (!GetTagBit("DI电机运行信号")){ h=75; u=125; return h; return u; } } **显示层按钮** Sub X6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y) Dim objScreen Dim CountLayer Set objScreen = HMIRuntime.Screens("layer") For CountLayer=1 To 32 Step 1 objScreen.Layers(CountLayer).Visible = vbFalse Next objScreen.Layers(n).Visible = vbTrue End Sub n=层数+1 初始画面程序(画面空地--属性--事件--其它--打开画面--动作) **打印按钮** #include "apdefap.h" void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) { WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL); } **一个圈代表电机两种状态** #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { char* opentag="DI1电机运行信号"; char* closetag="DI2电机运行信号"; BOOL open,close; open = GetTagBit(opentag); close = GetTagBit(closetag); if (open) return CO_GREEN; if (close) return CO_BLUE;
wincc实现远程访问的方法 4.1 WinCC Web Navigator实现远程访问的方法 WinCC Web Navigator基于标准HTTP 协议, 并支持所有常规安全机制。WinCC Web Navigator允许用户通过Internet或Intranet对远程设备进行监控甚至操作。Web Navigator包括安装在Server上的Web Navigator Server组件和可运行在Internet计算机上的Web Navigator Client组件。监控WinCC Web Navigator Client上的画面,就如同平常的WinCC系统一样,可以在任何位置监控运行在Server上的工程。在一个支持TCP/IP协议的网络中,无论是局域网或广域网,任意客户机只要安装WinCC Web Navigator Client,均可以与远程实验服务器进行通讯。 要使用Web Navigator Server,需要在服务器上安装IIS(Internet Information Service),然后安装Web Navigator Server,最后安装授权。软件安装完毕后,就可以组态Web工程了。 组态分以下步骤: · 组态Web Navigator Server。 · 发布能够运行在WinCC Web Navigator Client上的过程画面。 · 组态用户管理。 · 组态Internet Explorer Settings。 · 安装WinCC Web Navigator Client。 · 创建新的过程画面。 (1) 组态Web Navigator Server工程 在服务器端,启动WinCC工程项目,打开Web Configurator对话框,进行Web站点参数设置:设置Web站点的名称为"WaterControl",IP地址为10.2.10.3,端口是网页浏览端口 80。组态完毕后,启动Windows的"Internet 信息服务"程序来检查启动的Web站点。 (2) 发布过程画面 在WinCC工程项目中,打开Web View Publisher对话框,首先选择远程发布画面的路径;接下来选择要发布的画面,如图4.1.1所示。接下来再选择要发布的C项目函数和画面引用的位图,最后选中脚本检查,完成Web服务器的组态。 图4.1.1 发布文件选择界面 (3) 组态用户管理 在WinCC工程项目中,打开User Administrator对话框,在user菜单中创建新的用户。创建完毕后,在用户管理器的导航窗口中选中特定的用户,定义对应的起始画面,对应的语言及对应的权限。如是否可以进行工艺画面的编辑,是否可以进行过程数据的归档,是否可以对报警进行确认等。 (4) 客户端访问Web工程 打开IE浏览器,在"Internet选项"的"安全"属性页中,把"Script ActiveX Controls Marked Safe For Scripting"和"Down Load Signed ActiveX Controls"的属性设置为Enable。单击OK按钮确认。 (5) 安装Web Navigator Client 在IE的地址栏里输入Web Navigator Server的地址,如果是第一次访问WinCC Web Navigator Server,将会出现WinCC Web Navigator Client下载安装的对话框,下载并在本地安装WinCC Web Navigator Client,成功安装WinCC Web Navigator Client软件后,客户机会被连接到正在运行的服务器工程中,用户定义的起始画面会被显示。
wincc连接S7-200SMART、S7-300、S7-1200的数量 WINCC通过PC ACCESS SMART 最多只能带8台SMART 、WINCC通过PC ACCESS SMART 可以带8台SMART 2、smart plc之间可以通讯,每个smart plc 支持8个主动,8个被动连接 3、每个smart plc通过网线可以接8个触摸屏 SMART做客户端,SMART里直接调用PUT/GET 西门子资料上说可以最多连接到16个S71200PLC,但在实际操作时发现最多只能连接8个。 用的系统是WIN7,Wincc版本是7.2但是有人做过用多功能交换机可以与WINCC直连,它使用的是S7-300的TCP协议, 从而绕过了S7-1200的驱动,不存在连接数量的限制,使用交换机可以连接64个S7-1200(这只是成功的案例)
WINCC系统调用的函数说明 以下是WINCC系统调用的函数说明 1. ActivateRightScreen 应用 将画面切换到与激活画面同一层级的右侧的画面。 如果当前画面的右侧没有其它画面,则不发生画面切换。 说明 必须已经在“画面浏览”编辑器中组态了一个浏览结构。 语法 ActivateRightScreen 在脚本中是否可用: 有 (ActivateRightScreen) 参数 -- 2. ActivateRootScreen 应用 将画面切换到定义为起始画面的画面。 如果所显示的画面是根画面,则不会发生画面切换。 说明 必须已经在“画面浏览”编辑器中组态了一个浏览结构。 语法 ActivateRootScreen 在脚本中是否可用: 有 (ActivateRootScreen) 参数 -- 3. ActivateScreen 应用 将画面切换到指定的画面。 使用“ActivateScreenByNumber”系统函数可以从根画面切换到永久性窗口,反之亦然。 语法 ActivateScreen (Screen name, Object number) 在脚本中是否可用: 有 (ActivateScreen) 参数 Screen name 要切换到的画面的名称。 Object number 画面切换后在指定画面中获得焦点的操作员控件元素。 操作员控件元素的编号在组态期间使用 TAB 顺序确定。 在指定为“0”时: 如果调用该系统函数时焦点位于永久性窗口,则永久性窗口保留焦点。 如果调用该系统函数时焦点位于根画面,则指定画面中的第一个操作员控件元素获得焦点。 说明 如果将“到达边界”事件分配给“ActivateScreen”系统函数,则只有数值“0”对“Object number”参数有效。 活动对象不是由对象号定义的,而是由画面更改之前其 X 位置定义的。 4. ActivateScreenByNumber 应用 根据变量值将画面切换到另一画面。 画面由其画面号标识。 语法 ActivateScreenByNumber (Screen number, Object number) 在脚本中是否可用: 有 (ActivateScreenByNumber) 参数 Screen number 包含要切换到的画面号的变量。 如果需要从根画面切换到永久性窗口,则指定“0”或“-1”: 0 = 从根画面切换到永久性窗口 -1 = 从永久性窗口切换到根画面 Object number 画面切换后在指定画面中获得焦点的画面对象的编号。 操作员控件元素的编号在组态期间使用 TAB 顺序确定。 在指定为“0”时: · 如果调用该系统函数时焦点位于永久性窗口,则永久性窗口保留焦点。 · 如果调用该系统函数时焦点位于根画面,则指定画面中的第一个操作员控件元素获得焦点。 5. AdjustContrast 应用 将HMI设备的显示对比度改变一个级别 语法 AdjustContrast (Adjust) 在脚本中是否可用: 有 (AdjustContrast) 参数 Adjust 确定如何调整对比度: 0 (hmiDecrease) = 减少: 将对比度降低一个级别。 1 (hmiIncrease) = 增加: 将对比度增加一个级别。 6. ArchiveLogFile 应用 此函数将记录移至或复制到其它存储位置作长期归档。 进行检查跟踪时,请始终使用“移动”(hmiMove)模式,否则将会通过复制存储的数据违反 FDA 准则。 在使用此系统函数之前,请始终运行“CloseAllLogs”系统函数 请在执行此系统函数后,运行“OpenAllLogs”函数。 在“复制记录”模式中,只有在成功复制了记录或在复制过程中发生超时的情况下,才会重新打开记录。 在“移动记录”模式中,将重命名要移动的记录,并且会立即打开新记录。 要移动重命名的记录,系统将会执行一个作业,在不能访问服务器时该作业会尝试每 300 秒移动一次记录。 在运行系统重新启动后,该作业仍将保留直到执行完毕。 语法 ArchiveLogFile (Log type, Log, Directory name, Mode) 在脚本中是否可用: : 有 (ArchiveLogFile) 参数 Log type 确定记录的类型: 0 (hmiTagArchive) = 数据记录 1 (hmiAlarmArchive) = 报警记录 2 (hmiAudittrailArchive) = 检查跟踪记录 Log 被归档的记录的名称。 Directory name 保存记录的路径。 Mode 0 (hmiCopy) = 复制记录 1 (hmiMove) = 移动记录 7. BackupRAMFileSystem 应用 将RAM文件系统备份到HMI设备的存储介质中。 重启动HMI设备后,数据被自动重新装载到RAM文件系统中。 应用程序(例如Internet Explorer)将数据(例如最近访问的网址)临时保存到操作员设备的DRAM文件系统。 语法 BackupRAMFileSystem 在脚本中是否可用: 是(BackupRAMFileSystem) 8. ButtonPress 应用 触发给定画面对象上的“按下”事件。 例如,当希望使用操作员设备的功能键来操作屏幕按钮时,可使用该系统函数。 说明 系统函数“ButtonPress”和“ButtonRelease”必须始终一起组态。 因此,如果在某一功能键的“按下”事件上组态了系统函数“ButtonPress”,则在同一功能键的“释放”事件上组态了系统函数“ButtonRelease”。 语法 ButtonPress (Screen object) 在脚本中是否可用: 否 9. ButtonRelease 应用 触发给定画面对象上的“释放”事件。 例如,当希望使用操作员设备的功能键来操作屏幕按钮时,可使用该系统函数。 说明 系统函数“ButtonPress”和“ButtonRelease”必须始终一起组态。 因此,如果在某一功能键的“按下”事件上组态了系统函数“ButtonPress”,则在同一功能键的“释放”事件上组态了系统函数“ButtonRelease”。 语法 ButtonRelease (Screen object) 在脚本中是否可用: 否 10. ClearLog 应用 删除给定记录中的所有数据记录。 语法 ClearLog (Log type, Log) 在脚本中是否可用: 有 (ClearLog) 参数 Log type 确定记录的类型: 0 (hmiTagArchive) = 数据记录 1 (hmiAlarmArchive) = 报警记录 Log 要删除其所有条目的记录的名称。 11. CopyLog 应用 将记录的内容复制到其它记录中。 变量值只能复制到其它数据记录中,而报警只能复制到其它报警记录中。 使用“CopyLog”系统函数复制日志前,必须停止记录。 “StopLogging”函数可用来终止记录操作。 说明 如果使用“CopyLog”系统函数复制记录,则外部应用程序有可能无法读取在复制记录的已记录消息文本中的某些特定国家/地区的特定字符。 这不适用于 WinCC flexible Runtime。 WinCC flexible Runtime 可以正确读取复制的记录文件。 语法 CopyLog (Log type, Destination log, Source log, Mode, Delete source log) 在脚本中是否可用: 有 (CopyLog) 参数 Log type 确定记录的类型: 0 (hmiTagArchive) = 数据记录 1 (hmiAlarmArchive) = 报警记录 Destination log 要将条目复制到其中的记录的名称(目标记录)。 Source log 要复制其条目的记录的名称(源记录)。 Mode 确定采用什么方式将复制下来的条目放入目标记录中: 0 (hmiOverwrite) = 覆盖: 覆盖已有的条目。 2 (hmiAppend) = 附加: 在目标记录的末尾插入这些条目。 当达到所组态的记录大小时,对目标记录的处理方式类似于循环记录。 Delete source log 确定复制后是否删除源记录。 0 (hmiNo) = 否: 不删除。 1 (hmiYes) = 是: 删除。 12. DeleteDataRecord 应用 删除配方数据记录。 可以从一个或多个配方中删除若干个数据记录。 语法 DeleteDataRecord (Recipe number/name, Data record number/name, Confirmation, Output status message, Processing status) 在脚本中是否可用: 有 (DeleteDataRecord) 参数 Recipe number/name 要删除其配方数据记录的配方的编号或名称。 如果想要从所有可用配方中删除配方数据记录,则指定“0”。 Data record number/name 要删除的配方数据记录的编号或名称。 如果想要删除所有的配方数据记录,则指定“0”。 Confirmation 确定是否需要操作员确认删除操作: 0 (hmiOff) = 关: 无需确认便开始删除。 1 (hmiOn) = 开: 必须经过确认后才开始删除。 Output status message 确定删除之后是否输出状态消息: 0 (hmiOff) = 关: 不输出状态消息。 1 (hmiOn) = 开: 输出状态消息。 Processing status 返回系统函数的处理状态。例如,可以使用返回值延迟执行其它系统函数,直到本系统函数已经成功完成。 2 = 系统函数正在执行。 4 = 系统函数已经成功完成。 12 = 因为出现了错误,系统函数未执行。 13. GetDataRecordName 应用 在给定的变量中写入给定配方和配方数据记录的名称。 说明 如果配方或配方数据记录不存在,则将通配符(“###”)写入该变量。 语法 GetDataRecordName (Recipe number, Data record number, Recipe name, Data record name, Processing status) 在脚本中是否可用: 有 (GetDataRecordName) 参数 Recipe number 其名称将被写入给定变量的配方的编号。 Data record number 其名称将被写入给定变量的配方数据记录的编号。 Recipe name 要写入配方名称的变量。 该变量必须为STRING类型。 Data record name 要写入配方数据记录名的变量。 该变量必须为STRING类型。 Processing status 返回系统函数的处理状态。例如,可以使用返回值延迟执行其它系统函数,直到本系统函数已经成功完成。 2 = 系统函数正在执行。 4 = 系统函数已经成功完成。 12 = 因为出现了错误,系统函数未执行。 14. GetDataRecordTagsFromPLC 应用 将装载到PLC中的配方数据记录的值传送给配方变量。 例如,在设备上进行交互操作期间,使用该系统函数。 语法 GetDataRecordTagsFromPLC (Recipe number/name, Processing status) 在脚本中是否可用: 有 (GetDataRecordTagsFromPLC) 参数 Recipe number/name 要将其值从PLC写入变量的配方数据记录的编号或名称。 Processing status 返回系统函数的处理状态。例如,可以使用返回值延迟执行其它系统函数,直到本系统函数已经成功完成。 2 = 系统函数正在执行。 4 = 系统函数已经成功完成。 12 = 因为出现了错误,系统函数未执行。 15. GetPassword 应用 在给定的变量中写入当前登录到HMI设备的用户的口令。 说明 确保给定变量的值未显示在项目中的其它位置。 说明 无法读取用户 SIMATIC Logon 的密码。 语法 GetPassword (Tag) 在脚本中是否可用: 是(GetPassword) 参数 Tag 要将口令写入其中的变量。 16. GoToEnd 应用 在HMI设备上执行<End>键功能: 当HMI设备在缺省情况下不具有该功能时使用此系统函数。 语法 GoToEnd 在脚本中是否可用: 有 (GoToEnd) 17. GoToHome 应用 在HMI设备上执行<Home>键功能: 当HMI设备在缺省情况下不具有该功能时使用此系统函数。 语法 GoToHome 在脚本中是否可用: 有 (GoToHome) 18. IncreaseValue 应用 将给定值添加到变量值上。 X = X + a 说明 系统函数使用同一变量作为输入和输出值。 当该系统函数用于转换数值时,必须使用帮助变量。 可使用系统函数“SetValue”将变量值分配给帮助变量。 如果在报警事件中组态了函数但变量未在当前画面中使用,则无法确保在 PLC 中使用实际的变量值。 通过设置“连续循环”采集模式可以改善这种情况。 语法 IncreaseValue (Tag, Value) 在脚本中是否可用: 有 (IncreaseValue) 参数 Tag 为其添加给定值的变量。 Value 作为加数的数值。 19. InvertBit 应用 对给定的“Bool”型变量的值取反。 · 如果变量具有值 1(真),它将被设置为 0(假)。 · 如果变量具有值 0(假),它将被设置为 1(真)。 语法 InvertBit (Tag) 在脚本中是否可用: 有 (InvertBit) 参数 Tag 要设置其位的变量。 20. InvertBitInTag 应用 对给定变量中的位取反: · 如果变量中的位为值 1(真),它将被设置为 0(假)。 · 如果变量中的位为值 0(假),它将被设置为 1(真)。 在改变了给定位之后,系统函数将整个变量传送回 PLC。 但是并不检查变量中的其它位是否改变。 在变量被传送回 PLC 之前,操作员和 PLC 可能只能读该变量。 说明 如果 PLC 支持 BOOL 型变量,不要使用该系统函数。 而是使用“InvertBit”系统函数。 语法 InvertBitInTag (Tag, Bit) 在脚本中是否可用: 有 (InvertBitInTag) 参数 Tag 要设置其给定位的变量。 Bit 要设置的位的编号。 当该系统函数在脚本中使用时,变量中的位从右向左计数。 计数从 0 开始。 21. LoadDataRecord 应用 将给定的配方数据记录从HMI设备的存储介质装载到配方变量中。 例如,可使用该系统函数在配方画面中显示配方数据记录。 语法 LoadDataRecord (Recipe number/name, Data record number/name, Processing status) 在脚本中是否可用: 有 (LoadDataRecord) 参数 Recipe number/name 要装载其配方数据记录的配方的编号或名称。 Data record number/name 要装载的配方数据记录的编号或名称。 Processing status 返回系统函数的处理状态。 例如,可以使用返回值延迟执行其它系统函数,直到本系统函数已经成功完成。 2 = 系统函数正在执行。 4 = 系统函数已经成功完成。 12 = 因为出现了错误,系统函数未执行。 22. OpenScreenKeyboard 应用 隐藏或显示屏幕键盘。 屏幕键盘保持打开直到它被明确关闭。 这样,屏幕键盘也可用于其它应用程序。 语法 OpenScreenKeyboard (Display mode) 在脚本中是否可用: 有 (OpenScreenKeyboard) 参数 Display mode 指定使用屏幕键盘打开的窗口是最小化还是最大化: 0 (hmiScreenKeyboardMinimized) = 最小化 1 (hmiScreenKeyboardMaximized) = 最大化 23. PageDown 应用 在HMI设备上执行<Pagedown>键功能: 语法 PageDown 在脚本中是否可用: 有 (PageDown) 24. PageUp 应用 在 HMI 设备上执行 <Page up> 键功能。 语法 PageUp 在脚本中是否可用: 有 (PageUp) 25. PrintReport 应用 通过连接到HMI设备的打印机来打印给定的报表。 说明 报表将按操作员设备上所设置的语言进行打印。 语法 PrintReport (Report) 在脚本中是否可用: 是(PrintReport) 26. PrintScreen 应用 通过连接到HMI设备的打印机来打印当前显示在HMI设备上的画面。 同时打印已打开的窗口。 说明 从Windows操作系统的当前设置中获取打印机设置。 语法 PrintScreen 在脚本中是否可用: 有 (PrintScreen) 27. RecipeViewDeleteDataRecord 应用 删除当前显示在配方视图中的数据记录。 语法 RecipeViewDeleteDataRecord (Screen object) 在脚本中是否可用: 否 参数 Screen object 配方视图的名称,在其中删除显示的配方数据记录。 28. RecipeViewGetDataRecordFromPLC 应用 将PLC中当前装载的数据记录传送至HMI设备并在配方视图中显示。 语法 RecipeViewGetDataRecordFromPLC (Screen object) 在脚本中是否可用: 否 参数 Screen object 配方视图的名称,在其中显示来自PLC的配方数据记录。 29. ResetBit 应用 将“Bool”型变量的值设置为 0(假)。 语法 ResetBit (Tag) 在脚本中是否可用: 有 (ResetBit) 参数 Tag 设置为 0(假)的 BOOL 型变量。 30. SetAcousticSignal 应用 在 HMI 设备上组态触摸屏操作的声反馈。 说明 在断开状态下建立的组态将在重启HMI设备时重新建立。 语法 SetAcousticSignal (Volume) 在脚本中是否可用: 有 (SetAcousticSignal) 参数 Volume 确定声音信号是否发出以及发出多大的声响: -1 (hmiToggle) = 切换: 对发出的声音信号进行如下切换: 静音 > 轻声 > 高声。 0 (hmiMuted) = 静音: 没有声音信号 1 (hmiQuiet) = 安静: 较轻的声音信号 2 (hmiLoud) = 响亮: 较响的声音信号 31. SetBitWhileKeyPressed 应用 只要用户按下已组态的键,给定变量中的位即设置为1(真)。 在改变了给定位之后,系统函数将整个变量传送回PLC。 但是并不检查变量中的其它位是否同时改变。 在变量被传送回PLC之前,操作员和PLC可能只能读该变量。 仅应使用该函数访问BOOL类型的变量,以避免发生同时访问相同变量的问题。 说明 即使该键保持按下状态,与事件“释放”有关的所有函数均将通过为某个键所组态的画面变化来立即执行。如果为某个功能键组态了系统函数“SetBitWhileKeyPressed”,则该位在画面改变后将立即复位。 该动作是必需的,因为在画面改变后键赋值也发生了变化。如果 PLC 支持 BOOL 型变量,不要使用该系统函数。 而使用系统函数“SetBit”。 语法 SetBitWhileKeyPressed (Tag, Bit) 在脚本中是否可用: 否 参数 Tag 要将其中的一个位暂时设置为1(真)的变量。 只要PLC允许,可以仅使用BOOL类型的变量。 Bit 要暂时设置为1(真)的位的编号。 32. SetDaylightSaving 应用 系统函数“SetDaylightSaving”可将 HMI 设备的设置从夏时制更改为标准时间,反之亦然。 执行该系统函数后,时间设置将立即生效。 说明 系统函数“SetDaylightSaving”不支持未使用夏令时的时区。 说明 系统函数“SetDaylightSaving”在 HMI 设备 OP 73micro、TP 170micro 和 TP177micro 上不可用。 语法 SetDaylightSaving (Mode) 在脚本中是否可用: 是 (SetDaylightSaving) 参数 Mode 确定是否在 HMI 设备上设置了夏令时: 0 = 未激活夏令时。 1 = 已激活夏令时。 变量 Bool 或 Uint 类型的变量。 33. ShowSystemAlarm 应用 将已传递参数的值显示为 HMI 设备上的系统报警。 语法 ShowSystemAlarm (Text/value) 在脚本中是否可用: 是 (ShowSystemAlarm) 参数 Text/Value 作为系统报警输出的文本或数值。
wincc web发布方法 (一) :首先新建画面,变量等。 (二) :组态web服务(如果没有安装WEB Navigator Server,则提前安装IIS,然后才可以成功安装Web Navigator Server。 三) :右键点击web浏览器——web组态器如下图:设置站点名称,端口(默认是80端口www,http端口),Ip地址,缺省的网页,(默认为webclient.asp)最好选用默认的,如果选用maincontrol.asp则必须安装相应的授权点击windows防火墙,进入windows防火墙界面。 点击例外,进入后选择wincc web发布,不受防火墙的屏障。 4点击完成即可。 四) 组态完web组态器后,右键点击web浏览器——进入web浏览发布器。 1进入web发布向导:五:点击下图的web浏览器图标,设置起始画面和语言。 六:客户端访问web工程:(注:可以设置web网页的工具——安全——本地intranet——自定义级别 1.安装客户端web Navigator client 客户端,然后输入ip地址——即可进入登陆界面。
wincc7.0授权解释
问答之:组态王工程转换后看不清怎么解决? 以下第一副图片是编辑状态下的图片状态,第二副图片是运行时显示的画面,此工程原来版本为6.53现在升级为6.55,分辨率和当前显示器分辨率适应,说明, 转换完成后刚开始运行时,不会出现这种情况,转换后的文字有很多看不清的,然后做了字体的更改后就变成了这种情况,请问这种问题能通过什么样的方式解决?谢谢
工业物联网下还需要组态软件么? 现在国内有靠谱的工业互联的组态软件吗?跨平台例如手机端支持,可使用本地服务器。类似组态王,wincc等。 首先我先谈一下,我是如何理解组态软件。我用DSP开发过系统的控制器,也用过西门子驱动调试软件,也写过PLC的控制程序。其实控制系统的本体都是一样的,也就是底层的控制器的芯片。 但是组态大大的简化了系统开发或者调试的难度,例如,你要写一个闭环控制,你采用组态软件,或许拉几个参数即可。而具体芯片的开发,你需要写下全逻辑流程,同时也需要考虑采样时间,输出时间等,这些都将影响控制系统的稳定性。 综上,组态软件只是简化了自动化工程师在软件层面的开发难度,让他们更有时间专注于硬件,电机等执行机构。 回到题主的问题。从几个方面回答工业物联网的交互方式。 1.类似组态软件交互方式必将存在,工业数据的上传若全交给IT工程师,期间成本必然很大。其中:西门子的MindSphere在上传数据的层面就是类似组态的方式,大大简化了采集数据的难度,入手极其简单。 2.在云端的应用或者软件开发,会采用IT熟悉的逻辑,云平台通过开放API进行交互,但程序的框架仍会持续IT逻辑。主要应用对象是他们。 3.众所周知,组态逻辑简化了交互逻辑,但是灵活性受到制约,纯IT逻辑反之。因此,需要一款全新的物联网交互逻辑非常重要。
【干货】组态王与三菱PLC的通信应用案例分享 硬件连接 三菱PLC FX系列可以通过自身的编程口和计算机通信,也可通过通信口和计算机通信。通过编程口,一台计算机只能和一台PLC通信。实现对PLC中软元件的间接访问;通过通信口,一台计算机可与多台PLC通信,并实现对PLC中软元件的直接访问,但两者通信协议不同。 模拟电压输入:将模拟量输入模块FX2N—4AD与PLC相连。在模拟量输入1通道V+与VI-之间输入电压0~10V。 模拟电压输出:将模拟量输出模块FX2N—4DA与PLC 相连。在PLC输出口可以连接一个发光二极来表示电压变化。 数字量输入:按钮、行程开关等常用触点接PLC输入端点(X0、X1、···、X17与COM之间接开关)。 数字量输出:不需要连线,直接使用PLC提供的输出信号指示灯,也可外接指示灯或继电器等装置来显示开关输出状态。 通信设置 如果将三菱FXPLC与计算机相连,需要一根编程电缆。 当PLC使用RS232与计算机上位机相连时,其参数设置为:波特率:9600;数据位长度:7;停止位长度:1;奇偶校验位:偶校验。 组态王定义设备时选择:PLC三菱FX2N编程口。 组态王的设备地址与PLC的设置保持一致(0~15)。 仿真PLC 在进行组态王程序调试时,可以使用仿真I/O设备,用来模拟实际设备向程序提供数据。 以下是组态王中内部寄存器: ● 自动加一寄存器INCREA:最大变化范围是0~1000,寄存器变量的编号原则是在寄存器名后加数值,此数值表示变量从0开始递增变化范围。 ● 自动减一寄存器DECREA:最大变化范围是0~1000,寄存器变量的编号原则是在寄存器名后加数值,此数值表示变量从0开始递减变化范围。 ● 随机寄存器RADOM:变量值是一个随机值,此变量只能读,无法写入;寄存器变量的编号原则是在寄存器名后加数值,此数值表示变化最大值范围。 ● 常量寄存器STATIC:是一个静态变量,可保存用户的数据,并且可以读出。 ● 常量字符串寄存器STRINC:也是一个静态变量,可保存用户的字符,并且可以读出。 ● CommEr寄存器:可读写离散变量,用户通过控制CommEr寄存器状态来控制运行系统与仿真PLC通信。 这是一个极简标题 ● 功能概述 实现组态王对三菱PLC FX1N—4AD模拟量输入模块电压的采集。 ● 硬件连接 PLC硬件连接,如图9-4所示。使用分压电路(滑动电阻器)将0~5V电压接到模拟通道输入1。图9-4 PLC模拟电压量输入硬件连线图 ● 三菱FX1N PLC模拟量输入梯形图程序图9-5 PLC模拟量输入梯形图程序 ● 在组态王中实现与三菱PLC模拟量输入 1. 串口设备连接及测试 (1)打开电脑的设备管理器,查看串口连接及进行端口参数设置,如图9-6所示。图9-6 设备管理器串口设置 (2)在组态王中设置新设备。新建组态王工程,在组态王工程浏览器中选择设备,双击右侧的“新建”,启动“设备配置向导” 选择:“设备驱动”--- PLC --- 三菱 --- FX2 --- 编程口,如图9-7所示。图9-7 选择串口设备 单击下一步,给设备指定唯一逻辑名称,命名“PLC”。单击下一步选择串口号,如“COM5”(与电脑设备管理器一致),再单击下一步,安装PLC指定地址“0”。接着单击下一步,出现“通信故障恢复策略”窗口,设置试恢复时间为30秒,最长恢复时间为24小时。单击下一步完成串口设备设置。 (3)PLC通信测试 设置串口通信设置,双击“设备/COM5”,弹出设置串口窗口,进行参数设置,如图9-8所示。图9-8 设置串口--COM5 完成设置串口后,选择已建立的PLC设备,单击右键—选择“测试PLC”项,弹出“串口设备测试”,对照参数是否设置正确,若正确,选择“设备测试”选项。如图9-9所示。图9-10 PLC寄存器通信测试 2. 组态王工程画面建立 定义变量“PLC模拟量输入”,变量属性如图9-11所示。注:变量读写属性为“只读”。图9-11 定义“模拟量输入” 再定义一个内存实型变量“电压”,最小值为0,最大值为6。新建“PLC模拟量输入”画面,如图9-13所示。在“模拟值输入”和“模拟值输出”处将“####”关联到“电压”变量之后运行起来在红色框框能看到数据,曲线也有显示就表示通讯是正常了。
看下别人做的组态,挺好看的,有人认识不?
巴里的都出来交流一下,看下我这个界面怎么样?
组态王使用浏览器浏览网站方法 1. 控件安装:把KingHtmlView.ocx复制到Kingview安装目录下,并注册。注册方法:在“开始”工具栏里点击“运行”,输入“regsvr32 "C:\Program Files\kingview\KingHtmlView.ocx"”,然后单击“确定”。如在屏幕上显示了“"C:\Program Files\kingview\KingHtmlView.ocx"中的DllRegisterServer成功。”的信息窗口,则表示注册成功。 2. 控件在组态王中使用: 在画面中 工具箱-插入通用控件,选择KingHtmlView Control,在画面上拖出一个控件,双击控件,控件命名为Ctrl3。 2.1打开固定网址,比如要打开百度主页。 操作方法:在画面上新建一个按钮,在弹起时,添加控件方法:Ctrl3.SetUrlPath(); 2.2运行中输入要打开的网址 操作方法:新建一个内存字符串变量,命名 网址,在画面上做一个文本输入,用来输入要打开的网页地址。 新建一个按钮,在弹起时,添加控件方法:Ctrl3.SetUrlPath(\\本站点\网址);。 如下图所示保存画面 1. 打开运行系统,打开此画面,输入网址,点击按钮打开网页,即可以访问网页
组态王命令语言中的符号的含义 需要在小写的字母输入法的状态下输入 if(表达式)∶ C语言的条件判别语句。表达式为真则执行随后在{ }中的语句(无{ }则只执行if后面的一句)。表达式为假,则执行else后面的语句。 if 语句有两种结构:1. if ( condition )一条语句/复合语句 2. if ( condition ) 一条语句/复合语句 else一条语句/复合语句 else∶else和if是成对出现的,有else出现,必定有if语句,但有if语句可以没有else语句 ( )∶ C语言的分隔符——用于形成表达式、隔离条件表达式,以及指明函数调用和函数参数。 { }∶ C语言的分隔符——用于指明复合语句(分程序)的开始和及结束。 +、-、*、/∶ C语言的运算符——加、减、乘、除。 ;∶ C语言的分隔符——终止一条语句。 = ∶C语言的①运算符——赋值。②分隔符——用于分隔变量说明和初始化表。 <∶ C语言的运算符——小于。 <=∶ C语言的运算符——小于等于。 > ∶C语言的运算符——大于。 >=∶C语言的运算符——大于等于。 ==∶ C语言的运算符——等于。 !=∶ C语言的运算符——不等于。 &&∶ C语言的运算符——逻辑与。 ||∶C语言的运算符——逻辑或。 “∶ %∶ C语言的运算符——模除(取整除后的余数)。 ^ ∶C语言的运算符——按位异或。 | ∶C语言的运算符——按位或。 & ∶ C语言的运算符——①取变量地址。②按位与。 ,∶C语言中①逗号运算符。②分隔符,用于分隔函数参数表中的各参数。 while(表达式)∶ C语言的循环语句。若表达式为真,执行随后{ }内的语句(或do后{ }内的语句)。 其它符号 ->∶ C语言的运算符——指向结构(C++ 语言中的类)成员的指针引用。 <<∶ C语言的运算符——字位左移。 >>∶C语言的运算符——字位右移。 ++∶ C语言的运算符——增一。 -- ∶C语言的运算符——减一。 \\∶ C语言的转义(换码)序列——反斜杠(使用时与字符一样要用“”)。 \0∶ C语言的转义(换码)序列——空白NULL。 \a∶ C语言的转义(换码)序列——响铃。 \b∶C语言的转义(换码)序列——退格。 \n∶C语言的转义(换码)序列——换行。 \r∶C语言的转义(换码)序列——回车。 \t∶C语言的转义(换码)序列——制表符。 义变量的类型有BOOL(离散型)、LONG(长整型)、FLOAT(实数型)、STRING(字符串型)和自定义结构变量类型。其在命令语言语言中的使用方法与组态王变量相同。
组态王与威纶通的高字位读取 0x78 -- 低位 4x77 -- 高位 存储器MD10由MB10、MB11、MB12、MB13四个字节组成,其中MB10为位存储器MD10的最高字节,而MB13为双字的最低字节。 组态王的是高字位高字节威纶通的高字位低字节这种字节顺序都是可以调整的。
组态王连接西门子SMART200PLC 组态王在连接西门子SMART200PLC的时候很多人遇到一个问题就是怎么也通讯不上。这里分享两个方法,方法1是安装驱动,这个驱动是跟原版同类型。只是配置文件不一样。方法2是直接替换这个配置文件,文件如下图,可以用TXT文本编辑后改好后缀替换掉驱动的路径\Program Files\kingview\Driver文件即可通讯上。
组态王驱动补丁 发现组态王6.55自己自带的modbuTCP不能用,会出现通讯不正常的情况。这个补丁是跟原驱动使用方式一致。点击安装驱动选中可以安装这个驱动。测试可用
1
下一页