
“ 对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。
循环读取W000.00,如果为1表示某一设备状态发生过变化,调用SEND指令,将所有设备状态发送到上位机。
以交通信号灯为例:
循环扫描交通信号灯的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;
以照明控制系统为例。
取得系统时间,与起始时间的时和分比较,如果都相等,则将时控方案表的照明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内部工作过程。