如何用 C 语言编写华中数控系统 PLC 程序一、铣床内置式 PLC 的结构华中数控铣削数控系统的 PLC 为内置式 PLC,其逻辑结构如图 1 所示。其中:X 寄存器为机床输出到 PLC 的开关信号,最大可有 128 组(或称字节,下同);Y 寄存器为 PLC 输出到机床的开关信号,最大可有 128 组;R 寄存器为 PLC 内部中间寄存器,共有 768 组;G 寄存器为 PLC 输出到计算机数控系统的开关信号,最大可有 256 组;F 寄存器为计算机数控系统输出到 PLC 的开关信号,最大可有 256 组;P 寄存器为 PLC 外部参数,可由机床用户设置(请运行参数子菜单中的PMC 用户参数命令),共有 100 组;B 寄存器为断电保护信息,共有 100 组。X、Y 寄存器会随不同的数控机床而有所不同,主要和实际的机床输入 /输出开关信号(如限位开关、控制面板开关)有关。但 X、Y 寄存器一旦定义好,软件就不能更改其寄存器各位的定义;如果要更改,必须更改相应的硬件接口或接线端子。R 寄存器是 PLC 内部的中间寄存器,可由 PLC 软件任意使用。G、F 寄存器由数控系统与 PLC 事先约定好的,PLC 硬件和软件都不能更改其寄存器各位(bit)的定义。P 寄存器可由 PLC 程序与机床用户任意定义。二、铣床内置式 PLC 的软件结构及其运行原理和一般 C 语言程序都必须提供 main()函数一样,用户编写内置式 PLC 的 C语言程序必须提供如下系统函数定义及系统变量值:extern void init(void);//初始化 PLCextern unsigned plc1_time;//函数 plc1()的运行周期,单位:毫秒extern void plc1(void);//PLC 程序入口 1extern unsigned plc2_time;//函数 plc2()的运行周期,单位:毫秒extern void plc2(void);//PLC 程序入口 2其中,1. 函数 init()是用户 PLC 程序的初始化函数,系统将只在初始化时调用该函数一次。该函数一般设置系统 MSBT 功能的响应函数图 1 华中数控系统内置式 PLC 的逻辑结构及系统复位的初始化工作;2. 变量 plc1_time 及 plc2_time 的值分别表示 plc1()、plc2()函数被系统周期调用的周期时间,单位:毫秒。系统推荐值分别为 16 毫秒及 32 毫秒,即 plc1_time=16, plc2_time=32;3. 函数 plc1()及 plc2()分别表示数控系统调用 PLC 程序的入口,其调用周期分别由变量 plc1_time 及 plc2_time 指定。系统初始化 PLC 时,将调用 PLC 提供的 init()函数(该函数只被调用一...