PLC指令表源程序的二进制文件格式为:每条指令的二进制编码占32位,操作符的编码与元件编码相加作为目标代码的高16位,低16位为元件的编号。例如,操作符LD的编码为0xFF00,元件X的编码为Ox01,指令LDX1的编码为0xFF010001。
指令表编译器的代码转换功能由yacc源程序规则的动作部分来实现。当语法分析器识别出一条完整的指令时,就将其对应的二进制代码保存到文件中。
(3)将PLC指令表转换为树形结构
Yacc语法分析程序通过寻找可以匹配目前为止所看到的标记的规则来工作。Yacc处理语法分析程序时创建了一组状态,每个状态都反映一个或多个部分地被分析的规则中的一个可能的位置。当语法分析程序读取标记时,每次它读取一个没完成规则的标记,就把它压入内部堆栈中并切换到一种反映它刚刚读取的标记的新状态。这个动作称为移进(shift)。当它发现组成某条规则右侧的全部符号时,它就把右侧符号弹出堆栈,而将左侧符号压入堆栈中,并且切换到反映堆栈上新符号的新状态。这个动作成为规约(reduction)。当yacc规约规则时,它都执行与这条规则有关的用户代码。
Siemens 6AV4010-1AA00-0AA0 Grafikmodul + 6ES5377-0AB41
B&R Steuerung 7CM211.7 / 7CP470.60-2 / 7D0722.7
NUM Board FC200203895
Heidenhain 324 955-15
GH-Induction TPC 700
Georges Renault 8216-HCVIC
Siemens 3VF3211-3BW41-0AA0
Schneider TSX 47/67/87 TSXSCM2126R
HUK Dopag MR20
Siemens SMP-E354-ISS1 C8451-A13-A53-1
NUM Board Amphenol FC200506
Siemens 6SE6440-2UD21-1AA1
Legrand CNOMO 2 50/60 Hz
Siemens A5E00059770