01-C语言实现一个简单PLC仿真小程序(上)

PLC,可编程逻辑控制器(Programmable Logic Controller),这里跳过对这种设备的详细介绍,仅大致说明一下。
PLC最初是为了完成较复杂的继电器控制的替代,随着计算机技术的发展,这种电气逐渐具备执行复杂计算的功能。
目前的PLC内置有完整的系统,可通过计算机编程后将对应程序下载到PLC设备中并执行,主要采用梯形图作为编程语言。按编程风格划分,可大致分为日系、欧系、美系,这三种风格各有优缺点,但大致上是相同的。
以上内容,是为了在不深入研究厂家(如三菱、西门子、AB)的PLC设备的情况下猜测PLC设备的实现方式而进行的一些介绍,更具体的东西不做讨论。

三菱的PLC使用过程:用 梯形图/SFC/指令表 编写程序,编译,连接PLC,下载程序。
1、程序需要编译后才进行下载,推测三菱PLC的程序代码或许是hex或其他非明文的格式;
2、SFC与梯形图可互转换,梯形图与指令表语言可互转换。或者说,完全可以用指令表来编写程序,然后转换为梯形图。推测,三菱PLC的程序是对指令表语言进行编译。

这里有两张图片:


01.PNG
02.PNG

以上两张图片来自三菱FX系列PLC的编程手册。
注意,我们在三菱PLC中常说的指令,如LD、OUT,在说明书中,被称为指令助记符,而每个指令具有对应的 FNC编号。
应该说,FNC编号(个人猜测FNC实际上是 function 的意思)才是指令,而LD、OUT之类的指令是 FNC 指令的助记符。
在三菱PLC中,或许是将指令作为一个函数,通过对函数的调用来执行对应的操作。

于是,三菱PLC的设计原理是:
硬件上,在一块电路板上,核心以一枚单片机作为CPU,围绕该CPU设计了相应的24V转5V(给单片机芯片供电)的供电电路,以光耦隔离实现的输入信号采集功能,以继电器输出或晶体管输出实现的低压控制24V高压的输出电路。最终,为该CPU加入串口(232)通讯模块,该模块用于提供程序下载、PLC与扩展模块、PLC与上位机通讯的功能。
软件上的设计则是,在该CPU上编写好相关的程序,该程序循环执行,读取用户程序存储区内的数据,并依据用户数据执行相应操作。FX1S的功能较简单,据说该系列的PLC的CPU采用51单片机实现,因我并未拆过该系列的PLC,也未能查找到相关的设计资料,不好下定论,如有知道的人请告知。虽然无法确定这种说法是否真实,但是原先我使用过山寨三菱PLC的国产工控板,该款工控板采用的正是52单片机,可使用GX developer以及 GX Works2进行编程下载,功能与FX1S完全一样。
也就是说,以51单片机是可以实现三菱FX1S系列PLC的功能设计的,由此可推测,FX1S系列的系统并不复杂。

这里我试图用C语言实现一个模拟简单的PLC功能的小程序,仅在控制台上运行,初步先实现基本的输入输出功能,即实现 LD、OUT两个指令。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://158pan.cn/file-152703.html 这一节我们讲的是PLC的定义、分类和特点 可编...
    零或壹阅读 6,440评论 0 2
  • 如何快速成长为合格的电气工程师 要成为一名合格的电气工程师,必须系统的学习电工理论知识和一些相关的电气专业知识。...
    MD123321阅读 5,848评论 0 9
  • 现在是2017年7月5日晚上9点48分,我,刚刚跟舍友吃完这个学期的最后一次聚餐,或者说,2017年上学期的散伙饭...
    源大人阅读 962评论 0 0
  • 我一直后知后觉,别人开始玩微信的时候,我连微信号都没有。等我有了微信号的时候,别人已经开始在朋友圈里晒各种了。等我...
    勒尤阅读 2,118评论 0 1
  • “我们还没有死人,”他说,”“只要没有死人埋在地下,你就不属于这个地方。” 从小就跟着父母东奔西走,好在辗...
    Rachel曹阅读 3,017评论 0 2