研选课堂
HOME
研选课堂
正文内容
c语言适合plc编程吗 C语言和PLC的结合
发布时间 : 2025-05-04
作者 : 小编
访问数量 : 23
扫码分享至微信

C语言和PLC的结合

如果要进行一个“复杂运算”(包括加减运算,但是运算步骤很多),尤其是需要重复使

用这个算法处理数据时候,使用 C 函数功能块将非常方便。

举个栗子:用公式: a= b/c+b*c+(c-3)*d 完成运算。

方法一:如果使用梯形图编写上述公式,处理步骤与程序如下:

首先求出 c-3 然后算出三个乘式的积 最后求和

虽然只有以上三个步骤,但是梯形图只支持两个源操作数,所以必须分成多步求结果。

在上面梯形图运算中有几点要注意:

(1)MUL 运算结果为双字,就是说 MUL D1 D2 D14[D15],结果是存放在D14[D15]两个

寄存器内。

(2)DIV 运算结果分商和余数,即:DIV D1 D2 D16,商在D16 中,余数在D17 中,所以

如果运算有余数则精度就降低了,要得到精确的结果得用浮点数运算。

(3)在求和时,由于D16 为商,是单字数据,所以加运算的时候得先统一数据类型,最终

得到的结果存放在D22[D23]中。

方法二:使用C 函数写,梯形图程序如下:

首先,我们对上面的 C 语言梯形图指令结构进行解析:

RESULT 为函数功能块的名称

D0 表示函数中 W[0]为 D0,W[1]为D1 以此类推,如果 S2 为D32,则函数块中

W[0]为D32,W[1]为D33 以此类推

M0 表示函数中 B[0]为 M0,B[1]为 M1 以此类推,如果 S2 为M32,则函数块中

B[0]为M32,B[1]为M33 以此类推

C 语言部分内容如下:

通过两种方法的对比可以看出,通过 C 函数功能,能够大大简化梯形图编程,提高编

程效率。

上面的C 函数运算和梯形图相似,精度也不高,如果要得到精确结果则使用浮点运算。

又来一个栗子:

利用函数功能块计算出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 校验值的高位与低位。

有人说:SCL将成为PLC的主流编程语言?

现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。在这五种编程语言中,

此外,由于西门子 S7 系列 PLC 在国内工控领域中使用很广,它的编程软件 Step7 默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。

结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL 语言。

所以有人就问:SCL将成为PLC的主流编程语言么?

于是很多电气人发表了自己的看法,一起来看看吧!

bnnyygy 说:

我献丑来一个,半成品,给设备改造的,用的欧姆龙CP1L,ST语言功能块,部分节选。

wenpian 说:

还是梯形图适合逻辑。

ljj977 说:

程序写的不错。tia protal中可以采用SCL与LAD混编的模式。这样的灵活性就更大了。

作为一个有C基础的人来说,用SCL他可能更擅长,入门更快。作为习惯了LAD编程的人员来说,写一般的逻辑关系程序,确实要清晰些。

计算机的普通编程人员将会有一部分人能胜任1200的编程工作,而且他们的转行不会有多大的门坎。可以说,PLC的编程人员来源会更广泛。

fujifa 说:

在JAVA出现之前,C语言的菜鸟们也是认为C语言将一统江湖,在PYTHON出来之前,JAVA的菜鸟们也是这么认为的。菜鸟们总是习惯使用必将,一定等词汇来描述他们认为的事物,为什么老鸟们不这样认为呢?因为老鸟们知道:

1:SCL,也就是ST语言,编译为机器码的执行效率比其他语言效率低。

2:梯形图编程语言也在进步,去看看诸如富士、AB这类在梯形图中使用高级语言编程等增强型梯形图语言的厂家就知道了。

hgxmm123 说:

老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。

有些PLC语言不能实现的功能,用SCL就能实现。

twtynijj 说:

最多只能说是备选的语言方法 ,主流怕是很难,可读性并不是很好,推广也难。老外是因为人家母语就是字母组成,对他们来说可读性还是非常强。

现在PLC还是以LAD SFC ST CFC 这一类为代表,也符合IEC标准的。如果哪一家PLC只有一种你说的SCL,怕是干不了几年在中国就只能关门了,这是由市场决定的。

cvlsam 说:

西门子之所以称为SCL而不是ST,是因为其编程语言指令表叫做STL,为了避免混淆,所以叫做SCL,其实就是其他厂家的ST语言。

“还是以 LAD SFC ST CFC 这一类为代表”,看到这句就说明您不太熟悉西门子了啊。

twtynijj 说:

嗯,西门子是不熟悉,刚出社会那会接触过。换工作环境后就没怎么接触。而且也只会用梯形图呀。

pqsh 说:

我觉得,5-10年这些语言都将消失。

人工智能,会听懂人的语言和思想。只要你说清楚,机器就会执行。当然,这样汉语会失去优势,因为汉语逻辑不严谨。

fsjnzhouyan 说:

现在有些智能家居就能接收中文语音控制家电。

vao 说:

梯形图,这种应该是主流趋势,不是你自己擅长什么就一定会主流,工人容易看懂的才好。

gaoyingchun 说:

工控人要失业了

ljj977 说:

在数据的处理方面,SCL还是要比LAD更具有它的它快捷性,计算的功能也是十分强大的。比如一个一维数组,你在使用时,感觉用LAD不难,但一个二维数组、一个多维数组你再使用LAD编程,难度就要大多了。

作为博图软件三大编程语言,SCL就是其中的标配,在原来300/400编程语言中,还没有列入标配行列之中。这也说明了西门子对它的重视,也给大家一个信号。因此了解它、学习它还是有必要的。

SCL是三大语言之一,说它是主流的编程语言不为过吧。

cvlsam 说:

用过AB的梯形图的话,觉得其他语言都可以不要了。

其实三大语言并不包括ST语言。

以前是梯形图,指令表和功能块,现在部分厂商取消了指令表,被SFC替代了。

当然,多学习一点没有错,不过不是以西门子SCL语言为基础,西门子的SCL语言离标准还有点距离,要用也应该从菲尼克斯的学起,人家才是完全符合IEC标准的。

wgefwgef 说:

越是菜鸟,越是水平差,越抵制ST。

逍遥的久鸣 说:

不管白毛黑猫抓到老鼠才是好猫,越简单明了越好,这么多年过去了,梯形图还是那么坚挺!

如果后期维护,现场水平不高,是不是就要失业了?

hnhyczj 说:

高级语言应当是发展的方向。

乌龟船长 说:

老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。

fuhuafeng72 说:

SCL确实好,但一些工控不适合。

ljj977 说:

LAD是PLC编程使用最广泛的语言,用户量最多,当然它是老大。但SCL也一定会壮大起来的,因为它有自己优势。这里并不是说LAD不好,但有时候,有些人用SCL去编程反而更方便,特别是熟悉高级语言(如C语言等)的人。这两种语言的使用肯定是因人而异的,喜好不同、知识背景不同,他们的选择就不同。

用LAD语言写的程序,复杂一点的话,一般的电工是看不懂的。说句实在话,LAD语言,当初就是为电工准备的编程语言。那时候只有逻辑控制。电工如果满足了一般的逻辑控制,数据处理程序的编写就成了一句空话,别人用LAD写出来的程序也不见得看得懂。

现在时代不同了,PLC不只是去处理逻辑控制,还多了好多些功能。老早之前,S7-200就明显看到它的结构化编程的思想。300/400,到现在的1200/1500,它们都在朝着更先进的方向发展,LAD的语言更是如此。现在的LAD就是面向开发人员、工程师、技术人员的。再说电工也分好几类吧,一般的电工在工厂里是接触不到编程这一块的。LAD现在也是也是十分强大。

SCL未来将成为主流的语言,并不意味着LAD不是主流语言。大家还是不要误解了我的观点。

SCL能作为标配的编程语言出现在博途中,说明了什么,不正是说明它的存在价值吗。

年轻的朋友们,如果感兴趣,学习一下SCL语言的程序编写,我觉得还是蛮好的。

liuxd6909 说:

但凡是主流都是被大多数人所认同 的,所接受的。

fuhuafeng72 说:

企业有三六九等,很多小作坊,你给他传统的继电器系统原理图都搞不明白,不要说英文类C的程序了。世界就是个矛盾体。

LAD确实是一种不错的编程方式,之于类C,形如安卓之于IOS。

zhanghaiw 说:

做逻辑SCL确实不怎么样,搞搞算法还可以。建议LAD+SCL的组合,感觉非常棒。

965528555 说:

做逻辑也是非常好的,算法更是好用。而且方便转换其他PLC

以上观点都非常棒!至于结论如何,小编自身觉得每个语言都有自己的可取之处,对于大型的主流化编程语言,是作为一个资深的电气人应该了解的内容,时刻把握行业潮流动态,才不会让自己处于被动状态。看了以上内容,你觉得呢?留言哦!

往期优秀文章回顾:

新手学西门子PLC,要从哪开始?「附PLC与电动机控制精品讲解」

相关问答

plc能用C语言编程吗?

可以因为PLC(ProgrammableLogicController)使用一种特殊的编程语言LadderLogic,不过现在大部分PLC也支持C语言编程,C语言编程是PLC的应用范围不断扩大的...

PLC用学C语言吗?

不需要。PLC有自己的编程语言的。PLC的用户程序是设计人员根据控制系统的工艺控制要求,通过PLC编程语言的编制设计的。根据国际电工委员会制定的工业控制编程...

plc与c语言有什么关系?

通俗的说plc是硬件,c语言就是软件。plc是控制输出,检测输入,有梯形图编译后转到plc上的,再由plc控制其他电器,如,中继,接触器,接近开关等,在于他们驱动...通...

plc用c语言怎么进行编程?

你好,PLC(可编程逻辑控制器)可以使用多种编程语言进行编程,其中包括C语言。以下是使用C语言编程PLC的一般步骤:1.确定PLC型号和规格:PLC有多种型号和规格...

c语言对机械工程专业的有用吗?申请方

如果是要从事机械软件、电气电子等相关方面的工作,学学编程还是很有必要的,不过机械这个专业,只要学好自己的专业知识就好了,没有必要非常懂C语言。...

搞PLC自动化控制的,需要学C语言吗?听其他人说,要用它来写通讯,数据库什么的?

工控包括对PLC控制,以及上位机组态部分现有的上位机部分已经包括了对脚本语言的支持,比如VB,或者其他类C的语言,所以这部分内容是需要掌握的,至于用不用得...

现在还有必要学习PLC编程吗?

PLC的应用还是比较广泛的,在工业中占据很大的地位;社会发展离不开工业,科技在发展,目前很多制造企业都要走自动化生产路线,自动化生产离不开PLC,所以还是可...又...

PLC用什么语言编程?

1、梯形图。这是PLC工程师应用的最常见的编程语言,在处理一些逻辑类控制问题时,梯形图是非常好用的,深受大家的喜爱。2、结构化文本。它也是PLC工程师常用的...

plc和编程哪个难?

相对来说,PLC更好学。PLC也是用控制的,您的意思应该是PLC编程语言和C语言哪个更难吧。目前PLC编程主要是梯形图,也有支持高级语言的比如SCL、ST需要。PLC的...

c语言是机加工用的呢?

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能...

 村民自治  沈阳动力集团 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部