三菱PLC的指令代码,纯干货,需要的保存吧
三菱PLC
三菱PLC的指令代码
一 顺控指令
1 触点指令
00 LD 逻辑操作开始
01 LDI 逻辑非操作开始
02 AND 逻辑乘
03 ANI 逻辑乘非
04 OR 逻辑加
05 ORI 逻辑加非
2 连接指令
06 ANB AND逻辑块与
07 ORB OR逻辑块或
08 MPS 存储操作结果
09 MRD 从MPS读取操作结果
10 MPP 从MPS读取操作结果
并清除结果
3 输出指令
11 OUT 软元件输出
12 SET 软元件置位
13 RST 软元件复位
14 PLS 在输入信号的上升沿
15 PLF 在输入信号的下降沿
16 CHK 软元件输出翻转
4 移位指令
17 SFT 元件移1位
18 SFTP 元件移1位
5 主控指令
19 MC 主控开始
20 MCR 主控复位
6 结束指令
21 FEND 结束主程序
22 END 总的程序末尾,
返回第0步
7 其它指令
23 STOP 停止
24 NOP 空操作
二 基本指令
1 比较指令
16位数据比较
25 LD= 当S1=S2, 接通,
当S1≠S2, 断开
26 AND=
27 OR=
28 LD<> 当S1≠S2, 接通,
当S1=S2, 断开
29 AND<>
30 OR<>
31 LD> 当S1>S2, 接通,
当S1≤S2, 断开
32 AND>
33 OR>
34 LD<= 当S1≤S2, 接通,
当S1>S2, 断开
35 AND<=
36 OR<=
37 LD< 当S1<S2, 接通,
当S1≥S2, 断开
38 AND<
39 OR<
40 LD>= 当S1≥S2, 接通,
当S1<S2, 断开
41 AND>=
42 OR>=
32位数据比较
43 LDD= 当(S1+1,S1)=(S2+1,S2), 接通
44 ANDD=
45 ORD=
46 LDD<> 当(S1+1,S1)≠(S2+1,S2),接通
47 ANDD<>
48 ORD<>
49 LDD> 当(S1+1,S1)>(S2+1,S2), 接通
50 ANDD>
51 ORD>
52 LDD<= 当(S1+1,S1)≤(S2+1,S2),接通
53 ANDD<=
54 ORD<=
55 LDD< 当(S1+1,S1)<(S2+1,S2), 接通
56 ANDD<
57 ORD<
58 LDD>= 当(S1+1,S1)≥(S2+1,S2),接通
59 ANDD>=
60 ORD>=
2 算术运算指令
二进制16位加/减
61 + (D)+(S)→(D)
62 +P
63 + (S1)+(S2)→(D)
64 +P
65 - (D)-(S)→(D)
66 -P
67 - (S1)-(S2)→(D)
68 -P
二进制32位加/减
69 D+ (D+1,D)+(S+1,S)→(D+1,D)
70 D+P
71 D+ (S1+1,S1)+(S2+1,S2)→(D+1,D)
72 D+P
73 D- (D+1,D)-(S+1,S)→(D+1,D)
74 D-P
75 D- (S1+1,S1)-(S2+1,S2)→(D+1,D)
76 D-P
77 * (S1)×(S2)→(D+1,D)
78 *P
79 / (S1)/(S2)→商(D), 余数(D+1)
80 /P
81 D* (S1+1,S1)×(S2+1,S2)→
(D+3,D+2,D+1,D)
82 D*P
83 D/ (S1+1,S1)/(S2+1,S2)→
商(D+1,D),余数(D+3,D+2)
84 D/P
85 B+ (D)+(S)→(D)
86 B+P
87 B+ (S1)+(S2)→(D)
88 B+P
89 B- (D)-(S)→(D)
90 B-P
91 B- (S1)-(S2)→(D)
92 B-P
93 DB+ (D+1,D)+(S+1,S) →(D+1,D)
94 DB+P
95 DB+ (S1+1,S1)+(S2+1,S2)→(D+1,D)
96 DB+P
97 DB- (D+1,D)-(S+1,S)→(D+1,D)
98 DB-P
99 DB- (S1+1,S1)-(S2+1,S2)→(D+1,D)
100 DB-P
101 B* (S1)×(S2)→(D+1,D)
102 B*P
103 B/ (S1)/(S2)→商(D),余数(D+1)
104 B/P
105 DB* (S1+1,S1)×(S2+1,S2)→
(D+3,D+2,D+1,D)
106 DB*P
107 DB/ (S1+1,S1)/(S2+1,S2)→
商(D+1,D),余数(D+3,D+2)
108 DB/P
109 INC (D)+1→(D)
110 INCP
111 DINC (D+1,D)+1→(D+1,D)
112 DINCP
113 DEC (D)-1→(D)
114 DECP
115 DDEC (D+1,D)-1→(D+1,D)
116 DDECP
3 BCD—二进制转换
117 BCD (S)→(D)BCD转换
118 BCDP
119 DBCD (S+1,S)→(D+1,D)
120 DBCDP
121 BIN (S)→(D)二进制转换
122 BINP
123 DBIN (S+1,S)→(D+1,D)
124 DBINP
4 数据传送指令
125 MOV (S)→(D)
126 MOVP
127 DMOV (S+1,S)→(D+1,D)
128 DMOVP
129 CML (S)→(D)
130 CMLP
131 DCML (S+1,S)→(D+1,D)
132 DCML
133 DCMLP
134 BMOV (S)→(D)n个
135 BMOVP
136 FMOV (S)→(D)n个
137 FMOVP
138 XCH (D1)←→(D2)
139 XCHP
140 DXCH (D1+1,D1)←→(D2+1,D2)
141 DXCHP
5 程序分支指令
142 CJ 条件满足,跳转到P**处
143 SCJ 条件满足后紧接的扫描周期,
跳转到P**处
144 JMP 无条件跳转到P**处
145 CALL 执行P**处子程序
146 CALLP
147 RET 从子程序返回
148 EI 允许中断
149 DI 禁止中断
150 IRET 从中断程序返回
151 SUB 执行n指定的程序
152 SUBP
6 程序切换指令
153 CHG 在主副程序间切换
7 刷新指令
154 COM 执行通讯刷新
155 EI 允许通讯刷新
156 DI 禁止通讯刷新
157 SEG 对应软元件的刷新,仅执行1个扫描周期,M9052 ON时有效
三 应用指令
1 逻辑运算指令
158 WAND (D) AND (S)→(D)
159 WANDP
160 WAND (S1) AND (S2)→(D)
161 WANDP
162 DAND (D+1,D) AND (S+1,S)→(D+1,D)
163 DANDP
164 WOR (D) OR (S)→(D)
165 WORP
166 WOR (S1) OR (S2)→(D)
167 WORP
168 DOR (D+1,D) OR (S+1,S)→(D+1,D)
169 DORP
170 WXOR (D) XOR (S)→(D)异或
171 WXORP
172 WXOR (S1) XOR (S2)→(D)
173 WXORP
174 DXOR (D+1,D) XOR (S+1,S)→(D+1,D)
175 DXORP
176 WXNR (D) XOR (S)→(D)
177 WXNRP
178 WXNR (S1) XOR (S2)→(D)
179 WXNRP
180 DXNR (D+1,D) XOR (S+1,S)→(D+1,D)
181 DXNRP
182 NEG 0-(D)→(D)补码
183 NEGP
2 旋转指令
184 ROR n位右转
185 RORP
186 RCR n位右转(带进位)
187 RCRP
188 ROL n位左转
189 ROLP
190 RCL n位左转(带进位)
191 RCLP
192 DROR n位右转
193 DRORP
194 DRCR n位右转(带进位)
195 DRCRP
196 DROL n位左转
197 DROLP
198 DRCL n位左转(带进位)
199 DRCLP
3 移位指令
200 SFR n位右移
201 SFRP
202 SFL n位左移
203 SFLP
204 BSFR 1位右移
205 BSFRP
206 BSFL 1位左移
207 BSFLP
208 DSFR 1位右移
209 DSFRP
210 DSFL 1位左移
211 DSFLP
4 数据处理指令
212 SER 数据搜索
213 SERP
214 SUM 位检查
215 SUMP
216 DSUM
217 DSUMP
218 DECO 译码编码
219 DECOP
220 ENCO
221 ENCOP
222 SEG 7段编码
223 BSET 对字中n位置位
224 BSETP
225 BRST 对字中n位复位
226 BRSTP
227 DIS 组合分离
228 DISP
229 UNI
230 UNIP
231 ASC ASCII转化
5 先进先出指令
232 FIFW FIFO写
233 FIFWP
234 FIFR FIFO读
235 FIFRP
6 内存缓冲区存取指令
236 FROM 从特殊功能模块读取数据
237 FROMP
238 DFRO
239 DFROP
240 TO 向特殊功能模块写数据
241 TOP
242 DTO
243 FROM 从远程I/O站读数据
244 FROMP
245 DFRO
246 DFROP
247 TO 向远程站写数据
248 TOP
249 DTO
250 DTOP
7 FOR/NEXT指令
251 FOR 重复n次
252 NEXT
8 本地站、远程I/O站存取指令
253 LRDP 从本地站读数据
254 LWTP 向本地站写数据
255 RFRP 从远程特殊功能模块读数据
256 RTOP 向远程特殊功能模块写数据
9 显示指令
257 PR 从指定的8点字软元件输出
16个字符的ASCII码
258 PR 顺序向输出模块输出ASCII
码, 直到结束符NUL(00H)
259 PRC 将字软元件的注释转换成
ASCII码,并输出
260 LED 将指定的8点字软元件显示
16个字符的ASCII码
261 LEDA 显示指定的英文数字字符
262 LEDB
263 LEDC 显示软元件S的注释
264 LEDR 显示复位
10 其它指令
265 WDT WDT复位
266 WDTP
267 CHK 故障检测
268 SLT 按参数设定的条件,数据被锁定
269 SLTR 状态锁存复位,且执行SLT
270 STRA 按参数设定的条件,采样数据存入
271 STRAR 采样跟踪复位,且允许执行
272 STC 进位标志(M9012)ON
273 CLC 进位标志(M9012)OFF
274 DUTY 用户定义时钟
11 伺服指令
275 DSFRP 请求启动伺服程序
276 PSFLP 数据修改
特殊继电器和特殊寄存器
一 特殊继电器M清单
M9000 熔丝断
M9002 I/O组件校验出错
M9004 MINI网通讯出错
M9005 AC电源掉电检测
M9006 电池电压低
M9007 电池电压低锁存
M9008 自诊断出错
M9009 信号报警器检测
M9010 运算出错标志
M9011 运算出错标志锁存
M9012 进位标志
M9016 数据存储区清零标志
M9017 数据存储区清零标志
M9018 数据通讯监控切换
M9020 0号用户定时时钟
M9021 1号用户定时时钟
M9022 2号用户定时时钟
M9023 3号用户定时时钟
M9024 4号用户定时时钟
M9025 时钟数据设置请求
M9026 时钟数据出错
M9027 时钟数据显示
M9028 时钟数据读请求
M9030 0.1秒时钟
M9031 0.2秒时钟
M9032 1秒时钟
M9033 2秒时钟
M9034 1分钟时钟
M9036 常开
M9037 常闭
M9038 RUN后第一个扫描周期ON
M9039 运行标志
M9040 暂停PAUSE允许线圈
M9041 PAUSE状态触点
M9042 停止状态触点
M9043 采样跟踪完成
M9044 采样跟踪
M9046 采样跟踪
M9047 采样跟踪准备
M9048 RUN LED闪烁标志
M9049 切换输出字符数目
M9050 存放操作结果的存储区交换触点
M9051 CHG指令执行禁止
M9052 SEG指令切换
M9053 EI/DI指令切换
M9054 单步运行标志
M9055 状态锁存完成标志
M9056 主程序P, I设置请求
M9057 副程序P, I设置程序
M9060 副程序2P, I设置程序
M9061 副程序3P, I设置程序
M9060 远程终端出错
M9061 通讯出错
M9065 分离传送状态
M9066 传送处理切换
M9067 I/O组件出错检测
M9068 测试模式
M9069 线路故障时的输出
M9073 WDT出错标志
M9074 PCPU准备完成标志
M9075 测试模式标志
M9076 外部急停输入标志
M9077 手动脉冲发生器轴设置错误标志
M9078 测试模式请求出错标志
M9079 伺复程序设置出错标志
M9081 对远程模块的通讯请求
M9082 最终站数不一致
M9084 出错检测
M9086 运行标志BASIC程序
M9087 暂停(PAUSE)标志
M9091 操作运行出错细节标志
M9091 微机子程序调用出错标志
M9092 双电源模块过热
M9093 双工电源模块出错
M9094 I/O改变标志
M9095 双工运行校验出错
M9096 A3VCPU A自校出错
M9097 A3VCPU B自校出错
M9098 A3VCPU C自校出错
M9099 A3VTU自校出错
M9100 SFC程序登记
M9101 SFC程序起/停
M9102 SFC启动状态
M9103 连续步转移有效/失效
M9104 连续转移防止标志
M9108 步转移监控定时器起始
(对应D9108)
M9109 步转移监控定时器起始
(对应D9109)
M9110 步转移监控定时器起始
(对应D9110)
M9111 步转移监控定时器起始
(对应D9111)
M9112 步转移监控定时器起始
(对应D9112)
M9113 步转移监控定时器起始
(对应D9113)
M9114 步转移监控定时器起始
(对应D9114)
M9180 激活步采样跟踪完成标志
M9181 激活步采样跟踪执行标志
M9182 激活步采样跟踪有效
M9196 在块停止时控制输出
M9197~9198 保险丝熔断,
I/O校核出错显示切换
二 特殊寄存器
D9000 保险丝断
D9001 保险丝断
D9002 I/O组件校验出错
D9003 SUM指令检测位数
D9004 MINI网主通讯组件出错
D9005 AC掉电计数
D9006 电池不足
D9008 自诊断出错
D9009 信号报警器检测
D9010 出错步
D9011 出错步
D9014 I/O控制模式
D9015 CPU运行状态
D9016 ROM/RAM设置
D9017 最小扫描时间
D9018 当前扫描时间
D9019 最大扫描时间
D9020 恒定扫描
D9021 扫描时间
D9022 1秒计数器
D9025 时钟数据(年,月)
D9026 时钟数据(日,时)
D9027 时钟数据(分,秒)
D9028 时钟数据(星期)
D9021~D9034 远程终端组件参数设置
D9035 远程I/O组件的通讯属性
D9035 扩展文件寄存器
D9036 总的站数
D9036~9037 供指定扩展文件寄存器软件地址
D9038~9039 LED显示优先级
D9044 采样跟踪
D9050 SFC程序出错代码
D9051 出错块
D9052 出错步
D9053 转移出错
D9054 出错顺控步
D9055 状态锁存步序号
D9061 通讯出错代码
D9072 PC通讯检测
D9081 对远程终端模块的
已执行的通讯请求数
D9082 最后的站号
D9090 微机子程序输入数据区首软元件号
D9091 指令出错
D9094 待更换的I/O组件的首地址
D9095 A3VTS系统和A3V
CPU的运行状态
D9096 A3VCPU A自检出错
D9097 A3VCPU B自检出错
D9098 A3VCPU C自检出错
D9099 A3VTU 自检测出错
D9100~D9107 断保险丝的组件
D9100 保险丝熔断的组件
D9108~D9114 步转移监控定时器设置
D9116~D9123 I/O组件校验出错
D9124 信号器报警数量检测
D9125~D9132 信号报警器地址号
D9133~D9140 远程终端卡信息
D9141~D9172 通讯重发次数
D9173 模式设置
D9174 设置重发次数
D9175 线缆出错模块出错代码
D9180~9193远程终端模块出错代码
D9180 轴1和轴2的限位开关
输出状态存储区
D9181 轴3和轴4的限位开关
输出状态存储区
D9182 轴5和轴6的限位开关
输出状态存储区
D9183 轴7和轴8的限位开关
输出状态存储区
D9184 CPU出错的原因
D9185 伺服放大器接线数据
D9187 手动脉冲发生器轴设置出错
D9188 在TEST模式下启动轴号请求出错
D9189 出错程序号
D9190 数据设置出错
D9191 伺服放大器类型
D9196~9199 故障站检测
D9200 LRDP处理结果
D9201 LWTP处理结果
D9204 通讯状态
D9205 执行回送的站
D9206 执行回送的站
D9207 通讯扫描时间(最大值)
D9208 通讯扫描时间(最小值)
D9209 通讯扫描时间(当前值)
D9210 重发次数
D9211 环路切换计数
D9212 就地站运行状态(1~16)
D9213 就地站运行状态(17~32)
D9214 就地站运行状态(33~48)
D9215 就地站运行状态(49~64)
D9216 就地站出错检测(1~16)
D9217 就地站出错检测(17~32)
D9218 就地站出错检测(33~48)
D9219 就地站出错检测(49~64)
D9220 就地站参数不匹配或(1~16)
远程站I/O分配出错
D9221 就地站参数不匹配或(17~32)
远程站I/O分配出错
D9222 就地站参数不匹配或(33~48)
远程站I/O分配出错
D9223 就地站参数不匹配或(49~64)
远程站I/O分配出错
D9224 主站与从站和远程I/O站
之间的初始通讯(1~16)
D9225 主站与从站和远程I/O站
之间的初始通讯(17~32)
D9226 主站与从站和远程I/O站
之间的初始通讯(33~48)
D9227 主站与从站和远程I/O站
之间的初始通讯(49~64)
D9228 就地站或远程I/O站出错(1~16)
D9229 就地站或远程I/O站出错(17~32)
D9230 就地站或远程I/O站出错(33~48)
D9231 就地站或远程I/O站出错(49~64)
D9232 就地站或远程I/O站环路出错
D9233 就地站或远程I/O站环路出错
D9234 就地站或远程I/O站环路出错
D9235 就地站或远程I/O站环路出错
D9236 就地站或远程I/O站环路出错
D9237 就地站或远程I/O站环路出错
D9238 就地站或远程I/O站环路出错
D9239 就地站或远程I/O站环路出错
D9240 检测到接收出错的次数
D9243 本站站号检测
D9244 从站的总数
D9245 检测到的接收出错次数
D9248 就地站运行状态
D9249 就地站运行状态
D9250 就地站运行状态
D9251 就地站运行状态
D9252 就地站出错检测
D9253 就地站出错检测
D9254 就地站出错检测
D9255 就地站出错检测
了解更多电工实物接线
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } 全彩电路低压电气电路升级版零基础学习电工--我是大俵哥 ¥68 购买200多个电工实物接线,为初学的朋友打开一扇门
基于K60的GCPLC系统的设计与实现
司萧俊,王宜怀,白 聪
(苏州大学 计算机科学与技术学院,江苏 苏州215000)
提出研制图形构件化可编程逻辑控制器(GCPLC)的方案,它是传统可编程逻辑控制器(PLC)的革新与新模式。与传统PLC相比,GCPLC具有图形拖动编程、开放的二次编程架构、构件组合、开发环境兼容、构件定制扩充、RTOS架构融入等特点。其目标是使GCPLC相对于传统PLC,在技术架构、技术方法、设计思想及实现方式等方面能够有新突破,在应用方面能够逐步取代传统PLC。
多任务;GCPLC;图形构件化;RTOS
文献标识码: A
DOI: 10.16157/j.issn.0258-7998.2017.02.010
中文引用格式: 司萧俊,王宜怀,白聪. 基于K60的GCPLC系统的设计与实现[J].电子技术应用,2017,43(2):47-50.
英文引用格式: Si Xiaojun,Wang Yihuai,Bai Cong. Design and implementation of GCPLC based on K60[J].Application of Electronic Technique,2017,43(2):47-50.
0 引言
传统可编程逻辑控制器(Programmable Logic Controller,PLC)从提出至今已经发展四十多年,形成了全世界每年300亿美元以上的巨大市场,涉及自动控制、机械、装备、医疗电子等诸多应用领域,为一线基层技术人员利用嵌入式计算机生产实践提供了基础技术平台。但也存在CPU选择受限、硬件耦合性差、变量设置简单、梯形图编程功能深度不够、二次编程困难、构件组合灵活性差、开发环境受限、新构件融入难度大等问题。虽然经过多年改进与发展,从不同角度改进了技术,但由于技术架构未变,本质问题无法根本解决。
本文基于多任务操作系统MQX、嵌入式ARM处理器、CAN总线等技术,设计了一套包含图形构件化编程软件及基于恩智浦K60微处理器的图形构件化可编程逻辑控制器(Graphic Component Programmable Logic Controller,GCPLC)硬件的完整系统,并对整个系统进行简要介绍,重点阐述了图形构件化的软件开发环境。
1 GCPLC的体系总体设计与工作原理
GCPLC的系统结构框图如图1所示。
图1中的上半部分是GCPLC的软件开发环境部分,主要完成图形化编程、C语言文件的生成、程序编译等功能,并且负责向硬件部分烧写程序以及实现实时监控。下半部分的GCPLC硬件部分为整个系统的核心,负责执行程序。硬件部分带有多路普通/高速的GPIO接口、高速PWM以及差分输入输出接口、CAN总线接口、485信号接口和232接口,可以实现普通PLC具备的功能。
GCPLC系统将开发环节和运行环节分开操作。在开发阶段,使用图形构件化编程软件编写程序,并同时将嵌入式实时操作系统MQX融入其中;在执行阶段,硬件部分执行程序,有序对各个任务进行调度,并且通过串口与PC通信,从而将硬件部分的信息传递给软件部分,以实现实时监控。
2 GCPLC系统硬件设计
GCPLC硬件的主要应用目标是工业控制,而可靠性和抗干扰能力是衡量工业控制中电气设备性能的关键指标,因此在设计内部电路时,采用了抗干扰技术,其中包括光耦隔离电路、场效应管隔离电路等。选用的硬件是具有极高隔离性能的元件,其中包括高速光耦6N137、场效应管LR120N等。下面着重介绍高速GPIO输入电路和高速PWM差分输出电路。
2.1 高速GPIO输入电路
为了能够满足工业控制中对GPIO输入的实时性和高效率需求,为GPPLC硬件设计了带有电气隔离特性的高速GPIO输入电路,如图2所示。
该电路使用6N137单通道高速光耦合器进行输入输出,并在输出端对输出进行滤波后输出给K60核心板。该电路具有温度、电流和电压的补偿功能,具有高输入输出隔离及抗干扰能力强的特性,电路典型的输入速率为10 MB/s。
2.2 高速PWM差分输出电路
电机驱动是一种很常见的工业控制方式,机械臂的运作、机器人的行走都离不开电机驱动。为了提高PWM的输出效率,设计了具有差分能力的高速PWM电路,如图3所示。
图3是PWM的输出部分,在其他部分利用SGM4717双掷模拟开关芯片,切换PWM的差分和普通输出模式。在正常情况下,该PWM的输出速率可达到100 KB/s以上,可以在工业控制中对电机进行稳定的驱动和控制。
3 GCPLC图形化开发环境设计
在GCPLC系统中,PC可以为用户提供一个良好的软件开发调试环境,因此运行在计算机控制系统上的图形化开发环境需要重点进行开发。GCPLC软件开发环境是为了给GCPLC系统提供一个直观、方便、可拖动、高效的程序开发平台。该平台主要支持图形化的拖动、C语言的生成、程序编译、程序写入、实时监控等功能。
该平台采用PC作为基本编程工具,应用Visual Studio 2012作为开发环境,编程语言舍弃了传统PLC采用的梯形图编程方式,选用了全新的图标拖动及连接的编程语言,使得程序的二次开发变得更加容易,程序结构也变得更加清晰,并且添加了复制、剪切、删除、粘贴、右键菜单等人性化的快捷操作。在烧写程序之前,需要对程序进行编译,由编译器负责检查用户编写的程序,并且将错误反馈给用户。若编译程序无误,则可以将用户程序写入GCPLC硬件板。该开发平台主要由以下模块组成:
(1)图标控件模块。包含了编写程序需要的所有控件,控件分为执行控件、传感器控件、通信控件、流程控件、任务控件5个大类。每个大类下又包含了若干个具体的子控件。
(2)控件连接及属性设置模块。该模块是进行控件拖拉和连线的模块,也是整个开发环境的关键。在编写程序时可以从上述的图标控件模块中选择自己需要的控件,选出控件后可以放置在此模块上。每个控件的顶部和底部都有一块三角形区域,当选定了若干个控件后,将这些控件的三角形区域连线,则可以组成一段程序。
(3)代码更新显示模块。当连接好控件连接模块中的控件后,该模块便会自动生成相应的代码。使用者只需要简单的C语言基础,便可以更好地理解这整段程序实现的功能。
3.1 图标控件模块
为了方便二次开发,在设计开发平台时决定放弃传统PLC的使用的梯形图编程方法,转而设计了开发者门槛更低、更加容易理解的图标形式的控件,一段完整的程序要能够稳定、成功地运行,则需要C语言执行所需要的基本流程,基于程序执行的基本流程,将图标控件模块划分为之前所阐述的5个大类。
执行控件主要包括一些需要执行的操作,例如开关中断、设置延时、设置IO输入/输出等;传感器控件包含GCPLC需要的传感器,例如超声波传感器、AD传感器等;通信控件包含与硬件核心板通信相关的控件,例如I2C、SPI、UART等;流程控件则是与程序执行相关,所以包含IF判断、条件循环、计数循环之类的控件;任务控件则是为了程序的多任务协调执行而设置的,所以每当用户添加一个任务,任务控件中也会生成相应的控件。
为了使开发平台自身更具有拓展性,设计了一套从Access数据库读取控件名称和控件图片等相关属性的算法,当需要增加某种控件时,只需要设置好该控件的相应属性,存入数据库即可。而对于每一个用户程序,其中的任务控件也是各有不同的,因此实现任务控件的动态存取也十分重要。而在设计控件时,为了实现程序的通用性,设计了图标控件Icon类,其关键代码如下:
public LinkIconType IconType;//控件的类型
public string ModuleName;//控件名字
public int IconArrNum;//控件在控件数组中的下标
public int IconDbNum;//控件在数据库中的序号
public PictureBox IconPicBox;//控件的图片
public PictureBox MoveToIconPicBox;//鼠标移动到控件上时显示的图片
public int IconLeftDotNum; //控件图标的左侧的Dotsize个数
public int IconTopDotNum; //控件图标的上侧的Dotsize个数
3.2 控件连接及属性设置模块
控件连接及属性设置模块是进行控件拖拉、连线、程序顺序设计的模块,也是整个开发平台的核心所在,若干个控件通过不同的顺序连接,将会生成截然不同的程序。
在这个界面中,可以通过双击每个控件以编辑该控件的属性。例如,当点击PWM初始化控件时,便会跳出“PWM初始化”属性窗口,如图4所示。
该窗口用于设置GCPLC硬件上的PWM波的输出频率,只需要在文本框中输入想要的频率,点击确定后就可以成功配置PWM的输出频率。使用者在编程时可以很容易掌握。其他的控件也具各自的属性窗口。
当从图标控件模块拖出控件时,每个控件之间都是各自独立的,即使设置好控件的属性,这些控件仍然不具备实际功能,只有通过每个控件顶部和底部的三角形区域将需要的控件连接起来时,这些控件才会真正起作用,在开发环境中新建一个项目文件后会自动生成一个Main图标控件,这个控件是不可编辑的,表示为每个程序的开始。
为了能适应程序较小或者较大的情况,设计了可缩放的编程界面,当需要编写程序量较大的程序时,可以缩小界面以便于查看完整的程序结构。另外,开发环境吸取了PLC编程中梯形图多行编写的优点,设计了多行显示的程序结构。同时,当控件图标过多超过当前显示页面时,设计一套实时刷新的算法,提升了软件执行效率。
当GCPLC系统需要执行多任务程序时,为了使得各个任务之间的划分更加清晰,为主任务程序和每个子任务都开辟了单独的窗口,用户每添加一个任务,都会在主任务窗体中生成一个子任务控件图标,双击任务控件图标后可以编辑相应的任务属性,如任务名称、任务栈大小、任务优先级等。
3.3 代码更新显示模块
在控件连接及属性设置模块将各个图标按照自己预想的顺序连线完成后,如果没有任何可以参照修改的功能,很有可能使得最后烧写的程序无法正常运行,而且仅仅是图标连接也会使得开发者感觉很疑惑。为了解决这些问题,设计了代码显示区域。该区域显示的代码与控件连接模块的连线方式是一一对应的,如图5所示。
4 GCPLC整体运行实验
在本次实验中,对GCPLC系统进行了一次整体上电自检实验测试。首先在GCPLC软件开发环境中编写好上电自检的程序,这个上电自检程序将打开GCPLC硬件系统中的所有GPIO、PWM、差分输入/输出、CAN总线、485、232和数码管功能,并且将模块初始化信息通过串口反馈出来。上电后的串口反馈信息如图6所示。
5 结论
GCPLC系统将嵌入式系统、软件开发系统融合在一起,形成一个开放式的体系结构,相比传统的PLC具有更高的灵活性和可扩展性,从而使得计算机控制系统不再受传统PLC硬件的限制,提高了可靠性和可操作性。本系统具有良好的通信能力,能够完成比较复杂的多任务控制功能,可以满足和实现当前和今后工业自动化领域控制系统开放性和柔性的要求,为工业自动化向更高层次的集成提供了可靠的计数保障,具有广阔的应用前景。
参考文献
[1] 严奎.嵌入式PLC编程软件开发[J].工业控制计算机,2012,25(10):67-68,70.
[2] 张嵩,术守喜,丁广乾.基于ARM的嵌入式PLC的设计[J].自动化与仪器仪表,2008(3):9-10,23.
[3] 廖常初.PLC编程及应用(第4版)[M].北京:机械工业出版社,2014.
[4] TROELSEN A.C#与.NET 4高级程序设计[M].北京:人民邮电出版社,2011.
[5] 王宜怀.嵌入式系统原理与实践:ARM Cortex-M4 Kinetis微控制器[M].北京:电子工业出版社,2012.
[6] 吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究和实现[J].计算机工程,2009(10).
[7] 谢春杰.嵌入式软PLC的研究与设计[D].南京:南京理工大学,2014.
[8] 郭建勋.嵌入式软PLC开发系统的设计[D].广州:华南理工大学,2010.
[9] PRATUMSUWAN P,PONGAEN W.An embedded PLC development for teaching in mechatronics education[J].Industrial Electronics & Applications,IEEE,2011(6):1477-1481.
[10] 艾春丽,刘荣鹏,张凤登.基于软PLC的多任务并行控制系统的实时性研究[J].计算机应用,2007,27(12):272-274.
相关问答
plc用c语言怎么进行编程?
你好,PLC(可编程逻辑控制器)可以使用多种编程语言进行编程,其中包括C语言。以下是使用C语言编程PLC的一般步骤:1.确定PLC型号和规格:PLC有多种型号和规格...
PLC里MOV指令的应用?
PLC(可编程逻辑控制器)中的MOV指令,是用来将数据从源地址传送到目标地址的指令。它在PLC程序中应用广泛,例如在数据拼接、比较、后台配置等方面。在数据拼...
plc能用C语言编程吗?
PLC有大型小型分别,一般小型机是不行,例如三菱FX系列,但是三菱大型PLCQ系列是可以的,Q有专用的C语言模块,西门子S7-300,400也是可以。而且C语言其实很难使...
PLC能用C语言编程吗?
PLC有大型小型分别,一般小型机是不行,例如三菱FX系列,但是三菱大型PLCQ系列是可以的,Q有专用的C语言模块,西门子S7-300,400也是可以。而且C语言其实很难使...
plc的编码器编程方式?
1.以下是plc编码器编程的方式。2.在使用编码器进行位置检测时,需要对编码器进行初始化和配置,并将其与PLC进行连接。具体的编程方法可以参考西门子PLC编程...
plc与cnc的工作过程?
cncPLC和一般的PLC不是一样的,一般的西门子,三菱,欧姆龙PLC功能很强大,在自动化控制中占主要位置。但是CNCPLC在cnc中位置一般般,PLC只是cn系统中,为实现...
plc和c语言哪个更有含金量?
PLC和C不是对立的,都是编程工具,学PLC最好是有C语言的基础,当然没有C语言的基础也可以学PLC编程,但不会达到一个高的层次,写写简单的PLC梯形图是可以的。现...
plc与c语言的数据类型?
PLC是可编程逻辑控制器的缩写,它通常用于工业自动化控制领域。PLC与C语言的数据类型之间存在一定的差异。PLC通常使用的数据类型包括布尔型(bool)、整数...
PLC用学C语言吗?
不需要。PLC有自己的编程语言的。PLC的用户程序是设计人员根据控制系统的工艺控制要求,通过PLC编程语言的编制设计的。根据国际电工委员会制定的工业控制编程...
分子生物学plc是什么-职业科普-醉学网
[最佳回答]分子生物学plc是蛋白磷脂酶。G蛋白在TCR/CD3与磷脂酶C(phospholipaseC,PLC)的结合过程中起到重要的调节作用。通过G蛋白可使PLC发生活化,从而激活磷...