首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【隧道监控】现在隧道PLC程序写的太直白?看看20年前的川藏318隧道PLC程序开发思路

【隧道监控】现在隧道PLC程序写的太直白?看看20年前的川藏318隧道PLC程序开发思路

作者头像
高速公路那点事儿
发布2025-07-03 09:10:04
发布2025-07-03 09:10:04
1380
举报

 对MRON CS1D系列的PLC程序开发进行探讨,在工程实施过程中,发现部分PLC开发人员写的程序太直白,没有设计可言,本文可看作入门级PLC程序设计普及文章,了解PLC程序如何设计。

OMRON CS1D系列的PLC在高速公路隧道的占有率较高。该设备通过数字量模块采集和控制风机、照明、车道标志、信号灯的状态;通过串行通信模块/模拟量模块采集CO/VI、风速风向的检测数据,通过以太网模块与中心控制系统通信。

下面从寄存器定义、程序流程两个核心部分进行举例说明(本文只是举例,每个集成商的设计各有特色)

01-变址寄存器定义

项目上常用的变址寄存器定义如下:

变址寄存器

默认指向

备注

数据寄存器

IR0

CIO0000.00

I/O区首位地址

DR0

I/O区偏移地址

IR1

D00101

控制区首字地址

DR1

控制区偏移地址

IR2

D01101

状态区首字地址

DR2

状态区偏移地址

IR3

D02101

接线表首字地址

DR3

接线表偏移地址

IR4

D05101

设备属性表首字地址

DR4

设备属性表偏移地址

IR5

照明、风机自控,时控方案表首字地址

DR5

照明、风机自控,时控方案表偏移地址

IR6

W区临时变量指针

DR6

W区临时变量偏移地址

02-工作区地址功能定义

工作区地址功能的定义非常重要,一般作为主程序逻辑的控制判断,应该进行详细设计和仔细斟酌。

寄存器

类型

含义

备注

W000.00

位变量

设备状态变化标志位

1表示变化,0表示未变化

W001

字变量

FINS主动发送控制字

发送数据长度:#100(256字)

W002

字变量

目标网络地址:#0表示本地网络

W003

字变量

目标单元址:#0 表示CPU模块目标节点地址:上位机IP地址最后一个字节值

W004

字变量

重发次数1次,通讯端口号0值:#1

W005

字变量

响应监控时间:0.5 s

W006

字变量

设备状态判断临时变量

W007

字变量

当前时间(十六进制)

存储BCD码转换后的结果

W008.00

位变量

时控方案条件判断

大于条件满足时,该值为1,否则为0

W008.01

位变量

小于条件满足时,该值为1,否则为0

03-内部主要流程

PLC内部的主要流程就是初始化、状态上报、设备控制及时空方案控制。

1.初始化程序流程

设备上电后,PLC第一个扫描周期对设备状态区写0,表示上位机未对设备进行控制,初始化IR0,将CIO0000.00的地址MOVR到 IR0,将DR0置为0。

2.状态上报程序流程

循环读取W000.00,如果为1表示某一设备状态发生过变化,调用SEND指令,将所有设备状态发送到上位机。

3.设备控制程序流程

以交通信号灯为例:

循环扫描交通信号灯的D00101~00164的状态控制地址(D00101是设计人员定义地址),判断状态,并读取D02101~02228相应设备的接线表配置,得到端子号,将偏移地址装入DR0寄存器, 用IR0加上DR0个偏移,得到端子号,根据状态对端子进行置位(1)或复位(0)

对设备控制区与状态区D01101~01164内容比较,如果不相等,则将控制区内容写入状态区对应地址,并将W000.00置为1表示状态发生了变化,需要主动上报

信号灯接入方式:连接PLC的三个DO端子,分别控制红、黄、绿:

控制为红灯,将红输出1、绿输出0、黄输出0;

控制为黄灯,将红输出0、绿输出0、黄输出1;

控制为绿灯,将红输出0、绿输出1、黄输出0;

4.时控方案程序流程

以照明控制系统为例。

取得系统时间,与起始时间的时和分比较,如果都相等,则将时控方案表的照明1~16状态写入到控制区对应的状态地址。

算法:

将A351高8位移到W006的低8位,将A352的低8位移到W006的高8位,将W006(BCD)转换为十六进制放入W007

当起始时间<W007<截止时间时,循环16次将方案表中的状态写入到对应控制区

注意:写控制区时,需要先判断照明时控启用标志(D00003),为1时,可写入,为0时不能写入。

时间从A区取,见下表

04-上位机与PLC的交互

上位机与PLC通讯协议为FINS/UDP ,PLC本地端口9600

上位机通过对PLC的DM区的读写完成设备状态查询与控制。

上位机启动后,10秒钟向PLC通讯标志位写1,PLC返回写正确,上位机判断通讯正常,同时PLC也能判断与上位机通讯正常。

当接入PLC的设备状态发生变化时,由PLC主动向上位机发送变化内容。

变化状态包括:车道标志工作状态,信号灯工作状态、风机、照明工作状态、CO/VI采集值、风速风向值、设备通讯状态、设备故障状态、现场手控状态等。

当上位机控制设备时直接用FINS命令写入指定的DM区,PLC回应DM区写正确,当PLC程序执行下一个周期时判断控制后结果,如果控制状态与原状态不同,PLC将主动发送变化后状态。

连接在PLC上的任何设备状态发生变化时,PLC都将发送所有设备的最新状态。

05-结语

一看到PLC,大家都知道CPU模块、IO模块、串口模块等基本组成,通过模块的字面意思大概知道其模块功能。

现在看到一些隧道PLC程序太直白了,对着点位表,直接一通循环读取,指令解析设置。互换性之类的考虑根本没有,毫无维护性可言。

本文列举了一个小的隧道PLC程序设计案例,大家可以了解PLC内部工作过程。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高速公路那点事儿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.状态上报程序流程
  • 3.设备控制程序流程
  • 4.时控方案程序流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档