目前的所有PLC都是采用独立的CPU和I/O模块,PC机只是用于编写和下载程序以及监控,而PLC的CPU性能远不及PC机的速度快,价格却不在PC机之下。
介于以上因素,我个人认为使用PC机代替PLC非常有必要。
8051单片机有32个I/0引脚,分别为P0,P1,P2,P3。如果使用单片机做为终端站,PC为上位机,则只需要使上位机与终端站建立通讯关系即可实现简单
的逻辑控制。
1.通讯协议
输入模块
1位起始位
9位数据位
其中,前4位为站号,中4位为地址位,后1位为开关位,
前4位由4位二进制组合表示站地址0-15共16个站.中4位由4位二进制组合表示位地址,后1位表示位的开或关
1停止位
当输入模块的任何引脚检测到高电平时则向上位机发送一帧数据.例如:P0.0有低到高的电平跳变时,则想上位机发送0 0000 0001 1 1 表示方法:第1位表示开始
发送数据,第2-5位表示0号站,第6-9位表示P0.0 第10位表示位逻辑1 第11位表示发送结束.
第2-5位可以组合为16种变化,分别表示16个站,
第6-9位可以组合为16种变化,分别表示16个输入点.
这一帧数据表示0号站的P0.0有高电平输入.
输出模块
位起始位
9位数据位
其中,前4位为站号,中4位为地址位,后1位为开关位,
前4位由4位二进制组合表示站地址0-15共16个站.中4位由4位二进制组合表示位地址,后1位表示位的开或关
1停止位
当需要使某个站的某个引脚产生高电平时则由上位机发送一帧数据.例如:需要使12号站的第10个引脚产生高电平则发送 01100 1010 1 1
2.采用此种方式工作需要在I/0模块中编写程序同时控制程序存在PC机上.所有的输入模块只需要将检测到的信号传输给上位机.
所有的输出模块只需要接收上位机的信号,然后输出相应的引脚即可.
所有的逻辑程序存在于PC机中.
3.每个模块上都使用P3.2-P3.5组成0-15的站号.
0号站代码 00000*****1
1号站代码 00001*****1
2号站代码 00010*****1
3号站代码 00011*****1
4号站代码 00100*****1
5号站代码 00101*****1
6号站代码 00110*****1
7号站代码 00111*****1
8号站代码 01000*****1
9号站代码 01001*****1
10号站代码 01010*****1
11号站代码 01011*****1
12号站代码 01100*****1
13号站代码 01101*****1
14号站代码 01110*****1
15号站代码 01111*****1
4.由于采用RS485通讯控制,因此模块最大距离可达1200米,可以把模块安装在一起,也可以分开安装,只需要把所有的模块用RS485
通讯线连接起来即可.
5.每个模块可配置COM端口,这样,在模块里写入不同的程序就可实现不同的功能,即可做I/O模块,也可做单机PLC.升级空间很大,灵活配置.
我正在做这方面的研究,希望和志同道合的朋友一起讨论.谢谢!
联系方式 13158650515 QQ395894765 陈平
版权所有,未经授权不得转载!
[ 此帖被chenpingyg在2010-03-28 23:31重新编辑 ]