电子说
PLC为可编程逻辑控制器(Programmable Logic Controller)的首字母缩写。是一种面向工业控制的微型计算机系统。
PLC的硬件系统必须有控制器(单片机、CPU、FPGA等)、执行器(继电器、光耦输入等)、主板(电路板),三者缺一不可。由于现在的8位单片机片内存储容量最大可达64kB的程序存储器或4kB的数据存储器,32位单片机也有512kB的程序存储器和128kB的数据存储器,所以功能简单的PLC不需要片外存储器(内存芯片、内存条)也可以运行。而功能较强的PLC则需要片外存储器、辅助存储器(硬盘、SD卡)等附加设备。
PLC的软件系统分为三个部分:
1、PLC主机上运行的下位机程序。用于控制输出、检测输入以及与上位机进行通讯。该程序是梯形图转C语言或汇编语言,再编译后烧写到PLC的程序存储器内的。虽然编译的过程要经过C语言或汇编语言,但是PLC厂家一般不允许用户直接使用C语言或汇编语言编写PLC主机的下位机程序。
2、PLC编程软件。用于向下位机写入用户的控制方法。它将用户的梯形图转换成C语言程序或汇编语言程序,编译后烧写到PLC的程序存储器中。编程软件本身可以由C语言、C++语言等高级语言开发。具体使用的开发语言需要向相应的PLC厂家了解。
3、上位机软件。用于宏观上协调控制PLC的运行状态,代替PLC进行复杂的计算,存储设备的运行记录,并以可视化方式向管理员反馈系统信息。常见的上位机软件为“组态软件”,它是由PLC厂家或软件公司开发的上位机控制平台。用户可以使用指定的脚本语言进行二次开发。如“组态王”软件就指定使用BASIC语言进行二次开发。如果不使用组态软件,用户也可以使用汇编、C语言、C++、JAVA、BASIC等各种编程语言,在它们各自的编译器上编写代码,开发自己的上位机软件。
C语言是一种面向过程的通用计算机编程语言,作为编程语言用户数量排行榜上稳坐前4的编程语言,广泛应用于工业控制(*PLC驱动、*嵌入式系统、上位机软件)、游戏开发(▲DirectX、▲PhysicX、大型游戏开发)、操作系统开发(*Windows核心、*Linux核心、*Android核心)、驱动程序开发(*USB驱动、*串口驱动、*网卡驱动、*硬盘驱动)、软件平台搭建(JAVA虚拟机、Oracle数据库)、大型应用软件开发(OFFICE、VM WorkStation、CAD、PhotoShop、SolidWorks、Matlab)之中。
上述例子中,凡左边带“*”的例子,如果不使用C语言,就只能选择汇编语言,没有其它选择的余地,凡左边带“▲”的例子,必须经过C语言进行过渡才能使用其它语言,左边不带标志的,可以使用C语言以外的语言,但使用C语言将大大简化软件的开发(主要是软件性能很容易提升)。另外,C语言之所以叫“C”语言,是因为它是继“B语言”之后出现的编程语言,这个C代表的只是一个顺序。
对比之后可知,PLC是一个工业控制系统,包含软硬件的概念。C语言是构建工业控制系统及其它软件的工具之一。它们之间是房屋与符号的关系。PLC是房屋,C语言是符号。符号连同其它图素在纸上绘成蓝图、再将各种材料按蓝图进行组装就成了房屋。可是建成的房屋上却看不到符号的存在,而符号不止可以用来设计房屋,还可以做更多更伟大的事情。
PLC有自己的编程语言,不能用c语言编程的。每个厂家有各自的编程软件,几个大公司的视窗版编程软件如 三菱公司的GPP For Windows编程软件,HMI人机界面画面设计软件,MELSEC-MEDOC编程软件。
世界出名的PLC生产厂家还有,美国通用电气公司,美国艾伦-布拉德利公司,日本三菱公司,日本富士电机公司,日本欧姆龙公司,德国西门子公司,的过通用电气公司,法国TE公司,不同厂家的产品在使用上相差甚远,甚至同一厂家不同系列产品在编程语言和编程方法上也有较大差异的!
本章重点介绍C语言编辑功能块的特点、、编辑、指令调用、函数的存储、应用要点等,并附有常用函数列表。
1、功能概述
XCP新增功能,支持用户在XCP Pro编程软件中利用C语言编写功能块,在需要的地方进行调用,其最大的优点是支持几乎所有的C语言函数,增强了程序的保密性,同时由于可进行多处调用和不同文件的调用,大大提高了编程人员的效率。
2、指令形式
适用于XC系列PLC V3.0C及以上版本,XC1、XC3、XC5都支持。
名称由数字,英文,下划线组成,首字符不能为数字,名称长度需《=9个字符。
名称不能与PLC内置指令名称冲突,如LD,ADD,SUB,PLSR等。
名称不能与当前PLC已经存在的函数功能块同名。
3、操作步骤
1、打开PLC编辑软件,在左侧的“工程”工具栏内选择“函数功能块”,右击选择“添加新函数功能块”。
2、出现如下对话框,填写所要编辑函数的信息。
3、在新建完成后,会出现下面的编辑画面。
参数传递方式: 在梯形图调用时,传入的D和M,即为W和B的起始地址。如上图 D0,M0开始,则W[0]为D0,W[10]为D10,B[0]为M0, B[10]为M10。如梯形图中使用的参数为D100,M100,则W[0]为D100,B[0]为M100。因此,字与位元件的首地址由用户在PLC程序中设定。
参数W: 表示字软元件,使用时按数组使用,如W[0]=1;W[1]=W[2]+W[3];在程序中可按照标准C规范使用。
参数B: 表示位软元件,使用时也按数组使用,支持位置1和位清零,如B[0]=1;B[1]=0; 以及赋值,如B[0]=B[1]。
双字运算: 在W前加个D,如DW[10]=100000,表示给W[10]W[11]合成的双字赋值。
浮点运算: 支持在函数中定义浮点变量,以及进行浮点运算。
函数库:用户功能块可以直接使用函数库中定义的函数和常量,函数库中包含的函数和常量见后附部分。
支持的其他数据类型:
预定义的宏:
四、函数的导入、导出
1、导出
(1)功能:将函数导出为文件,供其他PLC程序导入用。
(2)导出方式
a)可编辑:将源代码也导出,并保存为文件.再次导入后,可再次编辑
b)不可编辑:源代码不导出.再次导入后只可使用,无法编辑
2、导入
功能:导入已存在的函数功能块文件,供该PLC程序使用。
选中函数功能块,右键点击菜单“从硬盘导入函数功能块文件”,选择相应文件,按确定即可。
五、功能块的编辑
例:将PLC中寄存器D0,D1相加,然后将值赋给D2;
(1)首先在“工程”工具栏里,新建一个函数功能块,在这里我们把它命名为ADD_2,并且
编辑C语言程序。
(2)编辑完之后,点击编译;
根据编译信息列表内所显示的信息,我们可以查找修改C语言程序里的语法漏洞。在这里比较容易的发现程序中W[2]=W[0]+W[1]的后面缺少符号“;”。
当我们将程序修改后,再次进行编译。从列表信息里可以确认,在程序里面并没有语法错误。
(3)然后再编写PLC程序,分别赋值十进制数10,20到寄存器D0,D1中,并调用函数功能块ADD_2。如下所示:
(4)然后将程序下载到PLC当中,运行PLC,并置位M0。
(5)我们可以通过工具栏上的自由监控观察到D2的值变成了30,说明赋值成功了。
六、程序举例
功能:利用函数功能块计算出CRC校验值。
CRC校验运算规则如下:
(1)令16-bit寄存器(CRC寄存器)=FFFFH。
(2)将第一个8-bit byte 的讯息与低位元16-bit CRC寄存器异或(Exclusive OR)内。
(3)右移一位CRC寄存器,将0填入高位元处。
(4)检查右移的值,如果是0,就将第三步的新值存入CRC寄存器内,如果为非0,那么
将CRC寄存器的值与A001H异或,将结果存入CRC寄存器内。 (5)重复(3)到(4),将8-bit全部运算完成。 (6)重复(2)到(5),取下一个8-bit的讯息指令,直到所有讯息指令运算完成。最后,
得到的CRC寄存器的值,即是CRC的校验码。值得注意的是CRC的校验码必须交换放
置与讯息指令的检查码中。
编辑C语言功能块程序,如下:
编写PLC梯形图程序,D0:校验数据的字节个数,D1~D5:校验数据的内容。如下:
下载到PLC里,然后运行,使M0置 ON,通过自由监控就会发现寄存器D6 ,D7内分别存入了CRC校验值的高位与底位。
七、应用要点
使用函数功能块的PLC程序,上传后.该函数功能块无法上传,将出现一个未知指令错误。
一个函数功能块文件内部,可以写多个子函数,进行相互调用。
多个函数功能块文件彼此独立,不能相互调用各自拥有的函数。
函数功能块文件可以调用浮点,算术等C语言库函数,如sin,cos,tan
八、附函数表
全部0条评论
快来发表一下你的评论吧 !