简介:《Intouch 2020R2 SP1与西门子1500PLC通讯配置手册》面向具备自动化设备安装调试基础、需要完成上位机与西门子S7-1500通讯组态的技术人员,聚焦从博图设置到Intouch画面联动的完整实施路径。压缩包内为1个PDF文件,大小约1.42MB,篇幅集中、便于随查随用。内容按博图软件参数设置、SMC配置、创建Intouch通讯程序、配置访问名与标记名、建立动画链接等模块递进展开,并穿插PUT/GET通信访问、优化块访问取消等关键选项说明及安全操作提醒,可帮助读者梳理通讯链路、核对配置细节并减少调试返工。目前已有287人学习,适合用作工程项目现场配置时的步骤参照与排错线索。
1. 一套 Intouch 2020R2 SP1 与西门子 1500 PLC 的通讯,卡住的位置通常不在画面
画面做完了,数值一动不动,这是 Intouch 2020R2 SP1 与西门子 1500 PLC 通讯配置里最常见的一幕。多数人的第一反应是查动画链接、查脚本,真正的问题往往出在前三层:PLC 的防护设置没放开 PUT/GET、DB 块还勾着优化访问、或者 SMC 里的 SIDIRECT 通道根本没激活。这份手册把整条链路拆成四段——博图侧的三个开关、SMC 里的 Port 与 Device Group、Intouch 的访问名、标记名与动画链接,每一段都给了可对照的步骤和参数位置。适合已经能独立调试、但第一次在 Intouch 上挂 S7-1500 的自动化技术人员,也适合拿它当现场应急的对照清单,照着走一遍能排除掉大部分低级配置问题。
2. 博图侧的三个开关:把 S7-1500 变成可被上位机读写的数据源
先把一个容易混淆的概念说清楚:Intouch 通过 SIDIRECT 驱动访问 S7-1500,走的是 S7 协议里的 PUT/GET 通讯,由上位机的 OI Server 主动发起请求,PLC 只是被动应答。这意味着 PLC 侧必须显式地“允许别人来读写”,而这个允许默认是关着的。博图里要动的开关只有三个,但每一个漏掉,后面 SMC 和 Intouch 配得再漂亮也读不出数。
2.1 保护等级与 PUT/GET:为什么“无保护”不能随手点
在博图里打开 CPU 的属性,找到“防护与安全”→“连接机制”,勾上“允许来自远程对象的 PUT/GET 通信访问”。这一项不勾,SIDIRECT 发出的请求会被 CPU 直接拒绝,症状是 SMC 那边看着像是连上了,Intouch 里的标记名质量却是 Bad,或者读数恒为 0。同一个属性页里的“访问级别”,手册给的做法是选“无保护”,这在隔离的调试网段里确实省事,不用来回对口令。
但这一步在生产环境要掂量。无保护意味着任何能连上 102 端口的节点都能读写 PLC 数据,等于把口令这道门整个拆掉。我一般的做法是调试期先用无保护把链路打通,确认地址和数据类型都对,上线前再改回“完全访问”并配口令,或者按项目的安全评估结论处理。改完属性必须重新编译硬件组态并下载,只改不下载等于没改,下载过程 CPU 会重启,现场有设备在跑的话要提前打招呼。
三个开关的对照关系整理如下,出问题时按这张表逐项回查,比在博图里乱翻快得多。
| 开关位置 | 默认状态 | 通讯要求 | 漏掉的典型现象 |
|---|---|---|---|
| CPU 属性 → 防护与安全 → 连接机制 → 允许来自远程对象的 PUT/GET 通信访问 | 未勾选 | 必须勾选 | SMC 侧连接看似正常,Intouch 标记名质量 Bad,读值恒 0 |
| CPU 属性 → 防护与安全 → 访问级别 | 完全访问(带口令) | 调试期可设无保护,上线前按评估恢复 | 驱动报访问被拒绝,SMC 日志里有拒绝记录 |
| DB 块属性 → 优化的块访问 | 勾选 | 必须取消 | 绝对值地址读不到,或读到的值与 PLC 侧监控不一致 |
还要提醒一句:这三项改完是跟着硬件组态走的,换一台电脑打开项目、或者从别人那里拷来一份程序,都要重新确认一遍。我见过不止一次“昨天还好好的,今天换台机器就不行”,最后发现是拷过来的项目里连接机制那一页压根没勾。
2.2 取消优化块访问之后,绝对地址才对齐
S7-1500 的 DB 块默认勾着“优化的块访问”,块内变量由 CPU 自己安排布局,没有固定的偏移量,只能符号访问。SIDIRECT 这套驱动习惯的却是绝对地址,比如 DB1.DBX0.0、DB1.DBW2 这种写法。块还处于优化状态时,你在 Intouch 里按绝对地址去读,驱动的反应是读不到或者读到一个跟 PLC 监控表对不上的值,这种现象最容易被误判成“驱动有 bug”。
做法很直接:打开 DB 块的属性,把“优化的块访问”取消勾选,确定后重新编译并下载。取消之后 DB 内部变量才有固定的偏移,DBX、DBW、DBD 的地址才是稳定的。这里有个连带影响必须提前想到——取消优化会改变块的布局,如果 PLC 程序里有别的地方用了绝对地址访问同一个 DB,偏移可能已经变了,得逐个复核;一直用符号寻址的部分不受影响。
| 对比项 | 优化访问(默认) | 非优化访问(通讯需要) |
|---|---|---|
| 变量偏移 | 不固定,由 CPU 安排 | 固定,可按字节/字/双字计算 |
| 访问方式 | 仅符号访问 | 符号访问与绝对地址均可 |
| 对上位机驱动 | SIDIRECT 读绝对地址会失败 | 可正常按 DBX/DBW/DBD 读取 |
| 改动代价 | 无 | 需重新编译下载,复核已有绝对地址引用 |
另外,取消优化之后建议把 DB 里要通讯的变量集中放在块的前部,中间不要穿插复杂结构体或数组,这样偏移量好算,后期加变量也不容易把已有地址挤乱。这一步多花十分钟,后面调试点位能省几个小时。
2.3 先定地址表,再动手配软件
真正到现场,最浪费时间的不是配置本身,而是“这个点在 PLC 里到底是 DB 几”。我的习惯是在博图里先把要通讯的变量整理成一张表,DB 号、变量名、数据类型、字节偏移、读写属性、刷新周期、对应画面元素,一次定完再动 Intouch。表定下来之后,SMC 和 Intouch 两边填的都是同一份数据,不会出现这边写 DB1.DBW2、那边写 DB1.DBW4 的低级错位。
下面这张表是给一个模拟项目用的地址规划片段,格式可以直接拿去改成 csv,交给同事分工填写。注意偏移量这一列是按非优化访问、变量从 0 字节开始连续排布算出来的。
db_no,var_name,data_type,offset,address,rw,cycle_ms,screen_element 1,Line_Speed,Real,0,DB1.DBD0,R,200,速度数值显示 1,Line_Run,Bool,4,DB1.DBX4.0,RW,100,运行状态指示灯 1,Line_Start,Bool,4,DB1.DBX4.1,W,100,启动按钮 1,Product_Count,DInt,6,DB1.DBD6,R,500,产量累计 1,Alarm_Code,Int,10,DB1.DBW10,R,200,报警代码 2,Set_Temp,Real,0,DB2.DBD0,RW,200,温度设定值代码说明:address列是最终填进 Intouch 标记名地址栏的内容,rw列决定标记名是只读还是可写,cycle_ms只是给画面刷新和 SMC 侧更新速率做参考,不是 PLC 的扫描周期。Bool类型占一位,所以两个布尔量共用一个字节偏移的不同位,这是 S7 的常规排布方式;DInt占四个字节,偏移必须落在偶数字节上,别让它在 5 这种位置起头,否则读出来会是错位的值。
IP 地址这一层也要在同一张规划里定掉。PLC 和上位机放同一个网段,掩码一致,中间不要跨三层设备;PLC 的 IP 在博图硬件组态里配置,上位机网卡手工指定同网段地址,不要指望现场 DHCP。机架号和槽号则要去硬件组态里核对 CPU 的实际位置:S7-1500 单机架通常机架 0、槽 1,S7-300 常见机架 0、槽 2——这两个数字后面在 SMC 里必须原样填进去,照抄别人的值是最容易踩的坑之一。
规划做完,先别急着开 SMC,用上位机做一次最朴素的连通性确认:
# 确认上位机与 PLC 在同一网段且能通 ping -c 4 192.168.0.10 # 确认 S7 通讯端口 102 没有被防火墙或安全软件拦掉 # 能建立连接说明链路层没问题,剩下的都是配置问题 telnet 192.168.0.10 102ping通只能说明 IP 层可达,不代表 102 端口开着;telnet能连上(屏幕变黑或提示 Connected)才说明 S7 通讯端口是通的。如果 ping 通而 telnet 不通,先查 Windows 防火墙的入站规则和现场交换机有没有做端口过滤,别一头扎进 SMC 里反复改参数——那属于在错误的层面上找问题。
3. SMC 里的 SIDIRECT 通道:从 Add Legacy Connection 到 Activate
装好西门子驱动之后,真正把 Intouch 和 PLC 连起来的是 SMC,也就是 AVEVA System Platform Management Console。很多人第一次打开它会被那棵层级很深的树吓到,其实只要理解一件事:这棵树描述的是“哪个驱动、通过哪个端口、连哪台 PLC、下面挂几个数据组”,Intouch 里的访问名就是按这棵树的路径去对号的。层级对不上,访问名填得再对也没用。
3.1 驱动层级:OI Server 到底站在哪一层
从开始菜单打开 AVEVA 的 System Platform Management Console,依次展开 Operations Integration Server Manager → Default Group → Local → Operations Integration Supervisory Servers → Siemens - SIDIRECT → Configuration → Port。这条路径要记住,它是排错时的定位坐标。Operations Integration Supervisory Servers这一层放的是各种驱动,Siemens - SIDIRECT 就是访问西门子 PLC 的那一个;再往下的Configuration是配置容器,Port才是真正承载连接的对象。
层级关系可以这样理解:一个 Port 相当于上位机的一块“通讯出口”,出口下面可以挂多个 Connection,每个 Connection 对应一台 PLC,每个 Connection 下面再挂 Device Group,而 Device Group 就是 Intouch 访问名里填的那个“主题名”。所以一台上位机接三台 1500,不需要建三个 Port,一个 Port 下建三个 Connection 就够了;反过来,如果三台 PLC 分属两个物理网段、走两块网卡,那才需要两个 Port。搞清楚这一层,后面加设备的时候不会把结构建乱。
还有一个容易忽略的点:SIDIRECT 是随驱动安装注册到系统里的 OI Server,它的名字在 SMC 树里显示成类似OI.SIDIR.1这样的形式。这个名字后面在 Intouch 的访问名里要对应上,所以配置的时候顺手记一下,别等到填访问名时再回来翻。
3.2 Port 与 Add Legacy Connection:IP、机架号、槽号怎么填
在Port上单击右键,选择 Add Legacy Connection。弹出的对话框里第一项是连接名,可以重命名,也可以直接用默认值——这个名字只在上位机内部使用,跟 PLC 无关,随意命名不影响通讯,但建议带上设备编号,比如PLC01,后期设备多了不会混。
真正决定通讯成败的是后面三个字段:PLC 的 IP 地址、机架号、槽号。IP 填博图硬件组态里给 CPU 配的那个地址,不是上位机自己的地址,这一点新人偶尔会搞反。机架号和槽号必须和硬件组态里 CPU 的实际位置一致,位置在博图的设备视图里能看到,CPU 落在哪个槽就填哪个数字。填错的表现很典型:连接建立不起来,或者 SMC 日志里反复报连接超时,而此时 ping 是通的——因为网络没问题,是 S7 协议层的站地址对不上。
| 字段 | 填什么 | 常见值 | 填错后的现象 |
|---|---|---|---|
| Connection 名称 | 自定义,建议带设备编号 | PLC01 | 无影响,仅影响可读性 |
| PLC IP 地址 | 博图硬件组态里 CPU 的地址 | 192.168.0.10 | 连接超时,ping 可能仍通 |
| 机架号 | CPU 所在机架编号 | S7-1500 通常 0 | 连接被拒绝或反复重连 |
| 槽号 | CPU 所在槽位编号 | S7-1500 通常 1,S7-300 常见 2 | 同上,日志报站地址无效 |
填完先别急着往下走,把这三个值和博图里的硬件组态并排放着对一遍。我带过的项目里,机架槽号填错的比例远高于 IP 填错,原因是很多人凭印象填 0 和 2,而 1500 的 CPU 在单机架里是槽 1。
3.3 Device Group、保存与激活:状态怎么确认
Connection 建好之后,在它下面的Device Group区域右键空白处,选择 Add,在 Name 里输入组名,比如PLC。这个组名不是随便起的,它就是 Intouch 访问名里的“主题名”,两边必须一字不差。组的作用是把同一台 PLC 下的一组数据点归到一起,方便按刷新要求分开管理——比如快速变化的运行状态放一个组,慢速变化的累计产量放另一个组,互不影响。
接下来是保存。点击界面右上角的保存图标,把整个项目落盘。这一步看着琐碎,但没保存就激活,重启 SMC 之后配置会丢,现场排查半天发现配置根本没写进去,这种冤枉路走过一次就记住了。
保存完,在树里找到OI.SIDIR.1这一项,右键选择 Activate 激活。激活成功后,图标状态会变化,说明这个 OI Server 已经在跑,并且按配置去连 PLC 了。如果激活失败或者状态一直起不来,先回看第 2 章的三个开关,再确认 102 端口,最后核对机架槽号——顺序别反,从底层往上查永远比从上层往下猜快。
激活之后可以顺手做一个“能不能读到”的粗验证:在 SMC 里查看该连接的状态或诊断信息,确认没有持续的连接错误。这一步过了,才说明“上位机到 PLC”这一段是通的,后面 Intouch 里再出问题,范围就缩小到访问名和标记名了。
4. Intouch 侧的三段式:应用程序、访问名、标记名
前面两章解决的是“路通不通”,这一章解决的是“数据怎么落到画面上”。Intouch 这边是三段式:先有应用程序和窗口,再配访问名告诉它去哪里取数,最后用标记名把每一个数据点绑到具体地址,动画链接只是把标记名挂到图形对象上。三段里任何一段对不上,画面就是不动,而且报错信息往往很含糊,所以每一段都要能自己验证。
4.1 新建应用程序与窗口:路径和命名先定规矩
从开始菜单打开 AVEVA Intouch HMI → Intouch HMI Application Manager,在应用程序管理器的空白处右键选择新建,模板选“独立型带符号库”,输入工程名称和存储路径,点完成。工程建好后会出现在列表里,双击进入 WindowMaker。
工程名和路径这两项值得多说两句。手册示例里工程名叫“通讯”,能跑,但我在实际项目里一般坚持用英文加下划线,路径也不放中文和空格。原因不是 Intouch 不支持,而是这类工程后续要备份、要做版本管理、偶尔还要被脚本或第三方工具处理,中文路径在某些环节会莫名其妙地出问题,属于典型的“当时省事、后面返工”。如果工程已经在中文路径下建好了,别慌,先在 Application Manager 里做一次完整备份,确认备份能恢复再动。
进入 WindowMaker 后,在窗口区域右键选择新建窗口,给窗口起个能看懂的名字,比如Main。到这里应用程序这一层就齐了,但此时它还是个空壳,既不认识 PLC,也不知道去哪里取数。
4.2 访问名:五个字段逐个对号
访问名是 Intouch 和 OI Server 之间的约定,位置在 WindowMaker 的“特殊”→“访问名”里。新建一个访问名,需要填的字段不多,但每一个都有明确的来源,填错一个就连不上。
| 字段 | 填什么 | 来源与说明 |
|---|---|---|
| 访问名 | 自定义,建议和 PLC 编号一致 | 如 PLC01,仅本工程内使用 |
| 节点名 | 留空表示本机 | OI Server 在另一台机器时填那台的计算机名,需能名称解析 |
| 应用程序名 | SIDIRECT 的 OI Server 名 | 以 SMC 树里显示的为准,常见写法为 SIDIRECT |
| 主题名 | SMC 里建的 Device Group 名 | 必须一字不差,如 PLC |
| 协议 | SuiteLink | DDE 仅用于兼容很老的系统,新项目不要选 |
| 启用次要源 | 一般留空 | 有冗余通道时才配,指向备用访问名 |
节点名这一栏是最容易被误解的。留空代表 OI Server 和 Intouch 跑在同一台机器上,这是单机项目的常规做法;如果 OI Server 部署在另一台服务器上,这里要填服务器的计算机名,并且保证 Intouch 所在机器能解析这个名字——用 IP 通常不行,得靠 hosts 文件或内网名称解析,这一点在跨机部署时坑过不少人。
协议选 SuiteLink 而不是 DDE,理由是 SuiteLink 基于 TCP,支持更长的标签名、更新更快、断线恢复也更干净;DDE 是上时代的产物,依赖 NetDDE,配置麻烦且在 newer 系统上限制越来越多。除非对接的是十几年前的老系统,否则没有理由选 DDE。
主题名和应用程序名这两项,最稳的确认方式不是凭记忆,而是打开 SMC 对着树看:应用程序名对应OI.SIDIR.1那个 OI Server,主题名对应你建的 Device Group。两边抄一遍,比事后猜快得多。
4.3 标记名与动画链接:从 PLC 地址到画面对象
标记名是真正承载数据的地方。在“标记名字典”里新建,类型按数据类型选:布尔量用 I/O 离散,16 位整数用 I/O 整型,32 位整数用 I/O 整型(注意位宽设置),浮点用 I/O 实型,字符串用 I/O 消息。类型选错的表现很隐蔽——比如把 Real 建成整型,画面上的数值不会报错,只是小数部分没了,很容易被当成“PLC 算错了”。
标记名的几个关键字段这样填:标记名本身建议带前缀和含义,如PLC01_LineSpeed;访问名选上一步建的那个;地址填 PLC 侧的绝对地址,按第 2 章地址表里的写法,如DB1.DBD0、DB1.DBX4.0。不同驱动版本对地址分隔符的容忍度不一样,第一次配的时候点开驱动的条目帮助看一眼语法,能省掉一轮试错。
tagname,type,access_name,address,rw,comment PLC01_LineSpeed,IOReal,PLC01,DB1.DBD0,R,线速度 PLC01_LineRun,IODiscrete,PLC01,DB1.DBX4.0,R,运行状态 PLC01_LineStart,IODiscrete,PLC01,DB1.DBX4.1,W,启动按钮 PLC01_ProductCount,IOInteger,PLC01,DB1.DBD6,R,产量累计,32位 PLC01_AlarmCode,IOInteger,PLC01,DB1.DBW10,R,报警代码 PLC01_SetTemp,IOReal,PLC01,DB2.DBD0,RW,温度设定这份清单可以直接当导入模板用,也可以手填时逐行核对。type列要和 PLC 侧的数据类型严格对应,IOInteger默认是 16 位,读DInt时必须把位宽改成 32,否则读出来的是半个数——这个坑我踩过,画面上的产量每隔一段时间跳成一个莫名其妙的负数,查了半天才定位到类型位宽。rw列标 W 或 RW 的点位,记得在标记名属性里确认“只读”没被勾上,否则画面点了没反应,又会绕回“按钮脚本是不是写错了”的死胡同。
标记名建好,动画链接就是最后一步。选中画面上的对象,双击进入动画设置:数值显示用“数值”动画,表达式选标记名;状态指示用“离散”动画,按 0/1 切换颜色或可见性;按钮用“动作”脚本往里写值。这一层出错的概率反而低,因为标记名一旦通了,动画链接填错会立刻在画面上表现出来,不像通讯层那样无声无息。
5. 排错清单:从“能连”到“能读”之间的六类翻车
通讯配置的麻烦之处在于,同样的现象可能来自完全不同的层。下面这几条是按现场出现频率排的,每条都按“现象—原因—解决”写,遇到问题时按顺序往下对,比从头重配一遍省时间。
5.1 连接层:激活失败、状态起不来、访问名报错
现象一:SMC 里激活后状态一直起不来,或日志里反复出现连接超时。原因通常是三选一:PLC 的 IP 填错、机架号槽号与硬件组态不一致、102 端口被防火墙拦掉。ping 通不代表端口通,这是最容易误判的地方。解决顺序是先telnet IP 102确认端口,再打开博图硬件组态核对机架槽号,最后回查 PUT/GET 是否勾选并已下载。
现象二:Intouch 访问名状态异常,标记名质量一直是 Bad。原因多半是主题名和 SMC 里的 Device Group 不一致,或者 OI Server 压根没激活。字符串比对是最枯燥但最有效的办法:把访问名里的主题名复制出来,和 SMC 树里的组名并排放着看,大小写、空格、下划线都算差异。确认无误后再看OI.SIDIR.1的状态是不是已经激活。
现象三:单机能通,换一台机器或换一个工程就不行。原因是配置没跟着走。SMC 的配置是存在本机的,换机器要重新建;Intouch 工程里访问名的节点名、应用程序名也会随部署方式变化。解决方式是每次部署前把 SMC 配置导出或截图存档,Intouch 工程做完整备份,别指望“上次那台机器上就是好的”。
5.2 数据层:连上了,但值不对
现象四:连接正常,所有数值恒为 0。最常见的原因是 DB 块的“优化的块访问”没取消,绝对地址读不到,驱动返回空值;其次是地址偏移算错,读到了 DB 里一段没用的区域。解决办法是打开 DB 属性确认优化访问已取消、重新编译下载,然后拿地址表和 PLC 在线监控的值逐个比对,先对一个点,对上了再批量铺开。
现象五:数值能读到,但和 PLC 监控表对不上,或者小数变成整数。这是数据类型或位宽不匹配。Real 建成整型会丢小数,DInt 用 16 位整型读会截断成半个数,表现是数值周期性跳变或变成负数。解决办法是回到标记名字典,逐个核对类型和位宽,Real 对应 I/O 实型,DInt 对应 32 位 I/O 整型,别用“看着差不多”的类型凑。
现象六:数值正常一段时间后突然归零或跳回旧值。原因通常是 PLC 程序周期性覆盖了这块 DB,或者写操作和 PLC 逻辑打架。解决办法是先确认这个地址在 PLC 里是不是被别处当中间变量反复赋值,如果是,换一块专用于通讯的 DB;如果不是,检查上位机的写入周期是不是比 PLC 扫描周期还快,把刷新周期拉到合理范围。
5.3 写入层:读得到,写不进
现象七:画面上按钮点了没反应,PLC 侧值不变。三个方向排查:标记名属性里“只读”被勾上;访问级别设成了只读保护;地址指向了输入区(I 区)这种本身不可写的区域。解决方式是先看标记名属性,再看 CPU 访问级别,最后确认地址落在 DB 或 M 区这类可写区域。
现象八:写进去的值立刻被改回原值。这是 PLC 程序里同一地址被逻辑覆盖的典型表现,上位机写得再快也没用。解决办法是在 PLC 程序里搜这个地址的交叉引用,看是不是有常开常闭逻辑在周期性赋值,把通讯用的写入地址单独划出来,不要和逻辑变量共用。
还有一条不算故障但值得单独提:现场调试时如果把 SMC 的更新速率和 Intouch 的刷新周期都调到极小,看起来响应快,实际上会给 CPU 和网络增加不必要的负担,数据量大时反而出现丢包和延迟。我一般按变量重要性分档,状态量 100 到 200 毫秒,累计量和设定值 500 毫秒往上,够用就行。
6. 上线前的验证:三个小实验把配置固定下来
配置能跑通和配置可靠是两件事。我在项目上养成的一个习惯是,正式交付前做三个小实验,每个都指向一个具体的失败模式,做完心里才有底。
第一个实验验证“单点可读”。在 Intouch 里只放一个数值显示对象,绑一个 Real 类型的标记名,其余全部删掉或禁用。运行起来看这个值是否跟着 PLC 在线监控变化,变化是否平滑。这一步排除掉地址、类型、访问名三层的问题,只要这个点通了,说明整条链路是通的。第二个实验验证“可写回读”。放一个按钮写布尔量,再放一个指示灯读同一个地址,点按钮看灯是否立刻变化;如果灯亮了但松手就灭,说明 PLC 侧逻辑在覆盖,问题不在上位机。第三个实验验证“断线恢复”。直接拔掉网线,观察标记名质量是否变成 Bad、画面是否有明确提示,再插回网线,看多久恢复、恢复后数值是否自动刷新。
| 验证项 | 操作 | 通过标准 |
|---|---|---|
| 单点可读 | 仅保留一个 Real 标记名并运行 | 数值随 PLC 变化,无停滞与跳变 |
| 可写回读 | 按钮写布尔量,指示灯读同地址 | 点击后状态立即变化并保持 |
| 断线恢复 | 拔掉网线再插回 | 质量变 Bad 有提示,恢复后自动刷新 |
| 类型一致性 | 抽查 Real 与 DInt 点位 | 小数不丢,32 位整数不截断 |
这三个实验加起来不到半小时,但能覆盖掉现场八成以上的“配好了但不靠谱”。做完之后把 SMC 配置、Intouch 工程、地址表三份东西一起归档,下次同型号设备直接照着改 IP 和地址就能复用。
说个自己的教训。早些年我在一个模拟项目上赶进度,SMC 配完激活、Intouch 里随便点了两个点看到有数,就认为通讯没问题直接交付。结果运行第三天,产量累计突然变成负数,现场打电话过来,我第一反应是 PLC 程序算错了,查了两个小时才发现是自己把 DInt 建成了 16 位整型。从那以后我每次配完标记名,都强制走一遍类型核对和断线恢复,宁可多花半小时,也不想再在半夜接那种电话。希望帮到你。
本文还有配套的精品资源,点击获取