Professional Documents
Culture Documents
2016
Transmit Timing:
Host: LOP(kat kaseti veya sadece gösterge) / COP(kabin kaseti veya kabin kaseti + gösterge)
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Data alış-verişinin nasıl gerçekleştirildiği örnek C kodunda (UART kullanılarak) ve bu dökümanda anlatılmaktadır:
- Yukarıdaki şekilde de gösterildiği gibi veri (Start bit + D0…D8 + Stop bit) en hızlı 2 ms’de bir gönderilmelidir. İletim hızının alt bir sınırı yoktur
fakat asansörü kullananlar için çağrı butonlarının basılıp basılmaması durumuna hızlı cevap verilebilmesi için verilerin hızlı bir şekilde iletilmesi
daha uygundur.
- Modül ile Host arasındaki bilgi alış-verişi paket(mesaj boyutu, mesaj kodu, mesaj data dizisi, checksum) ile sağlanmaktadır. Paketin ilk baytı
gönderilmeden önce mesaj boyutu, mesaj kodu ve mesaj data dizisindeki parametrelerin o anki değerleri girilir ve checksum hesaplanır. Eğer
gönderilecek veri paket başıysa 9.bit(D8) 1 yapılmalıdır.
- Host hangi şekilde kullanılacaksa sadece onunla ilgili paketleri göndermelidir. Yani, kat kaseti olarak kullanılacaksa LOP paketleri, kabin kaseti
veya kabin kaseti + gösterge olarak kullanılacaksa COP paketleri göndermelidir. “Sadece gösterge” olarak kullanılacaksa herhangi bir paket
gönderimi yapmamalıdır. Aşağıdaki tablo iletişimde kullanılacak paketleri göstermektedir:
- İhtiyaç olması durumunda veya yeni özellikler eklenmesi halinde paketlerdeki boş alanlar kullanılacak veya yeterli alan yoksa yeni paketler
eklenecektir.
- Eğer gelen verinin 9.biti(D8) 1 ise, bu bir önceki paketin gönderiminin tamamlandığı ve yeni paketin ilk baytının geldiği manasına gelir.
Tamamlanan bir önceki paketin mesaj boyutu gelen bayt sayısı ile eşdeğer değilse veya mesaj kodu yukarıdaki tabloda gösterilen değerlerden
biri değilse veya hesaplanan checksum değeri paketin son baytındaki değer ile eşit değilse o paket dikkate alınmamalıdır.
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
- Modül ile Host arasındaki bilgi alış-verişi sürekli olmalıdır. Modül 5 saniye Host’tan mesaj alamazsa “sadece gösterge” modunda çalışmaya
devam eder. Yani, ana kontrolcüden asansör durum vs. bilgilerini almaya devam eder fakat ana kontrolcüye herhangi bir buton durumu vs.
göndermez.
- Modül hangi sisteme bağlandığını otomatik olarak kontrol eder. ARL500 sistemine bağlanabilmesi için AREM el terminali vasıtasıyla yazılım
güncelleme yapılmalıdır (16.05.2016 ve sonraki versiyonlar geçerlidir).
- Host kabin kaseti olarak kullanılacaksa, kabinde hangi kapı(lar) ile ilgili olduğunu belirten copDoorSide parametresi aşağıdaki durumlara göre
girilmelidir:
0 : Yok
1 : Kapı-A
2 : Kapı-B
3 : Kapı-AB
Paket-1:
#define LOP_HOST_TO_MODULE_PACKET_SIZE 5
#define LOP_HOST_TO_MODULE_PACKET_ID 0x0A
union LOP_Host_To_Module {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[LOP_HOST_TO_MODULE_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[LOP_HOST_TO_MODULE_PACKET_SIZE];
};
struct ModuleRcvFromLopHost {
uint8_t upCallButton:1;
uint8_t downCallButton:1;
uint8_t pi1:1;
uint8_t pi2:1;
uint8_t reserved1:4;
uint8_t reserved2;
};
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 0 0 1 0 1
msgId 0 0 0 0 0 1 0 1 0
msgData[0] 0 X X X X pi2 pi1 downCallButton upCallButton
msgData[1] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Paket-2:
#define MODULE_TO_LOP_HOST_PACKET_SIZE 15
#define MODULE_TO_LOP_HOST_PACKET_ID 0x0B
union Module_To_LOP_Host {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[MODULE_TO_LOP_HOST_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[MODULE_TO_LOP_HOST_PACKET_SIZE];
};
struct ModuleSendToLopHost {
uint8_t currentFloorNo;
uint8_t leftCharacter;
uint8_t rightCharacter;
uint8_t upCallLed:1;
uint8_t downCallLed:1;
uint8_t po1:1;
uint8_t po2:1;
uint8_t reserved1:1;
uint8_t earthquake:1;
uint8_t carLight:1;
uint8_t sleepModeActive:1;
uint8_t floorChimeType:3;
uint8_t enabledLopFloorChime:1;
uint8_t playLopFloorChime:1;
uint8_t overLoad:1;
uint8_t enabledButtonSound:1;
uint8_t displayScrollDirection:1;
uint8_t displayScrollSpeed:3;
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
uint8_t outOfService:1;
uint8_t travelUpDirection:1;
uint8_t travelDownDirection:1;
uint8_t collectionUpDirection:1;
uint8_t collectionDownDirection:1;
uint8_t configFloorNo;
uint8_t infoMessageNo;
uint8_t flgLopLearningMode:1;
uint8_t doorA_AvailableAtCurrentFloor:1;
uint8_t doorB_AvailableAtCurrentFloor:1;
uint8_t doorA_IsOpening:1;
uint8_t doorB_IsOpening:1;
uint8_t doorA_IsClosing:1;
uint8_t doorB_IsClosing:1;
uint8_t flgCanbusConnectionOK:1;
uint8_t errorCode;
uint8_t reserved3;
uint8_t reserved4;
};
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 0 1 1 1 1
msgId 0 0 0 0 0 1 0 1 1
msgData[0] 0 currentFloorNo
msgData[1] 0 leftCharacter
msgData[2] 0 rightCharacter
msgData[3] 0 sleepModeAct carLight earthquake X po2 po1 downCallLed upCallLed
msgData[4] 0 dispScrollDir enButtonSound overLoad playLopFloorCh enLopFloorChime floorChimeType
msgData[5] 0 collDownDir collUpDirection travelDownDir travelUpDir outOfService displayScrollSpeed
msgData[6] 0 configFloorNo
msgData[7] 0 infoMessageNo
msgData[8] 0 flgCanbusOK doorB_IsClosing doorA_IsClosing doorB_IsOpening doorA_IsOpening doorB_Available doorA_Available flgLopLrnMode
msgData[9] 0 errorCode
msgData[10] 0 X X X X X X X X
msgData[11] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Paket-3:
#define COP_HOST_TO_MODULE_PACKET_SIZE 16
#define COP_HOST_TO_MODULE_PACKET_ID 0x0C
union COP_Host_To_Module {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[COP_HOST_TO_MODULE_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[COP_HOST_TO_MODULE_PACKET_SIZE];
};
struct ModuleRcvFromCopHost {
uint64_t callButtons;
uint8_t copDoorSide:2;
uint8_t openDoorButton:1;
uint8_t closeDoorButton:1;
uint8_t fanButton:1;
uint8_t reserved1:3;
uint8_t cop1_pi1:1;
uint8_t cop1_pi2:1;
uint8_t cop1_pi3:1;
uint8_t cop1_pi4:1;
uint8_t reserved2:4;
uint8_t cop2_pi1:1;
uint8_t cop2_pi2:1;
uint8_t cop2_pi3:1;
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
uint8_t cop2_pi4:1;
uint8_t reserved3:4;
uint8_t cop3_pi1:1;
uint8_t cop3_pi2:1;
uint8_t cop3_pi3:1;
uint8_t cop3_pi4:1;
uint8_t reserved4:4;
uint8_t reserved5;
};
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 1 0 0 0 0
msgId 0 0 0 0 0 1 1 0 0
msgData[0] 0 callButtons(bit7…bit0)
msgData[1] 0 callButtons(bit15…bit8)
msgData[2] 0 callButtons(bit23…bit16)
msgData[3] 0 callButtons(bit31…bit24)
msgData[4] 0 callButtons(bit39…bit32)
msgData[5] 0 callButtons(bit47…bit40)
msgData[6] 0 callButtons(bit55…bit48)
msgData[7] 0 callButtons(bit63…bit56)
msgData[8] 0 X X X fanButton closeDoorButton openDoorButton copDoorSide
msgData[9] 0 X X X X cop1_pi4 cop1_pi3 cop1_pi2 cop1_pi1
msgData[10] 0 X X X X cop2_pi4 cop2_pi3 cop2_pi2 cop2_pi1
msgData[11] 0 X X X X cop3_pi4 cop3_pi3 cop3_pi2 cop3_pi1
msgData[12] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Paket-4:
#define MODULE_TO_COP_HOST_PACKET_SIZE 24
#define MODULE_TO_COP_HOST_PACKET_ID 0x0D
union Module_To_COP_Host {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[MODULE_TO_COP_HOST_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[MODULE_TO_COP_HOST_PACKET_SIZE];
};
struct ModuleSendToCopHost {
uint64_t callButtonLeds;
uint8_t cop1_po1:1;
uint8_t cop1_pt1:1;
uint8_t cop2_po1:1;
uint8_t cop2_pt1:1;
uint8_t cop3_po1:1;
uint8_t cop3_pt1:1;
uint8_t reserved1:2;
uint8_t closeDoorButtonLedA:1;
uint8_t closeDoorButtonLedB:1;
uint8_t fanButtonLed:1;
uint8_t reserved2:2;
uint8_t earthquake:1;
uint8_t carLight:1;
uint8_t sleepModeActive:1;
uint8_t currentFloorNo;
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
uint8_t leftCharacter;
uint8_t rightCharacter;
uint8_t floorChimeType:3;
uint8_t enabledCopFloorChime:1;
uint8_t playCopFloorChime:1;
uint8_t enabledOverLoadSound:1;
uint8_t overLoad:1;
uint8_t outOfService:1;
uint8_t displayScrollDirection:1;
uint8_t displayScrollSpeed:3;
uint8_t enabledClearSecondPress:1;
uint8_t enabledButtonSound:1;
uint8_t flgLopLearningMode:1;
uint8_t flgCanbusConnectionOK:1;
uint8_t travelUpDirection:1;
uint8_t travelDownDirection:1;
uint8_t collectionUpDirection:1;
uint8_t collectionDownDirection:1;
uint8_t reserved4:4;
uint8_t infoMessageNo;
uint8_t doorA_AvailableAtCurrentFloor:1;
uint8_t doorB_AvailableAtCurrentFloor:1;
uint8_t doorA_IsOpening:1;
uint8_t doorB_IsOpening:1;
uint8_t doorA_IsClosing:1;
uint8_t doorB_IsClosing:1;
uint8_t reserved5:2;
uint8_t errorCode;
uint8_t numberOfFloors;
uint8_t reserved6;
};
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 1 1 0 0 0
msgId 0 0 0 0 0 1 1 0 1
msgData[0] 0 callButtonLeds(bit7…bit0)
msgData[1] 0 callButtonLeds(bit15…bit8)
msgData[2] 0 callButtonLeds(bit23…bit16)
msgData[3] 0 callButtonLeds(bit31…bit24)
msgData[4] 0 callButtonLeds(bit39…bit32)
msgData[5] 0 callButtonLeds(bit47…bit40)
msgData[6] 0 callButtonLeds(bit55…bit48)
msgData[7] 0 callButtonLeds(bit63…bit56)
msgData[8] 0 X X cop3_pt1 cop3_po1 cop2_pt1 cop2_po1 cop1_pt1 cop1_po1
msgData[9] 0 sleepModeAct carLight earthquake X X fanButtonLed closeDrBtnLedB closeDrBtnLedA
msgData[10] 0 currentFloorNo
msgData[11] 0 leftCharacter
msgData[12] 0 rightCharacter
msgData[13] 0 outOfService overLoad enOverLoadSnd playCopFloorCh enCopFloorCh floorChimeType
msgData[14] 0 flgCanbusOK flgLopLrnMode enButtonSound enClrS2ndPress displayScrollSpeed dispScrollDir
msgData[15] 0 X X X X collDownDir collUpDirection travelDownDir travelUpDir
msgData[16] 0 infoMessageNo
msgData[17] 0 X X doorB_IsClosing doorA_IsClosing doorB_IsOpening doorA_IsOpening doorB_Available doorA_Available
msgData[18] 0 errorCode
msgData[19] 0 numberOfFloors
msgData[20] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Ortak Paketler:
Paket-5: Göstergelerde gösterilecek bilgi/uyarı mesajlarının 5’er bayt halinde gönderildiği paket
#define MODULE_TO_HOST_DISPLAY_INFO_MESSAGES_PACKET_SIZE 10
#define MODULE_TO_HOST_DISPLAY_INFO_MESSAGES_PACKET_ID 0x0E
union Module_To_Host_Display_Info_Msg {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[MODULE_TO_HOST_DISPLAY_INFO_MESSAGES_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[MODULE_TO_HOST_DISPLAY_INFO_MESSAGES_PACKET_SIZE];
};
struct ModuleSendDisplayInfoMsg{
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
uint8_t stringId;
uint8_t stringPart;
uint8_t stringData[5];
};
uint8_t INFO_MESSAGES[15][26]; //Info message count is 15 and maximum character size of an info message is 25.
//INFO_MESSAGES[0] -> Out-of-service message
//INFO_MESSAGES[1] -> Overloaded message
//INFO_MESSAGES[2] -> Maintenance message
//INFO_MESSAGES[3] -> Fire evacuation message
//INFO_MESSAGES[4] -> Backup power evacuation message
//INFO_MESSAGES[5] -> Startup message
//INFO_MESSAGES[6] -> Door open error message
//INFO_MESSAGES[7] -> Idle message
//INFO_MESSAGES[8] -> Message to display on LOPs in priority service
//INFO_MESSAGES[9] -> Message to display on COP in priority service
//INFO_MESSAGES[10]...INFO_MESSAGES[14] -> Undefined
{
struct ModuleSendDisplayInfoMsg *ptr;
ptr = (struct ModuleSendDisplayInfoMsg *)msgData;
memcpy(&INFO_MESSAGES[ptr->stringId][ptr->stringPart * 5], ptr->stringData, 5);
}
//If infoMessageNo value is 255(0xff), no information message will not be shown.
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 0 1 0 1 0
msgId 0 0 0 0 0 1 1 1 0
msgData[0] 0 stringId
msgData[1] 0 stringPart
msgData[2] 0 stringData[0]
msgData[3] 0 stringData[1]
msgData[4] 0 stringData[2]
msgData[5] 0 stringData[3]
msgData[6] 0 stringData[4]
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Ana kontrolcü hafızasında kaydedilmiş servis dışı mesajının(örneğin “OUT OF SERVICE”) Modül’den Host’a iletimi aşağıdaki gibidir:
stringId = 0
stringPart = 0
stringData[0] = 79, stringData[1] = 85, stringData[2] = 84, stringData[3] = 32, stringData[4] = 79
stringId = 0
stringPart = 1
stringData[0] = 70, stringData[1] = 32, stringData[2] = 83, stringData[3] = 69, stringData[4] = 82
stringId = 0
stringPart = 2
stringData[0] = 86, stringData[1] = 73, stringData[2] = 67, stringData[3] = 69, stringData[4] = 0
stringId = 0
stringPart = 3
stringData[0] = X, stringData[1] = X, stringData[2] = X, stringData[3] = X, stringData[4] = X
stringId = 0
stringPart = 4
stringData[0] = X, stringData[1] = X, stringData[2] = X, stringData[3] = X, stringData[4] = X
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
#define MODULE_TO_HOST_DATE_TIME_MESSAGE_PACKET_SIZE 10
#define MODULE_TO_HOST_DATE_TIME_MESSAGE_PACKET_ID 0x0F
union Module_To_Host_Date_Time_Msg {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[MODULE_TO_HOST_DATE_TIME_MESSAGE_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[MODULE_TO_HOST_DATE_TIME_MESSAGE_PACKET_SIZE];
};
struct ModuleSendDateTimeMsg {
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t reserved1;
uint8_t reserved2;
};
//16.09.2014 17:45
//year : 14
//month : 9
//day : 16
//hour : 17
//minute : 45
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 0 1 0 1 0
msgId 0 0 0 0 0 1 1 1 1
msgData[0] 0 year
msgData[1] 0 month
msgData[2] 0 day
msgData[3] 0 hour
msgData[4] 0 minute
msgData[5] 0 X X X X X X X X
msgData[6] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
Paket-7: Host, ARL500 sisteminde kat kaseti olarak kullanılacaksa kayıtlı olduğu kat ve kapı bilgisini modüle göndermelidir. Konfigürasyon paketi
olduğundan dolayı bu paket arada bir gönderilebilir (10 saniyede 1 kez gibi). ARCODE sisteminde kat ve kapı bilgisi öğrenme işlemi, AREM el
terminali vasıtasıyla "Kaset Pozisyon Öğrenme" ekranından gerçekleştirilir. ARCODE sisteminde bu paketin bir işlevi yoktur.
#define ARL500_LOP_CONFIGURATION_PACKET_SIZE 5
#define ARL500_LOP_CONFIGURATION_PACKET_ID 0x10
union ARL500_LOP_CONFIG_MSG {
struct {
uint8_t msgSize;
uint8_t msgId;
uint8_t msgData[ARL500_LOP_CONFIGURATION_PACKET_SIZE - 3];
uint8_t checksum;
} b;
uint8_t bytes[ARL500_LOP_CONFIGURATION_PACKET_SIZE];
};
struct ARL500LopConfigMsg {
uint8_t configFloorNo:6; //0-47 (In ARL500, number of floors is limited to 48)
uint8_t lopDoorSide:2; //0:None, 1:Door-A, 2:Door-B, 3:Door-AB
uint8_t reserved;
};
D8 D7 D6 D5 D4 D3 D2 D1 D0
msgSize 1 0 0 0 0 0 1 0 1
msgId 0 0 0 0 1 0 0 0 0
msgData[1] 0 X X X X X X X X
checksum 0 checksum
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016
- Checksum Hesaplama:
CHAR VALUE CHAR VALUE CHAR VALUE CHAR VALUE CHAR VALUE CHAR VALUE
NULL 0 - 58 U 85 p 112 ş 139 П 166
Space 32 - 59 V 86 q 113 - 140 Р 167
! 33 - 60 W 87 r 114 - 141 С 168
- 34 - 61 X 88 s 115 - 142 Т 169
- 35 - 62 Y 89 t 116 - 143 У 170
- 36 ? 63 Z 90 u 117 - 144 Ф 171
- 37 - 64 - 91 v 118 - 145 Х 172
- 38 A 65 - 92 w 119 - 146 Ц 173
- 39 B 66 - 93 x 120 - 147 Ч 174
- 40 C 67 - 94 y 121 - 148 Ш 175
- 41 D 68 - 95 z 122 - 149 Щ 176
- 42 E 69 - 96 - 123 - 150 Ъ 177
+ 43 F 70 a 97 - 124 А 151 Ы 178
- 44 G 71 b 98 - 125 Б 152 Ь 179
- 45 H 72 c 99 - 126 В 153 Э 180
. 46 I 73 d 100 - 127 Г 154 Ю 181
- 47 J 74 e 101 Ç 128 Д 155 Я 182
0 48 K 75 f 102 Ğ 129 Е 156
1 49 L 76 g 103 İ 130 Ж 157
2 50 M 77 h 104 Ö 131 З 158
3 51 N 78 i 105 Ü 132 И 159
4 52 O 79 j 106 Ş 133 Й 160
5 53 P 80 k 107 ç 134 К 161
6 54 Q 81 l 108 ğ 135 Л 162
7 55 R 82 m 109 ı 136 М 163
8 56 S 83 n 110 ö 137 Н 164
9 57 T 84 o 111 ü 138 О 165
ARCODE / ARL500 CANbus Module Board Version : 17.05.2016