Codesys——汇川AC700系列基础指令

以下内容属于个人理解,如有错误欢迎指正。

汇川AC700系列的ST编程跟西门子的SCL编程大体相同,有C编程基础以及PLC编程基础的话是比较好上手的。因大学专业主修的是C语言以及单片机,在学习的期间,将汇川ST编程与西门子的SCL编程同时对比学习,方便记忆。本文章中主要写出基础以及常用指令的编程方法,例如异或非、定时器计数器、以及常用if.....then、case语句。整个文章中的指令会附在文章结尾。编程手册在主页资源区。

学习PLC编程以及ST、SCL编程的过程中,主要是通过查手册以及百度,掌握基础的与或非定时器指令基本就可以写简单的程序了,简单的编程熟悉之后,再了解轴控制以及通讯部分的编程。然后根据案例编程进一步提高自己的编程能力(后续也会更新这部分内容),有不理解的指令就查手册或者百度,不可能根据一篇文章就把编程学会的。好喽~废话不多说。

SCL、STL、ST的区别?

ST:是STRUCT TEXT 的缩写,从字面理解,是结构化文本语言。它以计算机的Pascal语言为基础,针对工业控制进行了一系列的优化和修改,也可以认为它是根据C语言来的,但这种说法不太严谨,因为ST语言是不区分大小写的,而C语言严格区分大小写。这些都是根据工业控制的实际情况而制定的。

SCL:是结构化控制语言,它其实和ST语言是一样的,只是在个别语法和功能块(FB)调用上,略有不同,比如case语句。

在SCL编程中,END_CASE后面要加上一个分号,而ST编程中这不需要加分号。下图图1为SCL编程案例,图2为ST编程案例。

CASE "IEC_Counter_0_DB_2".CV OF
    1:
        "Q0.0" := TRUE;
    2:
        "Q0.1" := TRUE;
        
    ELSE
        "Q0.0" := TRUE;
        "Q0.1" := TRUE;
END_CASE;
CASE CTU_0.CV OF
	1 : NUM1 := TRUE;
	2 : NUM2 := TRUE;
	3 : NUM3 := TRUE;
ELSE
	NUM1 := TRUE;
	NUM2 := TRUE;
	NUM3 := TRUE;
END_CASE

STL:STL语言是一种汇编语言,是面向机器底层的语言,可以直接操作寄存器,可读性不强,和80C51单片机的机器语言是一个层面。所以,它是一种低级语言,而ST,SCL都是中高级语言。

位逻辑指令(AND、OR、XOR、NOT、PLS、PLF)

AND

在学习指令的时候,首先查看手册,手册中都会有每个指令的LD以及ST、SCL编程示例,如下图所示。只以AND指令为例,OR、XOR、NOT与AND指令的使用方法都是类似的。

 查看之后在软件中自己进行编程实验,首先就是创建三个布尔类型的变量。

NUM1: BOOL;
NUM2: BOOL;
NUM3: BOOL;

 然后使用AND指令。

//与
NUM3 := NUM1 AND NUM2;

OR

//或
NUM3 := NUM1 OR NUM2;

XOR

//异或
NUM3 := NUM1 XOR NUM2;

NOT

//非
NUM1 := NOT NUM2;

上升沿下降沿(PLS、PLF) 

 汇川中的上升沿的使用,首先要建立一个PLS类型的变量PLS_0。PLS类型的变量是结构体类型的变量,跟C语言中的结构体类似。

//
	PLS0: PLS;
	PLF0: PLF;
	xExecute: BOOL;
	xOut: BOOL;

然后调用PLS指令。指令中的xExecute为指令的输入端,xOut为输出端,整条指令的意思就是当NUM1为1的时候将NUM3置为1。下降沿的使用与上升沿类似。需要注意的是输入端的引脚赋值是用:=,输出端引脚的赋值是用=>。

PLS0(xExecute := NUM1 , xOut=> );
IF PLS0.xOut THEN
	NUM3 := TRUE;
END_IF

 定时器计数器(TON、CTU)

TON

定时器的使用,有四个引脚,两个输入两个输出,输入端为IN使能,PT预设值。输出端为ET当前值,Q计时到输出。与PLS的使用方法一样,首先定义一个TON类型的TON_0变量。

//
	TON_0: TON;
	T0_ET: TIME;
	T0_PT:TIME := T#5S;
	b_Enable: BOOL;
	b_Out: BOOL;
	

 然后调用TON指令,填写对应的引脚值。

//接通延时定时器
TON_0(IN := b_Enable , PT := T0_PT , 
	  Q => b_Out , ET => T0_ET);

CTU 

计数器的使用,有五个引脚,三个输入两个输出,输入端为CU使能,PV预设值,RESET复位引脚。输出端为CV当前值,Q计数到输出。与PLS的使用方法一样,首先定义一个TCTU类型的CTU_0变量。

//
	CTU_0: CTU;
	xCU: BOOL;
	xRESET: BOOL;
	wPV: WORD;
	xQ: BOOL;
	wCV: WORD;

 然后调用CTU指令,填写对应的引脚值。

//计数器
CTU_0(
	CU := xCU,
	RESET := xRESET,
	PV := wPV,
	Q => xQ,
	CV => wCV
	);

语句(case,if.....then) 

case

case语句类似于C语言中的Switch...case语句,判断case后面变量的值的不同,执行不同的语句。下图所示的案例就是,判断计数器0的当前值,如果为1,NUM1=1,如果为2,NUM2=1,如果为3,NUM3=1,如果不等于1或者2或者3,则执行ELSE后面的语句,NUM1=1,NUM2=1,NUM3=1。需要注意的是END_CASE后面不需要加分号。

CASE CTU_0.CV OF
	1 : NUM1 := TRUE;
	2 : NUM2 := TRUE;
	3 : NUM3 := TRUE;
ELSE
	NUM1 := TRUE;
	NUM2 := TRUE;
	NUM3 := TRUE;
END_CASE

if.....then

 if语句与C语言中的IF语句的用法个人感觉完全一样。

基本语法是:

 使用案例:

PLF0(xExecute := NUM1 , xOut=> );
IF PLF0.xOut THEN
	NUM3 := TRUE;
END_IF

所有指令源程序

/**************************变量声明*************************/
PROGRAM PLC_PRG
VAR
	//
	NUM1: BOOL;
	NUM2: BOOL;
	NUM3: BOOL;
	
	//
	PLS0: PLS;
	PLF0: PLF;
	xExecute: BOOL;
	xOut: BOOL;
	
	//
	TON_0: TON;
	T0_ET: TIME;
	T0_PT:TIME := T#5S;
	b_Enable: BOOL;
	b_Out: BOOL;
	
	//
	CTU_0: CTU;
	xCU: BOOL;
	xRESET: BOOL;
	wPV: WORD;
	xQ: BOOL;
	wCV: WORD;
END_VAR

/**************************指令使用*************************/
//与
NUM3 := NUM1 AND NUM2;
//或
NUM3 := NUM1 OR NUM2;
//异或
NUM3 := NUM1 XOR NUM2;
//非
NUM1 := NOT NUM2;
//上升沿
PLS0(xExecute := NUM1 , xOut=> );
IF PLS0.xOut THEN
	NUM3 := TRUE;
END_IF
//下降沿
PLF0(xExecute := NUM1 , xOut=> );
IF PLF0.xOut THEN
	NUM3 := TRUE;
END_IF
//接通延时定时器
TON_0(IN := b_Enable , PT := T0_PT , 
	  Q => b_Out , ET => T0_ET);
//计数器
CTU_0(
	CU := xCU,
	RESET := xRESET,
	PV := wPV,
	Q => xQ,
	CV => wCV
	);
CASE CTU_0.CV OF
	1 : NUM1 := TRUE;
	2 : NUM2 := TRUE;
	3 : NUM3 := TRUE;
ELSE
	NUM1 := TRUE;
	NUM2 := TRUE;
	NUM3 := TRUE;
END_CASE

谢谢大家~

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现威伦通和汇川AC801之间的CODESYS通讯,可以按照以下步骤进行设置。 1. 首先,在CODESYS软件中创建一个新的项目。选择适当的PLC设备类型和通讯接口,以便与威伦通或汇川AC801兼容。 2. 在项目中添加相应的通讯库。对于威伦通,可以使用CODESYS内置的EtherNet/IP库;对于汇川AC801,可以使用CODESYS内置的Modbus TCP库。 3. 配置通讯网络设置。对于威伦通,需要指定其IP地址和端口号,并设置通讯周期等参数。对于汇川AC801,需要指定其IP地址和Modbus地址等参数。 4. 在项目中创建变量。根据需要,创建与威伦通或汇川AC801相应的输入和输出变量,用于数据传输。确保变量的数据类型与通讯库所使用的数据类型一致。 5. 编写代码进行通讯配置和数据传输。根据所选择的通讯库,编写代码以配置通讯连接和进行数据传输。可以使用CODESYS提供的函数块或函数调用来实现通讯功能。 6. 进行通讯测试和调试。在完成代码编写后,可以进行通讯测试以验证通讯是否正常工作。可以监视变量的值,确保数据正确传输。 总之,实现威伦通和汇川AC801之间的CODESYS通讯,首先需要选择适当的通讯库和设置通讯参数,然后在项目中创建变量并编写相应的代码来配置通讯连接和进行数据传输。最后,进行测试和调试,确保通讯正常工作。 ### 回答2: 威伦通和汇川AC801都是工业自动化领域中常用的PLC品牌,而CODESYS是一种常用的PLC编程软件。要实现威伦通和汇川AC801之间的通讯,可以按照以下步骤进行设置。 首先,确保威伦通和汇川AC801分别正确连接到计算机上,并确保它们在同一网络中。接下来,打开CODESYS软件。 在CODESYS软件中,选择“工具”菜单下的“设备配置”选项。在设备配置界面中找到“硬件配置”选项卡,并点击“添加”按钮。 在设备弹出窗口中,选择合适的PLC型号(分别选择威伦通和汇川AC801),然后点击“确定”按钮。 接下来,在主设备监视器界面中选择“设备配置”选项卡,并点击“搜索”按钮。CODESYS软件将会自动搜索并找到已连接的威伦通和汇川AC801设备。 找到威伦通和汇川AC801设备后,右键点击设备并选择“添加设备到设备配置”。这样,威伦通和汇川AC801设备就会出现在设备配置列表中。 在设备配置列表中,可以设置威伦通和汇川AC801设备的通信参数,如IP地址、端口号等。确保设置正确后,点击“应用并确定”按钮。 最后,可以使用CODESYS软件中的编程功能来编写程序,并使用通信功能块来实现威伦通和汇川AC801之间的数据传输与通讯。 总结起来,威伦通和汇川AC801的CODESYS通讯需要根据设备类型进行设备配置,确保设备正确连接并设置通信参数。然后,在CODESYS软件中编写程序,并利用通信功能块实现数据传输与通讯。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值