見出し画像

もんく [とある港街の住人]

作業ミス撲滅システム その2

作業ミス撲滅システムこれでだいたい終わりにしようと思う。

まあ、後はArduinoへのノイズを考慮して設置する事、PLCからの24V入力(PLCからインジケーターLEDへの入力)線を配線してやれば良いだろう。




スケッチは以下の通り。
前回のスケッチからの変更点は切替スイッチの接点が余っていたのでLEDのテストモードを設けた事。

入力と出力の点数が各14点と決まっているのでサブルーチンと配列でも使って比較するようにすればもう少しスマートになるかと思うけれども、どうせ2つのケースしかないのでこのままにしてしまう。



//INPUT
const int NiIU = 13; //NUW input
const int NiI3 = 12; //N3u input
const int NiI4 = 11; //N4u input
const int NiIW = 10; //NWd input
const int BrI1 = 9; //B1u input
const int BrI2 = 8; //B2u input
const int BrI3 = 7; //B3u input
const int BrI4 = 6; //B4u input
const int HiI2 = 5; //HD2uIN input
const int HoI2 = 4; //HD2uOUT input
const int HiI3 = 3; //HD3uIN input
const int HoI3 = 2; //HD3uOUT input
const int HiI4 = 14; //HD4uIN input
const int HoI4 = 15; //HD4uOUT input

//OUTPUT
const int NiLU = 22; //NUW output
const int NiL3 = 24; //N3u output
const int NiL4 = 26; //N4u output
const int NiLW = 28; //NWd output
const int BrL1 = 30; //B1u output
const int BrL2 = 32; //B2u output
const int BrL3 = 34; //B3u output
const int BrL4 = 36; //B4u output
const int HiL2 = 38; //HD2uIN output
const int HoL2 = 40; //HD2uOUT output
const int HiL3 = 42; //HD3uIN output
const int HoL3 = 44; //HD3uOUT output
const int HiL4 = 46; //HD4uIN output
const int HoL4 = 48; //HD4uOUT output

//SELECT SW
const int NOprd = 20; //Switch input NO PRODUCTION
const int KK105 = 19; //Switch input Prod K
const int SS590 = 18; //Switch input Prod S
const int TESTL = 21; //Switch input LED Test Mode

//Variables
int Prod = 0;


void setup() {

//Debug
// Serial.begin(9600);

pinMode(NiIU, INPUT);
pinMode(NiI3, INPUT);
pinMode(NiI4, INPUT);
pinMode(NiIW, INPUT);
pinMode(BrI1, INPUT);
pinMode(BrI2, INPUT);
pinMode(BrI3, INPUT);
pinMode(BrI4, INPUT);
pinMode(HiI2, INPUT);
pinMode(HoI2, INPUT);
pinMode(HiI3, INPUT);
pinMode(HoI3, INPUT);
pinMode(HiI4, INPUT);
pinMode(HoI4, INPUT);

pinMode(NiLU, OUTPUT);
pinMode(NiL3, OUTPUT);
pinMode(NiL4, OUTPUT);
pinMode(NiLW, OUTPUT);
pinMode(BrL1, OUTPUT);
pinMode(BrL2, OUTPUT);
pinMode(BrL3, OUTPUT);
pinMode(BrL4, OUTPUT);
pinMode(HiL2, OUTPUT);
pinMode(HoL2, OUTPUT);
pinMode(HiL3, OUTPUT);
pinMode(HoL3, OUTPUT);
pinMode(HiL4, OUTPUT);
pinMode(HoL4, OUTPUT);

pinMode(NOprd, INPUT);
pinMode(KK105, INPUT);
pinMode(SS590, INPUT);

}

void loop() {

Prod = 0;  //スイッチのステータスをこれに入れる

//Rotary SW checking

int OFF = digitalRead(NOprd); //No production (Rotary SW home)
int KJ1 = digitalRead(KK105);
int SR5 = digitalRead(SS590);
int TES = digitalRead(TESTL); //Next product

//Debug
// Serial.print(" OFF= ");
// Serial.println(OFF);
// Serial.print("KJ1= ");
// Serial.println(KJ1);
// Serial.print("SR5= ");
// Serial.println(SR5);
// Serial.print(" TES= ");
// Serial.println(TES);

//Machine setting checking
//設定を切り替えスイッチで確認している
//スイッチはどこか1つしかONにしないので順番に接点確認しているだけ
//つまりONがどこか2つの接点で重なる事を想定しないない

if (OFF == HIGH){
Prod = 0;  //スイッチのステータス、この場合はゼロ
OFF = LOW;
}else{    //これはそうでない時何もするなと言う事だが、必要かどうか?
}

if (KJ1 == HIGH){
Prod = 1;
KJ1 = LOW;
}else{
}

if (SR5 == HIGH){
Prod = 2;
SR5 = LOW;
}else{
}

if (TES == HIGH){
Prod = 3; //Not specified product name
TES = LOW;
}else{
}

//Debug
// Serial.print(" Prod= ");
// Serial.println(Prod);
// Serial.println(" ");

//Operation checking (each Product)
//ここからスイッチのステータス毎のプログラムが動く

switch (Prod){

//OFF case

case 0:

// Serial.println("OFF");

delay(1000);
digitalWrite(NiLU, LOW);
digitalWrite(NiL3, LOW);
digitalWrite(NiL4, LOW);
digitalWrite(NiLW, LOW);
digitalWrite(BrL1, LOW);
digitalWrite(BrL2, LOW);
digitalWrite(BrL3, LOW);
digitalWrite(BrL4, LOW);
digitalWrite(HiL2, LOW);
digitalWrite(HoL2, LOW);
digitalWrite(HiL3, LOW);
digitalWrite(HoL3, LOW);
digitalWrite(HiL4, LOW);
digitalWrite(HoL4, LOW);

break;

//KK105 case
case 1:

// Serial.println("KK105");

if (digitalRead(NiIU) == HIGH){ //この設定ではここがONなら正常
digitalWrite(NiLU, LOW);
}else{
digitalWrite(NiLU, HIGH); //WARNING
}

if (digitalRead(NiI3) == HIGH){
digitalWrite(NiL3, LOW);
}else{
digitalWrite(NiL3, HIGH); //WARNING
}

if (digitalRead(NiI4) == LOW){ //この設定ではここがOFFなら正常
digitalWrite(NiL4, LOW);
}else{
digitalWrite(NiL4, HIGH); //WARNING
}

if (digitalRead(NiIW) == HIGH){
digitalWrite(NiLW, LOW);
}else{
digitalWrite(NiLW, HIGH); //WARNING
}

if (digitalRead(BrI1) == LOW){
digitalWrite(BrL1, LOW);
}else{
digitalWrite(BrL1, HIGH); //WARNING
}

if (digitalRead(BrI2) == HIGH){
digitalWrite(BrL2, LOW);
}else{
digitalWrite(BrL2, HIGH); //WARNING
}

if (digitalRead(BrI3) == LOW){
digitalWrite(BrL3, LOW);
}else{
digitalWrite(BrL3, HIGH); //WARNING
}

if (digitalRead(BrI4) == LOW){
digitalWrite(BrL4, LOW);
}else{
digitalWrite(BrL4, HIGH); //WARNING
}

if (digitalRead(HiI2) == LOW){
digitalWrite(HiL2, LOW);
}else{
digitalWrite(HiL2, HIGH); //WARNING
}

if (digitalRead(HoI2) == HIGH){
digitalWrite(HoL2, LOW);
}else{
digitalWrite(HoL2, HIGH); //WARNING
}

if (digitalRead(HiI3) == HIGH){
digitalWrite(HiL3, LOW);
}else{
digitalWrite(HiL3, HIGH); //WARNING
}

if (digitalRead(HoI3) == HIGH){
digitalWrite(HoL3, LOW);
}else{
digitalWrite(HoL3, HIGH); //WARNING
}

if (digitalRead(HiI4) == LOW){
digitalWrite(HiL4, LOW);
}else{
digitalWrite(HiL4, HIGH); //WARNING
}

if (digitalRead(HoI4) == LOW){
digitalWrite(HoL4, LOW);
}else{
digitalWrite(HoL4, HIGH); //WARNING
}

break;

//SS590 case
case 2:

// Serial.println("SS590");

if (digitalRead(NiIU) == HIGH){
digitalWrite(NiLU, LOW);
}else{
digitalWrite(NiLU, HIGH); //WARNING
}

if (digitalRead(NiI3) == HIGH){
digitalWrite(NiL3, LOW);
}else{
digitalWrite(NiL3, HIGH); //WARNING
}

if (digitalRead(NiI4) == LOW){
digitalWrite(NiL4, LOW);
}else{
digitalWrite(NiL4, HIGH); //WARNING
}

if (digitalRead(NiIW) == HIGH){
digitalWrite(NiLW, LOW);
}else{
digitalWrite(NiLW, HIGH); //WARNING
}

if (digitalRead(BrI1) == HIGH){
digitalWrite(BrL1, LOW);
}else{
digitalWrite(BrL1, HIGH); //WARNING
}

if (digitalRead(BrI2) == HIGH){
digitalWrite(BrL2, LOW);
}else{
digitalWrite(BrL2, HIGH); //WARNING
}

if (digitalRead(BrI3) == LOW){
digitalWrite(BrL3, LOW);
}else{
digitalWrite(BrL3, HIGH); //WARNING
}

if (digitalRead(BrI4) == HIGH){
digitalWrite(BrL4, LOW);
}else{
digitalWrite(BrL4, HIGH); //WARNING
}

if (digitalRead(HiI2) == LOW){
digitalWrite(HiL2, LOW);
}else{
digitalWrite(HiL2, HIGH); //WARNING
}

if (digitalRead(HoI2) == HIGH){
digitalWrite(HoL2, LOW);
}else{
digitalWrite(HoL2, HIGH); //WARNING
}

if (digitalRead(HiI3) == HIGH){
digitalWrite(HiL3, LOW);
}else{
digitalWrite(HiL3, HIGH); //WARNING
}

if (digitalRead(HoI3) == HIGH){
digitalWrite(HoL3, LOW);
}else{
digitalWrite(HoL3, HIGH); //WARNING
}

if (digitalRead(HiI4) == LOW){
digitalWrite(HiL4, LOW);
}else{
digitalWrite(HiL4, HIGH); //WARNING
}

if (digitalRead(HoI4) == LOW){
digitalWrite(HoL4, LOW);
}else{
digitalWrite(HoL4, HIGH); //WARNING
}

break;


//TEST MODE 全部光らせるだけ
case 3:

// Serial.println("TEST MODE");

digitalWrite(NiLU, HIGH);
digitalWrite(NiL3, HIGH);
digitalWrite(NiL4, HIGH);
digitalWrite(NiLW, HIGH);
digitalWrite(BrL1, HIGH);
digitalWrite(BrL2, HIGH);
digitalWrite(BrL3, HIGH);
digitalWrite(BrL4, HIGH);
digitalWrite(HiL2, HIGH);
digitalWrite(HoL2, HIGH);
digitalWrite(HiL3, HIGH);
digitalWrite(HoL3, HIGH);
digitalWrite(HiL4, HIGH);
digitalWrite(HoL4, HIGH);

delay(1000);

digitalWrite(NiLU, LOW);
digitalWrite(NiL3, LOW);
digitalWrite(NiL4, LOW);
digitalWrite(NiLW, LOW);
digitalWrite(BrL1, LOW);
digitalWrite(BrL2, LOW);
digitalWrite(BrL3, LOW);
digitalWrite(BrL4, LOW);
digitalWrite(HiL2, LOW);
digitalWrite(HoL2, LOW);
digitalWrite(HiL3, LOW);
digitalWrite(HoL3, LOW);
digitalWrite(HiL4, LOW);
digitalWrite(HoL4, LOW);


break;

}
delay(1000);

}
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「ABCのAはArduinoのA」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事