ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Intouch与西门子S7-300通过DASSIDirect3.0通信配置详解

Intouch与西门子S7-300通过DASSIDirect3.0通信配置详解 简介面向工业自动化监控系统集成与设备联调场景压缩包内提供的是Wonderware Intouch平台的数据访问服务器DAServer及DASSIDirect3.0硬件通讯驱动用于解决Intouch与PLC、I/O模块等现场设备之间的数据交换问题。该驱动可让Intouch直接访问多种硬件设备支持高速响应、简化连接配置、错误日志与故障诊断并确保数据传输安全稳定适合负责SCADA系统搭建、上位机画面开发及现场通讯调试的工程师使用。资源共155个文件压缩后大小约28.39MB主要内容为动态链接库、ActiveX控件、可执行安装程序、帮助手册和配置文件可用于驱动的完整安装、参数修改与运行验证。压缩包内还附有DASSIDirect安装说明、DAServer Manager帮助文档等能够指导用户理解驱动架构、掌握设备配置方法并针对常见通讯故障提供排查思路。该资源已有3927人学习下载可作为Intouch驱动部署和调优的一手参考包。 做SCADA项目最怕的不是画面画得丑而是数据半天读不上来。前两天刚收尾一个改造项目柜子里是西门子S7-300上位机是Wonderware Intouch中间走的正是DASSIDirect3.0这版DAServer。这类需求在国内产线里太常见了Intouch在HMI领域占有率不低西门子PLC又是市场大头两者之间怎么把数据稳定地抠出来几乎是每个工控工程师都会遇到的题。这篇文章就把我从DAServer安装、服务配置、Intouch访问名映射到标记名联调的完整链路讲一遍不掺水分。刚入行的新人照着做能跑通第一条通信链路老工程师也可以直接翻到第五章看踩坑记录那几段是我实际项目里折腾过的问题清单。1. 为什么是这个组合通信方案选型门道1.1 Intouch与PLC之间到底有几条路在Intouch问世的年代它和PLC通信的主流方式是DDE和SuiteLink。DDE太老传输慢不说还容易因为数据量大把宿主程序拖死。SuiteLink比DDE稳不少但仍然需要一套能跑协议的程序来完成“翻译”。于是Wonderware搞出了DAServer这套统一的数据访问架构把各种PLC协议都做成独立Server再通过SuiteLink或OPC把数据交给Intouch。现在常见的做法是三种一是直接用官方DAServer二是用第三方OPC Server中转三是用Intouch自带的驱动如果支持。三者里DAServer是官方正统诊断工具全出问题好排查。第三方OPC灵活但多一层转发就多一个坑通信质量问题经常说不清到底在哪一段。所以我个人习惯能上官方DAServer就绝不用第三方省得后面维护时两头扯皮。1.2 DASSIDirect3.0到底在链路里干啥通俗点讲Intouch不会说西门子的S7协议PLC也不会说SuiteLinkDAServer就是夹在中间的翻译官。DASSIDirect3.0是专门翻译S7协议的DAServer版本它通过以太网口把西门子S7-300/400的DB块、M区、I/Q区数据读出来转成Intouch能认的数据。它最大的意义是摆脱了老式MPI/DP卡的束缚一根网线就能干活硬件成本降一大截调试也方便得多。这个驱动针对的是S7协议ISO-on-TCP对接CP343-1、CP443-1这类西门子以太网模块非常成熟。现场只要PLC侧配好了以太网模块上位机这边基本不用加任何硬件网络通就能通信。这也是为什么它在产线改造里能一直撑到今天。1.3 和DASS7、DASS7IP这些老前辈差在哪我早年做项目接触过DASS7那个驱动要配合CP5611这类MPI/DP通信卡插在工控机上还得处理终端电阻、总线地址这些东西现场一堆线排查问题全靠猜。DASS7IP虽然走IP但配置起来也比较细碎。到了DASSIDirect3.0配置界面清爽多了直接填PLC的IP、机架号、槽号建Device Group测试通了就能用。还有一个区别是通信性能。DASSIDirect3.0对数据块的批量读取和轮询优化做得更好在点数多的项目里差别很明显。老驱动一个点一个点地读遇到DB块上百个变量的站点能卡到怀疑人生新驱动批量读DB段的效率高不少。2. 部署前准备版本、授权与网络规划2.1 软件版本怎么配比较稳先说一个容易坑人的点DAServer的版本不是越新越好要看Intouch版本。Intouch本身升级不频繁DAServer却常在打补丁。比如Intouch 2012 R2配DAServer 3.0 SP1是常见组合Intouch 2014、2017可能要对应更高SP版本。建议装之前去官方渠道找兼容性矩阵或者直接问代理要一份版本对照表。版本不匹配最典型的症状是访问名测试时报“找不到Application”因为DAServer侧的应用名和Intouch侧期望的AppName对不上。这类问题一旦出现排查方向往往从通信变成软件兼容性非常浪费现场时间。2.2 网络规划IP和端口别含糊S7协议走的是ISO-on-TCP标准端口102。DAServer和PLC通信之前先确认网络通不通。最简单一句话在DAServer所在机器上ping PLC的IP能通再往下走。另外Windows防火墙很容易把102端口默默拦了工控机装完系统建议直接把防火墙对DAServer程序放行或者干脆在安全策略允许的内部网络里关掉防火墙。还有PLC和上位机尽量放同一网段。跨VLAN会引入延迟实时性要求高的数据点会很受伤。如果实在要跨网段提前在交换机上做好路由策略并用大流量测试验证别等到联调时才发现丢包。2.3 授权License别在启动阶段翻车DAServer启动时要检测授权这个环节很容易卡住整个项目。正版授权通常通过Wonderware授权工具导入装完软件立刻导License。我见过不少现场软件装完手头License还没到位DAServer服务一启动就报错一查事件日志全是授权问题。这个环节只能等供应商处理没有捷径务必提前安排。顺便提醒一句授权的机器锁定通常和Windows主机名绑定装系统时别随便改机器名改完License可能就失效了又要重新走一圈导入流程。3. DAServer侧配置实操3.1 安装和打开DAServer Manager安装DAServer的过程基本都是Next到底关键是安装完成后从开始菜单找到“DAServer Manager”并打开。界面左侧是一棵树能看到本机所有DAServer对象。在“Configuration”上右键就能新建服务对象。不同版本菜单位置略有差异但核心操作都在这个管理器里。在开始配置之前我习惯先确认DAServer服务已经安装到Windows服务列表里并且启动类型设为自动。这个细节能避免后面重启机器后DAServer不工作的问题。3.2 新建SIDirect服务并配置PLC连接参数我按实际项目的操作路径走一遍右键Configuration选择“Add SIDirect DAServer”起一个服务名比如DASIDirect_Test。右键新建的服务选择“Add Device Group”设备组名建议直接用PLC名字比如S7_300_A。右键设备组选择“Add Device”填入PLC的连接参数IP地址、端口号默认102、机架号Rack、槽号Slot。高级参数里设置Poll Period轮询周期、Timeout超时、Retry重试次数。这里Rack和Slot是重灾区。S7-300常见Rack0、Slot2S7-400常见Rack0、Slot3但这不是绝对的必须按实际机架排列来填。怎么确认打开STEP7的硬件组态HW Config看CPU在几号机架的几号槽位照着填就对了。填错的表现是通信状态一直红色数据全是超出质量。3.3 地址格式DAServer眼里的PLC数据DASSIDirect的地址格式和STEP7里的表达方式不一样需要按它的规则写。常见格式是“区域,数据类型,偏移量”下表是几个典型对应关系含义地址写法对应S7地址DB1.DBW0整型DB1,INT,0数据块1的字节偏移0DB1.DBD4浮点DB1,REAL,4数据块1的字节偏移4M3.2位M,BOOL,3.2位存储区第3字节第2位IB0字节I,BYTE,0输入字节0QW0字Q,WORD,0输出字0注意类型混用最容易出错。比如DB块里定义的是REAL你在Intouch里地址写成INT能读到数字但是值永远不对。这类问题在DAServer自带的测试里能直接发现所以测试这一步别省。3.4 先用DAServer测试工具把点测通配置完成后在DAServer Manager里右键Device Group选择Test菜单会弹出一个测试面板。在里面输入地址比如DB1,REAL,0点一下查询正常情况下能返回实时值。如果返回错误代码或问号说明配置或地址有问题。这时候就专心在DAServer侧排查别急着去Intouch里改否则两头都在动很难定位问题。我个人的习惯是至少在DAServer测试面板里验证3到5个典型地址类型BOOL、REAL、INT全部通了再进Intouch。这一步看着浪费时间实际是后面联调最快的路。4. Intouch侧配置与联调4.1 访问名的三个关键字段Node、Application、TopicIntouch和DAServer通信的枢纽是访问名Access Name。在Intouch的“访问名”配置里三个字段必须写对Node Name运行DAServer那台机器的Windows计算机名。如果DAServer就装在Intouch本机可以填机器名也可以留空让软件自动解析。Application Name填DAServer服务对象的应用名通常和DAServer类型相关比如DASIDirect或SIDirect具体以DAServer Manager里显示的应用名为准。Topic Name填DAServer里那个Device Group的名字也就是你建的那个S7_300_A。我自己踩过的坑是Node Name区填了IP地址结果Intouch反而识别不了。这里是Windows网络标识不是TCP/IP寻址除非做过NetBIOS名映射否则别填IP。4.2 标记名把地址写进标记点访问名建好以后新建标记名时选择对应的访问名然后在“访问名右侧地址”栏里填DAServer能认识的地址比如DB1,REAL,0。标记名的数据类型要和实际数据匹配这点通用于所有SCADA项目。例如S7程序里DB100.DBD20是个REAL那Intouch这边标记名的类型应该设为实数Real地址写DB100,REAL,20。这样一套下来基本不会翻车。如果地址少了一个逗号、类型写错大小写Intouch也能接受但运行时质量就是Bad排查起来比想象中的费劲。4.3 跑画面验证实时性配置完成后在WindowMaker里把标记名拖到画面做一个简单的数值显示或动画链接然后WindowViewer运行起来。如果看到数值稳定刷新且标记名质量显示为Good说明链路通了。如果质量显示为Bad或Uncertain回到DAServer侧重新检查地址。联调时我有一个土办法在PLC里用一个定时器周期改变M区某个整数Intouch画面就盯着这个整数看刷得顺就说明整条链路是通畅的接下来再慢慢扩展数据点。这个方法比一次性建几百个点然后挨个查Bad质量要高效得多。5. 常见故障排查实录我踩过的坑5.1 DAServer服务起不来或自动停止典型现象服务状态一直Stopped启动后过一会又停了。先查两件事一是Windows事件查看器里DAServer的日志二是授权是否已正确导入。如果日志显示license相关错误就是授权问题。如果日志是端口被占用多半是102或1080被其他程序占了用netstat查一下清掉占用进程或者改DAServer端口。这个坑最烦人的地方是日志信息很隐晦动不动就是“Unexpected error”查起来没有头绪。后来我总结出一个办法把DAServer的日志级别调到详细查看具体报错行再对照官方KB命中率会高很多。5.2 通信一直Comm Error数据全红表现是Intouch里的数据点全是Bad质量DAServer测试面板也读不到值。按顺序排查先ping PLC网络不通就查网线和IP再查PLC是否允许PUT/GET访问S7-300/400的CPU属性里有一个“允许通过PUT/GET通信访问”的选项如果没勾外部驱动根本进不去最后查Rack和Slot不对就改成硬件组态里的实际值。这里特别要提一下S7-1200/1500它们默认安全策略更严外部访问通常需要显式打开S7-300/400老CPU反而宽容一些但也可能被项目工程师在组态里关掉。遇到Comm Error先别怀疑DAServer把这三个环节全过一遍。5.3 DB块读不到但M区能读这个坑尤其诡异。S7-300从某版本起新建的DB块默认开启“优化块访问”Optimized Block Access开启后DB块无法通过绝对地址访问外部通信自然读不到。解决方法是在STEP7里选中DB块右键属性把“Optimized block access”取消勾选然后重新下载到PLC。注意取消优化访问后DB块偏移地址可能重新分配程序里的间接寻址逻辑要检查一遍。我曾经因为这个坑折腾了整整两天最后查资料才知道是DB块优化访问的问题从那以后凡是遇到DB块读不到第一反应就是去看这个设置。5.4 数据值不对类型错位和字节序几乎每个人都会遇到一次地址对着数值却莫名其妙。最典型的是把REAL当INT读或者字节顺序反了。西门子PLC默认是大端序部分第三方工具读出来会“倒字节”。DAServer通常按S7规范处理但你在测试地址时用错类型就会得到怪值。所以测试时一定明确数据类型、长度、偏移三个要素。我在DAServer测试面板里每次都会顺手把数据类型再核对一遍宁可多花十秒也不愿意跑完一次重新排查。5.5 重启机器后DAServer不自动启动工控现场最怕停电恢复后还得手动开服务。解决办法是把DAServer所在服务设为自动启动或者用Intouch自带的启动工具设置自动启动。还可以写个计划任务开机后延时运行DAServer Manager的相关启动命令。这个细节看着小但半夜PLC来电、上位机没人管时自动化恢复能力很重要。遇到过好几个现场半夜断电后来电DAServer没起来第二天早上操作员发现整个中控画面全是叉号才打电话喊人。所以服务自动启动这个动作我在每个项目里都会提前做掉。5.6 多客户端同时访问同一个PLC导致通信变慢项目上如果有多台上位机同时读同一个PLCDAServer的并发连接会成为瓶颈。S7协议本身对同时连接数有限制S7-300通常允许几个到十几个连接要看CPU型号和授权。超了之后会出现时而能读、时而不行的问题。对策是在DAServer侧调整轮询周期或者在网络层面做数据集中转发让一台机器作为数据服务器其他客户端从这台机器取数而不是每台都直接连PLC。6. 一点项目体会送给还在和通信较劲的你说实话Intouch和S7通信这件事原理不复杂链条却长PLC网关、网络、DAServer、SuiteLink、Intouch访问名、标记名类型任何一环出问题都表现为“数据不对”。我最后养成一个习惯所有数据点先在DAServer侧打一遍读不通绝不动Intouch。另外地址类型的规范表一定要让项目里执行的人统一使用别一个人写DB1,REAL,0另一个人写DB1,REAL0格式混了后面排查能疯。最后补充一句S7-300 DB块优化访问这个坑是我项目里真真切切折腾过两天的如果在座各位现场遇到DB读不到第一时间去查这个设置比啥排查都管用。希望这篇东西能帮你把通信链路一次打通别再被那些看着不起眼的小问题卡住进度。本文还有配套的精品资源点击获取
返回列表