
CODB(SUB27,二进制代码转换指令)是发那科PMC(可编程机床控制器)中的核心功能指令,核心作用是建立二进制数据表,根据输入的索引编号查表,将对应表项的1字节、2字节或4字节二进制数据输出到目标地址,广泛应用于倍率控制、多档位切换、自定义数据映射等场景。
其核心优势的是与同类COD指令(BCD码转换)相比,CODB仅处理纯二进制数据,数据表容量更大(最多256项),支持的字节长度更灵活,适用范围更广,是PMC编程中处理二进制数据映射的首选指令之一。
CODB指令的梯形图格式由控制条件、参数和输出三部分组成,各部分功能明确,需严格按照规范设置,避免编程错误。
控制条件用于触发指令执行或复位错误状态,共两个关键信号,均为开关量输入:
RST(复位信号):当RST=1时,复位错误输出信号W(将W置0);当RST=0时,不执行复位操作,错误信号保持当前状态。
ACT(执行信号):当ACT=1时,指令开始执行查表操作;当ACT=0时,指令停止执行,输出地址(OUT)保持上一次查表结果不变,不进行新的转换运算。
参数决定了数据表的规格、索引来源和结果输出,需根据实际需求精准设置,各参数说明如下:
数据长度(BYT):指定数据表中每一项数据的字节长度,仅支持3种选择——1=1字节(最大值127)、2=2字节(最大值32767)、4=4字节(最大值214748363),输出地址(OUT)的字节长度需与该参数保持一致,否则会出现数据溢出错误。
表容量(N):指定二进制数据表的总项数,范围为0~255(对应索引编号0~255),即数据表最多可存储256项二进制数据,实际设置时需结合索引范围合理选择,避免资源浪费或索引越界。
输入地址(IN):用于存放索引编号的PMC地址(常用R、D、F地址),该地址存储的数值即为查表时的索引i,其取值必须满足0≤i<表容量(N),否则会触发错误输出。
输出地址(OUT):用于存储查表结果的PMC地址,字节长度与数据长度(BYT)严格匹配,查表成功后,数据表中对应索引的二进制数据会直接写入该地址,供后续程序调用。
W为指令的错误状态输出信号,仅两种状态:当W=1时,说明索引越界(输入地址IN的数值≥表容量N)或数据格式非法(如字节长度不匹配),此时输出地址(OUT)保持不变;当W=0时,说明指令执行正常,查表结果已正确输出到OUT地址。
需注意:CODB指令后的WRT、NOT、SET、RST指令不可使用多线圈输出,仅可指定一个输出线圈,避免程序冲突。
CODB指令的核心是“索引查表”,整个工作流程分为4步,逻辑清晰,可直接对应编程调试过程:
预先编辑数据表:在PMC编程模式下,光标选中CODB指令,通过菜单栏“数据表”选项,输入N项二进制数据(字节长度与BYT参数一致),数据表索引从0开始依次递增(0、1、2、…、N-1),数据可根据实际需求设置(如倍率值、档位参数等)。
触发指令执行:当ACT=1、RST=0时,指令开始工作,读取输入地址(IN)中存储的数值,将其作为索引i。
查表判断与输出:若索引i满足0≤i<N,指令将数据表中第i项的二进制数据,写入输出地址(OUT),同时置W=0(正常状态);若索引i≥N或数据格式非法,指令不执行数据输出,OUT地址保持原有值,同时置W=1(错误状态)。
复位与停止:当RST=1时,错误输出W被复位为0;当ACT=0时,指令停止查表,OUT地址保持当前结果,直至ACT再次置1,重新执行查表操作。
以“进给倍率控制”为例,详细说明CODB指令的编程流程,该场景是CODB指令最常用的应用之一,可直接套用至实际机床编程中。
用D500作为索引输入地址(索引范围0~9),查表输出2字节二进制倍率值到D600,数据表项对应关系:0→0%(数值0)、1→10%(数值10)、2→20%(数值20)、…、9→254%(数值254),同时通过X0.0复位错误、X0.1触发执行。
严格按照指令格式设置控制条件和参数,具体如下:
RST(复位):X0.0(外接复位按钮,按下时复位错误输出W);
ACT(执行):X0.1(外接触发按钮,按下时执行查表);
BYT(数据长度):2(2字节,匹配倍率值范围0~254);
表容量(N):10(索引0~9,共10项数据);
IN(输入地址):D500(存储索引编号);
OUT(输出地址):D600(存储查表得到的倍率值)。
光标选中梯形图中的CODB指令,点击菜单栏“数据表”,依次输入10项2字节二进制数值:0、10、20、30、40、50、60、70、80、254,完成数据表编辑(仅PMC编程模式可修改,运行时数据表为只读状态)。
编程完成后,通过调试验证指令执行效果,确保符合需求:
当D500=3(索引3)时,D600=30(对应倍率30%),W=0(正常);
当D500=9(索引9)时,D600=254(对应倍率254%),W=0(正常);
当D500=10(索引10,超出表容量10)时,D600保持不变,W=1(越界报错);
按下X0.0(复位),W=0(错误复位);松开X0.1(执行),D600保持当前倍率值。
CODB指令因二进制数据处理灵活、数据表容量大,在发那科机床PMC编程中应用广泛,主要集中在以下3类场景:
进给/主轴倍率控制:机床面板波段开关的位置对应索引编号,通过CODB查表输出标准倍率值(0~254%),实现倍率的多档位调节,这是CODB最典型的应用场景。
多档位参数控制:如冷却系统的流量档位、主轴转速档位、液压系统压力档位等,将档位选择信号转换为索引,查表输出预设的控制参数,简化编程逻辑,便于后期调试修改。
自定义数据映射:将IO信号状态、传感器检测值等转换为索引,通过数据表映射为指定的二进制数值(如报警号、工作模式码、设备状态码等),实现信号与数据的灵活对应,适用于复杂的逻辑控制场景。