chenpingyg
机械是柱石,电气是灵魂.
级别: VIP会员
精华主题: 0
发帖数量: 1105 个
工控威望: 6705 点
下载积分: 100 分
在线时间: 603(小时)
注册时间: 2007-01-25
最后登录: 2017-04-03
查看chenpingyg的 主题 / 回贴
楼主  发表于: 2010-03-28 21:10
目前的所有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重新编辑 ]
自己的事情自己做.